gASVQ1YAAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIw5bW9kdWxlLWV0aGVyZXVtLmJ5emFudGl1bS52bS5wcmVjb21waWxlZF9jb250cmFjdHMubW9kZXhwlGGMB2NsYXNzZXOUXZSMEmNoYW5nZS1yZXBsYWNlbWVudJRhjAVuYW1lc5RdlIwIZHVwbmFtZXOUXZSMCGJhY2tyZWZzlF2UjAVpc21vZJSIdYwHdGFnbmFtZZRoCYwGc291cmNllIx6L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9ieXphbnRpdW0vdm0vcHJlY29tcGlsZWRfY29udHJhY3RzL21vZGV4cC9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlIwSY2hhbmdlLXJlcGxhY2VtZW50lGFoFl2UaBhdlGgaXZSMB2VudHJpZXOUXZQojARwYWlylIw6bW9kdWxlOyBldGhlcmV1bS5ieXphbnRpdW0udm0ucHJlY29tcGlsZWRfY29udHJhY3RzLm1vZGV4cJRoEmgGTnSUYXVoHWgkaB5oH2ggSwJoIWgDaCJoA3ViaACMB3NlY3Rpb26Uk5QpgZR9lChoBWgGaAddlChoAIwFdGl0bGWUk5QpgZR9lChoBYw6RXRoZXJldW0gVmlydHVhbCBNYWNoaW5lIChFVk0pIE1PREVYUCBQUkVDT01QSUxFRCBDT05UUkFDVJRoB12UaACMBFRleHSUk5SMOkV0aGVyZXVtIFZpcnR1YWwgTWFjaGluZSAoRVZNKSBNT0RFWFAgUFJFQ09NUElMRUQgQ09OVFJBQ1SUhZSBlH2UKGgFaAZoIWg8aCJoA2gejFwvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0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lChoBWgGaAddlGpBAgAAKYGUfZQoaAVoBmgHXZQoakYCAAApgZR9lChoBWgGaAddlGhrKYGUfZQoaAWMVjpvYmo6YEdRVUFERElWSVNPUiA8ZXRoZXJldW0uYnl6YW50aXVtLnZtLnByZWNvbXBpbGVkX2NvbnRyYWN0cy5tb2RleHAuR1FVQURESVZJU09SPmBclGgHXZQoaHApgZR9lChoBWgGaAddlGpSAgAAKYGUfZQoaAWMVTpvYmo6YEdRVUFERElWSVNPUiA8ZXRoZXJldW0uYnl6YW50aXVtLnZtLnByZWNvbXBpbGVkX2NvbnRyYWN0cy5tb2RleHAuR1FVQURESVZJU09SPmCUaAddlGhBjAxHUVVBRERJVklTT1KUhZSBlH2UKGgFaAZoIWqMAwAAaCJoA2geaEZoIEsAdWJhaA59lChoEF2UaBNdlChqXQIAAIwCcHmUjAZweS1vYmqUZWgWXZRoGF2UaBpdlHVoHWpRAgAAaB5OaCBOaCFqiQMAAHViYWgOfZQoaBBdlGgTXZRoFl2UaBhdlGgaXZSMCGludGVybmFslIiMBXJlZmlklIw/ZXRoZXJldW0uYnl6YW50aXVtLnZtLnByZWNvbXBpbGVkX2NvbnRyYWN0cy5tb2RleHAuR1FVQURESVZJU09SlIwIcmVmdGl0bGWUjD9ldGhlcmV1bS5ieXphbnRpdW0udm0ucHJlY29tcGlsZWRfY29udHJhY3RzLm1vZGV4cC5HUVVBRERJVklTT1KUdWgdaG9oHk5oIE5oIWqFAwAAdWJoQWgGhZSBlH2UKGgFaAZoIWqFAwAAaCJoA2geaEZoIEsAdWJlaA59lChoEF2UaBNdlGgWXZRoGF2UaBpdlHVoHWhqaB6Miy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYnl6YW50aXVtL3ZtL3ByZWNvbXBpbGVkX2NvbnRyYWN0cy9tb2RleHAvaW5kZXgucnN0OjQwOjxhdXRvc3VtbWFyeT6UaCBLAWghaoIDAAB1YmFoDn2UKGgQXZRoE12UaBZdlGgYXZRoGl2UdWgdakUCAABoHk5oIE5oIWp/AwAAdWJqRgIAACmBlH2UKGgFaAZoB12UaGspgZR9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b2R1bHVzX2xlbmd0aCA9IFUyNTYuZnJvbV9iZV9ieXRlcyhidWZmZXJfcmVhZChkYXRhLCBVMjU2KDY0KSwgVTI1NigzMikpKQoKICAgIGV4cF9zdGFydCA9IFUyNTYoOTYpICsgYmFzZV9sZW5ndGgKICAgIG1vZHVsdXNfc3RhcnQgPSBleHBfc3RhcnQgKyBleHBfbGVuZ3RoCgogICAgZXhwX2hlYWQgPSBVMjU2LmZyb21fYmVfYnl0ZXMoCiAgICAgICAgYnVmZmVyX3JlYWQoZGF0YSwgZXhwX3N0YXJ0LCBtaW4oVTI1NigzMiksIGV4cF9sZW5ndGgpKQogICAgKQogICAgaWYgZXhwX2xlbmd0aCA8IDMyOgogICAgICAgIGFkanVzdGVkX2V4cF9sZW5ndGggPSBVaW50KG1heCgwLCBleHBfaGVhZC5iaXRfbGVuZ3RoKCkgLSAxKSkKICAgIGVsc2U6CiAgICAgICAgYWRqdXN0ZWRfZXhwX2xlbmd0aCA9IFVpbnQoCiAgICAgICAgICAgIDggKiAoaW50KGV4cF9sZW5ndGgpIC0gMzIpICsgbWF4KDAsIGV4cF9oZWFkLmJpdF9sZW5ndGgoKSAtIDEpCiAgICAgICAgKQoKICAgIGNoYXJnZV9nYXMoCiAgICAgICAgZXZtLAogICAgICAgICgKICAgICAgICAgICAgZ2V0X211bHRfY29tcGxleGl0eShVaW50KG1heChiYXNlX2xlbmd0aCwgbW9kdWx1c19sZW5ndGgpKSkKICAgICAgICAgICAgKiBtYXgoYWRqdXN0ZWRfZXhwX2xlbmd0aCwgVWludCgxKSkKICAgICAgICApCiAgICAgICAgLy8gR1FVQURESVZJU09SLAogICAgKQoKICAgICMgT1BFUkFUSU9OCiAgICBpZiBiYXNlX2xlbmd0aCA9PSAwIGFuZCBtb2R1bHVzX2xlbmd0aCA9PSAwOgogICAgICAgIGV2bS5vdXRwdXQgPSBCeXRlcygpCiAgICAgICAgcmV0dXJuCgogICAgYmFzZSA9IFVpbnQuZnJvbV9iZV9ieXRlcyhidWZmZXJfcmVhZChkYXRhLCBVMjU2KDk2KSwgYmFzZV9sZW5ndGgpKQogICAgZXhwID0gVWludC5mcm9tX2JlX2J5dGVzKGJ1ZmZlcl9yZWFkKGRhdGEsIGV4cF9zdGFydCwgZXhwX2xlbmd0aCkpCiAgICBtb2R1bHVzID0gVWludC5mcm9tX2JlX2J5dGVzKAogICAgICAgIGJ1ZmZlcl9yZWFkKGRhdGEsIG1vZHVsdXNfc3RhcnQsIG1vZHVsdXNfbGVuZ3RoKQogICAgKQoKICAgIGlmIG1vZHVsdXMgPT0gMDoKICAgICAgICBldm0ub3V0cHV0ID0gQnl0ZXMoYiJceDAwIikgKiBtb2R1bHVzX2xlbmd0aAogICAgZWxzZToKICAgICAgICBldm0ub3V0cHV0ID0gVWludChwb3coYmFzZSwgZXhwLCBtb2R1bHVzKSkudG9fYnl0ZXMoCiAgICAgICAgICAgIG1vZHVsdXNfbGVuZ3RoLCAiYmlnIgogICAgICAgICkKlGgHXZRoQViuBQAAZGVmIG1vZGV4cChldm06IEV2bSkgLT4gTm9uZToKICAgIGRhdGEgPSBldm0ubWVzc2FnZS5kYXRhCgogICAgIyBHQVMKICAgIGJhc2VfbGVuZ3RoID0gVTI1Ni5mcm9tX2JlX2J5dGVzKGJ1ZmZlcl9yZWFkKGRhdGEsIFUyNTYoMCksIFUyNTYoMzIpKSkKICAgIGV4cF9sZW5ndGggPSBVMjU2LmZyb21fYmVfYnl0ZXMoYnVmZmVyX3JlYWQoZGF0YSwgVTI1NigzMiksIFUyNTYoMzIpKSkKICAgIG1vZHVsdXNfbGVuZ3RoID0gVTI1Ni5mcm9tX2JlX2J5dGVzKGJ1ZmZlcl9yZWFkKGRhdGEsIFUyNTYoNjQpLCBVMjU2KDMyKSkpCgogICAgZXhwX3N0YXJ0ID0gVTI1Nig5NikgKyBiYXNlX2xlbmd0aAogICAgbW9kdWx1c19zdGFydCA9IGV4cF9zdGFydCArIGV4cF9sZW5ndGgKCiAgICBleHBfaGVhZCA9IFUyNTYuZnJvbV9iZV9ieXRlcygKICAgICAgICBidWZmZXJfcmVhZChkYXRhLCBleHBfc3RhcnQsIG1pbihVMjU2KDMyKSwgZXhwX2xlbmd0aCkpCiAgICApCiAgICBpZiBleHBfbGVuZ3RoIDwgMzI6CiAgICAgICAgYWRqdXN0ZWRfZXhwX2xlbmd0aCA9IFVpbnQobWF4KDAsIGV4cF9oZWFkLmJpdF9sZW5ndGgoKSAtIDEpKQogICAgZWxzZToKICAgICAgICBhZGp1c3RlZF9leHBfbGVuZ3RoID0gVWludCgKICAgICAgICAgICAgOCAqIChpbnQoZXhwX2xlbmd0aCkgLSAzMikgKyBtYXgoMCwgZXhwX2hlYWQuYml0X2xlbmd0aCgpIC0gMSkKICAgICAgICApCgogICAgY2hhcmdlX2dhcygKICAgICAgICBldm0sCiAgICAgICAgKAogICAgICAgICAgICBnZXRfbXVsdF9jb21wbGV4aXR5KFVpbnQobWF4KGJhc2VfbGVuZ3RoLCBtb2R1bHVzX2xlbmd0aCkpKQogICAgICAgICAgICAqIG1heChhZGp1c3RlZF9leHBfbGVuZ3RoLCBVaW50KDEpKQogICAgICAgICkKICAgICAgICAvLyBHUVVBRERJVklTT1IsCiAgICApCgogICAgIyBPUEVSQVRJT04KICAgIGlmIGJhc2VfbGVuZ3RoID09IDAgYW5kIG1vZHVsdXNfbGVuZ3RoID09IDA6CiAgICAgICAgZXZtLm91dHB1dCA9IEJ5dGVzKCkKICAgICAgICByZXR1cm4KCiAgICBiYXNlID0gVWludC5mcm9tX2JlX2J5dGVzKGJ1ZmZlcl9yZWFkKGRhdGEsIFUyNTYoOTYpLCBiYXNlX2xlbmd0aCkpCiAgICBleHAgPSBVaW50LmZyb21fYmVfYnl0ZXMoYnVmZmVyX3JlYWQoZGF0YSwgZXhwX3N0YXJ0LCBleHBfbGVuZ3RoKSkKICAgIG1vZHVsdXMgPSBVaW50LmZyb21fYmVfYnl0ZXMoCiAgICAgICAgYnVmZmVyX3JlYWQoZGF0YSwgbW9kdWx1c19zdGFydCwgbW9kdWx1c19sZW5ndGgpCiAgICApCgogICAgaWYgbW9kdWx1cyA9PSAwOgogICAgICAgIGV2bS5vdXRwdXQgPSBCeXRlcyhiIlx4MDAiKSAqIG1vZHVsdXNfbGVuZ3RoCiAgICBlbHNlOgogICAgICAgIGV2bS5vdXRwdXQgPSBVaW50KHBvdyhiYXNlLCBleHAsIG1vZHVsdXMpKS50b19ieXRlcygKICAgICAgICAgICAgbW9kdWx1c19sZW5ndGgsICJiaWciCiAgICAgICAgKQqUhZSB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dm0pIG1vZGV4cCBwcmVjb21waWxlZCBjb250cmFjdJRhaBhdlGgaXZR1aB1oNWgeaB9oIEsEaCFoA2giaAN1YmVoDn2UKGgQXZRoE12UaBZdlGgYXZRoGl2UjAZzb3VyY2WUaEZ1aB1oAYwOY3VycmVudF9zb3VyY2WUaEaMDGN1cnJlbnRfbGluZZRLAIwIc2V0dGluZ3OUjBFkb2N1dGlscy5mcm9udGVuZJSMBlZhbHVlc5STlCmBlH2UKIwMcmVwb3J0X2xldmVslEsCjApoYWx0X2xldmVslEsEjBFleGl0X3N0YXR1c19sZXZlbJRLBYwFZGVidWeUTowOd2FybmluZ19zdHJlYW2UTowJdHJhY2ViYWNrlE6MD291dHB1dF9lbmNvZGluZ5SMBXV0Zi04lIwdb3V0cHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjBF4bWxjaGFycmVmcmVwbGFjZZSMDmVycm9yX2VuY29kaW5nlIwFdXRmLTiUjBxlcnJvcl9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwQYmFja3NsYXNocmVwbGFjZZSME3JlY29yZF9kZXBlbmRlbmNpZXOUjA5kb2N1dGlscy51dGlsc5SMDkRlcGVuZGVuY3lMaXN0lJOUKYGUfZQojARsaXN0lF2UjARmaWxllE51YowGY29uZmlnlE6MDWR1bXBfc2V0dGluZ3OUTowOZHVtcF9pbnRlcm5hbHOUTowPZHVtcF90cmFuc2Zvcm1zlE6MD2R1bXBfcHNldWRvX3htbJROjBBleHBvc2VfaW50ZXJuYWxzlE6MDnN0cmljdF92aXNpdG9ylE6MD19kaXNhYmxlX2NvbmZpZ5ROjAdfc291cmNllE6MDF9kZXN0aW5hdGlvbpSMUmRvYy9kaWZmcy9zcHVyaW91c19kcmFnb25fYnl6YW50aXVtL3ZtL3ByZWNvbXBpbGVkX2NvbnRyYWN0cy9tb2RleHAvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDpOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqRQIAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5RqeQYAAGp6BgAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwIc3B1cmlvdXOUjAZkcmFnb26UjAlieXphbnRpdW2UZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmgiaAN1Yi4=