All pastes #804256 Raw Edit

Something

public text v1 · immutable
·published 2007-12-03 08:38 UTC
rendered paste body
aW5pX3Jlc3RvcmUoIm9wZW5fYmFzZWRpciIpOw0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c2hlbGxleGVjIikpDQp7DQppZihpc19jYWxsYWJsZSgicG9wZW4iKSl7DQpmdW5jdGlvbiBteXNoZWxsZXhlYygkY29tbWFuZCkgew0KaWYgKCEoJHA9cG9wZW4oIigkY29tbWFuZCkyPiYxIiwiciIpKSkgew0KcmV0dXJuIDEyNjsNCn0NCndoaWxlICghZmVvZigkcCkpIHsNCiRsaW5lPWZnZXRzKCRwLDEwMDApOw0KJG91dCAuPSAkbGluZTsNCn0NCnBjbG9zZSgkcCk7DQpyZXR1cm4gJG91dDsNCn0NCn1lbHNlew0KZnVuY3Rpb24gbXlzaGVsbGV4ZWMoJGNtZCkNCnsNCiBnbG9iYWwgJGRpc2FibGVmdW5jOw0KICRyZXN1bHQgPSAiIjsNCiBpZiAoIWVtcHR5KCRjbWQpKQ0KIHsNCiAgaWYgKGlzX2NhbGxhYmxlKCJleGVjIikgYW5kICFpbl9hcnJheSgiZXhlYyIsJGRpc2FibGVmdW5jKSkge2V4ZWMoJGNtZCwkcmVzdWx0KTsgJHJlc3VsdCA9IGpvaW4oIlxuIiwkcmVzdWx0KTt9DQogIGVsc2VpZiAoKCRyZXN1bHQgPSBgJGNtZGApICE9PSBGQUxTRSkge30NCiAgZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgic3lzdGVtIiwkZGlzYWJsZWZ1bmMpKSB7JHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBzeXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2O30NCiAgZWxzZWlmIChpc19jYWxsYWJsZSgicGFzc3RocnUiKSBhbmQgIWluX2FycmF5KCJwYXNzdGhydSIsJGRpc2FibGVmdW5jKSkgeyR2ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgcGFzc3RocnUoJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2O30NCiAgZWxzZWlmIChpc19yZXNvdXJjZSgkZnAgPSBwb3BlbigkY21kLCJyIikpKQ0KICB7DQogICAkcmVzdWx0ID0gIiI7DQogICB3aGlsZSghZmVvZigkZnApKSB7JHJlc3VsdCAuPSBmcmVhZCgkZnAsMTAyNCk7fQ0KICAgcGNsb3NlKCRmcCk7DQogIH0NCiB9DQogcmV0dXJuICRyZXN1bHQ7DQp9DQp9DQp9DQoNCiRwcm94eV9zaGl0PSJINHNJQUxNWHgwUUFBK1JhZlhoVTFabS9NNW1CQVVKbVVENGkyaEtzS0ZTQmhDOVJSRk4xRksxYlJwU0sxalhFZkhDRCtTcHpwMEFma0xqRHJJekQyTmlLMHFlMUd4KzBpNjFkNllxQ3JkRWdTSUpHbjZEemROUEt5b0FCN3pDalJoZ2xRR0QyL2IzbjNMazNJY2cvNngvNzdNQ1pjMzdudk9mOU91ODU3N2szTThWZm9aWFdUbFcrelU4aGZhNmVPWlByb2huVCs5VHlveFFWenBoVk5LdG8rcXpDSXFXd3FHZ1dkUlhNL0ZhMWtwK0FYeXRkVmxDZzFOWTlXRmUrOHR4MDV4di9QL3FaSXRaZjFiVDY4bTlMQmhaNDFvd1pBNjkvVVZIaHRPbXpzdXMvOCtwQ1d2OXBzMmJPVWdvS3Z5MkZySi8vNSt1L3hudkhMVGFiTFl2dFNvNENOUEZ4aDJzRzFZM0xSZjhNcFVBWnBFeFVMbFhHVVExTXBZRm9xTFJRRzhWSnhVRWxoMG9haGNaUUxxVDJoWExNSmd0L2FBeGw2UUpGUWNGOHhTUEdHd2czSEhTNFVGNGNvaWlMaU1FZ09XNm5xdncrS2tjY0xwUU93aWlEcEF3VUZ6RnhQZUp3b1JRUUxyQ01UYTJ1ZW5CcWRmbms2cXJhd0lvcC9yb3AwMFMvUitwMjY0OFdTbCtZbndsVTVsQ1pST1ZxaVNkS21kYlBOVlRHVUprbGZRU2JMcVpDSXBUTHFWeEFKWjlLRVJXY2I1ZFJ1WmJLbFZRdWxUeEdVYm1LeWpDSnYwL2xFaXBUcUdCUERKRzZ3cWFSeXZrL2puUDBEKzZIWFlxdytjSisvZkRKMEg1OW8yWDlYU3E1aWxqekViTFBMZXZ4Vk1aWjVuekgwdjZlcFgwUkZXU2dLNmhNcGpKYzlvK2xra2RsdXNTekI3Q2hoMHJuWXc3WEtMdnc3U0lxT21INEN0aE95dmNRdmtmaVA4SE9pTU4xbmNRRk5KNVArUGNTRHlFOGtmQnNpU2NRbmszNEJvbm5FNTVIZUpiRUwwTm1ST3dWNEJRVk5XTEszMGhsQldGZDRrNHE2eXp6OTRPR3NFZmlHdUsvbVhDK3hQOUdaVHZoYXlRK1JLWE5ndGVDSitFV204Q3ZVcTFiNUpmQVJ4YjkvTEIvdlduLy9iQi92Y252TmlyRktZZkx3ZXM1V2xsSTR6ZGI4QStvbnJqZTlFY2UvRU80V09KS0t2TUllNlUrWTZsZVJEaFBqcmZEUDRSakVyOUU0eXNJWHl4eEJQNGhiSmZyK1F5TmJ5VGNLY2RicUd3bVhDanhWdmpIb244ci9HUEJxK0Vmd2tHSm0rRWZ3a3NrLzJyNGgvQXRjdnhIT0RlaURsZFU2dDhHLzBSTmZ0Y2lQZ2cvSmZGVnNKOXdtNlIvR1BGQitLQWNEOE4rd3RkTGpEaFRDWDhoNVgrSitJaWE2N09UNk5jUi9xdkVTMkIvMVBUZmhZZ1B3bmRMN0lQOUZ2MkNOTjVHZUtiRWp4UGUxV3FzWDU0Q3ZwMDBmcTBjdndYK3NNaC9BdjZ3OERQMklqNEZWRDVFL0R4dXhzLzRmdVBnbS8rNHVUNEtuYlcxL21xY3NrVkt5ZTAvSzFsUXNhVEtyMVVzdTZtNjFPK3Y4Q3NsSlV0cTZtcExrSVcxa2hLUWw0RjRsdUxYbHBYVnIxU1dsMVpwOVZYbEJNdnJBcHBTVmxkYlcxR21LVXNxdUxmU1gxWmFXNmxVRXZRck5SVTFtRUUzbWlxdHFxWmlHWWdDUkZSVFdsMWRWNmI0cXlzcTZoVi9YZGxERlpwU1dWa2Q4S3RLYVZsWlJUMXhGUlRMbDFWcEZVcGwvYktxV3ExU2VhaXF1cHExS05XVUI2dHFvY0l5K3E4c3F5Z3RWd0sxbEQwZVVsU3RycmFhbENhTGFwWEt1bVVQS1g2aGtiOXFTV21aVmxWWGkxbmxnWHFGK0pkV1F5Mm9TU29xdFZxZDZsZnE2NlNRbW5xb3E5YjV0UWRYMXBZU21VVGM5a3VWS3N1cTYvd1Y4RVhGTWpZUDF0U1JBZEFEdnFUdTJyb1N5R0xaRlN1cXlOUzZlbEt1Vkt1clVrcHVtMCtlTHErcUxRbjRLOHFKSHU2V3ZxOHByV0pscTRtWTlQUER1MlcxV3JWU3VheWl3cERGMnR4NngyMDMzbFF5alJiVWFHRzE3ZjlyLzNMTzJXK1RMU1ZiMEFQcEhobURJNnFxaGlNYnhXeWl6OFBZcm53c0x4MFQ2U3diZEkwNDQ1eWp4ZG5tcElSOWQ5TGhHb3k5aXBvWTM0K2FrdHBpMUxSNXlsRlRNbGRSVTlLdlJrMEp0QjQxSlU0Tk5TWG1GYWdwV2E1Q1RRbThBVFVseUxXb1NaTjFxR2t6cjBkTmliSVJOU242SkdwS29CdFIwOGI1TFdwS3hFMm9LY2svaDVvdUJwdFJVM0o0RVRVbHppMm9LVkZ1UlUySDZIYlVkRmw0SFRVbDNCYlVsS1Izb2FaazNJYWFObW83YXRxOEhhanA0aEZEVFVtNUV6VmRTdmFocGt0T0hEVmRYTHBRVTRMV1VkUEZKNFdhTGtQZHFPbUNra1pObDVnZTFIUjU2VVdOWkU3K0hVekp5SUdha3J3TE5TMVlMbXE2QkhsUTArVm9KR282aFBKUjArRjFDV3BLa2dXb0tSbGZocG9PbDRYaFE4R1VTMytDbGtaUDRXc1RuVVI3ZGlxWm1YZVF4TXdFSDMxam5UTVRzS0lxbW9sNGhqNFRzTElxeGhJZGpMSENLa0lrMGNJWUs2MGk3U2EyTU1hS3F6alNFazJNc2ZJcXJueUpSc2FJQUJXaGwyaGdqRWhRY1cxSTFETkdSS2hJaTRuRmpCRVo2anhnSDJORWlJcmpPMUhNR0pHaTR2cVNLR1NNaUZFWEF4Y3dSdVNvTUNqaFlZd0lVdXVCRmNhSUpIVUZjUGNaWUVTVTJzRDJNMFprcWV2WWZzYUlNTFdSN1dlTVNGTTNzdjJNRVhGcUU5dlBHSkduYm1iN0dTTUMxUzFzUDJORW9ycWQ3V2VNaUZSYjJIN0dpRXkxamUxbmpBaFZPOWgreG9oVXRaUHRaNHlJVmVOc1AyTkVycXF6L1l3UndXbzMyODhZa2F6MnNQMm5nV084L2piWXo3aVQxeCs0Zy9FK1huL2dGc1p4WG4vZ0xZeTdlUDJCbXhqcnZQN0FqWXhUdlA3QURZeTdlZjJCNnhtbmVmMkJGelB1NGZVSDlqSHU1ZlVITG1hTW5hSXVBaTVrakIyakxnWXVZSXlkbzZyQUhzYllRV285c01JWU8wbGRBZHpkQzR3ZHBUYXcvWXl4czlSMWJEOWo3REMxa2UxbmpKMm1ibVQ3R1dQSHFVMXNQK0dpeng0SUh3aDJkZnZ1WHFDdWI4WEswNlg2emgrcm5aVHI5Zm0wQU9uR1J0cWJkL213UXNwUEh0bDU5SDY2ekFXeGZxRVd6WjdwaVB4ejc1NmRURVA3dDJIdVBPS3VCQ1k5dTQ2ZTd5S2UwQWZhbVBEWHdSYkhKdURNQjludVFISzNFNlMyUFR2RFg0dTV6OTVNamlPZUZ5SFd3TndUVE9XcTZOU24vdlRVOGVBdWo1UnoxeU1wWkFGU21pa243V3IxNHFsVWFRM2RnWUNoVDJzSW9Zak1FT0hXSEs5cmxUT3h3RzdnNk1nUUprUzh1U1JYalpQWm1Sa2UzVWJ1SUNraytZcUJ5RDZSWlA4NEpja0M0MGhCR3N3VTZ1TW9JMUJmYStnNktUZlJNMlJnWVVja2x5ZFBmYU93enlSWlRWYllTUDJ4WWJBeEsrR3BjMGc0THFkTysyWUpKeVhac0t5RVF1cU9NbVhtTE1aRXFTcUhhQ2xlUDgza2lSNWxZT2s1YllMdDFwUGZLSDJRSklzYVpJRmNXa1cyNjNmbjRIeUJuSEtmWlFxdk9HWWxIeHBvU3I2Y2NrWC9LYmhoSkdjSFU0NkI3QnlQV1ROeGdkRHp4RVRoZFR1ZldaUnBEQ2NsZmdkbk5JT2hzdkw3NElaZ1VJdk4rZStmc014bjYrSjB0OUE3aDNDQVQ0Q09EU1oxMDRuKzB2NlRxSVVBdXp2MEJvS2V0c1J6TkVPUENjMElaMmJpenFNSFQ4Z09sOXJjaGhQNkUrcDhReXh1T0RUdkREVEZ0eEs0QVV6ZUJKTmZaSm1vY2VBMUpsYjJFSzQ3eS96eFVDamxpSWJ1cGg2Zk9vNm9NcStBclNFLzFMSm1hcGIvVkpQZnBlQTM3aXgrZXdleFRaTEhmRW5mRE82S2hkSGhFMWxHMTRIUjM4N3kxRHBtNUZycWpyQnF4enQ5K2w1ajFWZWFqSjR4R2QwT1J0R3pHTjBnTlpvWjY2THh1Vm12TGgxaWNsNXUyblVmdU54cVVpbnFBK2k1OUdMTGdjQ1hsVStkWXZWK2l1SFJKL3F0M3R2SEIxZzk1ZVRacTZmOU1MZzZyUVM4WU5VRVZ1LzJHRE5GOU8xRjU2czlXZjdDczEvMTlMZnpIdGJIb2E0bnNKUkNlaEVXVks4eC9BSDQ2Sy9wK1RybHlJNHVkZXVydjVhTUxiMGo5Q1VEOU9icGQ0cmV5bGJuWWpMUnJyaTNPWnNPZ21PdXo5Q25jdE9ES2ZSUVF1U3NsaWJkbCtlejY4THNiUmtLR3M0bTRmOGQ4VUhPZ3NNT2wwLzlBcGEyQzhlSnNUQ2JsMWpsRUs3bXRmbWo2ZG1UaEtNaG5RMU45NWhMWnZUVlhNU1NRWnIzamttNkowc2FmUVk5b3ArTTllbDV6TndWZGVUNzJBSjkrRmpKd2tIV1N0dDhlaXQ3SXRlOXJjV25YZ0xPRmo3RW4wY2RZS0pQSGtDdHZ3bUhCT2Z1bzRoVTNHdnhpZ0k2RmxoMG5HRE1jendMS3ZlMllwZVBXNUZpeHc0OTM5TDJURUE4V2pwY2xnNzNxOFVPbjNyOVdTcGVibEh4TWJhNW9JK0swNFdLK3VkcExNSnNYamg4WjdRTFJFUFI3TW54K3Z5dk1wbmtaVmlheFNSQzl4aGhrN3ZVcHY4S2dGcUtIdWFXUzQyK1kyeUU0MThQY0l5TkZOdXRDWnhlSHNQeWs5UEpBY1JFUDN5TUhkN25nTG94M1c5UEhQaUtPeHFmVlNpYzVqZzd5ZjVWYnFITUxXSW8yZFhxN2ZZbzRzanpkdnZVcGpRT2F3N1R1d1M3VFMxZjBTTFB4WGNtOEYxOU1ucG5PN1EvQ3VYMlFMblJVcm1uZzNQakpNUG1mckxGL1dwTE9IVHpHZU9tb3BnM0ZXY1gxSEFtSGhOU2x6clU1OUpZNW1MMjgzZS9rdEVPMnNqSVVFUEtHQ3Z5UkRhZ2N6dWViTUk3cnN6ZDBORHRjRzNIYmVqRE9HKzVmemttblBpV21EQ2VqdGxpZHVTb1lETlVVYXg2SllkbmsxeFpCajVuaXNDVldCYzRRWTNEc3V0R3kyaW5Zd3dlME44L0ttNEhMN0IvanlJWVp2Q1N6ZUJnVUVWRDBad0pKTnhXcDRNOGIxUGtnY3R1WFg4MHUxMVp6akhJaVkwUzRYVWw1VTE1TG1SRi91U291YXdZMFc5UGkvRGg2UVh2RXNtR1VmM1V2RUtxYVlkV1RpeS9OUVlvazlNaW8wTmRqT2xWeDg3ZWt6ZjJaeG43VXJCOGlhNEVFVDZHK0dKTTE5VkhVbmo0aUhoZDRWQ2FmWUZ2dHpaSk50WmNJQnA1N3JXUDRseitBTzdnbmhIYXZZbGRRSFBoSmlYd0Eyd2MzZy8vL3FXeDI2V2VUZThpRG5wWXRTTjkxQlY5dnhwcHFFdjdheElSTkNLMmJFdVZwUm45NUpkRzRyWW5GMldHZzEveWdKU3B6VVdLYUlLSWp5d2lIajNXWjVHTTdzbW1GTHUrODZpeG4xK2pGbnVDNkdIQ1VUaDFwRmdDL1JWeG1HVUNMaldOL2w3RHRGeDFSRHZobElrTGdQZVplREZ3dTRtYmdGODNjUno0UmN2ODl3ai8xc1EvQkY1djRRZTh5c0lQdU5yRXJQZjlBbHZ0aVlQdVprdi9QVDkrSklWN1l0UENEb2RyWGFnTkIybnpIdnJ1ZlExL050bWlIUHVETVhTYWgwNWpLQ09IV2tOYlQ0c2pRUkp0N2dYUkM3MVdJam0wOFJTR2ZuMXFvS0dUUEhUU09oU05McUk4OFplYzkrbGtLTGJ6QWVOYmNLZmUxaTJUdm90R2thSmJRN25VYXVHV0I2MVAwQnFKVmhkYStkVGF4YTFMcU5YR3JRSnF0WFByTW1wMWNHc2l0V0xjdW9wYW5kd3E3QkhHdFlabVpGdXpaU3ZLdGxJVzcwSHFlWTdieGR5R29YUXlpZlpKdE9mMTRQUzhnNzdMY1FnMjY1U1czcmlKVE85OURlK25qejJYdlV2eGM4dFdZV1BZbStiN2s3czExRVVUOFBZODhUWjlZejlrQW1sK3IyRHNjZHNYeGxPRE16SENBVDEzblRiMEJFVU80NGJaaXZhZHZoM2ZDOWlUUTZNTU1rcnlBK3ZnYmt6R3F2dWlIQmMrTmRCaFp2RTNoY1NHNWpZK0pZZFJBeEtKM1VqWkZ4aHI5bGx0c05HM1FaSm5rRGdUbDJmZ3NMWXo0a1JjUTZKOCt0alBETE9tQ0ZVNDEvSlFKaVdIM0tFVWtwTVQrWXB2aS85OXhzcm9sMHk5MTZRK3JCaDJZWGdURHgvOFRDYnQ3ZnlVaEc5Rm00OGJDbExjanJqZGlRd2xVblNFaVlwOWV2UG5QSWxKZ3RlRlFGSHdzTlhRL0J5a3l1M0NsVWxCMk9vUWhDS1JTUC9xMHo2WDh2bVJ0ZmwxZG9tVjFYdDJtV0lqVEJJcDltUUtUZDFTc09FL2hBMFp6c3FKenROV0p6elBWclluczA2STluSEN5eno4SjJNWWtyR3YrU0h3RjRLUnBQd0xVd2I3VTdMZksvcFE3bURLZS90VDRtKzBpVG1uc1IreXhuWGJFTEF0VXFJWnVzRm10RVk4N0V4Y2lsRGZnQU1od3FNNzRzNm93eFBkSU8zekxkQzdqMlJ0MDBYVUh6ZmkyUDBHSmVJNGJvTE4rSzdWYnBHTk5YbWlVVXJKNndXV0IrU25qUDhiY2RMTDVSRXlNMXY1ek5FcmhaK1RQemRzcGZ2S0wxUHl2aUpJSTJ1Wk5PeEpMclFzOGorbHpyUEl1bkwySXZlVi9VNVNubjR0MmQwdGRpNi9UdzAyYzdkNzdVZW4rdmkza1czamsxcXJhMmpHK2FSbzE3QjlPSjk4NHNqeUxiVzV0L0ZCNWhObm00L2dWdGI4di9LUUxBczI0ZHFkbk16Wkd2L09SYjdaUW81YlJ5Q3RqemNVaDFMaUNvbFd0S0xuZ1JLOEtwUHZ5bWJZNVAwSzU3VCtoK0ZHam82R092blErY0ltbjdkdzU5ak5xZHpKdHlsZ2ZaK2dYeGM2d2FNbmNjTHNEcDNDNjR5RzVoTjhUS25zWDNrSmtOZWgxNFlaejBFUjVtcyt0Y1U3ekF2RERja0I3eEdIeEdReE14eUs0Wm51ZXB0Y1I2RjJzTVhoRStSbzZZT09aQjlBN1FhQlBVdEFlK1pRSWtzd3RLK203bUVXODhYRlM5Rkc5Skg5RnZsV2Z6NVhQSFVwZTAxRlh6TEUwdU5TRDUrUVBjYVRZVm8zbnd4M1FjNHh3eU45YlQweFZGeHRUdzdDMVRZdHBuK1R6NFlkR2RCbmZ4NXFYa2kzNENKOTA2Y3lPbUxaQjR4WW4xdnBiT2xSdTh3KzBoOTRyY2orNkdKL2RCbis2REw5TVpXVERTWTVOYmNRd0VmUUdIN3VkcmhmRFNYT2NBanJjaUVrNnpublp4MGpSdkoxcm1SempUZTl5cDRjRXcwZGdSaHZtdkl0NWI3QlVXK2FjdXRIRmlLcENYNjRrNGdTbTkwczNybWJDUWF5ZE5SQTZrZ3UrSGxQNHRhY2JNeFo1Mm11ODVveFBDZXJQeDJUVEladm01WXZHblpERG42cWs5Z3ZFNUdIbmhnNVZqNzkxSGh6QW1nSHF5U3pFaWRTQjdQS0U0MGNiWGxpZzdFNTFEWThod28xM3h0OFhqVXJXVEE5OVR2ZnBSaytxdCtSOVI1Wmc1OVB2V3d2bnNRUlZWSFdyQ0F4VFVxMDlYWE52ZWVYZWRSbUJJbHVCa214d1NELy9BeitiR1BmWXRydXRSUGw0aHFiUVREVE53MjJ2aklKUE1ESG5Sd2JlMWltREQ0bW1qdFpSRjVFd0JXNURuR3pnaWo4SGl0eG95MmJRRURCQ1lUZHJEOXhTQ1N0U1h6cUMrN0NTMDhMRVFZZi91UGtTWm1JN09wdWM0MG1EVHF2dVcvMW1hZHVCZjh4UXJKN214T1FzMlY1bDN5aGhwNEl4MXc0MU01YzJ6bGNob2tHUlY3eUtqMkFsd1FzSlRtT2phUElZNXRxQkdmOVp6YUR3TkFxejZwVmNtcHJhQi9WeHJzUkJqNTZpSk9IejFOZEF4NCs4cWtwWDY2THRoTHBrVzBRanN2TVJMLytHN2t4dlQzQjFUMksrWmVCZmZ5T3ZpZFM3TmkwUmRoTktGTi9pZjUwbC9HUXhoMGo5WC9OZG1RQ1Bmb0txWTA0VnhJYnBFY0gwUU93WFg5WERBcU9jL0d0ckJ3aUpTWnJlRnZ5cHBTVzNkOGw3MFFyYjllTEQxSThLR0Z2cjNucXZuZEF2S0R4OW9hOTNjSFYzUlhhQ1BxdTArekpDNGduZm15WHZJZ2ErQVZnMG1OSUdTdzFpM2pUMGtPekVkR1FxakxYOGh6cEVINTQwWVlSWWRnYlMreWdPYnU5bmM3ZDNyOVQvUThxSDlrUTZkNU9Ub3AvdC9Pc0pzVE5PbSs4cVpYckF5SUhlanVOTFpmbk1ETUhIdHYwUjUzaTNYWGZWMThXSHl3NllIMldXamxVdi9xQWVPdjFvYjdHS1M4YlRQaG1YQ3dEcUZ4QzZhU2JhbloycXpjbWpJNFpScE5FZmg3MHBrU2w0KzJWZU1VQ3ZXeW1XSEZZd2dqOXJ3ZkZFd05zQ1hzN253WHJzRGNlOGFibWVMdFhYeFh4NnBXdE43OU5vUk5jclNzQld0a09sL1I1aHhEZlFlTVQ5em1VWkc1bHEzZWZUYUh2TGhzL0VFWkc0WUUyM0VIUEE3WU8rVGNpUzJOSFBNZEhPUVZLL0g2L1ZDMFdYQjJEUnliRWhVZGVBMTR4dGpMaS9UZ1lkMVhTblQyUDJvZGwyNTZrMkk3eGJ4VXV3akZEdElqMkdINW9tY0N2VnNROGoyV2V4NXpId1h5QWJXQmJsMERsaGFtSXQzdFNoNC82S0ZuNkRLUGJEYVBiaGRIdEdXMWlwNzcvNDM1cTErNFhhci9DZUloVUxya21zakFXOWFac25zVHplQ3pzczB6dWJhUml0eTBZdDRXOU9yK1J3bUxSL1pROG45SGU3dFIvZnFDZmtDRlN5QWQ5aFl4bDg0ZEl3NUlVNURIYVE0bnBaMFFNMElWM1MxeHVycGpseFJwMlNvWnY3ZUlpZEdYYzJQcEd6NlM0UFBEbDdXcXB2Ri94VVU1bmx0NjJ2OTg3SGVOc2VFa0tYT2dLMnlOZVYzQTJxOXVMMzhVbXF6a0lNd0U2Y2x5WlF2M3UvZjlEM3JOQU4xV21lWFB2VFhMYmhpWklxNkJWTHkrblBGcXdnR0padGE4clZHZ2IrMURCUVNZMFNSTnNFMDZUOHBpeElLYXdsQXE2ampQanVJck9Pb0k3dStOaDNGVm5SOFhLSWhTc3ZGWEtlejA2M2s0WXQrdWlVMmRaMk8vN0g4bE5teFRFcytmczR6LzhOLy9yZS96ZjQzL2QyeDgrTG93aXd4Q1dkWjVrNDg1NS9Ob3VXa2pPRmZIY2hGYVBQalVZWkdNTUpKTXA3RHhWMkhrK2R1N1crZ1hxbGgxMS9SMmFnK2k2WDlKc09QenF3MWhmWVV4cVBZL0NmdllrRmZaK3pLL0dnUTIzTDlGckFPUEd1bjRUZEt0L2x1WjRlTnVnSWVnU2hINTVZZ0NoYVlNSW1TK0gwSDJSczJVdkZCM0VrYWxyWSt1ZTgvODBncDFWb1Y1cnlicmpFL0Q5cjdpbDdveTA3c1NUamVmcFpuK0pvTjk5a2xYMWtiR3Z6Nm5ubm9pUFR6WWhmQlBPejFvWHNHM1RtNFRZS3Z4ZVhNaERzYjd5SkY5UlE4ZXdCSGlEVFNJOGxzcmtpVU5YUjFGV1JIYzdTY3BSUkpvc3RmbCtjQkJOZmFmKysrT0lZaXF4MDUzNmVvcXdvL1Y4M0tSUTUvYlhpNnhPK210aHYyYjJLenQ5ZjBsdzJmU0pwS3RxaDJhTFRaZDh1Tk9kZWpmRHJTbWt3ekl0QmpHTU9HRTA0Z1NZcDNrSDQ2MC9PMjVzTFVkYWxZemxzd0FwREhVZGp6eUZuSnhocGhlZEJBbGNwa2JIUUVKaE05aDVpYzFnNTgzY1RrM2NUc20rTTNJMkM5QjExRGs2S3JLODdkcWZ2ZTExL2Q3MmlxOXhvNXUxeEtUdlBCSFRXbXVmMEhMMWJ2T1JyK2k3QUJqM3ljZzJpNDUvWDhQSUFtT2V2YTBUVmRjNlVnaGJJcTA1UXNzNEl1dysvYThwSWdvdkd1RC9BL2xaMkVlYWpkUS83YUgwU3NIUittQ1pGMGV3d0lqQXlNRHZEQWh5OUJjNUFnZEI0QkJhQ29qWDlvRWQ2RmVmaUs4MytuUWxCY2JvUTZTQlRmL1pjZGI1czVIV3MwTExDTnJTYW1oWlRNY3A3U3c5c0FDS09LUGZlSnlOUjMwZ0dCQ3BDQ253SzI5N2lVTEx2b1prT3JTR29SaUdYNzdYUXdOc1ZYRGJWSUtqR0hRZVZpVjB4QUhlRnh6bkZvVzlpdGM0OUtMajhWNHBla0dDeVl5RUVRSDBldUZpU3hiTUFCZlF1YkRSZlVMQzBpMk56UlhSMjU5QXhhZmphdXkwYUZ6TXJMeUdMZEw4Vi9GVkJ3R3dZZVdxdmRBN01CSG9FU0VMVmpXZDB2MGFPNFNXWUl2WkR0VTltZFI3US9pcGo1YlZyblZIV3J2RjhOWDRYQTFDNkRhRkc2SlY4Q3VGSjBablF6ZTlrWm1tY0MxTmlPRzVnekZOSUpob3U4bURxOU5GZkkwMXNQUWNuWmVXcUdEb3gzdTRvUk5sS1V4cDRCUWx0cmpTUm5KRHMrbUZIek5EeXlHR1pqRDFiVDJEN0lyU2F6UEZOcEJrT2JLMWgrMGZ0YU1pY2c4cjVuYnRCSTQwYnhUUjdVSUxhOUd1SFNPVStZejNOcmR5bVJDWGhaVzNjaXZQMGFmMkdLMThETTBSZmp1RUY1R25XUC9wdk9IRHZ6eEJLd1pvV2E4K3lxZTdPUnlsckQvM1VYemxUbWgwSHpYUzJFNXora2NmRGFMeEJGdkZPN0RIRE5zN1I0MUxqWENWdmhuUnp3eUZ0VGpGU1FNcExraWdPSTlSZEEraUdCMU5GQWNhSzhxTWRJbWd0RXpJN1M1UzZNQUhQbmNBRnBQYzU5aEhhbHo0ZmFDTHI2a2xJVGdaMHNLanZHUUhRTVpKS0svT2pIeHl3ZHZ1ekl6ZUZHc25ZcnRydkdUYU5yYjdUMnhIM2xuWVlBK09rOTdZRDlrcXA0aHMyc2kzbCtGcjJUdGUySDlNMzAxZTdCTFpmUW1MQy8zUkQyTTlCTXpRRHh6U2FTTU12UjlrTXZZVjQwdGNuNzF0Qks3eGFXWjFMVTI0N1cwL05mRlM5K29iYWNKa2J5TzdWNUlSN1cxVmdMSDMza3hlNHJXM2lWSTg4N2dOVmlhOU12alJHbEt5QnhlWGJVK2tHZk9ycDlEV1MreHRqVllPdXNUK1dMT1p0K29pVUhZd3ZONnp3M2doL2pHSHZRMC8yNDduVjJmVDlGNENzQUMyWnIxdnhnRHlDTUFoV09qMWJobUdmdmFwVE5jYkc3VlBuV1FLbFplWXlDZ3A2Nzg2UXVacjJITkVXczhJS3hTeTVCYWo0K05DMWE4NUVqZW11SUFiaDFFTEppNUNVRTM1a0x1SUVicm5jRExvZklEdXFFRFZkY0FhM0RGd2x3SzU5bUtsOTRJTkQ4S08wb093WTZoL0FnREdsYzZNOE5wZGEzdFFQYnZXSHNjZnVtVW5hOFRodE1ZVVArRkRnM3NOTSt6c21MSDk5Q0hDOWl6U3J0WEkrZzFKV1EvWmlHVkJJdys2VHAzQ3piM0xoRjdWVzI2TG5Vd2F5ZHpNTGZ3SXNVWjhtbGFQMTM5M2FHZzdOdHZ3dEpLSUlEeVdqcDJTd0JrWTBMWW5nNXd0OVZ6ZzN4SkYzaVlmY09IcENmbHlLcHdaSFVraDhZdnQ2QlNheGorT2lqTGNjaXJjclJtQzBZWDNpdWpDdlFzenVJSk1SRE00RE1Hay9Cb1Y2WHJDQ2wwOWRnaFFFVC9jMWd1TzBFT2cxNS9ETm5GZ2g3NkNBYmROT3BZQTdkajRFNFJtSGR3b095S2RrbFAvdzJHRzV5Yzk4VXI3NjIyNXgyS05tTWlUYS8rWkEwYnRUOVFuSG96cmc2Z1dScEJJbHdSckZJTXdscVp6S1RVa05ZRzcwcE9hUVA3aEpDWlFTQlBDeWt6OWxRTXgydEYwcWc5ektuMzhNUTN0b29lb2Qrd2wycjZieGl0OEE5Z2w4MER2ejlKaWJnWTFHNHBzVkhITTVhaHJTYmpDUWdYbDZCOGZZTm85RWRNUEZIUGRtcDM2dllmNG1neG03SkZreHY3bmc3VHJPMEJEQ09adGZ5cjNKRlVZd2RKcEhWSkw1L1lsK0tqZXRuOW9yOW12OEI3N2t5cm9KWVZOOGVTRnVaSFNob05ENnloOS95QWRXVkxKdlZ5SjYyZ21UU2pMckd4Y1lxWWE2WFNuN29haUVJYytmaUh4dXpSeWVvNEpLYnlpOXpSWjU2TnVsamowWi9leEJWQVdXUkJuNFY1enU4Q095ZGVleG43Qzd5bjJlNUw5a3VOUDM1bURkR3UvTkV2M0hLQ2J1SVdnUVBvQ0FIWDR6ajYyNmlwMVJCc0pTWVVCRnpsaHFiaHQvMERhWWxTalorV0VRTnhBR0JVN0JVQXF0SW45alRaaUZJVGFQWEZxWkFXN3dpYUdSMUVwaVRFcGtZUFZUeXhKVkV4YkxzSDYzMXBTS2Z1NS9VTXIrL29QTGwvWjM3ZDhSMlZmWitHWUIvUlB0SkF2UE9pK0prY2Z1UzloKzVXdUwrL0daYUlZUGtIeTQvV0c3cUdkNDFVemQzZlo2TzVHZDgzaXdsOTdMSGJxeEhaejhUZVlldVVIZkdlT1h5MnFKR2R6K3M2U2Q0eTBsZUxrL01aS0NJRWZkMVBRVG1WSXZ6Ky9OOUh2SDN0LzZLNTlMS2MwQlZ5QTlmNWFUbVVLVDM2UWRIcSs3aElFdlRMWCtvSndia3pMZ2RRQU0yVGlydUJYeDdpbE43d2Z0M1R1eUlmM0RuQ204QzNmMG9kLzBjME9Zb2p2bUZxUys4NFdLYVhBY0duWis3Q1VTbUN1N3FRQys4T2VvUVUyUS9xV0FwT2xCSWEvb2kvOW1MRlNabklTY3o3aEVEZEFwLzRNRWE3S3JBL0ZQWEt2Z2ZFQjYwbFkwN050RHk0NCtMTEZONDRnbkVNUWxyL1B6OXQ4RXcxMHZ0ekRmV0hqYzBkamRreStuOTVLcW16NE1wMGlJYS9ZLzRxVUtrNk90MHVNbmUwVkdmbmZFeU5YWWlpT3BDWTNNeW01TVFQSXpVOU9ibEtjbkxFNGE0L1JoMUdLaDdxTTZrL3V2WGZzVHZUZWZidUh0bzFSSmo0QzRnNW04S3o5cjZrWDhZZjNETEpHQWF6eCs1ZWd1RlhnWmkwUnlGM3NqZEVacCs5QlEvYy9vNTN0cURqejJ4dlhSdS81VSsrN2Z6YTNkNzNiZitPRUhlMEhJdjFpV0tXVFE1NHArZVJBVHE0R09WOTBzaUd0R3M1aDRuRHA4VzF2QjBrTlBoU3I0UU5FN09nclM5ZTY0b2RpT1lhYUhIMVNWL3o4Z0FqdTJIdkdVekpibC9HVVRDRmJkUDZXQUJvM0RWMWQrWjZ4MnNjUHVSemt0ZEFMWk8rKzFoVDdRaUxTZW03VUtqRjYrMGJ0NWZZZFV0MjVEZHE1U0dmeGVuR2p0aU9lZDYwWG9WM2Fhc2RHN1VTOGRDcTJ3aThvM3R5bC9YN1NMdTN6S2JHM092eDRmcFptZTlqY2UxTEFkNHhiSUc3RndpSW9iUVZ1ejBtYVVyUkJXSzl0N1VCMEloWm4wbUxJWWNVV1BCSUJlZzVhdWtIbzdCZnQyenMzbE9XK2pMVDdMcEl6azNlbGlsaUR5QmtKR3JUdmVQY1RlWU8ydGJOZmhsemFBUUpnU2dDQTJzZ1pPOVN5M2U0R2JVdG52eVZaYTZRUHRaRXpkeWFTaHI1SEJLbjM2b3M0ZnRtSzhQTVJQRGFWTk1lY1hjTHQrTmRqblNJVzJtaGhSQmRKTWFaM29YQmc3ZkJDaC9ZQ08rdXUvc1gwcUt4RStpKytpYjloV3lRcVh6elFJVUZCeTduN0g2REhRZFg4N3lkZkhRdjc0bjI3bUNFS3FRS2F2eW5ocHByRWtPY1Q4dko4bnNhbFF0NHlTQzN6Tklmd1lvQzhlc2pVQndOZWY0T1E1NFcwTjloYzcya011dkNXQTFkeldBajVXc0x1NFBLQVVCNVk1bXIwdTFWWGMwTkxreWNRTGxUSGh3eVh3VlQ0UXlGL29FR2xseDJrMTNnOFVLL20rVlJBcUNMZGdSZkhEQWdjSGxvdmRybFZ5bEpMTTdtK1FQWDZHejM1NlVJTjhCTEdSc2lRMmhTc2Z5aWs1dWZucTBLem9GVlhWMVVQUlNMTldWNUc4QURxbGthM0dnaUcxY1VlRmE5RThMaFZRY2h0Y3EyRVBFWHFENUg2NXBaQUFNamRPU0ZkR044aXBKWEdBUEhtQjVValRCZlN1R3lnQ0hKNFgwVHVCTlhyZ2twM3VsQTFOMTJnYUtmbVQ4MHZVTEhhNHhacVVMellHVU0vaGdqcHhRSFZId0NkQk9xQmF5K0RhdkkzK01LcXF4RVpXb245WVN5RHNPcENWQU5lTlJ4VWlWWlZ6d3BQZlF0UkQ1TlhHcXJReUJ2Uk9UQTNqMXhrUWZRUlVJVkM2SDIxcDlHMWtpaTRzVkVOTjd1OFhuKzlHdlkxQjFzYWZDcUlKNS8vdzhaSkFpT0lWMlBFWktQbXFmV3VBQXJVN1FtNzZuMnEyK1ZwUXU2V0Q0YS9yN2k2c3J4eWRxR2FYSS8xSUFGZ2ZEVDByTGs1MkZ5bzBnczlZcVNFa2thODc4T3RMbDZKMEdGUDgyaXc2UHBnRTNhSjNTV0MvcEF5eEpWUE1SdUExRnpXS3crU25wQWN2c0sxd3QvVTBzUzZxS0tIb1JuVit6eHU4Q1EzOFp0bEhnUFdVQ0o4Z3BZUy9LQyswZU1LTks1VUM0bGxZZkY0ZHdLZTBqaW41Tm9RdDVvN1BqUkJBQk9wS1o2dEZhSVZxQTlVT1d2THF5cHJGcXJGcFpnQXM2VUYzS2ZTOG55VFZSTG9NS0xHZ3RzZldncTJBY1lBYmtPcVFxQU5UMEIxQmR3cVhqeVNUdUdYeGVEWjRETUFmbWx6c0tIWjFhVHkyZ1J3Z0s4bmFwK3M4dkdLV29HcXRvUThTWVlMOVh2NC9GNXNTRWpMODhib3g4WTRrcWUrZ1ZtVVhVMVY2ZHdhcmlYUE11aUczNHRJMHRSVUlXYVF3R3dvREE1RkpWaVRPQnFsRWRkS0JrOHJqSFNUaldOcGZDQWVETThyaGtSQjdZZkxsdHBSYnNFTXRUSzRUQzJZT25VNmpISE9xdXJhMUE0Z0NQT3FaaSs2cTN5ZWxxb2VCREZrZlVuZFhYZHAxWXRxeWhja2IxSlNYRG9YYUtTa1g2bk5ycW90TDBiaExxb3RyOUNxNmhMWkxhMnFyTlNJN0JlVmw4M1RCclVwS2E4c1N3cklRczJjdXRxeXF2dVNJNGRRVVh6L29qaU5ta0h3MFBkYTZKK3phbDU1NmZ3aytGbTlkbitwUm54cllIMmRjNUd6dXVyKytZdHE1enVUU1NoV1gxeFdWajFVZlFwRnh1cnJhclNoNFl0cmF1NHJHMVJmZ2ZhVmlqaUVRQ2dVb0NFRUFSNnU1TzNpWWZ5MGdwQjZPMHhUQTJSWHBsWE9IeXl1S1FNa1JPeDlCdjJaTHN5cHJYVXk3U1FqbFdJUWpBVU4zSEJ4b3o4RTQ3RnhhRi91RC90VWNOQUdUemhobHJ0VXowaHdDVEREc2ZRRDQ2Y1d1S2ZFSGd0SnZqRDJXQWhDd01rNGdVVEpObGtKcG9oeklkYXl0QmZpd20zMHZwdVVvbmJuODM5Q012YVo2SUNOUXBnK1VKaFRiczYvT1gxT01FUldlbEFJek1GUFNDaHVDZnVDemY0ZmtyRzJVQzF4aFdBbEFMT0pzem00WW1WZThscU9ENmFtUzhpc0tKcThIek5UWFY3SUFobmY4aHVERFpmQS8zODEwUDdqVldqL1g0T0ozTEdKRVYvWDRuMlV1Q2NxaU5VT0hhajhjQjN4Mzhuai85NFFDTkxsN1JYRGV4cUNZVDlibjlFbCtSWEQ0KzE1YmhWdkFiejhnSnRLdWtDQ2RXWTRXQjlzNUl1aHk0TW5XNzd2SUFGeXBlQjNRQUR5cHhzUG1LVmdtNHAzQW40ckNjSldwd2xYMUxpRENiVXNYUm9rKzd6TER5NjN1OWtUQ3FuaGxVczlWNEtrSlVBWWg3MG9vQWsyd2xhSHphcmtKc0hMNFQ4Mkp3TU9CdHZzOFpMN0N5OGpjR3FlOEhMWXJLa3RBYkw1UXA0dWozOTZYU1RkWjE2SkRlUEZrZkhkNkxjUDlHckpLOGRna0ovZkRZckFZNWx3TUFqN25zQmxUWmxlVjlqVnFESXBYS0VabXd3Ukw4ekQ3Nkx4K2pEODJ2a3hkamRwN2hyNld2MEg2K2lidjIyUHlncHVablFUdlFjWlAvM09admh3Zko4VHBVZTRMNXZvSGNoNDl6RGV1NnkweXdxbSs5YkxDcjlyR1Q4VnhzWEZoWXNYZzUxUWZoRitrWmMrK0oyemZ1ajFVN0tBQjhiR1h3eDREelZQbjRLK2ZRSHhBc1RNRGxtNUFlL2poWGdIeEVxSUQwSU1RRndGY1JQRXpSQmZnYmdkNGo2SXB5QitBZkVDeE16SEFCNWlQc1E3SUZaQ2ZCQmlBT0lxaUpzZ2JvYjRDc1R0RVBkQlBBWHhDNGdYOE43ZGpRQVBNUi92b0lWWUNmRkJpQUdJcXlCdWdyZ1o0aXNRdDBQY0IvRVV4QzhnWHNCN1p6Y0IvS1loWkRTN3RMUlF6WjFkV1RkQm5aWmZnRmRwLzg4dkVlajkycUx3Y1FhL0hSdnRNSXZaSmRyblBPaXo4WTdxY2FUOUdCdHYvemU3cWIyK3Q0SGFJUStqQlg1dk9PSitCK0tBTzFjeEhNN2dqV1N5UGtGaUdNT1F3ODhvZmc2WVRTSmVzYXVJbGRJM2lMSUNjeUp3Sk0rREJHNUN6Wmd3Q1pieHdKQnN0Zm9EWVVFMks3akUzMktGRWttVGZnbzEwbDAxREZEQkM5TzhvRWhGdms1NkhpakpPWnRwbFZRTUhpZGZUeHZLZ2dYdjFRUlVlTGZoczhEbU9IbWkxSXN0SmpGVTBnckFJazltN1NYOEF4UTVid0hKS2RJSUJNNm5kVGJwS0xJeWhlWWNValppbVlwNHhiRlpFbTZFNVp0cDNVakpoRGdMYmlWMU9STCt5Wkk4amJaVUJZc2JTVmpUWlBGQlNOamt2NUFlUlV5RkxZeWZ4U0F2ZVphYnRGYUVkRC8wMjVRaFkxdHhEVUxLcGRKTzZJaGN3bVVoSHNCcm5lVWE2WFVVWGlYdjE2dklleFh2MXhUazNjbXdTa2VRdjN0NHZ6SVJYVFdsN3hERXp3bVZCZEl0YWZBN1B5YnhlMUY2VUtUS2J1bEpoUEJ3anZFYWFObGJ3MlNHbDEzTERaU1NUYm9La2Zob3ppRk5RcDc4YmlZek5GRjVDWmZaV2VUd0lackxFY1FmaWFqY3NGU0w2SnBqbmNKY2lDdFhmQXV5V2ZJYTZRR0ViZVg4UElEeVhNWDVHWVoxcTNsZjM4ZmNJNHdmUVR5TStPUjFGTzlhM2xmYmw1ZzFWdzZyTUtOcFltNVlJUWpYWFBFTldycGxNYkZTT1ExNmc1RVlyeVJZM2tJYnRvajRybG94VjBuNG5hZTVuSE9PZzZ1NUV1a1J6aGRBcGMxeWd6UUplTFhrWUE0YmpRSzlXSzUzU014MksxQVRabkVkNUIyV3NiVHQ2SFhHdG1Ob1cwV3d6TFlpMWN4REtHSHJUZllBZmxodjd3WnlKdnN6QUNmYWI0TVN5ZjRTV3BmOURtVE5mZ2ZVV3V4K3FMWGFWNkYvMnYvUmloZnlaMzVPa015MGQ2UHIycDBLT3JpQ0F2Z0tLcktzSmRKTXFMQTIvSnVaY2pJT2N6NzhFQVV0RGYvVzFlclBzMURwbndSZzY1SmJtVFhncDAzV2g2WlpxUFFkVFdqYktLRGhtQnBlQm5pR1k5UGh1ekhWWSthcDAvaUk0Z2lWSVllZ3BZSXRYd0plWmxydmxHcVFldk9kRnNyTHRaZ0xhWXlYWXdCaWJlR1c4RXVrdnR4cG9id3NndDViVjlDY1EvcDNiUG5EZGd1MVREdGkrZEh6Rm1xWmZtejU4RzhzMUp1M0laWkhLRTVWd2p0VXJXdG9icHowRnZCa2ZaVG1jcVZxekVWb2JyTFVpTGwxTkRlVnltVTlsY3QwNk5iZFFGSEJ6cjREWk1aWmk2U3JvSi9XeHo5akl2NFh6RDFCYzdMVWc3bW5lTGVPSTN0UGN3UHZRSFUreXdlcGg1Qzl6Vyt3YnFISldKK25Kak5TV29lNUY2a3lWR0RoQThCKzFTRjRXUEQvQVRBcEdUTHlreUYvUnA2SHlCTUhzUXdaVGNHQitxYktpNnVNUEQ3akQyajVKL2daZ2JaZ0lxMmdaTFFGbjJoaDZmOWdJa1BiYmFSa0xqeXZRbS9LSUg3bGFMY010bzBrRmpHY05DSG5tQm55dlFEamVENEJFRW9maDRJUnZ5RThzSktYQ0VXVWczSU9rajlIMjdmK3JaU0Z3dm9WSGFjRkNXK1h0ZjRkUXFESWliNysvaHkxYXBpUXdGRlFaVm5vK29LWUM5bkpsdW5TcjlHakN0NW10b2d3bG1sM215bU1iVFpwTkdNWWFUUUZHdzM3STJBSE1QVFZiQnlUbEErckljMW13ZXhuVVZFcUNqNjdIOGVOMFVHczNJUDhXYk52d3BJeDJEeTdteWowTWF4VUtlUnE1SHI4Wml5NUR2M0ZtcDJPYlc3YWhpV2ZrL0VwMndOcDhlWWRXUElhR2JpeU42R2pGeEI2SlRCc2k5Tk9ZK1dIQ0duT0xrYVUwNUdEYkx3M1dweUJJczVlanBXM0VDNndGK0pNcEpDTmY0a2kzb2JrczFIZDRxeGNoWWdkQzA0anhPMC94bVFCb3J4akdTYS9RZUE3U1JMSGRMRm9EU2I3VVhURnBQUkpiRkJDa2pncWlxVTQzV2VuSVp0bEJHOGZnbW1FS2Z4dkhrU3lWTWhHc3hIL2k3MXJBYTZqT3M5N3I2N2thMGwrcXRjMkdJUjRPSFVIKzhxeUhqSGdwclpsV1JiSWtwRmxRb0N5dm8rOWR5KytMOSs5Vnc5ald2TVlzS2toWkVLTHA5RFdvVWx3S0ErMVF6TjRZS1pxUXhvM3BSbTNwYWt6MEk1TG5ZNlZrc0dkbHVJMElmVC8vblBPN3RtVmVHUTZ0Tk9ackgxMTl0dnpuOWQvL3ZQdjd2blBucitmTTdzZHRkN09CZjhHYUFjNHN5dFFuU0U0UUlsaHRpWE1OOFhZdjRNVEk5QU5NVHl2aDNkeGFYK0YwMUZ1N0NUeTNjMVhuMEROYnVMVHA5RFltL2wwQVhLNGxUTkxvb2piK2ZSUm5GcDgraUFhYnpNL1RkUTN6OG53QmhEZXg2ZHZvSWdLdDIwU1JkUzRGVE80T3NhdHVCTzBrM3dWT3grSDkvTlZmTWdjdm90UElYRGhnM2RTVFdLL2hoYmZ5L2xlanByZEIybUpGVUg3QUZmblhWVDlRVzdiV2R5V3IzeDlQcm9NangyeHMzaGE2UG9LeUpianhyanhHbHlGODRoSTd4MDR4ZUNLYk9QRWNSRHN3b05LTElTcnQrRGhKUFlVeEZLd1lCVWVDUEo0eG9oZGpIdHhGYzhWc1JPNExVME8wMHZTTXFhNkIzZWd1L0VNRUJ0RTJ2c2hGVEc4WEVXT29Pckx2d0I5MlJkQ2k1YmpkaHhOaHJoOGJEVmJQNHloSGJzUjB0dUt1M0hzRFNxdTRjb0VUbzlpSUc4LzBhajBSUXlQMFBOdStIYWpVaFd4RG1qUXdkY2JsYWFJL1JtUzdINnJVYW0rV0RzdTNQSmVvOUp3TWV6b091LzJoVTI0OEF2MGQzRzhTU2toM0lxV0FLb2JXQmRUNFhMc0F2UjRvbzh2M0lCa2U5eGtPT08wRkFYTkdmc0dhSlA3bXBRT2plRmxjdDZ6OS9BRktKTllMeDVOdXFHS1lwZWl2Wi9HOE9YWHpJWU56TlQzb0krdVlaRzdIN3k1Rmh4Yk1Rak5lTkZmbytUNk9ualhXTXJhdEorZi9adlF5U0hzbXRKZUxaVGJVNmx5N2hvN2UzM2NFVGdMbHd0cjE4Yzc0eDN0S2FjR1owTnRtM2Uxclk5M2RNYXZnWDJ1WTRNUk9paXlXc2xaZmMzTHFwWXVaTk1EUDF0V29TV2h4UTFMNlcvZHdwVUxWeTFzd2J0SFN5alUwdFIwYmROMUJPb1dHSFVMY1RyUXNxRVI1VkhjQUwweTExOXVETFMwRTBIRFZVVFExUFFaT3AxSHAxRnhHa1VldUM1eW1iL0lhS0tnc1lWb045SmJVaE13c21sZXJwVzF3Q3ZMTUJaR3RKaEZxeW5tRW5Sb2pLNytZak1JbHRRYkNKWitpb01XRVVFM2tNc1p4NVpwZVMzcjVtdkw1YlY2Z0JWZExzR3ZOSWN4bVJCYVFnK0ZkZEdWMFZWUmZKdzBDMk1McExBUnh6MDI5T09GamZRM0pPWXRjc1ZjTlo1Q0g4Zmo3YzZrazdiS1RudXRtSnNBR0d0blIxTHR5VnpWYWNjOG1STzNQdzZwZzBVQUxpbEhWRzNNTnpwdXVySzRJT2dsOEpjd25uSUtTWWNDTzFHWlZXeTJXR3MzKzAxaEpYZGpjNFRIMnJQNEs2NjExNXdLKzhUS3BsSnJFZVk2Ti9Tc2RmS0oxTjd4Uk1VU2ZyTGErZDI1UFZkTTVXdHBxNTNlYU5OV1JxUTNDaXl0ZUYwTzhDMDRBdmlvRCtObG0xN3hRcTFyV2xzLzJ4cWVUd25vS2w2OTZ6cm80clhoQm5FRjc4UjFGMHV5ZEhyTm1yWFh0dEs3VWloMC9VY1U2STRUV1NEZTF1c3VEMUhxa01nWnIrMTFLMElDWTI0SmN6bDBmaURhSEluZ01ZYllSbS9VbmV2TnFtR2FtSGptazhxNHVSZWVZRXd6allsUnZ1YVJNVXROeUlxWlNWVTVDNzZDT0tkSzNPUTA4UDFDT2VWemhaNHVpcHB6Skp0bWYrL3cwRTNtd09CZ1gvL21RWE5yMzY3ZWtZR2RvOE1qV2pHWmtxZ1JoTUtxT0VhdDZPU3lXTlVFV1ZCRk9ybjlGcDNYSEl0U3BSMnVTNnBVSzFZdElwRVNaYVl0SjRVVVhHdHpMSkVYZjJ0SXlWSmFUbFFTQlFKRnAwcHlKWm5UMGNPNUZSSVRadEd5MGxiYXpGUktCVU5saXZJUzFhcGdVaW1URVd4QWZmZ3NtZC9ybmxOTktWODF5cWdlVGlhWFR4V3JNcEtMZEM4eTEwU2FtaU15VXFTQ00xalNRWlVwSmUrQW95REhMbFdxYlM1dk1FMUMxYytVUzQ3TUtPdjJVYldTS0RxbVZVeExSaEJ2ZWZvZXJDbkFxYzVlWCtNNFRRMmNjQzhYYWxWcmdxLzcrMjlnYU9mdVViamJvVHlrQUZWTEprK0JtMXFCdFp6YnZDb3hQcEZQU0JGTEsrbmpTcGh1eHpGL3dZUVVzaXc3MVBIczFpZFhMSEdLZEsxUW1IUnJNelNNZ0tQSHBJY2dUeGJNY2s2MWlGbW01SVRDZmJWRVdvcTZiUkZEV0NTNFI3eUtNYU5NT0d2S0ZiTnVpZHQyRHc2YXc3dEhSZXMxU2FtVzVMQ3FlQUtRcWVVbEQzZzhxVFltRTVWS1R0THR0U1psSGFXTWk4NkRpSEFmcVJvWGNrVmZTVFdUNTd1RkxMQUlrTXlqMDNHWjU4TGxWU2tNTEFna3ZRbTNGaXpFdFdxeWx0SFMrS1dLcWk3b1NCa25aVXQ0akFSYUlnZkZlRTVJclc4UVVsTXFOU0VMR3R2TEtiZDNtUGRtdVpJckVjTW4zYXhMeFpRWVNnVlNCNDVWR2VNTzBsdmpTVmttbjhnNmJuTXNsc1pVcVpETUZXY2w4blNaZmxvb3BhWG9DaXBLUUdLdllzVTFPWUpJeXltV29QSTI2VG5UVGhUVGVhUk9hZkpDekNoTFhlSDRsQldKTWc4SnZzTlJpSWVjWGptUnE4U3NiOGZPMGMvSlFhWTQ0cFJ6Ull3V2ZUVHVNZ2MzN3hwMWRZWWNhaG5IQjZsMWxoa1kwcTRleTlZU2xiVFVxZnZjV3dBcEU1ZHhIcDlWRFdaNzNVb21xSmYyMVhKaXNNcktEZlVPNzlnNTJEZmE1MnFMbEJydU9RelJZaUtQOU5wbzNyb0ZSTEtScXI1cWlIZ2pRd2l5djJQMzFhektwS3luV0lUSlF4QzFwdXp5VmxIZDJpUlRxTVpsQ0phbTZ5cmpLTm5sVE1Fc2pSZFprYWpxN2VqYklUUy95RU1vWFpXYjE3SU5XZzhOMzZEMWgwaFU4KzZ2N0hKTmlNZzRrZWpqUWQ2ZkZDdEgrMGFHU08zeTRsTlJuaWRwVHFwVVJrUHBzUWxOVmdyTVU1NVpOZFRVTFZ0eDJidk9uS3BTZDNnNld1ZXVmMEFVNmRTclcvL1E4RWlmcU5rdWIvQm5FazVWc2tUY2NFdjVYR3BTalNhcFREWm9CY21oVERkY2RSdlJkQjdmaC8xVmtpUFhlM3pSZEp2Ymh5a2wwZjJlOHNKTlM5Njg1Yk9HeDB1L0tBZ3h3SENSaGFnc2pMZ3pXYWdta2hSV0t5SzAxUm1MZHRtSUYwdFZLNzU1eThEYWFpSnJ4TzJFWXh2eDlHU1JFb3F3V2pIaTlEZ2JWOFo3SFpnVVY3SHlvQk1uNVh3Vk9lZm9ML3JCaUdjSVVGU0pteDBYZnkyYitBVFdJVjJpa0VzWjhWUzFSTTlSOGJRSTdraWh6QklsVHpvRVlVbUgvTWZUVnJLV05VbmlpbG5MVWJCY1M2SWZYTXlQWjRvMG1heFlZd3FSRUZ2cVhGV0FBZHI0c1krVmhyQ25ZbktkL2V3YWZyK3RhdDBMbnBIblNUcjJoeHNTZmhyVm9aWlh3Ujl0dmFTRExSYVR0SGdPam1oMCtNSDNiWk9rZzQxMmlrNm02a1Rha09INTBZVi8wRHBKQjV2dW5nWmh5dzNXcjE4OGU1ZEFCMXZzZG5yaEh0UHFwZno4WVhIZlR5VWRiTGpUVVdGTDFzdkZnWmUwK1RJTmJNRG5vOElHckxjRHhzeThSZ2ViY1hTK3NDVkhaUHNVWFUzbXp6WnBlbW1ZYWhSMjVpRC95aHJkU2FJN1NYUjc2dngwK04ycDBjSEg4dXFGaHBHK1puWitkMnQwZUYwNjBpLzZQRWozZ09ISndUVFJUUlBkMDlvcTREWVpmbDdTb1Vyc1YzbkVNTTdNbTAzM214cmRuaDlRdjkzaTl4K3N6bjlQMWcxMDdJZjVGdUdEdVY2akEvK09hL25ocTVldVc4WDFZSDdQYTNRYmlXN2pCOUI5WGFPRHo2K3R0ODVkdjVjME9xd1YyRTUwWndOMCtFM0xlb0lPSG5ZMjNXWVlSK2ZQNXNzM0RmOWFNdEM5b0dFVjk1MEEzWVhiaEU5aWRhZzIvVU9BYnVldkNwL1N3ZngrR0tDckVWMmhlVGJkandKMGIrWU00K281eGh1TXRUcmRncjJHOGU0Y2RDMEJ1a2pCNzJ0YThia3Q1SzNyd0xHQzZBWTEvcWwxSDFpVG9RMEhJejAyZC8yVUxLdmp6QUdTMXlaaFY3L084UFRML0VCK2V3NFp4bWMwZ2Ztd2RYL1Fsd2FuRjFUUWl3S0xrbGU3V0pRQVBTZXdhRFgwbWNCQzJ0VWFranJwRFh6YXhXS0FuWGV4cUNEMGpjQ0NVZEFyQW91QmU5TEZ3Z1A0Nm9jVkZoMFBmU0N3OE00NzdlS0ZqREcrQlJhZXVQZjhRR0hoSlRYdFl1R3h1K3RmRldhUHZUeitCQlozbEswdUZoS3czY1ZpUlE3R2pjREtLN2c0Nm55YUVuaEZBRjhVd0JjSDhNb0F2aVNBTHczZzFnQytMSURiQXZoeXY0d2IvL1orTklEQmdVSEovekR4LzhwQVBQeHNLLzZGaUg5WXBySFJ4UzBHWnFvVS8wUEVmeHErTGo5RHhFL3NtM0RvVFlVWEdWaVd5QTRQR1M4ejlsTlkxc3JIZGxiUGZFaDlucUJ3ZzFZZjdLMi9TYXZQMXdQMWVTVlFIK2h3KzF0ZS9rRisvRXNBdngzQTd3YndUd080SWVUSFN3amZwOW9mWG1TMEVzWUc5TUpmOVNJRHp5RndNYU13Sm1jbkg0OUU0Y2R0S2RVUEpoVnNmcjRwSXVKN1F3Ri84SVJYVDBXaW1LQUhmVExrOXcrUEpUZHFQQ3loZjNlRi9QN2lQMC80VDc0WmllTFpBT2wvUCtUM0gvOUN5TzgvL3BXUTMzLzg5d2pmK2tlUjZMZ3NIMWFjK1lSSEpNWVdjTHAvK1lhdzM3ODhyRWZUbXYvdTFyRGYzM3hIMk85dmZuUFk3MjkrVjlqdmI5NGlqQzJ3Rnh2Q256c2VxTEJ6SmdZQytMYy83UGRIRDd2Zk1Xci9aYksranhIK3dtOUhvcWNrZnBMd2MwOUhvdXZEQXY4aG5nZi93L01YLzFMWTc4Lys3d24vN2JNUjNpMEc5UDhZOXZ1M2gwM3lEYTMvc1hwRTZjZWxwQi9oN3VKdXJUNHcwcDdVMGw5QytNVFhJdEYzWlB4cXdxY3Bmam9rL2JmRFo3REdyMEhDRnpSKzNnNUw3eEd2ZngzQ2QvMXhKUHFsUlNJL0xDV0pQQm1KWGlUYkMwZkVLelIvODAvVkNYMm8ybitpVHZpWVZ2Z3ZDVTlyN2NORzlnZW1sTDk1NGdmaFZtcGZTdGIvUE9IVlJ6ejVxS09FR3dodmtyaUY4SDg5cjlyVGJMUkd2UHNGTU96aTI0bStUN2EvaC9ETlJ6eC84djJFRTQrci9tazJiaVJzVS94ck1qNUZlSUx3U29scmhBOFJEc3Z4ZFQvaGpjOTUvZmt3R3FhTlY2eEJ3OGJkWWRuK0p3bWZlU1lTM1MzcG55TU1WMEtLL2dTZHJKSDNrOFdrSCtCMEJ4N3psTHgraC9Bckd2KytTeWZ3UWZ0OG84anZkY0tYZmprUzNSOFIrUHNVSHFYNm5wYjFEOU10RzF1SUMzbGZaalFUaHYvQ1Jzbi81WVRQYXZuL0V1SGpSengvOXRmVmUvZlhOb3JmUnZoRnJmOXZKbnhTd3piS2U4ZnJmK3hBZDVyaTc1WHg5OVY3OS9PbGREOS9rUEE1aXM5Sy9qNU8rQUxoYlpMK1daUVAva1JFZmkvRHFQdVFraDk2L2lTODRpR3ZmQ3dxK2ZQbmxYdzNHMWlBQkNjNEtuMDk2ZEhWUlA5YmF2d1E3cWJ4K2J1U0hndW9ObEQ4U1puL1ZzTGJDYjhwNlVjSkg2TDhQeVBwVGNJM1A2U3dZWlFJMjRUZmx1MjVtL0RFUTk1NCsyS0R2Nyt4OEVvOVh5eWg1NHNwNUUvMEwwbjZhY0tuMzlIa2cvRFJoeng1L2k3aE0xci9uU1Y4bk9KSFpmeC9FbjVSNDg5OGVrUjdWYU9IWTRIWE5Id1Y0Wk5FM3kzcHV3bC9oZVQ5bjJWN054S0cyeXVsUDdHQTRCVk5YOTlFK0RTbHYxYW16eUIvWFI0SVAzWThFcjFDeWgvV0pwelQrUFBvUEUvZUZsUCtYeUw4TjNULytBT3BmK0Q1OVlMV25sY0M3M1JZZ0hsYTV3Zml2Ky9WOTIyc2dYdlkwM2Z3TkhGUTA5L1lHQXRidXF2eHR6VHF6eDlMSTFZODdJMlBUc0tudFBLVVVRY0JabUhvTkpYSTU4MXNvVlEweFZZRHFVclZxZFl5R1RiOTlJNE9qNWlEQTd0R1RaUFFWaC9xMjI1dUc5bThvOC9jMHRjL01NU1hydTkxNDh2eGRmamFvWnkzcWxZNjNvRkpycEtaelplU2liekpNenBtb2paaDhJeUxheGZoMHZxR3RucUZLU0FLVWdqRnFITXYxNVNiS3laTm5UVGFadWZ5Q0FzNUowVUJMNWluc0ZZMnkvaE1qcHVZZGtwcURyeG9aZGtLVWhJSkRaaXVwTG5XY1BhYllyMjlrOHVLM1JVMmJlb2ZITmpTYTY2bmxsSVVURWlPWldTdGFqbVgxdVBNclo4YjJyeGpvTmR3cXBWMHJheEhjUzFNcTVqQ0pIY3k0Vmc5WGVJVEZSOVJLWi9YY2I1RVhZWnF6czVKZmw0Z1Vkb0M4MUZzcXVBcmxqKzk5RlV4VXpidGNTTlRydVNLMVl3ZWcyL3FmVGlUcnptMmZxWEc4OEQ2RlRBdG44UGtIREV0WDhyaXMyekRycGFLK2RrMTV0WWFYSzdKKzJLSXJqRGwzZ2FHczljVTM0ekFNbGVwRkV1WXFrNEUyWTlwejJMU0VKL20rQ29uZTlwZ2c0a3NFOVR5U3c2ZEZ0K0dxSW9YYUZDVVVucXNZMVVkZjc5bW5GU2ltQW5RNU5pS05ydWQ2RVMzZTJRYkNVSmNJSzBsZjdXZGFycFVDMTZoNXZ1cVc4dVliUG9RQlJTdGNWZWMwbTVKbUJzT2lHTlFjcHhxcVN4c2Y0YlVBQmxVU2ljcFZrdTI0MjhUK211TWtwQncwWDkvZnBXOG43Rk8zcko4OHNlZFR2MlZnc1dUdUMxNjJNU0hUR0NJYVplY3Fwa3JpM0VzTHB0bTBuRmsvV0JPUW95UlRLVDI0bHZUUWlKWGREOU53K1E3N1BlQzJFU2NyL21pckp3cmFUU2VEYkVYaFdsTlFINjRTaGcwQ1Y4UFlKcGFWbUQyTUlIcytKcThWMGtTRlZZTDZBT2UvczVRS2I3eFVMQUtxZktrVDhEMFdqbVV3ajlzTzVUd1lLYmIzd05vdU9oU2Y4c0tDWWZZbHNWbmEwNDFtQXlic0pnd1ZqSjNGVlZ5TWtpSDNTRDh3ejNOeW85WW1xaVdjajVGTTNzWXpSbzBwaVVNWXYyRHcxczJENXJEMjdidDZoczFSemR2R2V3ejZmNWcrUlVWN0tOUUpjNGNqSkpXR21Ja0RVUmZOY1JvQ0Z3eWM2eG9XTi96N2czeVBBTkc2R3dtRVlNeGdKUVpEU1ZXWmdFVEluYjhtRU90UTEycHNsMk5PRnQyaFBuSEZTMU5qNXMwUnNTM1hqNzY2OGZNRVNzTC9WWHB6U2NjeDNJTTJQTFZhS0o2cGpKQzZVTFRCY1JTakJ5WXNwVmE5ZTc5ZEVPRjNQdWxrTldpNE16UGowLzZpSlBrSm9ydG4raG4wT3ZvNk9ucTRyQ2pxOU1YNHVqdVhHOTByT3ZxNmVqcDZPeitOTkdKb0czZFIyZjlQejlxRU1TMk5xTllTcGJTa3g5TTkxSHgvMDhQN0JreTErNDB2OXpXMDkzVnVhRFIyL3dqR0k4RnB2UnZRYVBhSDJaMkZqWTJabGpRcURhSW1ZdUFGTnlDUm0ySG1GbVY2TzdzSVFLeFJjd2N0ZXhlMERqSC9qQmU1QWRzRGtPUm5ldW83dnJlTVA2TU95azJ1RE9NRmt1YzhXOExveVh0V0llcy82OTc5dU1kY3Z4UDJKOWdHUjgrL3J2WEUzREhmOCs2RGhyLzZ6dTZmajcrLzFlT1grOGIzQ1lXejRvakxLMWliUStLT1loVHZlSTZkWWZSWUt3MldvMlZiT1ZDWE5kQm9xSGZ0Q0hzcUxDRzRiMGZWak9zUitCMUNmU0REYVZGeGlsN0lCK3d3K0VIczlFeWFUdGVMT054N2FzVVJ6KzRMVGtXRXZabXhHTXU4V1dLZjVuaThJTXZCL3dhRE0rdUN3TUtyM2U0V3poOGJ0UGllSzF6UGkzV05jZWRFajRKVm5aRmxOMC90RnZ5UXZ4UUw5aG1QeFhnSGVhZ1Z3YXVnUTVXdDZzQzE2OHd4TG9CV095V3ltdktUQW9iRGl4Wm1sbVhMWE9MNVRtc1hwaWZiWlh0VU9zNVlCTmRhSHp3TVpjTnRFR0dhRlBkSFBIQkF4WklxREwwSDZ4OTROTkZBUnBNQ2FHN1lCMjgyUGpnQXo3bGZ2SkFKTHBGemlVdW9MRDVVQ1Q2cHhManM1SkxDQ01FeHB6WUdzSllDd0grNFp1S2pZZTh1VFRNZVEwUy9wRk1meXY5YmlPOFZzWS9Scis4bHQvVjlEdEF1Rm5TMzBPL0kxcCtoK2ozQk9GbkpjYWM0VE9FeTNMdUVoKzd2YXpsQjl2ZHE0U2ZrZldicHQ5OVQzbHpaN0JGdlVIeDdYV0NIcmE1dDdUMDROVlBFQzh4aG1IellXK3VFN2ExU3doL1crSmgrcTA1N00ydHdrYXdrZkRUc2owbndBL0NSeVhlQkg0US9oMVpQL3p5aER0a2VveVJBNGM5VzhJVStISFk2NTl2b2M2RTZ5VitIZndnZkxXa2g2L2xsdytMdFVmQXNEVytTdmg3RWo5SnZ6Y0kyeEpqRGNwYmhKK1ErTy9RZnNMSEpENUR2N05mOU9aTzhmbEw4NE5lZitqeTNJWS9nVmNKdklSak9QZW9XUWpES1lxM0g3eGJXc1V4T1ZkbWxNWEVtbW1tSmhKNE9VN2tNYTJScnBYWHkza1lOVEVsMzhwNWtXUkZ2Z0dKUlZ0aWdWY043N2VZaGNtaXNHcWxTSzh5UElObFlNL05NZmxtaUdKVDQya3VmWnhlYnVXTHRaeGk0ZGRieEdVckhJZVhRWDZ2bmIxdU5ERExJR2MrK0QyYWEycFg1S3dSZ2xvT1NlYXF0U2dkYjdwRU1JSGxqSWI3N2hudjlNNE43NTNNZ01iNStQK3dVbUt1cTJLbjJwQmNpYUQwbTNOWkRsKzRHVGVFeExVbHVkd0NhS2ZQU3J5WWNkaElTQUY0a1hSK3d5b3gxdXBKMmE0ampIVXRYUWlwZ0EwSWFjeHRSRWpDdEFraEtieXRDR0ZmUUVoS2RCQWhLYStkQ0trR293aEoyZDJNa0JUZmJRaEpLZTlCU0RWSUl5U0ZheU9raXVVUmtxSXVJeVFCclNJa1JUbUJrSlRoQVlTa05BOGlKQVY1SDBLNkNSeENTQXI5Q0VKU3BvOGdKR1h3S0VLNm9SeEZTRXIvQ1lSMFl6aUdrSlQvbHhIU1RlYzRRaG9BenlDa204QVVRaHJjTHlDa0c0L1lNL29jVEwyUG5Qc3gvVDEzUDdYbUw3N3hmdmRxb25oLzFacXZDbnZDKzZ2QU9YN3ltem1ERDJCV2dZTTI0bVpPTVFZbmJmWTdPczBZSExWeEs1cVpZZ3pPMmhpS004Y1lnOE0ydm5XZGVZUXhPRzFEZW1ZT01nYkhiWmpHWjhxTXdYa2I2bWRtRDJQMGdMMGRlQ2RqOUlTOUUzZ1RZL1NJamVWVU0rc1lvMmZzUGNCdGpORkROaG8wczVneGVzckcwcndaL3NCbkZYck1uZ0ErajQyL1Y2SG43SVBjZnNib1Fmc1F0NTh4ZXRKK2hOdlBHRDFxSCtYMk0wYlAyc2U0L1l6UncvWnhiajlqOUxROXhlMW5qQjYzWCtUMk0wYlAyOVBjZnNhUUFQc2t0NTh4Sk1FK3hlMW5ESW13VDNQN0dVTXk3RFBjZnNhUUVQc2N0NTh4Sk1VK3orMW5ESW14TDNENzN3T2U0djRQb2YyTVgrRCtCejcxbnRqYnB1T0h0eC8rcDN2UG50ODVPbUpQa1c2Mlg2TWIrSTAzMlhzZWprVFAvWGQ3MXg0Y1YzWGU3NjZFc1lYQU1uNFVhd2haWEFPV2themR1M2RmZDIxd0hOdVk0Z1RITm84V0NGMDliTW5vRmUydU1Rd1BFVnN1c2hEUkJEdERNMlF3SkRHbFRRZEs3RUtMVFJSZ1REMDBVK05KS1dIU3hGQm12SzQwSkUxQXZGRy94em4zbkhOM0pleitRZHJwbnBtNys5M3ZmT2Y5bmUrY3ZYdnU3ME4zS2U4TWpDTnU5VHFKVy8wcUtQRGc5dDF3MHorU0MwNndvN09COFdFUldEY0g1MVpEU2YzSDhsY096cDBPMUdBUVBVd041UzYyaGxaVWZoODVFK2VLbUtyK0kvbi9mQWFYV1JCQjlQUzJHbUFYc0gzYlg2eDVCazNDOXpHemdiR2JYaGphS25TZmJ2Q29pM1hOTTdpRElDYWtuNHR3Ky9jK2hrcU5tVno2Q1dQWmcvVHcwSDdhM2hXbFIvK3hlQWhGK21iWTRubVEvZDZuMGpNQVJhQlRVQkh6d0tjQ3hQOTk4aWREVG1UcEU1M1NuekhhQ1BXVTkyNStMcE9IRVI4ZmlRbHI5SnlCY1k4K1BEQ3UrYWo5aGFqeHlFRC9id2wvLzdma0J1WENRYm9sSDJ3RktvMXZxNFh6N3ZuRFdoNEhSQjVDVXRRcnR4YVI2US9nWGVFL1B2SktHYU5TeHFpVTJZTjBTNlZ3dGxRM2tlanJNdHUzMkhQQnhBRWtDb21QUlY0NHdqaDgxbTdvK1ZlNEJKd0sxbWdTK29NU1lJVUtXejlSQ2REaGJkdGNUTEJYVDNEbXdEZ05QT09xYngvYk5yaHFlbCt5TVYrRmZoTkhUbDVIdzFWTm8xSjR5V3ZMcWpFU1c1TGZJSDBCVCtUSENpOXA5VnRDdmlaMm8zL1ZzY0lGSDBzSERlaXZIQmhuZnl5dy9zZWdEQVMvb01xY1BBa2ZvTjlZWUQzVzlHSlJJTG1qSEZnRjg0TThsMDQ3aWRzWWNtL3BvZ1BCYjMwbzZ6VWluSnZtcGtHQ3crd1hHMHQ4cHkyeVcweFBMUDQ1eWpkRVRtcnZYWWVjTzlnQjk4REk5dmNuY3U3Z3FnY3ZzbUN1TDdQQW9PVXZoZHZ0eDVmM2o2QTdFcUJBKy9NemlRb0FkY2JvV2FpRDJKTFIrbUdxWDNDMHhvUERYL1hPeVRVVFBJaFF6QjZ0NjQrb09VWStDY0I2WTNmRmNDa3VWSDhvUFJ4c0NSUXVoMVFzdStHZXNZMEJkTGJ3ejlMQndxcnFRZWsxL3M3cGdidG5LVzE1WklLeUdINnBmMFQ0YTZDNWdqZnBWZFB2T09Na0FpYngvUzFIS3pHanlwcStaTVBNZnZReDdlT2ozNEgrSHdObkYzM2V1K3E5dmtOSTlPUzJDdUx1dVV5MHpOeEJpOEJmY0huTXpPYk9ZaUtmV3pEYU0wUjVUL2pMR0NDblRhTk5QTCtLUlNhY21zSS9jUCtOTHBzMEQzUXBNM3JCTVBjUU5ucFU2NUw3cFRIaHhDZmZScHN5UHJobmhKMnExQjBkNkQ5SUV4ay9RWWxuYkQrRWRiTHlXaDUvSWsxVk5Zc05qUHowZUhENXVzSmZ2KzlOOVAzQWZxbi9SVEZFdzRORXBrbjZqdUNvdy9lM3ZGWTVPTFNmU2pPYlVEbGYxbStJQk1Gd0hSSjVvQkRuWGtrYlBxb0UzaytFQzVkOTdKVlAvazdJL1o2Vkp6dHg2eDVRcWNmZjAxUnE3SDBzK0RXeXFleDlCR3NYdU9zR05NRlk3UzJoSVRKcTZ3cUJEeWpkNFZVbkxIS2FOSDNpQUhaS1lUNDF1QnBuM1RwbXlSUy81cTRZM0xQZll3NEVSOC9oKzBFYTVvSGc5a09rd3pOM3hBUHN1VFhZdGhPcmFhdCsvQ2VxR0g1T2NEdUdVZUNOY1o1RDVBdmxKMmlYZmpPT3pmZ3Jrc2JQaWR3Y0pxemNKV3hZOEdjY21aVkhNSWVIOVJ6d2xPTEFlT0VqNEJYMlVVWS9vb3grUkJuTlpzTEtYY3daWFMzczRST1l6M1Y2UGpIS2gvMWozelh1ZGJWVnVIQmM2L2M1NmlaWU9GUGVUTjlpVFJ6QWRoYmVVcXlBWUwyaVdFSEJlazZ5MEpPbHRXV2ljQ2N6Q252ZVJZVWM2SCtHbXZCTHF2bEd0TVNIb0w0VEI1QlIrTnA3WGdjZkpiR2pKTlpBVG1vd1lkdFBTQmpaaFIzdmVwNVdtTkhNSmJFa0QzdmJDM3M4dTdWUnlrTUdwSmprOXFid015K2J0dVBZYzE5NFYvV2M1NzdWODlmeEsvZ0JJTHdiYjZrbzNQT3U4TGlHZnE3MXdONkpLeCtaQS91UFovRURiZmM4TURwREJ5K2gyV0g0QkxucGhSTDdFVlhtbG5QSlhoVWVHNS9VVGNobitRY1JiaE8rbk9tNkpCZUNYNDJoSzY1Y1djeThCcGlOMXJvdmJWeGpYWlJ0dkVqelVYRDltdmFXMWxCRGFGMXZkelBpaEs3TzNOTGFXNC91RmpZMHQ3WGYzdDNUMjlyVjNoeTZ2aXUvcmJVM3RMNDEyNXFCMzZtaFJjMTFDRDl2VjFWZDNVUGVDdHlxaG13SWZzTzJkMjJlZ1hrUVBpaGl0bUt1VlEwdE0yYXN6M2VGTWowZDdYd1lJNVRKQ3NoN1JEdkl0WGFHRm5WVFRwbU91cXFHZkFoKy9kN2d3cS95bTJaOHVRMWYxTUltTkVMYjZzbHZRS2FyTzljRzlRRzYxMGpZUTVEK1dQYU1EWm10clFUeWozNDBCRk9YclZxMUxZT25qVnh5dDVFTkxjQ1RBUzJoaHM1UWVFR29BWWllVUs0MW04Ti9PRUpMR2xzM2J3NDFkZWZvTDdhcUttdDF2cU1qMUpQSnRVSDN0dDVpTmJhMGJtM3NBcDdzK2lMRzZxdlhYOVVRTWU1czYxWUw0Ym1YTGJ1TXVoMHJTSlZaMTk3eTFYd251cGVvWXY4Vk9JenNCR1JTMU5QUVBvWHg2TWUzUEtqRkJSRlhFNjRGK0J3THJoVndyWWVyQ2E1ZXVMNEoxN2ZoZWhTdXArQjZIcTVqY0wwSjErL2dDZzVBZXJnV3dHWGpzeWE0MXNQVkJGY3ZYTitFNjl0d1BRclhVM0E5RDljeHVONkU2M2R3QlhkQitsM3l2RG8vSDhEbnB2aXpCSit0UHZtQWlTZDZjQWZqaWQ0bzhFVHhHVU1wUE5HRisvaU1hazNBeEJOOWNTZmppZTdmeVhpaW1FN0hFODN0TlBGRUYrMDhmVHhSZnF6eHB2WDNGM0MrQ0JLNWNoZS9BeUJwZk5hNVZNampEK1ErUWZkcTlIMGEvYXhHLzE2akVhcEwwdmRvOURHTi9rU2o2NE9Ldmxhajc5Ym92OVRvL1JyOXJ4cDlUb1dpSXhwOXJVYjNhZlRqRmZ4OEZzTUxHbzNoMFJMMGpFcVdhYjRXQVN1Wi9zME5BV3R0cFVyYnBORzNWWDUybmpvOUpPUmZnKy9EbFZqUGw0cGtYaWQraU9qL0l2cENvbEVSKytqcHEyVjlnV2grYXlOS05MLzFkUlhSL0E5RGh1Z0kwZHVJWnN6U1lhS2pSRDlHdEVQMENORXhvbDhqT3M1MUlEckovWU5PTXkxKzBYQUIwV21pVnhDOWpPanJpYjZNNkM2aUx5ZDZCOUhMaWY0dTBWOGkrdStJWGtIMEVhTDV6NkpmRTcyUzZIR2kyYTFGTlo0dHRWWVR2WkJvZHZxUkpub04wUnVKdnBMb2RxTFpYOGEvRVAwMW9rOFF6ZDRvOFBsZG44Vk9PUzRnbXQxQXBJam0vM0d1SWZwYW9qdUo1amZ5K29tK2dlaUhpZjQ2MFU4VHphYnlaMFR6djZNbmlPNGdPb0JlZ2ExdkVGMUxOTCs4R3lPYUhTMnNJM29ybDBzMC8zOTRMOUczRS8xRG91OGsraERSZlVTL1N2UjJIa2VpZHhDTi95djMwVnVmbG5VeDBidUlYbDdGK3ZueTdvQ1ZFL1JxTUZZUFZhazVoVUhxNmpHTlgzdVcwc2xyejFMOFA2MVdPcFlubWkzUTg5VnFyRCtzVm1NNjcydzFGbzhUL1dmY2IyZXJ2cTA4UitYL2kzTlVmMzVBTkNPN2YyV202cXN1b3U4aGVwem9uVVE3TlVqZlY5UXVuWlp6ZGhhMGRTM0pmNUZNYlJQUnlZQmYvdFlhWlJOMkNicnBpeW9mdi94RE5hWDVSeWovcTZhczI5cFpLTVB2cTMxcmx1ci9uODlTZVo0UWRPeW5iTWVlMStvcDZWMWFIWVkwbVljMEdYK2ZTUDc3czlSWS9OdTVtcTJlcmVaamNyWnF5MmFpQ2I3UmVuQzJtbDh2ejFaalBXMk9HdXZMaWM1d25ZbHVJdnFKT2Fxc0crY3Erb3cvVXZSSEd0MTdIdEovVzlRV25mN09lY29HenBpUGRJTG9DK2NyRzVpYXIyemdCcUxkb253NjUrTi9TK29memhhTDE5L3Q4NWxlQ3Z1TEgydjAvOGQxV2VyUEN4cjlqL09WSGg0VjlJME5scUczVFJwOW0wWXZGTFJjcnlWZjZpcXV1V2pma0piMkRXbTBiMjlvNWY1ZTBQaU9qOXdEeUNESE4xaXI3SlhPMStuemF0VzZYRS8wWXFLWEU4Mm5VamJXS3IxcXIxVnI2TjIxeWpZK1VLdm16bU8xeWpZK1Y2dlduVmRydVo0clRzRDQxcXArUG5KK2FiczlHZDEzQVo0NXVKQjA4bjZnOTRJVzQxN3lVVUhMc3dVcnhaNkU2UVhpRFdDay8xanNVUGpzd2lXQ1JqMXZoanpsZXh5RUZaZnRiVzVzeXJkM3REUTZZU2NXYlVDOHVNWVYxMXk1ZHFXSFpHWXZjUkRKck5IYTNOeHNJN3hRRDdvdldBTFo1Tnpjb25COXBHNVpMMzJsRyt5SWszQ1MwYmlUVEh0a0ltMGgzZytKMml4cTE2WEQ2WWdOTVJLdmlXS2pIQnVkUENNZHBZbVNPSnpFZ1F6MUFIZlJoQmRFTVVXSlk1dzRkaXFKallyRzY1WXR6OGFkZEMvUjZYQWtYQ3FrdzRsU0lUMEo2aFRsbk5CeVRoVFZLekpKaGg0WUZ1V1J4RHdpY2NvakNYMFp0UlB4WkJvL1BkR2ljbE5hbWhTT0RwN1dpNlV0RFlhT3h6cU1na21TQXpyZEVMR1RQSklHWkIzTFJqVFpDR1pxeHlETFRSM2RHYUU0dHFjNURzUmFMZDM1SnZnUlRsRlJMeXFKVWRSYmVyemp4VWRzRk9EWGhiWjVEWXJBNEdhVHZhMlpEcGZFNmtHdjdIUjdaMmF6dUkvYXlGQUp0V3JGUmQ1eFViZ1UwY3RQQ0JrWUpPZzJUYWlvcGtraENVTmhVek52dmhrblhLNjk2K2F0bVp2eFZSS1dneUZZakhNRGVwaS9DT0JSWURUU1ZNemUxdG5VM1lHQWthY3pkVW1FSWdYNm80Y2hPUVc4NUtsaVkycFYzTlNheWVWNy9WeEkyTmpjMHJwSnNQRmxLb05YR3JDeXQ3V2xMWk1UOWJXWHBPTEZZSldNT0FoZGwwUURSRGJBUTVNRHJpTzRvSGdLQ0kvNE52RlR6R1oxY2REMHFDeHdDSW5yRURkV3AyRzRFVDlHL0VTZEI2aEgzRGh4NDNVZUZoWnhFMXlOY0oxQ2ZpSitVcXVlUUZjaWZvcjRTU251OFNOaFZXK0JvOFY4MFU2WlFFWFlxazBDL1l2NVVWWFB2QkhoYU0zaUZ6T1lqODExYUZvc3BtWkt5RDJPVFZBc2QxSzc3QXZVZXVwV0NjTEYzSlRpRXE0aEQwaVl1RlJSUm14amRrUUpDN2d3NXR1S1QzQld6T1ZXRWJkRFl6c2tUSFh1OGVwaHgxU2ZaVDFGQW41YzhSbnZqdGtKVlVFSjlza1JTZFYybGJuV1NJWlZaQTNqVmtZamFKY0lrOVBGVzJoTXBoY0pNbmowUGVWcWhBdG5XbG8wV0NqU2xnZGd5c1U0cWduTk9wOEhNUm9YVmdiakdRdVZveE9xK3hSbUgwY2xsUjVsL1hFcGxVd0F1ZkhFQ1N1K1FMVmpmc1RIOTdySHNWVzlCWmdrODZPS1QzaDR6TlZhNlVFcWNreE1UUk1QbDVSajRxcHNpVXJIRVFsL2hEZkFUbEtwajhLeTQ2aVVVZ29kZHBBTlJGZ3Boa0pBNWFpSW5rN2hvSEtrclNrVW95VXlQNnI0QW9XUCthemVOdVdtY0VZNUxxYWFwZUhiY1Z4Y1dUWUoxOGdSQ1cxbVNQaEFqdkhVNEgrQ2NIeXFBTW9HQ3FDN2NWR0V0cGRaeDQrV3FTL3E2V0xzUFVpWnFoY3pqZEZsWGVvS1RxRHdISDE3QVJQQUU1cWRvdFVpaGN2RFl2aUMzdDZXTFlueTZWcCtKRmVxQW01Q29uRURsMUd2dVlFUWFOUkZCK3QxdVJkZ3RuT01EdDBxRXFYaU1sRjNqeXdCZG1iTTlJQXVYVm9yd1pETHduVWdZNWtxWmZzaVhkNmNnTjExdEJndFB6c1c1KzR6UVFpcCsrTFVmYUJuSnRvdXhTVW9EdFFxRzdFbFFxWkw0OGFtVFVNVmRXa2tSQStrUytBU1U0WXB5aEFYU2xRWWVqSGMxQk1EV0pPU1JMeTlndy8zbDJONTlISEZ6TnFPanNocWpxSkFxL1dOb0lEUk5Pb3VjUnQ5NDlhcE54NEhqaXg3Q2R4U3JwYkQxWXB4UXoyY3h0S05aVHhaVHFqV056L2VJOCtZQk9xcjdjRVRtNk9oOEtsRlFiSkpIcml5YUtwc2xROWtVc1I2ZXVtSEdwYnhVajBGUXJkZk1SWEFwNGdSaXBtMml0cEViVTV5WnlYcVNzS2RzZ3hyRG01RTBHSklhR2R6a00xQ3Bja294cWhscytIdHlvcXdqem1lTmNzbXpRcDdNS3BtaDJ2WXNyNGVWeGl1UGtWUzhLaG1iNmRMSXhkelhWaWRiS0ZPWmp0OXlpUlNlTXVIZ1BJRmJpUlM3eTN1aklmTVRGdGJOdVFtWGtMY0Y0UGVUN0ZPME04YldpeWtzQWI4aW1WRnFRTHdaZk13Nm5OU2pDRWhvYnNvQXgyZmR3ak0yT1ZhU2hGRWZDWUpSKzNNWU5NVlRkT3VTZlNIV2pFa0ZDNVVnTXZuNHRHaUFkL2xuV205TXJnNUxwNDFpUGR2Q3NLY01vbFNKZzVtRXZjeWdZVmVhb1dSQ1NnRVphSjFydlFHVU9RZUlJVHJhUUlyMmFwQWV0MXd2WWtwN2ticWRWaGkxNjQzWUlEZGFIMEpxR2JYcVMrQkUrN0c2a3VpcDd2eCtzbWdrdDFFVVJJRm1POG02MHZqQXJ1cCtyUnNucTAxVDZCRWEwMHlNSHVoYldrZGhSZVZLRUg5RDE4T0x2bndEYk5pazl3Um1WNEJXRHpPNGdraG5pd1NGeWpTTEoxaWFWeWpTQnpYbjAzaTUzNFJ5aThub1VVSXY2TXlqVk5VUmhGV3NVZ2FFMG5qTW1saWtxUWVpTFJJbUJRSlV5SWhtc2FTQ2MzT0lMT0gzN1pNRjUwa25kRXJaSUh3T3lhVHhTZnJGbnpkWFF4MFF0aE8xVitpdStSMEsrNFYwU25lRW0zV1JWVEZzN0pVbHRqOVNBT0xDTkFzbUpSMVRXaFdWZ2ZyRnRXRUxzekc0aVppT3VVUWxVcUF2d2xoWDFuSzU0SHJiVEVZcUowVDJ2SkhuTmNRZ2Yzdld5WThUR21YZi9wNXJSQWVDeVRiVzVKbEwwUzFaZGdiWWRaMnRSRHIzYWJ2RDMzbzFYS1Zqc205anVsa1FrWW5rMFdwYzkzZVloc3VTcXNpWTdabVhUZmw1UU8vYUxMRU1EcVJlUEZBYVVxRlA4TnB4ODZJK3R3WkRuZDNSSzBqSHQ2K0ZQQUdnaEQ1ZmNOUTdLUEJ0MnJyb1BEKzNUczcxT0J5ZUhwRS9adDR0UnpnMk5BaVFZb3Q5VlR0MEhXUEk2TEJjVjRzMlIySTJORjdXUk1McGFSNUEyMzJtc3I5aXJGSlk2bHNpS1JGVjJJUGhMVmlwWVVWVnREeEpnRCt3UFpjck5BcUdLTlZNSTZydElNK01Wd2g1LzAwRUY0T1hKQkNRMUJhU2xXUkt3TmFCb3QzR0hXR1YxNzFoQzBxbnNnbDZ6U0hNY1JQZVp2bUsvUkhjbEg5a2R3VityTzNxUGF6d256eHk3MkNjenFkNTdmdDNZMkl5b0wvMlBpZXF4S1hGL3B1UDBPSTRhTVU1aUFsYjcwSFB4RitUSnJFQWJhMFozckV3eTJ6ZW5abk13OGFxNTdjUlltSFJscDdidWN3RTFxcFA3V0xNZGV1czlURHVUanpZTU9vSGh3bXVCZ1lCZU5wUzVMWVRvTFkya09kRlBQamRaLzloSUg3QnI5UTgrUDhlQ0NaemVHelRKZWJLOVdtSjlNU2NXbGtVV2tpOFRSQ0NuVjF1OXhZTVcyQmg2MTJ1YkZ5d2dLWG11MXlhK1U4QlRhMDBlV21TUk1Lek0yQ3Fld25NSHUxR3VIVWxYV3lSWjNRSEhLbDVLOXczR01LT3doYzBVVXU5NHcwaEJTQjJDQXU5NlMwaGNEUG9FSzRyQWIxamlNc1Q3NExWWlk2QXBaTUp5a2IwcWxMeHlLMkxtMEw2WmdqeTJ3MnBCTnhYVG9xcE9OaG8waEhzcDJ3em81SmRrSnN2bkVzNHc2UEptNjZVL0VwUjFOYjJmOFhqYWZqTFcvYWVPSjJIOGNUSkl2SFU0MmJOcDVKSGpoT2tKbGloQ0pGSTlRNXhRalo1Z2o1eDlNM1FsRnpoRlF2eDBBL0UyRkhQckNtU2JpYVRTR2V4M1Y3Y0RjVDhSNU40OHBMTE41RzRsdzFmSC9qUDBKNDVqZ2NUa1Fqb1VYclcxdENheks1MEZxYzdhSEVrZ2dKTktRU24yT3E1T2VZNnZPc0laUWxEOEhpSWF0d1pFa1lUelArb1hoL1NQOGpSSjZLRXhMVDl3aTVIZkg4a21USkFRbDlaRVU3TWsxVUpjOHBDZGJmT28zd2VmZ1BRWGVLbFpvY1hyci9FRHlUZlNNUWZ4NmMybjhJbnVFK0NCRzNhQUFBa3RUOWgrRFo2MFhUTERxaEpzdVZHQjY2L3hBOHM1MmJ4dmdJVS9rUHdUUGYrNmR4ZmZSMitQMkg0Qm54RjZmeDJmRkthM0wvSVhoRy9lZG5XZ1lLdnN4WDl3c3lCbkxvMmowY05PWHc2dFBrRUtNbFZHVlp3NXEvQmZsTy9VNU5Ecy9FUHpuYk10RHhaYm4zV1VvUGpvUGNjWkFMYWVXR3hQZHVTL25USUZ5V2Vhb3NQYi92YW5MNGptM052TkwrT1g2Z3llRnJNSFBtbGZiMzhUZWEzUGtnZC80a2NrOXBjbmlXZnlISVBlaVR3K3RwUy9rdElmeVllWXdkNC9kYk1tSXByQnA4U1dpSDZjckEwNy9EbHZJZkl1VjBMd1d5Zmk5YkpuNEZ5djJnU3VrQ3l1RVpyVmNzRTVkbDBRS0wzZ3Z3bC91Nkw3OWZMYmVzMjB2TUQ4UXAxaUNCcmV0WFdOcXBXU1huOTgveDFncDhhYnhZVHVxS0RIMXJRRWZPWlB5YXBkYmsvam4yWGcxelJsT0VVdGcwTXB5dWY0NGJmZjQ1MEY3d1BZK3FmQ2REK3VmSWVmZmNNL3U5ZTlhc0Y3MTdubGc0Yi9tZVFiM0d2SHYyenhIeS9IWHdLVHVjYjN6UC9qbU9lL2NDcldlZjZaK2p4cnZuR1RYSHUrZlRlZWQ3OTR3Y3ROQzdaNHQ5MEx0bi94eW9oM3cvMTNmLytmdm4wTWNaL1QxZ0Q2M2NKZCtScWFZYzVEMzZtN2pVSjIrWFNOK2pwY2RUbDlQM0tmOForR2JDK2Q3OXVZU1pVNjNGMzZDbHgvTHdCSCtORjE5RHAreVBhdkdJV1lPQUFlZFo3SThEYmNweExSN3RXTTJndW4vQ3lHK21kY2hTNHhtQThTelpuZ2RVZTE3VzdqRy9OK0Q3UEMwOWxyZjNnY25MZTl0UzczSmgrei95dGEvVWVEeXBsVDhqVUJ3ZkdsVHhNMzN4OHdJbXB0TmlINmJUMG9DSjZmVFZnTkxYV2FDdjEva3ducmJodnVIK3l1bDFGdU9iMytYRGZFSi9ITWZGTzE0MU1KKytFekF4b05CUGg0NEI5V3pBeElCNk9XQmlRUDE3d01TQWVodnVSKzZyblA2TkFKZVB2cEh3VEMyZWh6MDNXRzE5R2pBeG9tcUN5ajZnZjRwNVFSTXphbEhReEl4eWc5eWZENHY4VndaTkRDbkUvZGN4cEc0TG1oaFM5d1ZOREtudkJVME1LZlRIRnZMOFpWUmJUd2ROVEtralFXVVBac0g0NFZsd3hQTDRaU1hMdng0ME1hZmVDNXFZVTRTcm8yRk96VWNUdkUvNVExaFlvZlFKL1Jrc3JqQXhxWlpXbUpoVTExZVltRlFkRlNZbTFSMFZKaWJWY0lXSlNiVzN3c1NrUWw5MGNyd1d3SGdkcUREYmU3QkMyYzlaWUQrUFZaZ1lWbS9DL1Y1Ti9rU0ZpV24xUVlXSmFYVldwWWxwaGY0M2RFeXJ4a29UMCtxeVN0VmZpT2QvVmFXSmNYV1R0a2FHOEVNRHp2Y2RwZmJqNklzVDJocWNmZytCL2VvZytwOE5rRjhDWmgrTEY1RDUvQWZERXR2QTBhZUgvVXh1NnU3Rmd3UGQwdWVvQ2VkZkNqci9WRUg0TytsaHBuaW1LZEd5ZkREZ3pXMEdNUGdVeVBnbGdiRU1IUGRzWm5QcnBMajFEQ0JtSUVKL05wSTlZNUFaaFNCOG1KRWszOUdCYndXTHh4MENXY3lvQVAyc1BCVzArR1o2NzduNzFxN0owTXVtUm5zWHlHQW1EbmRyczFIL0VtRHZRaGVMTWRsMVBIVUNMNXNTTkIyeDJQeURPeWs2dXNRMzk2T1ZtL2h1V3N5U3FJY001OGNqOSt2UHJUNHRLOElpOXdHUTA3Q2RQc0k0SThUNTBObDlvT0lDWDg1VU1SOXllQkZrbk5aTjJXSmdlQk0vcnh6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SeitiNFQvQmpmcENFd0FHQUVBIjsNCg0KJGJhY2tfY29ubmVjdF9jPSJmMFZNUmdFQkFRQUFBQUFBQUFBQUFBSUFBd0FCQUFBQTJJVUVDRFFBQUFCTURBQUFBQUFBQURRQUlBQUhBQ2dBSEFBWkFBWUFBQUEwQUFBQU5JQUVDRFNBQkFqZ0FBQUE0QUFBQUFVQUFBQUVBQUFBQXdBQUFCUUJBQUFVZ1FRSUZJRUVDQk1BQUFBVEFBQUFCQUFBQUFFQUFBQUJBQUFBQUFBQUFBQ0FCQWdBZ0FRSUxBa0FBQ3dKQUFBRkFBQUFBQkFBQUFFQUFBQXNDUUFBTEprRUNDeVpCQWc0QVFBQVBBRUFBQVlBQUFBQUVBQUFBZ0FBQUVBSkFBQkFtUVFJUUprRUNNZ0FBQURJQUFBQUJnQUFBQVFBQUFBRUFBQUFLQUVBQUNpQkJBZ29nUVFJSUFBQUFDQUFBQUFFQUFBQUJBQUFBRkhsZEdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFFQUFBQUwyeHBZaTlzWkMxc2FXNTFlQzV6Ynk0eUFBQUVBQUFBRUFBQUFBRUFBQUJIVGxVQUFBQUFBQUlBQUFBQ0FBQUFCUUFBQUJFQUFBQVVBQUFBQUFBQUFBQUFBQUFSQUFBQUVnQUFBQWNBQUFBS0FBQUFDd0FBQUFnQUFBQVBBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFCZ0FBQUFBQUFBQUJBQUFBQUFBQUFBa0FBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFEUUFBQUE0QUFBQUNBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMkFBQUFBQUFBQUJ3QkFBQVNBQUFBckFBQUFBQUFBQUJ4QUFBQUVnQUFBRHdBQUFBQUFBQUFDd0lBQUJJQUFBQklBQUFBQUFBQUFIMEFBQUFTQUFBQWpBQUFBQUFBQUFDc0FRQUFFZ0FBQUtVQUFBQUFBQUFBcndBQUFCSUFBQUJqQUFBQUFBQUFBQ2NBQUFBU0FBQUFrd0FBQUFBQUFBRGRBQUFBRWdBQUFFTUFBQUFBQUFBQU9nQUFBQklBQUFCY0FBQUFBQUFBQUtvQkFBQVNBQUFBVmdBQUFBQUFBQUEyQUFBQUVnQUFBSE1BQUFBQUFBQUEyUUFBQUJJQUFBQjRBQUFBQUFBQUFDZ0FBQUFTQUFBQWJRQUFBQUFBQUFBT0FBQUFFZ0FBQUM0QUFBQUFBQUFBZUFBQUFCSUFBQUI5QUFBQThJZ0VDQVFBQUFBUkFBNEFUd0FBQUFBQUFBQTVBQUFBRWdBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQUFBVkFBQUFBQUFBQUFBQUFBQWdBQUFBQUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBYkdsaVl5NXpieTQyQUdOdmJtNWxZM1FBWlhobFkyd0FjR1Z5Y205eUFHUjFjRElBYzNsemRHVnRBSE52WTJ0bGRBQmllbVZ5YndCemRISmpZWFFBYVc1bGRGOWhaR1J5QUdoMGIyNXpBR1Y0YVhRQVlYUnZhUUJmU1U5ZmMzUmthVzVmZFhObFpBQmtZV1Z0YjI0QVgxOXNhV0pqWDNOMFlYSjBYMjFoYVc0QWMzUnliR1Z1QUdOc2IzTmxBRWRNU1VKRFh6SXVNQUFBQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBRUFBZ0FBQUFBQUFRQUJBQ1FBQUFBUUFBQUFBQUFBQUJCcGFRMEFBQUlBc2dBQUFBQUFBQUFJbWdRSUJoTUFBQmlhQkFnSEFRQUFISm9FQ0FjQ0FBQWdtZ1FJQndNQUFDU2FCQWdIQkFBQUtKb0VDQWNGQUFBc21nUUlCd1lBQURDYUJBZ0hCd0FBTkpvRUNBY0lBQUE0bWdRSUJ3a0FBRHlhQkFnSENnQUFRSm9FQ0FjTEFBQkVtZ1FJQnd3QUFFaWFCQWdIRFFBQVRKb0VDQWNPQUFCUW1nUUlCdzhBQUZTYUJBZ0hFUUFBVllubGcrd0k2RUVCQUFEb2xBRUFBT2puQXdBQXljTUEvelVRbWdRSS95VVVtZ1FJQUFBQUFQOGxHSm9FQ0dnQUFBQUE2ZUQvLy8vL0pSeWFCQWhvQ0FBQUFPblEvLy8vL3lVZ21nUUlhQkFBQUFEcHdQLy8vLzhsSkpvRUNHZ1lBQUFBNmJELy8vLy9KU2lhQkFob0lBQUFBT21nLy8vLy95VXNtZ1FJYUNnQUFBRHBrUC8vLy84bE1Kb0VDR2d3QUFBQTZZRC8vLy8vSlRTYUJBaG9PQUFBQU9sdy8vLy8veVU0bWdRSWFFQUFBQURwWVAvLy8vOGxQSm9FQ0doSUFBQUE2VkQvLy8vL0pVQ2FCQWhvVUFBQUFPbEEvLy8vL3lWRW1nUUlhRmdBQUFEcE1QLy8vLzhsU0pvRUNHaGdBQUFBNlNELy8vLy9KVXlhQkFob2FBQUFBT2tRLy8vLy95VlFtZ1FJYUhBQUFBRHBBUC8vLy84bFZKb0VDR2g0QUFBQTZmRCsvLzh4N1Y2SjRZUGs4RkJVVW1ob2lBUUlhQlNJQkFoUlZtaUFoZ1FJNkUvLy8vLzBrSkJWaWVWVDZBQUFBQUJiZ2NNSEZBQUFVb3VEL1AvLy80WEFkQUwvMEZoYnljT1FrSkJWaWVXRDdBaUFQV1NhQkFnQWRBL3JINDEyQUlQQUJLTmdtZ1FJLzlLaFlKb0VDSXNRaGRKMTY4WUZaSm9FQ0FISnc0bjJWWW5sZyt3SW9UeVpCQWlGd0hRWnVBQUFBQUNGd0hRUWcrd01hRHlaQkFqLzBJUEVFSTEyQU1uRGtKQlZpZVZYVmxPRDdFeUQ1UEM0QUFBQUFJUEFENFBBRDhIb0JNSGdCQ25Falgyb3Z2U0lCQWo4dVFjQUFBRHpwSTE5ci95NURnQUFBTEFBODZxRDdBaHFBR29CNkZEKy8vK0R4QkJteDBYSUFnQ0Q3QXlMUlF5RHdBai9NT2kzL3YvL2c4UVFEN2ZBZyt3TVVPaTQvdi8vZzhRUVpvbEZ5b1BzREl0RkRJUEFCUDh3NkRIKy8vK0R4QkNKUmN5RDdBaUxSUXlEd0FTRDdBVC9NT2dJL3YvL2c4UUlpY09MUlF5RHdBaUQ3QVQvTU9qei9mLy9nOFFJalFRRFFGQ0xSUXlEd0FUL01PZ3Uvdi8vZzhRUWcrd0VhZ1pxQVdvQzZHMysvLytEeEJDSlJlU0Q3QVJxRUkxRnlGRC9kZVRvUnY3Ly80UEVFSVhBZVJxRDdBeG9DWWtFQ09oeS9mLy9nOFFRZyt3TWFnRG85ZjMvLzRQc0NJdEZEUDh3alVXb1VPakUvZi8vZzhRUWcrd01qVVdvVU9oVi9mLy9nOFFRZyt3SWFnRC9kZVRvbGYzLy80UEVFSVBzQ0dvQi8zWGs2SVg5Ly8rRHhCQ0Q3QWhxQXY5MTVPaDEvZi8vZzhRUWcrd0VhZ0JvRjRrRUNHZ2RpUVFJNk43OC8vK0R4QkNEN0F6L2RlVG80UHovLzRQRUVJMWw5RnRlWDhuRGtGV0o1VmRXVTRQc0RPZ0FBQUFBVzRIRDZoRUFBT2lDL1AvL2pZTWcvLy8valpNZy8vLy9pVVh3S2RBeDlzSDRBam5HY3hhSjE0bjIveFN5aTAzd0tmbEd3ZmtDT2M2SituTHVnOFFNVzE1ZnljT0o5bFdKNVZkV1UrZ0FBQUFBVzRIRG1SRUFBSTJESVAvLy80MjdJUC8vL3luNHdmZ0NnK3dNalhELzZ3V1EveFMzVG9QKy8zWDM2QzRBQUFDRHhBeGJYbC9KdzVDUVZZbmxVMUs3TEprRUNLRXNtUVFJNndxTmRnQ0Q2d1QvMElzRGcvai9kZlJZVzhuRFZZbmxVK2dBQUFBQVc0SERNeEVBQUZEb092My8vMWxieWNNQUFBTUFBQUFCQUFJQWNtMGdMV1lnQUFBQUFBQUFBQUFBQUFBQUFBQUFXeTFkSUdOdmJtNWxZM1FvS1FCemFDQXRhUUF2WW1sdUwzTm9BQUFBQUFBQUFBRC8vLy8vQUFBQUFQLy8vLzhBQUFBQUFBQUFBQUVBQUFBa0FBQUFEQUFBQUxDRUJBZ05BQUFBMElnRUNBUUFBQUJJZ1FRSUJRQUFBQ1NEQkFnR0FBQUE1SUVFQ0FvQUFBQzhBQUFBQ3dBQUFCQUFBQUFWQUFBQUFBQUFBQU1BQUFBTW1nUUlBZ0FBQUlBQUFBQVVBQUFBRVFBQUFCY0FBQUF3aEFRSUVRQUFBQ2lFQkFnU0FBQUFDQUFBQUJNQUFBQUlBQUFBL3YvL2J3aUVCQWovLy85dkFRQUFBUEQvLzIvZ2d3UUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1pCQWdBQUFBQUFBQUFBTjZFQkFqdWhBUUkvb1FFQ0E2RkJBZ2VoUVFJTG9VRUNENkZCQWhPaFFRSVhvVUVDRzZGQkFoK2hRUUlqb1VFQ0o2RkJBaXVoUVFJdm9VRUNNNkZCQWdBQUFBQUFBQUFBRGlaQkFnQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQUxuTjViWFJoWWdBdWMzUnlkR0ZpQUM1emFITjBjblJoWWdBdWFXNTBaWEp3QUM1dWIzUmxMa0ZDU1MxMFlXY0FMbWhoYzJnQUxtUjVibk41YlFBdVpIbHVjM1J5QUM1bmJuVXVkbVZ5YzJsdmJnQXVaMjUxTG5abGNuTnBiMjVmY2dBdWNtVnNMbVI1YmdBdWNtVnNMbkJzZEFBdWFXNXBkQUF1ZEdWNGRBQXVabWx1YVFBdWNtOWtZWFJoQUM1bGFGOW1jbUZ0WlFBdVkzUnZjbk1BTG1SMGIzSnpBQzVxWTNJQUxtUjVibUZ0YVdNQUxtZHZkQUF1WjI5MExuQnNkQUF1WkdGMFlRQXVZbk56QUM1amIyMXRaVzUwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQUFRQUFBQUlBQUFBVWdRUUlGQUVBQUJNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUl3QUFBQWNBQUFBQ0FBQUFLSUVFQ0NnQkFBQWdBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBREVBQUFBRkFBQUFBZ0FBQUVpQkJBaElBUUFBbkFBQUFBUUFBQUFBQUFBQUJBQUFBQVFBQUFBM0FBQUFDd0FBQUFJQUFBRGtnUVFJNUFFQUFFQUJBQUFGQUFBQUFRQUFBQVFBQUFBUUFBQUFQd0FBQUFNQUFBQUNBQUFBSklNRUNDUURBQUM4QUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUVjQUFBRC8vLzl2QWdBQUFPQ0RCQWpnQXdBQUtBQUFBQVFBQUFBQUFBQUFBZ0FBQUFJQUFBQlVBQUFBL3YvL2J3SUFBQUFJaEFRSUNBUUFBQ0FBQUFBRkFBQUFBUUFBQUFRQUFBQUFBQUFBWXdBQUFBa0FBQUFDQUFBQUtJUUVDQ2dFQUFBSUFBQUFCQUFBQUFBQUFBQUVBQUFBQ0FBQUFHd0FBQUFKQUFBQUFnQUFBRENFQkFnd0JBQUFnQUFBQUFRQUFBQUxBQUFBQkFBQUFBZ0FBQUIxQUFBQUFRQUFBQVlBQUFDd2hBUUlzQVFBQUJjQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQWNBQUFBQUVBQUFBR0FBQUF5SVFFQ01nRUFBQVFBUUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBSHNBQUFBQkFBQUFCZ0FBQU5pRkJBallCUUFBK0FJQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDQkFBQUFBUUFBQUFZQUFBRFFpQVFJMEFnQUFCb0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFod0FBQUFFQUFBQUNBQUFBN0lnRUNPd0lBQUE1QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUk4QUFBQUJBQUFBQWdBQUFDaUpCQWdvQ1FBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1pBQUFBQVFBQUFBTUFBQUFzbVFRSUxBa0FBQWdBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBb0FBQUFBRUFBQUFEQUFBQU5Ka0VDRFFKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLY0FBQUFCQUFBQUF3QUFBRHlaQkFnOENRQUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNzQUFBQUJnQUFBQU1BQUFCQW1RUUlRQWtBQU1nQUFBQUZBQUFBQUFBQUFBUUFBQUFJQUFBQXRRQUFBQUVBQUFBREFBQUFDSm9FQ0FnS0FBQUVBQUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBTG9BQUFBQkFBQUFBd0FBQUF5YUJBZ01DZ0FBVEFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFEREFBQUFBUUFBQUFNQUFBQlltZ1FJV0FvQUFBd0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUF5UUFBQUFnQUFBQURBQUFBWkpvRUNHUUtBQUFFQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU00QUFBQUJBQUFBQUFBQUFBQUFBQUJrQ2dBQURnRUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQVJBQUFBQXdBQUFBQUFBQUFBQUFBQWNnc0FBTmNBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBS3dRQUFCQUJRQUFHd0FBQUN3QUFBQUVBQUFBRUFBQUFBa0FBQUFEQUFBQUFBQUFBQUFBQUFEc0ZRQUFMQU1BQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJTQkJBZ0FBQUFBQXdBQkFBQUFBQUFvZ1FRSUFBQUFBQU1BQWdBQUFBQUFTSUVFQ0FBQUFBQURBQU1BQUFBQUFPU0JCQWdBQUFBQUF3QUVBQUFBQUFBa2d3UUlBQUFBQUFNQUJRQUFBQUFBNElNRUNBQUFBQUFEQUFZQUFBQUFBQWlFQkFnQUFBQUFBd0FIQUFBQUFBQW9oQVFJQUFBQUFBTUFDQUFBQUFBQU1JUUVDQUFBQUFBREFBa0FBQUFBQUxDRUJBZ0FBQUFBQXdBS0FBQUFBQURJaEFRSUFBQUFBQU1BQ3dBQUFBQUEySVVFQ0FBQUFBQURBQXdBQUFBQUFOQ0lCQWdBQUFBQUF3QU5BQUFBQUFEc2lBUUlBQUFBQUFNQURnQUFBQUFBS0lrRUNBQUFBQUFEQUE4QUFBQUFBQ3laQkFnQUFBQUFBd0FRQUFBQUFBQTBtUVFJQUFBQUFBTUFFUUFBQUFBQVBKa0VDQUFBQUFBREFCSUFBQUFBQUVDWkJBZ0FBQUFBQXdBVEFBQUFBQUFJbWdRSUFBQUFBQU1BRkFBQUFBQUFESm9FQ0FBQUFBQURBQlVBQUFBQUFGaWFCQWdBQUFBQUF3QVdBQUFBQUFCa21nUUlBQUFBQUFNQUZ3QUFBQUFBQUFBQUFBQUFBQUFEQUJnQUFBQUFBQUFBQUFBQUFBQUFBd0FaQUFBQUFBQUFBQUFBQUFBQUFBTUFHZ0FBQUFBQUFBQUFBQUFBQUFBREFCc0FBUUFBQVB5RkJBZ0FBQUFBQWdBTUFCRUFBQUFBQUFBQUFBQUFBQVFBOGY4Y0FBQUFMSmtFQ0FBQUFBQUJBQkFBS2dBQUFEU1pCQWdBQUFBQUFRQVJBRGdBQUFBOG1RUUlBQUFBQUFFQUVnQkZBQUFBWUpvRUNBQUFBQUFCQUJZQVNRQUFBR1NhQkFnQkFBQUFBUUFYQUZVQUFBQWdoZ1FJQUFBQUFBSUFEQUJyQUFBQVZJWUVDQUFBQUFBQ0FBd0FFUUFBQUFBQUFBQUFBQUFBQkFEeC8zY0FBQUF3bVFRSUFBQUFBQUVBRUFDRUFBQUFPSmtFQ0FBQUFBQUJBQkVBa1FBQUFDaUpCQWdBQUFBQUFRQVBBSjhBQUFBOG1RUUlBQUFBQUFFQUVnQ3JBQUFBcklnRUNBQUFBQUFDQUF3QXdRQUFBQUFBQUFBQUFBQUFCQUR4LzhnQUFBQUFBQUFBSEFFQUFCSUFBQURaQUFBQVFKa0VDQUFBQUFBUkFCTUE0Z0FBQUFBQUFBQnhBQUFBRWdBQUFQTUFBQURzaUFRSUJBQUFBQkVBRGdENkFBQUFBQUFBQUFzQ0FBQVNBQUFBREFFQUFDeVpCQWdBQUFBQUVBTHgveDBCQUFCY21nUUlBQUFBQUJFQ0ZnQXFBUUFBYUlnRUNFSUFBQUFTQUF3QU9nRUFBQUFBQUFCOUFBQUFFZ0FBQUV3QkFBQ3doQVFJQUFBQUFCSUFDZ0JTQVFBQUFBQUFBS3dCQUFBU0FBQUFaQUVBQU5pRkJBZ0FBQUFBRWdBTUFHc0JBQUFBQUFBQXJ3QUFBQklBQUFCOUFRQUFMSmtFQ0FBQUFBQVFBdkgva0FFQUFCU0lCQWhTQUFBQUVnQU1BS0FCQUFBQUFBQUFKd0FBQUJJQUFBQzFBUUFBWkpvRUNBQUFBQUFRQVBIL3dRRUFBSUNHQkFpVEFRQUFFZ0FNQU1ZQkFBQUFBQUFBM1FBQUFCSUFBQURqQVFBQUxKa0VDQUFBQUFBUUF2SC85QUVBQUFBQUFBQTZBQUFBRWdBQUFBUUNBQUFBQUFBQXFnRUFBQklBQUFBV0FnQUFXSm9FQ0FBQUFBQWdBQllBSVFJQUFOQ0lCQWdBQUFBQUVnQU5BQ2NDQUFBc21RUUlBQUFBQUJBQzhmODdBZ0FBQUFBQUFEWUFBQUFTQUFBQVRBSUFBQUFBQUFEWkFBQUFFZ0FBQUZ3Q0FBQUFBQUFBS0FBQUFCSUFBQUJzQWdBQVpKb0VDQUFBQUFBUUFQSC9jd0lBQUF5YUJBZ0FBQUFBRVFBVkFJa0NBQUJvbWdRSUFBQUFBQkFBOGYrT0FnQUFBQUFBQUE0QUFBQVNBQUFBbndJQUFBQUFBQUI0QUFBQUVnQUFBTElDQUFBc21RUUlBQUFBQUJBQzhmL0ZBZ0FBOElnRUNBUUFBQUFSQUE0QTFBSUFBRmlhQkFnQUFBQUFFQUFXQU9FQ0FBQUFBQUFBT1FBQUFCSUFBQUR6QWdBQUFBQUFBQUFBQUFBZ0FBQUFCd01BQUN5WkJBZ0FBQUFBRUFMeC94MERBQUFBQUFBQUFBQUFBQ0FBQUFBQVkyRnNiRjluYlc5dVgzTjBZWEowQUdOeWRITjBkV1ptTG1NQVgxOURWRTlTWDB4SlUxUmZYd0JmWDBSVVQxSmZURWxUVkY5ZkFGOWZTa05TWDB4SlUxUmZYd0J3TGpBQVkyOXRjR3hsZEdWa0xqRUFYMTlrYjE5bmJHOWlZV3hmWkhSdmNuTmZZWFY0QUdaeVlXMWxYMlIxYlcxNUFGOWZRMVJQVWw5RlRrUmZYd0JmWDBSVVQxSmZSVTVFWDE4QVgxOUdVa0ZOUlY5RlRrUmZYd0JmWDBwRFVsOUZUa1JmWHdCZlgyUnZYMmRzYjJKaGJGOWpkRzl5YzE5aGRYZ0FZbUZqYXk1akFHVjRaV05zUUVCSFRFbENRMTh5TGpBQVgwUlpUa0ZOU1VNQVkyeHZjMlZBUUVkTVNVSkRYekl1TUFCZlpuQmZhSGNBY0dWeWNtOXlRRUJIVEVsQ1ExOHlMakFBWDE5bWFXNXBYMkZ5Y21GNVgyVnVaQUJmWDJSemIxOW9ZVzVrYkdVQVgxOXNhV0pqWDJOemRWOW1hVzVwQUhONWMzUmxiVUJBUjB4SlFrTmZNaTR3QUY5cGJtbDBBR1JoWlcxdmJrQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQnpkSEpzWlc1QVFFZE1TVUpEWHpJdU1BQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlzYVdKalgyTnpkVjlwYm1sMEFHbHVaWFJmWVdSa2NrQkFSMHhKUWtOZk1pNHdBRjlmWW5OelgzTjBZWEowQUcxaGFXNEFYMTlzYVdKalgzTjBZWEowWDIxaGFXNUFRRWRNU1VKRFh6SXVNQUJmWDJsdWFYUmZZWEp5WVhsZlpXNWtBR1IxY0RKQVFFZE1TVUpEWHpJdU1BQnpkSEpqWVhSQVFFZE1TVUpEWHpJdU1BQmtZWFJoWDNOMFlYSjBBRjltYVc1cEFGOWZjSEpsYVc1cGRGOWhjbkpoZVY5bGJtUUFZbnBsY205QVFFZE1TVUpEWHpJdU1BQmxlR2wwUUVCSFRFbENRMTh5TGpBQVlYUnZhVUJBUjB4SlFrTmZNaTR3QUY5bFpHRjBZUUJmUjB4UFFrRk1YMDlHUmxORlZGOVVRVUpNUlY4QVgyVnVaQUJvZEc5dWMwQkFSMHhKUWtOZk1pNHdBR052Ym01bFkzUkFRRWRNU1VKRFh6SXVNQUJmWDJsdWFYUmZZWEp5WVhsZmMzUmhjblFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOXdjbVZwYm1sMFgyRnljbUY1WDNOMFlYSjBBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFBPT0iOw0KDQokYmFja19jb25uZWN0PSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPeWM3RFFva2MzbHpkR1Z0TVQwZ0oyVmphRzhnSW1CcFpHQWlPeWM3RFFva2MzbHpkR1Z0TWowZ0oyVmphRzhnSW1Cd2QyUmdJanNuT3cwS0pITjVjM1JsYlRNOUlDZGxZMmh2SUNKZ2QyaHZZVzFwWUVCZ2FHOXpkRzVoYldWZ09uNGdQaUk3SnpzTkNpUnplWE4wWlcwMFBTQW5MMkpwYmk5emFDYzdEUW9rTUQwa1kyMWtPdzBLSkhSaGNtZGxkRDBrUVZKSFZsc3dYVHNOQ2lSd2IzSjBQU1JCVWtkV1d6RmRPdzBLSkdsaFpHUnlQV2x1WlhSZllYUnZiaWdrZEdGeVoyVjBLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRb2tjR0ZrWkhJOWMyOWphMkZrWkhKZmFXNG9KSEJ2Y25Rc0lDUnBZV1JrY2lrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCeWIzUnZQV2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1RzTkNuTnZZMnRsZENoVFQwTkxSVlFzSUZCR1gwbE9SVlFzSUZOUFEwdGZVMVJTUlVGTkxDQWtjSEp2ZEc4cElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ21OdmJtNWxZM1FvVTA5RFMwVlVMQ0FrY0dGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1RzTkNtOXdaVzRvVTFSRVNVNHNJQ0krSmxOUFEwdEZWQ0lwT3cwS2IzQmxiaWhUVkVSUFZWUXNJQ0krSmxOUFEwdEZWQ0lwT3cwS2IzQmxiaWhUVkVSRlVsSXNJQ0krSmxOUFEwdEZWQ0lwT3cwS2NISnBiblFnSWx4dVhHNDZPaUIzTkdOck1XNW5MWE5vWld4c0lDaFFjbWwyWVhSbElFSjFhV3hrSUhZd0xqTXBJSEpsZG1WeWMyVWdjMmhsYkd3Z09qcGNibHh1SWpzTkNuQnlhVzUwSUNKY2JsTjVjM1JsYlNCSmJtWnZPaUFpT3lBTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNuQnlhVzUwSUNKY2JsbHZkWElnU1VRNklDSTdJQTBLYzNsemRHVnRLQ1J6ZVhOMFpXMHhLVHNOQ25CeWFXNTBJQ0pjYmtOMWNuSmxiblFnUkdseVpXTjBiM0o1T2lBaU95QU5Dbk41YzNSbGJTZ2tjM2x6ZEdWdE1pazdEUXB3Y21sdWRDQWlYRzRpT3cwS2MzbHpkR1Z0S0NSemVYTjBaVzB6S1RzZ2MzbHpkR1Z0S0NSemVYTjBaVzAwS1RzTkNtTnNiM05sS0ZOVVJFbE9LVHNOQ21Oc2IzTmxLRk5VUkU5VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iOw0KDQokYmFja2Rvb3I9ImYwVk1SZ0VCQVFBQUFBQUFBQUFBQUFJQUF3QUJBQUFBb0lVRUNEUUFBQUQ0RWdBQUFBQUFBRFFBSUFBSEFDZ0FJZ0FmQUFZQUFBQTBBQUFBTklBRUNEU0FCQWpnQUFBQTRBQUFBQVVBQUFBRUFBQUFBd0FBQUJRQkFBQVVnUVFJRklFRUNCTUFBQUFUQUFBQUJBQUFBQUVBQUFBQkFBQUFBQUFBQUFDQUJBZ0FnQVFJckFrQUFLd0pBQUFGQUFBQUFCQUFBQUVBQUFDc0NRQUFySmtFQ0t5WkJBZzBBUUFBT0FFQUFBWUFBQUFBRUFBQUFnQUFBTUFKQUFEQW1RUUl3SmtFQ01nQUFBRElBQUFBQmdBQUFBUUFBQUFFQUFBQUtBRUFBQ2lCQkFnb2dRUUlJQUFBQUNBQUFBQUVBQUFBQkFBQUFGSGxkR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUVBQUFBTDJ4cFlpOXNaQzFzYVc1MWVDNXpieTR5QUFBRUFBQUFFQUFBQUFFQUFBQkhUbFVBQUFBQUFBSUFBQUFDQUFBQUFBQUFBQkVBQUFBVEFBQUFBQUFBQUFBQUFBQVFBQUFBRVFBQUFBQUFBQUFBQUFBQUNRQUFBQWdBQUFBRkFBQUFBd0FBQUEwQUFBQUFBQUFBQUFBQUFBOEFBQUFLQUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQkFBQUFBQUFBQUFjQUFBQUxBQUFBQUFBQUFBUUFBQUFNQUFBQURnQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNEFBQUFBQUFBQWRRRUFBQklBQUFDZ0FBQUFBQUFBQUhFQUFBQVNBQUFBTkFBQUFBQUFBQURNQUFBQUVnQUFBR29BQUFBQUFBQUFXZ0FBQUJJQUFBQk1BQUFBQUFBQUFIZ0FBQUFTQUFBQVl3QUFBQUFBQUFBNUFBQUFFZ0FBQUZnQUFBQUFBQUFBT1FBQUFCSUFBQUNPQUFBQUFBQUFBT1lBQUFBU0FBQUFPd0FBQUFBQUFBQTZBQUFBRWdBQUFGTUFBQUFBQUFBQU9RQUFBQklBQUFCMUFBQUFBQUFBQUxrQUFBQVNBQUFBZWdBQUFBQUFBQUFyQUFBQUVnQUFBRWNBQUFBQUFBQUFlQUFBQUJJQUFBQnZBQUFBQUFBQUFBNEFBQUFTQUFBQWZ3QUFBRWlKQkFnRUFBQUFFUUFPQUVBQUFBQUFBQUFBT1FBQUFCSUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFGUUFBQUFBQUFBQUFBQUFBSUFBQUFBQmZTblpmVW1WbmFYTjBaWEpEYkdGemMyVnpBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFHeHBZbU11YzI4dU5nQmxlR1ZqYkFCd1pYSnliM0lBWkhWd01nQnpiMk5yWlhRQWMyVnVaQUJoWTJObGNIUUFZbWx1WkFCelpYUnpiMk5yYjNCMEFHeHBjM1JsYmdCbWIzSnJBR2gwYjI1ekFHVjRhWFFBWVhSdmFRQmZTVTlmYzNSa2FXNWZkWE5sWkFCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmdCamJHOXpaUUJIVEVsQ1ExOHlMakFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUNBQUFBQUFBQUFBRUFBUUFrQUFBQUVBQUFBQUFBQUFBUWFXa05BQUFDQUtZQUFBQUFBQUFBaUpvRUNBWVNBQUNZbWdRSUJ3RUFBSnlhQkFnSEFnQUFvSm9FQ0FjREFBQ2ttZ1FJQndRQUFLaWFCQWdIQlFBQXJKb0VDQWNHQUFDd21nUUlCd2NBQUxTYUJBZ0hDQUFBdUpvRUNBY0pBQUM4bWdRSUJ3b0FBTUNhQkFnSEN3QUF4Sm9FQ0FjTUFBREltZ1FJQncwQUFNeWFCQWdIRGdBQTBKb0VDQWNRQUFCVmllV0Q3QWpvTVFFQUFPaURBUUFBNkZzRUFBREp3d0QvTlpDYUJBai9KWlNhQkFnQUFBQUEveVdZbWdRSWFBQUFBQURwNFAvLy8vOGxuSm9FQ0dnSUFBQUE2ZEQvLy8vL0phQ2FCQWhvRUFBQUFPbkEvLy8vL3lXa21nUUlhQmdBQUFEcHNQLy8vLzhscUpvRUNHZ2dBQUFBNmFELy8vLy9KYXlhQkFob0tBQUFBT21RLy8vLy95V3dtZ1FJYURBQUFBRHBnUC8vLy84bHRKb0VDR2c0QUFBQTZYRC8vLy8vSmJpYUJBaG9RQUFBQU9sZy8vLy8veVc4bWdRSWFFZ0FBQURwVVAvLy8vOGx3Sm9FQ0doUUFBQUE2VUQvLy8vL0pjU2FCQWhvV0FBQUFPa3cvLy8vL3lYSW1nUUlhR0FBQUFEcElQLy8vLzhsekpvRUNHaG9BQUFBNlJELy8vLy9KZENhQkFob2NBQUFBT2tBLy8vL01lMWVpZUdENVBCUVZGSm9yWWdFQ0doY2lBUUlVVlpvUUlZRUNPaGYvLy8vOUpDUVZZbmxVK2diQUFBQWdjTy9GQUFBZyt3RWk0UDgvLy8vaGNCMEF2L1FnOFFFVzEzRGl4d2t3MVdKNVlQc0NJQTk0Sm9FQ0FCMERPc2NnOEFFbzl5YUJBai8wcUhjbWdRSWl4Q0YwblhyeGdYZ21nUUlBY25EVllubGcrd0lvYnlaQkFpRndIUVN1QUFBQUFDRndIUUp4d1FrdkprRUNQL1F5Y09Ra0ZXSjVWZUQ3R1NENVBDNEFBQUFBSVBBRDRQQUQ4SG9CTUhnQkNuRXgwWGtBUUFBQU1kRitFeUpCQWpIUkNRSUFBQUFBTWRFSkFRQkFBQUF4d1FrQWdBQUFPZ0ovLy8vaVVYd2czM3dBSGtZeHdRa2pJa0VDT2cwL3YvL3h3UWtBUUFBQU9pby92Ly9ac2RGMUFJQXgwWFlBQUFBQUl0RkRJUEFCSXNBaVFRazZKdisvLzhQdDhDSkJDVG9zUDcvLzJhSlJkYkhSQ1FRQkFBQUFJMUY1SWxFSkF6SFJDUUlBZ0FBQU1kRUpBUUJBQUFBaTBYd2lRUWs2QkwrLy8rTlJkVEhSQ1FJRUFBQUFJbEVKQVNMUmZDSkJDVG9LUDcvLzRYQWVSakhCQ1NUaVFRSTZLajkvLy9IQkNRQkFBQUE2QnorLy8vSFJDUUVDQUFBQUl0RjhJa0VKT2k1L2YvL2hjQjVHTWNFSkppSkJBam9lZjMvLzhjRUpBRUFBQURvN2YzLy84ZEY2QkFBQUFDTlJlaU5WY1NKUkNRSWlWUWtCSXRGOElrRUpPaHQvZi8vaVVYMGczMzBBSGtNeHdRa2pJa0VDT2c0L2YvLzZFUDkvLytGd0ErRXB3QUFBSXRGK0xuLy8vLy9pVVc0dUFBQUFBRDhpMzI0OHE2SnlQZlFnK2dCeDBRa0RBQUFBQUNKUkNRSWkwWDRpVVFrQkl0RjlJa0VKT2lRL2YvL3gwUWtCQUFBQUFDTFJmU0pCQ1RvUGYzLy84ZEVKQVFCQUFBQWkwWDBpUVFrNkNyOS8vL0hSQ1FFQWdBQUFJdEY5SWtFSk9nWC9mLy94MFFrQ0FBQUFBREhSQ1FFbjRrRUNNY0VKSitKQkFqb2Uvei8vNHRGOElrRUpPaUEvUC8veHdRa0FBQUFBT2dFL2YvL2kwWDBpUVFrNkduOC8vL3BEdi8vLzFXSjVWZFdNZlpUNkgvOS8vK0J3eU1TQUFDRDdBem9FZnovLzQyRElQLy8vNDJUSVAvLy80bEY4Q25Rd2ZnQ09jWnpGb25YL3hTeWkwWHdnOFlCS2ZpSitzSDRBam5HY3V5RHhBeGJYbDlkdzFXSjVZUHNHSWxkOU9ndC9mLy9nY1BSRVFBQWlYWDRpWDM4amJNZy8vLy9qYnNnLy8vL0tmN0IvZ0xyQS84VXQ0UHVBWVArLzNYMTZEb0FBQUNMWGZTTGRmaUxmZnlKN0YzRGtGV0o1Vk9EN0FTaHJKa0VDSVA0LzNRU3U2eVpCQWovMEl0RC9JUHJCSVA0LzNYemc4UUVXMTNEa0pDUVZZbmxVK2k3L1AvL2djTmZFUUFBZyt3RTZMSDgvLytEeEFSYlhjTUFBQUFEQUFBQUFRQUNBRG82SUhjMFkyc3hibWN0YzJobGJHd2dLRkJ5YVhaaGRHVWdRblZwYkdRZ2RqQXVNeWtnWW1sdVpDQnphR1ZzYkNCaVlXTnJaRzl2Y2lBNk9pQUtDZ0J6YjJOclpYUUFZbWx1WkFCc2FYTjBaVzRBTDJKcGJpOXphQUFBQUFBQUFQLy8vLzhBQUFBQS8vLy8vd0FBQUFBQUFBQUFBUUFBQUNRQUFBQU1BQUFBaUlRRUNBMEFBQUFraVFRSUJBQUFBRWlCQkFnRkFBQUFFSU1FQ0FZQUFBRGdnUVFJQ2dBQUFMQUFBQUFMQUFBQUVBQUFBQlVBQUFBQUFBQUFBd0FBQUl5YUJBZ0NBQUFBZUFBQUFCUUFBQUFSQUFBQUZ3QUFBQkNFQkFnUkFBQUFDSVFFQ0JJQUFBQUlBQUFBRXdBQUFBZ0FBQUQrLy85djZJTUVDUC8vLzI4QkFBQUE4UC8vYjhDREJBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdKa0VDQUFBQUFBQUFBQUF0b1FFQ01hRUJBaldoQVFJNW9RRUNQYUVCQWdHaFFRSUZvVUVDQ2FGQkFnMmhRUUlSb1VFQ0ZhRkJBaG1oUVFJZG9VRUNJYUZCQWlXaFFRSUFBQUFBQUFBQUFDNG1RUUlBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFBQWNBQUFBQWdBQUFBQUFCQUFBQUFBQW9JVUVDQ0lBQUFBQUFBQUFBQUFBQURRQUFBQUNBQXNCQUFBRUFBQUFBQURvaFFRSUJBQUFBQ1NKQkFnU0FBQUFpSVFFQ0FzQUFBREVoUVFJSkFBQUFBQUFBQUFBQUFBQUxBQUFBQUlBbXdFQUFBUUFBQUFBQU9pRkJBZ0VBQUFBTzRrRUNBWUFBQUNkaEFRSUFnQUFBQUFBQUFBQUFBQUFJUUFBQUFJQWVnQUFBSkVBQUFCNUFBQUFYMGxQWDNOMFpHbHVYM1Z6WldRQUFBQUFBSFlBQUFBQ0FBQUFBQUFFQVFBQUFBQ2doUVFJd29VRUNDNHVMM041YzJSbGNITXZhVE00Tmk5bGJHWXZjM1JoY25RdVV3QXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZaMnhwWW1NdE1pNHpMall2WTNOMUFFZE9WU0JCVXlBeUxqRTJMamt4QUFHQWpRQUFBQUlBRkFBQUFBUUJXd0FBQU1TRkJBakVoUVFJWWdBQUFBRUFBQUFBRVFBQUFBS1FBQUFBQkFjQ1ZBQUFBQUVJQXAwQUFBQUNCd0tMQUFBQUJBY0NWZ0FBQUFFR0FnY0FBQUFDQlFOcGJuUUFCQVVDUmdBQUFBZ0ZBb1lBQUFBSUJ3SkxBQUFBQkFVQ2tBQUFBQVFIQWwwQUFBQUJCZ1N3QUFBQUFSbUxBQUFBQVFVRFNJa0VDQVZQQUFBQUFJd0FBQUFDQUZZQUFBQUVBWUlBQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25ScExsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdJd0FBQUFDQUdZQUFBQUVBUzhCQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25SdUxsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdBRVJBQkFHRVFFU0FRTUlHd2dsQ0JNRkFBQUFBUkVCRUFZU0FSRUJKUTRUQ3dNT0d3NEFBQUlrQUFNT0N3cytDd0FBQXlRQUF3Z0xDejRMQUFBRU5BQUREam9MT3d0SkV6OE1BZ29BQUFVbUFFa1RBQUFBQVJFQUVBWURDQnNJSlFnVEJRQUFBQUVSQUJBR0F3Z2JDQ1VJRXdVQUFBQlhBQUFBQWdBeUFBQUFBUUg3RGcwQUFRRUJBUUFBQUFFQUFBRXVMaTl6ZVhOa1pYQnpMMmt6T0RZdlpXeG1BQUJ6ZEdGeWRDNVRBQUVBQUFBQUJRS2doUVFJQThBQUFUTWhORDBsSWdNWUlGbGFJU0pjV3dJQkFBRUJJd0FBQUFJQUhRQUFBQUVCK3c0TkFBRUJBUUVBQUFBQkFBQUJBR2x1YVhRdVl3QUFBQUFBcVFBQUFBSUFVQUFBQUFFQit3NE5BQUVCQVFFQUFBQUJBQUFCTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJrek9EWXRiR2xpWXk5amMzVUFBR055ZEdrdVV3QUJBQUFBQUFVQzZJVUVDQVBBQUFFOUFnRUFBUUVBQlFJa2lRUUlBeTRCSVM4aFdXY0NBd0FCQVFBRkFvaUVCQWdESHdFaEx6MENCUUFCQVFBRkFzU0ZCQWdEQ2dFaEx5RlpaejFuTHk4d1BTRWhBZ0VBQVFHSUFBQUFBZ0JRQUFBQUFRSDdEZzBBQVFFQkFRQUFBQUVBQUFFdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUUFBWTNKMGJpNVRBQUVBQUFBQUJRTG9oUVFJQXlFQlBRSUJBQUVCQUFVQ080a0VDQU1TQVQwaElRSUJBQUVCQUFVQ25ZUUVDQU1KQVNFQ0FRQUJBV2x1YVhRdVl3QnphRzl5ZENCcGJuUUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQnNiMjVuSUd4dmJtY2dhVzUwQUhWdWMybG5ibVZrSUdOb1lYSUFSMDVWSUVNZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FiRzl1WnlCc2IyNW5JSFZ1YzJsbmJtVmtJR2x1ZEFCemFHOXlkQ0IxYm5OcFoyNWxaQ0JwYm5RQVgwbFBYM04wWkdsdVgzVnpaV1FBQUM1emVXMTBZV0lBTG5OMGNuUmhZZ0F1YzJoemRISjBZV0lBTG1sdWRHVnljQUF1Ym05MFpTNUJRa2t0ZEdGbkFDNW9ZWE5vQUM1a2VXNXplVzBBTG1SNWJuTjBjZ0F1WjI1MUxuWmxjbk5wYjI0QUxtZHVkUzUyWlhKemFXOXVYM0lBTG5KbGJDNWtlVzRBTG5KbGJDNXdiSFFBTG1sdWFYUUFMblJsZUhRQUxtWnBibWtBTG5KdlpHRjBZUUF1WldoZlpuSmhiV1VBTG1OMGIzSnpBQzVrZEc5eWN3QXVhbU55QUM1a2VXNWhiV2xqQUM1bmIzUUFMbWR2ZEM1d2JIUUFMbVJoZEdFQUxtSnpjd0F1WTI5dGJXVnVkQUF1WkdWaWRXZGZZWEpoYm1kbGN3QXVaR1ZpZFdkZmNIVmlibUZ0WlhNQUxtUmxZblZuWDJsdVptOEFMbVJsWW5WblgyRmlZbkpsZGdBdVpHVmlkV2RmYkdsdVpRQXVaR1ZpZFdkZmMzUnlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QUFBQUVBQUFBQ0FBQUFGSUVFQ0JRQkFBQVRBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ01BQUFBSEFBQUFBZ0FBQUNpQkJBZ29BUUFBSUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBeEFBQUFCUUFBQUFJQUFBQklnUVFJU0FFQUFKZ0FBQUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFOd0FBQUFzQUFBQUNBQUFBNElFRUNPQUJBQUF3QVFBQUJRQUFBQUVBQUFBRUFBQUFFQUFBQUQ4QUFBQURBQUFBQWdBQUFCQ0RCQWdRQXdBQXNBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQkhBQUFBLy8vL2J3SUFBQURBZ3dRSXdBTUFBQ1lBQUFBRUFBQUFBQUFBQUFJQUFBQUNBQUFBVkFBQUFQNy8vMjhDQUFBQTZJTUVDT2dEQUFBZ0FBQUFCUUFBQUFFQUFBQUVBQUFBQUFBQUFHTUFBQUFKQUFBQUFnQUFBQWlFQkFnSUJBQUFDQUFBQUFRQUFBQUFBQUFBQkFBQUFBZ0FBQUJzQUFBQUNRQUFBQUlBQUFBUWhBUUlFQVFBQUhnQUFBQUVBQUFBQ3dBQUFBUUFBQUFJQUFBQWRRQUFBQUVBQUFBR0FBQUFpSVFFQ0lnRUFBQVhBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBSEFBQUFBQkFBQUFCZ0FBQUtDRUJBaWdCQUFBQUFFQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFCN0FBQUFBUUFBQUFZQUFBQ2doUVFJb0FVQUFJUURBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFnUUFBQUFFQUFBQUdBQUFBSklrRUNDUUpBQUFkQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUljQUFBQUJBQUFBQWdBQUFFU0pCQWhFQ1FBQVl3QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1BBQUFBQVFBQUFBSUFBQUNvaVFRSXFBa0FBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBbVFBQUFBRUFBQUFEQUFBQXJKa0VDS3dKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLQUFBQUFCQUFBQUF3QUFBTFNaQkFpMENRQUFDQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNuQUFBQUFRQUFBQU1BQUFDOG1RUUl2QWtBQUFRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQXJBQUFBQVlBQUFBREFBQUF3SmtFQ01BSkFBRElBQUFBQlFBQUFBQUFBQUFFQUFBQUNBQUFBTFVBQUFBQkFBQUFBd0FBQUlpYUJBaUlDZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFDNkFBQUFBUUFBQUFNQUFBQ01tZ1FJakFvQUFFZ0FBQUFBQUFBQUFBQUFBQVFBQUFBRUFBQUF3d0FBQUFFQUFBQURBQUFBMUpvRUNOUUtBQUFNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU1rQUFBQUlBQUFBQXdBQUFPQ2FCQWpnQ2dBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBRE9BQUFBQVFBQUFBQUFBQUFBQUFBQTRBb0FBQ1lCQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBMXdBQUFBRUFBQUFBQUFBQUFBQUFBQWdNQUFDSUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFPWUFBQUFCQUFBQUFBQUFBQUFBQUFDUURBQUFKUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUQyQUFBQUFRQUFBQUFBQUFBQUFBQUF0UXdBQUNzQ0FBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnRUFBQUVBQUFBQUFBQUFBQUFBQU9BT0FBQjJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQkFCQUFBQkFBQUFBQUFBQUFBQUFBQldEd0FBdXdFQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBY0FRQUFBUUFBQURBQUFBQUFBQUFBRVJFQUFMOEFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFFUUFBQUFNQUFBQUFBQUFBQUFBQUFOQVJBQUFuQVFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBQUFBQUFBQUJJR0FBQThBVUFBQ0VBQUFBL0FBQUFCQUFBQUJBQUFBQUpBQUFBQXdBQUFBQUFBQUFBQUFBQU9CNEFBTElEQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVWdRUUlBQUFBQUFNQUFRQUFBQUFBS0lFRUNBQUFBQUFEQUFJQUFBQUFBRWlCQkFnQUFBQUFBd0FEQUFBQUFBRGdnUVFJQUFBQUFBTUFCQUFBQUFBQUVJTUVDQUFBQUFBREFBVUFBQUFBQU1DREJBZ0FBQUFBQXdBR0FBQUFBQURvZ3dRSUFBQUFBQU1BQndBQUFBQUFDSVFFQ0FBQUFBQURBQWdBQUFBQUFCQ0VCQWdBQUFBQUF3QUpBQUFBQUFDSWhBUUlBQUFBQUFNQUNnQUFBQUFBb0lRRUNBQUFBQUFEQUFzQUFBQUFBS0NGQkFnQUFBQUFBd0FNQUFBQUFBQWtpUVFJQUFBQUFBTUFEUUFBQUFBQVJJa0VDQUFBQUFBREFBNEFBQUFBQUtpSkJBZ0FBQUFBQXdBUEFBQUFBQUNzbVFRSUFBQUFBQU1BRUFBQUFBQUF0SmtFQ0FBQUFBQURBQkVBQUFBQUFMeVpCQWdBQUFBQUF3QVNBQUFBQUFEQW1RUUlBQUFBQUFNQUV3QUFBQUFBaUpvRUNBQUFBQUFEQUJRQUFBQUFBSXlhQkFnQUFBQUFBd0FWQUFBQUFBRFVtZ1FJQUFBQUFBTUFGZ0FBQUFBQTRKb0VDQUFBQUFBREFCY0FBQUFBQUFBQUFBQUFBQUFBQXdBWUFBQUFBQUFBQUFBQUFBQUFBQU1BR1FBQUFBQUFBQUFBQUFBQUFBQURBQm9BQUFBQUFBQUFBQUFBQUFBQUF3QWJBQUFBQUFBQUFBQUFBQUFBQUFNQUhBQUFBQUFBQUFBQUFBQUFBQUFEQUIwQUFBQUFBQUFBQUFBQUFBQUFBd0FlQUFBQUFBQUFBQUFBQUFBQUFBTUFId0FBQUFBQUFBQUFBQUFBQUFBREFDQUFBQUFBQUFBQUFBQUFBQUFBQXdBaEFBRUFBQUFBQUFBQUFBQUFBQVFBOGY4TUFBQUFBQUFBQUFBQUFBQUVBUEgvS0FBQUFBQUFBQUFBQUFBQUJBRHgveThBQUFBQUFBQUFBQUFBQUFRQThmODZBQUFBQUFBQUFBQUFBQUFFQVBIL2RBQUFBTVNGQkFnQUFBQUFBZ0FNQUlRQUFBQUFBQUFBQUFBQUFBUUE4ZitQQUFBQXJKa0VDQUFBQUFBQkFCQUFuUUFBQUxTWkJBZ0FBQUFBQVFBUkFLc0FBQUM4bVFRSUFBQUFBQUVBRWdDNEFBQUE0Sm9FQ0FFQUFBQUJBQmNBeHdBQUFOeWFCQWdBQUFBQUFRQVdBTTRBQUFEc2hRUUlBQUFBQUFJQURBRGtBQUFBRzRZRUNBQUFBQUFDQUF3QWhBQUFBQUFBQUFBQUFBQUFCQUR4Ly9BQUFBQ3dtUVFJQUFBQUFBRUFFQUQ5QUFBQXVKa0VDQUFBQUFBQkFCRUFDZ0VBQUtpSkJBZ0FBQUFBQVFBUEFCZ0JBQUM4bVFRSUFBQUFBQUVBRWdBa0FRQUErSWdFQ0FBQUFBQUNBQXdBTHdBQUFBQUFBQUFBQUFBQUJBRHgvem9CQUFBQUFBQUFBQUFBQUFRQThmOTBBUUFBQUFBQUFBQUFBQUFFQVBIL2VBRUFBTUNaQkFnQUFBQUFBUUlUQUlFQkFBQ3NtUVFJQUFBQUFBQUM4ZitTQVFBQXJKa0VDQUFBQUFBQUF2SC9wUUVBQUt5WkJBZ0FBQUFBQUFMeC83WUJBQUNNbWdRSUFBQUFBQUVDRlFETUFRQUFySmtFQ0FBQUFBQUFBdkgvM3dFQUFBQUFBQUIxQVFBQUVnQUFBUEFCQUFBQUFBQUFjUUFBQUJJQUFBQUJBZ0FBUklrRUNBUUFBQUFSQUE0QUNBSUFBQUFBQUFETUFBQUFFZ0FBQUJvQ0FBQUFBQUFBV2dBQUFCSUFBQUFxQWdBQTJKb0VDQUFBQUFBUkFoWUFOd0lBQUsySUJBaEtBQUFBRWdBTUFFY0NBQUFBQUFBQWVBQUFBQklBQUFCWkFnQUFpSVFFQ0FBQUFBQVNBQW9BWHdJQUFBQUFBQUE1QUFBQUVnQUFBSEVDQUFBQUFBQUFPUUFBQUJJQUFBQ0hBZ0FBb0lVRUNBQUFBQUFTQUF3QWpnSUFBRnlJQkFoUkFBQUFFZ0FNQUo0Q0FBRGdtZ1FJQUFBQUFCQUE4ZitxQWdBQVFJWUVDQndDQUFBU0FBd0Fyd0lBQUFBQUFBRG1BQUFBRWdBQUFNd0NBQUFBQUFBQU9nQUFBQklBQUFEY0FnQUExSm9FQ0FBQUFBQWdBQllBNXdJQUFBQUFBQUE1QUFBQUVnQUFBUGNDQUFBa2lRUUlBQUFBQUJJQURRRDlBZ0FBQUFBQUFMa0FBQUFTQUFBQURRTUFBQUFBQUFBckFBQUFFZ0FBQUIwREFBRGdtZ1FJQUFBQUFCQUE4ZjhrQXdBQTZJVUVDQUFBQUFBU0Fnd0FPd01BQU9TYUJBZ0FBQUFBRUFEeC8wQURBQUFBQUFBQWVBQUFBQklBQUFCUUF3QUFBQUFBQUE0QUFBQVNBQUFBWVFNQUFFaUpCQWdFQUFBQUVRQU9BSEFEQUFEVW1nUUlBQUFBQUJBQUZnQjlBd0FBQUFBQUFEa0FBQUFTQUFBQWp3TUFBQUFBQUFBQUFBQUFJQUFBQUtNREFBQUFBQUFBQUFBQUFDQUFBQUFBWVdKcExXNXZkR1V1VXdBdUxpOXplWE5rWlhCekwya3pPRFl2Wld4bUwzTjBZWEowTGxNQWFXNXBkQzVqQUdsdWFYUm1hVzVwTG1NQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwya3pPRFl0YkdsaVl5OWpjM1V2WTNKMGFTNVRBR05oYkd4ZloyMXZibDl6ZEdGeWRBQmpjblJ6ZEhWbVppNWpBRjlmUTFSUFVsOU1TVk5VWDE4QVgxOUVWRTlTWDB4SlUxUmZYd0JmWDBwRFVsOU1TVk5VWDE4QVkyOXRjR3hsZEdWa0xqUTBOak1BY0M0ME5EWXlBRjlmWkc5ZloyeHZZbUZzWDJSMGIzSnpYMkYxZUFCbWNtRnRaVjlrZFcxdGVRQmZYME5VVDFKZlJVNUVYMThBWDE5RVZFOVNYMFZPUkY5ZkFGOWZSbEpCVFVWZlJVNUVYMThBWDE5S1ExSmZSVTVFWDE4QVgxOWtiMTluYkc5aVlXeGZZM1J2Y25OZllYVjRBQzlpZFdsc1pDOWlkV2xzWkdRdloyeHBZbU10TWk0ekxqWXZZblZwYkdRdGRISmxaUzlwTXpnMkxXeHBZbU12WTNOMUwyTnlkRzR1VXdBeExtTUFYMFJaVGtGTlNVTUFYMTltYVc1cFgyRnljbUY1WDJWdVpBQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlwYm1sMFgyRnljbUY1WDJWdVpBQmZSMHhQUWtGTVgwOUdSbE5GVkY5VVFVSk1SVjhBWDE5cGJtbDBYMkZ5Y21GNVgzTjBZWEowQUdWNFpXTnNRRUJIVEVsQ1ExOHlMakFBWTJ4dmMyVkFRRWRNU1VKRFh6SXVNQUJmWm5CZmFIY0FjR1Z5Y205eVFFQkhURWxDUTE4eUxqQUFabTl5YTBCQVIweEpRa05mTWk0d0FGOWZaSE52WDJoaGJtUnNaUUJmWDJ4cFltTmZZM04xWDJacGJta0FZV05qWlhCMFFFQkhURWxDUTE4eUxqQUFYMmx1YVhRQWJHbHpkR1Z1UUVCSFRFbENRMTh5TGpBQWMyVjBjMjlqYTI5d2RFQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQmZYMnhwWW1OZlkzTjFYMmx1YVhRQVgxOWljM05mYzNSaGNuUUFiV0ZwYmdCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmtCQVIweEpRa05mTWk0d0FHUjFjREpBUUVkTVNVSkRYekl1TUFCa1lYUmhYM04wWVhKMEFHSnBibVJBUUVkTVNVSkRYekl1TUFCZlptbHVhUUJsZUdsMFFFQkhURWxDUTE4eUxqQUFZWFJ2YVVCQVIweEpRa05mTWk0d0FGOWxaR0YwWVFCZlgyazJPRFl1WjJWMFgzQmpYM1JvZFc1ckxtSjRBRjlsYm1RQWMyVnVaRUJBUjB4SlFrTmZNaTR3QUdoMGIyNXpRRUJIVEVsQ1ExOHlMakFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBIjsNCg0KZnVuY3Rpb24gY2hlY2twcm94eWhvc3QoKXsNCiRob3N0ID0gZ2V0ZW52KCJIVFRQX0hPU1QiKTsNCiRmaWxlbmFtZSA9ICcvdG1wLy5zZXRhbi94aCc7DQppZiAoZmlsZV9leGlzdHMoJGZpbGVuYW1lKSkgew0KJF9QT1NUWydwcm94eWhvc3Rtc2cnXT0iPC9icj48L2JyPjxjZW50ZXI+PGZvbnQgY29sb3I9Z3JlZW4gc2l6ZT0zPjxiPlN1Y2Nlc3MhPC9iPjwvZm9udD48L2JyPjwvYnI+PGEgaHJlZj0kaG9zdDo2NTQzPiRob3N0OjY1NDM8L2E+PC9icj48L2JyPjxiPk5vdGU6PC9iPiBJZiAnJGhvc3QnIGhhdmUgYSBnb29kIGZpcmV3YWxsIG9yIElEUyAgaW5zdGFsbGVkIG9uIHRoZWlyIHNlcnZlciwgaXQgd2lsbCBwcm9iYWJseSBjYXRjaCB0aGlzIG9yIHN0b3AgaXQgZnJvbSBldmVyIG9wZW5pbmcgYSBwb3J0IGFuZCB5b3Ugd29uJ3QgYmUgYWJsZSB0byBjb25uZWN0IHRvIHRoaXMgcHJveHkuPC9icj48L2JyPjwvY2VudGVyPiI7DQp9IGVsc2Ugew0KJF9QT1NUWydwcm94eWhvc3Rtc2cnXT0iPC9icj48L2JyPjxjZW50ZXI+PGZvbnQgY29sb3I9cmVkIHNpemU9Mz48Yj5GYWlsZWQhPC9iPjwvZm9udD48L2JyPjwvYnI+PGI+Tm90ZTo8L2I+IElmIGZvciBzb21lIHJlYXNvbiB3ZSB3b3VsZCBub3QgY3JlYXRlIGFuZCBleHRyYWN0IHRoZSBuZWVkIHByb3h5IGZpbGVzIGluICcvdG1wJyB0aGlzIHdpbGwgbWFrZSB0aGlzIGZhaWwuPC9icj48L2JyPjwvY2VudGVyPiI7DQogfSANCn0NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09InNoYmQiKSkNCnsgDQogJGlwID0gZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pOw0KICRwb3IgPSAkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddOw0KIGlmKGlzX3dyaXRhYmxlKCIuIikpew0KIGNmYigic2hiZCIsJGJhY2tkb29yKTsNCiBleCgiY2htb2QgNzc3IHNoYmQiKTsNCiAkY21kID0gIi4vc2hiZCAkcG9yIjsNCiBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsgDQogaWYoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpeyAkZGF0YSA9ICgiXG48L2JyPjwvYnI+UHJvY2VzcyBmb3VuZCBydW5uaW5nLCBiYWNrZG9vciBzZXR1cCBzdWNjZXNzZnVsbHkuIik7IH1lbHNlaWYoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpeyAkZGF0YSA9ICgiXG48L2JyPlByb2Nlc3Mgbm90IGZvdW5kIHJ1bm5pbmcsIGJhY2tkb29yIG5vdCBzZXR1cCBzdWNjZXNzZnVsbHkuIik7IH0NCiAkX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUbyBjb25uZWN0LCB1c2UgbmV0Y2F0IGFuZCBnaXZlIGl0IHRoZSBjb21tYW5kIDxiPiduYyAkaXAgJHBvcic8L2I+LiRkYXRhIjsNCiB9ZWxzZXsNCiBjZmIoIi90bXAvc2hiZCIsJGJhY2tkb29yKTsNCiBleCgiY2htb2QgNzc3IC90bXAvc2hiZCIpOw0KICRjbWQgPSAiLi90bXAvc2hiZCAkcG9yIjsNCiBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsgDQogaWYoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpeyAkZGF0YSA9ICgiXG48L2JyPjwvYnI+UHJvY2VzcyBmb3VuZCBydW5uaW5nLCBiYWNrZG9vciBzZXR1cCBzdWNjZXNzZnVsbHkuIik7IH1lbHNlaWYoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpeyAkZGF0YSA9ICgiXG48L2JyPlByb2Nlc3Mgbm90IGZvdW5kIHJ1bm5pbmcsIGJhY2tkb29yIG5vdCBzZXR1cCBzdWNjZXNzZnVsbHkuIik7IH0NCiAkX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUbyBjb25uZWN0LCB1c2UgbmV0Y2F0IGFuZCBnaXZlIGl0IHRoZSBjb21tYW5kIDxiPiduYyAkaXAgJHBvcic8L2I+LiRkYXRhIjsNCn0NCn0gDQoNCmlmICghZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdGlwJ10pICYmICFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSkNCnsNCiBpZihpc193cml0YWJsZSgiLiIpKXsNCiBjZigiYmFjayIsJGJhY2tfY29ubmVjdCk7DQogJHAyPXdoaWNoKCJwZXJsIik7DQogJGJsYWggPSBleCgkcDIuIiBiYWNrICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7DQogJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVHJ5aW5nIHRvIGNvbm5lY3QgdG8gPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iPC9iPiBvbiBwb3J0IDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iPC9iPi4iOw0KIGlmIChmaWxlX2V4aXN0cygiYmFjayIpKSB7IHVubGluaygiYmFjayIpOyB9DQogfWVsc2V7DQogY2YoIi90bXAvYmFjayIsJGJhY2tfY29ubmVjdCk7DQogJHAyPXdoaWNoKCJwZXJsIik7DQogJGJsYWggPSBleCgkcDIuIiAvdG1wL2JhY2sgIi4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iICIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iICYiKTsNCiAkX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUcnlpbmcgdG8gY29ubmVjdCB0byA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCddLiI8L2I+IG9uIHBvcnQgPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiI8L2I+LiI7DQogaWYgKGZpbGVfZXhpc3RzKCIvdG1wL2JhY2siKSkgeyB1bmxpbmsoIi90bXAvYmFjayIpOyB9DQp9DQp9IA0KDQppZiAoIWVtcHR5KCRfUE9TVFsnYmFja2Nvbm5lY3RpcCddKSAmJiAhZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJDIikpDQp7DQogaWYoaXNfd3JpdGFibGUoIi4iKSl7DQogY2YoImJhY2tjIiwkYmFja19jb25uZWN0X2MpOw0KIGV4KCJjaG1vZCA3NzcgYmFja2MiKTsNCiAvLyRibGFoID0gZXgoImdjYyBiYWNrLmMgLW8gYmFja2MiKTsNCiAkYmxhaCA9IGV4KCIuL2JhY2tjICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7DQogJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVHJ5aW5nIHRvIGNvbm5lY3QgdG8gPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iPC9iPiBvbiBwb3J0IDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iPC9iPi4iOw0KIC8vaWYgKGZpbGVfZXhpc3RzKCJiYWNrLmMiKSkgeyB1bmxpbmsoImJhY2suYyIpOyB9DQogaWYgKGZpbGVfZXhpc3RzKCJiYWNrYyIpKSB7IHVubGluaygiYmFja2MiKTsgfQ0KIH1lbHNlew0KIGV4KCJjaG1vZCA3NzcgL3RtcC9iYWNrYyIpOw0KIGNmKCIvdG1wL2JhY2tjIiwkYmFja19jb25uZWN0X2MpOw0KIC8vJGJsYWggPSBleCgiZ2NjIC1vIC90bXAvYmFja2MgL3RtcC9iYWNrLmMiKTsNCiAkYmxhaCA9IGV4KCIvdG1wL2JhY2tjICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7DQogJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVHJ5aW5nIHRvIGNvbm5lY3QgdG8gPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iPC9iPiBvbiBwb3J0IDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iPC9iPi4iOw0KIC8vaWYgKGZpbGVfZXhpc3RzKCJiYWNrLmMiKSkgeyB1bmxpbmsoImJhY2suYyIpOyB9DQogaWYgKGZpbGVfZXhpc3RzKCIvdG1wL2JhY2tjIikpIHsgdW5saW5rKCIvdG1wL2JhY2tjIik7IH0gfQ0KfQ0KDQpmdW5jdGlvbiBjZigkZm5hbWUsJHRleHQpDQp7DQogJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgZXJyKCk7DQogaWYoJHdfZmlsZSkNCiB7DQogQGZwdXRzKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsNCiBAZmNsb3NlKCR3X2ZpbGUpOw0KIH0NCn0NCg0KZnVuY3Rpb24gY2ZiKCRmbmFtZSwkdGV4dCkNCnsNCiAkd19maWxlPUBmb3BlbigkZm5hbWUsInciKSBvciBiYmVycigpOw0KIGlmKCR3X2ZpbGUpDQogew0KIEBmcHV0cygkd19maWxlLEBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7DQogQGZjbG9zZSgkd19maWxlKTsNCiB9DQp9DQoNCmZ1bmN0aW9uIGVycigpDQp7DQokX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPC9icj48L2JyPjxiPjxmb250IGNvbG9yPXJlZCBzaXplPTM+RXJyb3I6PC9mb250PiBDYW4ndCBjb25uZWN0ITwvYj4iOw0KfQ0KDQpmdW5jdGlvbiBiYmVycigpDQp7DQokX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPC9icj48L2JyPjxiPjxmb250IGNvbG9yPXJlZCBzaXplPTM+RXJyb3I6PC9mb250PiBDYW4ndCBiYWNrZG9vciBob3N0ITwvYj4iOw0KfQ0KDQpmdW5jdGlvbiB3aGljaCgkcHIpDQp7DQokcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsNCmlmKCFlbXB0eSgkcGF0aCkpIHsgcmV0dXJuICRwYXRoOyB9IGVsc2UgeyByZXR1cm4gJHByOyB9DQp9DQpmdW5jdGlvbiBleCgkY2ZlKQ0Kew0KICRyZXMgPSAnJzsNCiBpZiAoIWVtcHR5KCRjZmUpKQ0KIHsNCiAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpDQogICB7DQogICAgQGV4ZWMoJGNmZSwkcmVzKTsNCiAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KICAgfQ0KICBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpDQogICB7DQogICAgJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOw0KICAgfQ0KICBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkNCiAgIHsNCiAgICBAb2Jfc3RhcnQoKTsNCiAgICBAc3lzdGVtKCRjZmUpOw0KICAgICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgQG9iX2VuZF9jbGVhbigpOw0KICAgfQ0KICBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKQ0KICAgew0KICAgIEBvYl9zdGFydCgpOw0KICAgIEBwYXNzdGhydSgkY2ZlKTsNCiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgIH0NCiAgZWxzZWlmKEBpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkY2ZlLCJyIikpKQ0KICB7DQogICAkcmVzID0gIiI7DQogICB3aGlsZSghQGZlb2YoJGYpKSB7ICRyZXMgLj0gQGZyZWFkKCRmLDEwMjQpOyB9DQogICBAcGNsb3NlKCRmKTsNCiAgfQ0KIH0NCiByZXR1cm4gJHJlczsNCn0NCg0KaW5pX3NldCgibWVtb3J5X2xpbWl0IiwiMzAwTSIpOw0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImdldG1pY3JvdGltZSIpKSB7ZnVuY3Rpb24gZ2V0bWljcm90aW1lKCkge2xpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7fX0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmaWxlX2dldF9jb250ZW50cyIpKSB7IGZ1bmN0aW9uIGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSl7ICRoYW5kbGUgPSBmb3BlbigkZmlsZW5hbWUsICJyIik7ICRyZXR2YWwgPSBmcmVhZCgkaGFuZGxlLCBmaWxlc2l6ZSgkZmlsZW5hbWUpKTsgZmNsb3NlKCRoYW5kbGUpO3JldHVybiAkcmV0dmFsO319DQplcnJvcl9yZXBvcnRpbmcoNSk7DQpAaWdub3JlX3VzZXJfYWJvcnQoVFJVRSk7DQpAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOw0KJHdpbiA9IHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2luIjsNCmlmICghJHdpbikgeyB9IGVsc2UgeyBlY2hvKCI8Zm9udCBjb2xvcj1yZWQ+PGI+TG9hZGluZyBFcnJvcjo8L2I+PC9mb250PiBUaGlzIGlzIGEgVU5JWCBvbmx5IHNoZWxsLiIpOyBkaWUoKTsgfQ0KZGVmaW5lKCJzdGFydHRpbWUiLGdldG1pY3JvdGltZSgpKTsNCmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7aWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7ZnVuY3Rpb24gc3RyaXBzKCYkYXJyLCRrPSIiKSB7aWYgKGlzX2FycmF5KCRhcnIpKSB7Zm9yZWFjaCgkYXJyIGFzICRrPT4kdikge2lmIChzdHJ0b3VwcGVyKCRrKSAhPSAiR0xPQkFMUyIpIHtzdHJpcHMoJGFyclsiJGsiXSk7fX19IGVsc2UgeyRhcnIgPSBzdHJpcHNsYXNoZXMoJGFycik7fX19IHN0cmlwcygkR0xPQkFMUyk7fQ0KJF9SRVFVRVNUID0gYXJyYXlfbWVyZ2UoJF9DT09LSUUsJF9HRVQsJF9QT1NUKTsNCmZvcmVhY2goJF9SRVFVRVNUIGFzICRrPT4kdikge2lmICghaXNzZXQoJCRrKSkgeyQkayA9ICR2O319DQokc2h2ZXIgPSAidzRjazFuZy1zaGVsbCAoUHJpdmF0ZSBCdWlsZCB2MC4zKSI7IA0KaWYgKCFlbXB0eSgkdW5zZXRfc3VybCkpIHtzZXRjb29raWUoImM5OXNoX3N1cmwiKTsgJHN1cmwgPSAiIjt9DQplbHNlaWYgKCFlbXB0eSgkc2V0X3N1cmwpKSB7JHN1cmwgPSAkc2V0X3N1cmw7IHNldGNvb2tpZSgiYzk5c2hfc3VybCIsJHN1cmwpO30NCmVsc2UgeyRzdXJsID0gJF9SRVFVRVNUWyJjOTlzaF9zdXJsIl07IA0KfQ0KJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSA9IFRSVUU7IC8vSWYgVFJVRSB0aGVuIHNlYXJjaCB2YXJpYWJsZXMgd2l0aCBkZXNjcmlwdG9ycyAoVVJMcykgYW5kIHNhdmUgaXQgaW4gU1VSTC4NCmlmICgkc3VybF9hdXRvZmlsbF9pbmNsdWRlIGFuZCAhJF9SRVFVRVNUWyJjOTlzaF9zdXJsIl0pIHskaW5jbHVkZSA9ICImIjsgZm9yZWFjaCAoZXhwbG9kZSgiJiIsZ2V0ZW52KCJRVUVSWV9TVFJJTkciKSkgYXMgJHYpIHskdiA9IGV4cGxvZGUoIj0iLCR2KTsgJG5hbWUgPSB1cmxkZWNvZGUoJHZbMF0pOyAkdmFsdWUgPSB1cmxkZWNvZGUoJHZbMV0pOyBmb3JlYWNoIChhcnJheSgiaHR0cDovLyIsImh0dHBzOi8vIiwic3NsOi8vIiwiZnRwOi8vIiwiXFxcXCIpIGFzICRuZWVkbGUpIHtpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0gMCkgeyRpbmNsdWRlc3RyIC49IHVybGVuY29kZSgkbmFtZSkuIj0iLnVybGVuY29kZSgkdmFsdWUpLiImIjt9fX0gaWYgKCRfUkVRVUVTVFsic3VybF9hdXRvZmlsbF9pbmNsdWRlIl0pIHskaW5jbHVkZXN0ciAuPSAic3VybF9hdXRvZmlsbF9pbmNsdWRlPTEmIjt9fQ0KaWYgKGVtcHR5KCRzdXJsKSkNCnsNCiAkc3VybCA9ICI/Ii4kaW5jbHVkZXN0cjsgDQp9DQokc3VybCA9IGh0bWxzcGVjaWFsY2hhcnMoJHN1cmwpOw0KJHRpbWVsaW1pdCA9IDA7IC8vdGltZSBsaW1pdCBvZiBleGVjdXRpb24gdGhpcyBzY3JpcHQgb3ZlciBzZXJ2ZXIgcXVvdGUgKHNlY29uZHMpLCAwID0gdW5saW1pdGVkLg0KJGxvZ2luID0gIiI7IA0KJHBhc3MgPSAiIjsgDQokbWQ1X3Bhc3MgPSAiIjsNCiRob3N0X2FsbG93ID0gYXJyYXkoIioiKTsgLy9hcnJheSAoInttYXNrfTEiLCJ7bWFza30yIiwuLi4pLCB7bWFza30gPSBJUCBvciBIT1NUIGUuZy4gYXJyYXkoIjE5Mi4xNjguMC4qIiwiMTI3LjAuMC4xIikNCiRsb2dpbl90eHQgPSAiQXBhY2hlIEVycm9yOiBSZXN0cmljdGVkIEZpbGUiOw0KJGFjY2Vzc2RlbmllZG1lc3MgPSAiYWNjZXNzIGRlbmllZCI7DQokZ3ppcGVuY29kZSA9IFRSVUU7IA0KJGZpbGVzdGVhbHRoID0gVFJVRTsgLy9pZiBUUlVFLCBkb24ndCBjaGFuZ2UgbW9kaWZ5LSBhbmQgYWNjZXNzLXRpbWUNCiRkb25hdGVkX2h0bWwgPSAiIjsNCiRkb25hdGVkX2FjdCA9IGFycmF5KCIiKTsgLy9hcnJheSAoImFjdDEiLCJhY3QyLCIuLi4pLCBpZiAkYWN0IGlzIGluIHRoaXMgYXJyYXksIGRpc3BsYXkgJGRvbmF0ZWRfaHRtbC4NCiRjdXJkaXIgPSAiLi8iOyANCi8vJGN1cmRpciA9IGdldGVudigiRE9DVU1FTlRfUk9PVCIpOw0KJHRtcGRpciA9ICIiOyANCiR0bXBkaXJfbG9nID0gIi4vIjsgDQokbG9nX2VtYWlsID0gInN5bnN0YUBnbWFpbC5jb20iOyANCiRzb3J0X2RlZmF1bHQgPSAiMGEiOyANCiRzb3J0X3NhdmUgPSBUUlVFOw0KJGZ0eXBlcyAgPSBhcnJheSgNCiAiaHRtbCI9PmFycmF5KCJodG1sIiwiaHRtIiwic2h0bWwiKSwNCiAidHh0Ij0+YXJyYXkoInR4dCIsImMiLCIuYmFzaF9oaXN0b3J5IiwiY29uZiIsImJhdCIsInNoIiwianMiLCJiYWsiLCJkb2MiLCJsb2ciLCJzZmMiLCJjZmciLCJodGFjY2VzcyIpLA0KICJleGUiPT5hcnJheSgic2giLCJpbnN0YWxsIiwiYmF0IiwiY21kIiksDQogImluaSI9PmFycmF5KCJpbmkiLCJpbmYiKSwNCiAiY29kZSI9PmFycmF5KCJwaHAiLCJwaHRtbCIsInBocDMiLCJwaHA0IiwiaW5jIiwidGNsIiwiaCIsImMiLCJjcHAiLCJweSIsImNnaSIsInBsIiksDQogImltZyI9PmFycmF5KCJnaWYiLCJwbmciLCJqcGVnIiwiamZpZiIsImpwZyIsImpwZSIsImJtcCIsImljbyIsInRpZiIsInRpZmYiLCJhdmkiLCJtcGciLCJtcGVnIiksDQogInNkYiI9PmFycmF5KCJzZGIiKSwNCiAicGhwc2VzcyI9PmFycmF5KCJzZXNzIiksDQogImRvd25sb2FkIj0+YXJyYXkoImV4ZSIsImNvbSIsInBpZiIsInNyYyIsImxuayIsInppcCIsInJhciIsImd6IiwidGFyIikNCik7DQoNCiRleGVmdHlwZXMgID0gYXJyYXkoDQogZ2V0ZW52KCJQSFBSQyIpLiIgLXEgJWYlIiA9PiBhcnJheSgicGhwIiwicGhwMyIsInBocDQiKSwNCiAicGVybCAlZiUiID0+IGFycmF5KCJwbCIsImNnaSIpDQopOw0KJHJlZ3hwX2hpZ2hsaWdodCAgPSBhcnJheSgNCiAgYXJyYXkoYmFzZW5hbWUoJF9TRVJWRVJbIlBIUF9TRUxGIl0pLDEsIjxmb250IGNvbG9yPVwieWVsbG93XCI+IiwiPC9mb250PiIpLCAvLyBleGFtcGxlDQogIGFycmF5KCJjb25maWcucGhwIiwxKSAvLyBleGFtcGxlDQopOw0KJHNhZmVtb2RlX2Rpc2tldHRlcyA9IGFycmF5KCJhIik7IA0KJGhleGR1bXBfbGluZXMgPSA4Oy8vIGxpbmVzIGluIGhleCBwcmV2aWV3IGZpbGUNCiRoZXhkdW1wX3Jvd3MgPSAyNDsvLyAxNiwgMjQgb3IgMzIgYnl0ZXMgaW4gb25lIGxpbmUNCiRuaXhwd2RwZXJwYWdlID0gMTAwOyAvLyBHZXQgZmlyc3QgTiBsaW5lcyBmcm9tIC9ldGMvcGFzc3dkDQoNCg0KJHNlc3NfY29va2llID0gImM5OXNodmFycyI7IC8vIENvb2tpZS12YXJpYWJsZSBuYW1lDQoNCg0KDQovL1F1aWNrIGxhdW5jaA0KJHF1aWNrbGF1bmNoID0gYXJyYXkoDQogYXJyYXkoIjxocj48Yj5bSG9tZV08L2I+Iiwkc3VybCksDQogYXJyYXkoIjxiPltQcm9jZXNzZXNdPC9iPiIsJHN1cmwuImFjdD1wcm9jZXNzZXMmZD0lZCIpLA0KIGFycmF5KCI8Yj5bU2VydmVyIEluZm9ybWF0aW9uXTwvYj4iLCRzdXJsLiJhY3Q9c2VjdXJpdHkmZD0lZCIpLA0KIGFycmF5KCI8Yj5bU1FMIE1hbmFnZXJdPC9iPiIsJHN1cmwuImFjdD1zcWwmZD0lZCIpLA0KIGFycmF5KCI8Yj5bRlRQIEJydXRlIEZvcmNlcl08L2I+Iiwkc3VybC4iYWN0PWZ0cHF1aWNrYnJ1dGUmZD0lZCIpLA0KIGFycmF5KCI8Yj5bRXZhbCBQSFAgY29kZV08L2I+Iiwkc3VybC4iYWN0PWV2YWwmZD0lZCZldmFsPS8vcmVhZGZpbGUoJy9ldGMvcGFzc3dkJyk7IiksDQogYXJyYXkoIjxiPltJbnN0YWxsIFByb3h5XTwvYj4iLCRzdXJsLiJhY3Q9cHJveHkiKSwNCiBhcnJheSgiPGI+W0JhY2stQ29ubmVjdGlvbl08L2I+Iiwkc3VybC4iYWN0PWJhY2tjIiksDQogYXJyYXkoIjxiPltCYWNrZG9vciBIb3N0XTwvYj4iLCRzdXJsLiJhY3Q9c2hiZCIpLA0KIGFycmF5KCI8Yj5bU2VsZiByZW1vdmVdPC9iPiIsJHN1cmwuImFjdD1zZWxmcmVtb3ZlIiksDQopOw0KDQovL0hpZ2hsaWdodC1jb2RlIGNvbG9ycw0KJGhpZ2hsaWdodF9iYWNrZ3JvdW5kID0gIiNjMGMwYzAiOw0KJGhpZ2hsaWdodF9iZyA9ICIjRkZGRkZGIjsNCiRoaWdobGlnaHRfY29tbWVudCA9ICIjNkE2QTZBIjsNCiRoaWdobGlnaHRfZGVmYXVsdCA9ICIjMDAwMEJCIjsNCiRoaWdobGlnaHRfaHRtbCA9ICIjMTMwMEZGIjsNCiRoaWdobGlnaHRfa2V5d29yZCA9ICIjMDA3NzAwIjsNCiRoaWdobGlnaHRfc3RyaW5nID0gIiMwMDAwMDAiOw0KDQpAJGYgPSAkX1JFUVVFU1RbImYiXTsNCkBleHRyYWN0KCRfUkVRVUVTVFsiYzk5c2hjb29rIl0pOw0KDQovL0VORCBDT05GSUdVUkFUSU9ODQoNCg0KLy8gXC9OZXh0IGNvZGUgaXNuJ3QgZm9yIGVkaXRpbmdcLw0KQHNldF90aW1lX2xpbWl0KDApOw0KJHRtcCA9IGFycmF5KCk7DQpmb3JlYWNoKCRob3N0X2FsbG93IGFzICRrPT4kdikgeyR0bXBbXSA9IHN0cl9yZXBsYWNlKCJcXCoiLCIuKiIscHJlZ19xdW90ZSgkdikpO30NCiRzID0gIiFeKCIuaW1wbG9kZSgifCIsJHRtcCkuIikkIWkiOw0KaWYgKCFwcmVnX21hdGNoKCRzLGdldGVudigiUkVNT1RFX0FERFIiKSkgYW5kICFwcmVnX21hdGNoKCRzLGdldGhvc3RieWFkZHIoZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSkpIHtleGl0KCJBY2Nlc3MgRGVuaWVkIik7fQ0KaWYgKCFlbXB0eSgkbG9naW4pKQ0Kew0KIGlmIChlbXB0eSgkbWQ1X3Bhc3MpKSB7JG1kNV9wYXNzID0gbWQ1KCRwYXNzKTt9DQogaWYgKCgkX1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdICE9ICRsb2dpbikgb3IgKG1kNSgkX1NFUlZFUlsiUEhQX0FVVEhfUFciXSkgIT0gJG1kNV9wYXNzKSkNCiB7DQogIGlmIChlbXB0eSgkbG9naW5fdHh0KSkgeyRsb2dpbl90eHQgPSBzdHJpcF90YWdzKGVyZWdfcmVwbGFjZSgiJm5ic3A7fDxicj4iLCIgIiwkZG9uYXRlZF9odG1sKSk7fQ0KICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwiIi4kbG9naW5fdHh0LiJcIiIpOw0KICBoZWFkZXIoIkhUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQiKTsNCiAgZXhpdCgkYWNjZXNzZGVuaWVkbWVzcyk7DQogfQ0KfQ0KaWYgKCRhY3QgIT0gImltZyIpew0KJGxhc3RkaXIgPSByZWFscGF0aCgiLiIpOw0KY2hkaXIoJGN1cmRpcik7DQppZiAoJHNlbGZ3cml0ZSBvciAkdXBkYXRlbm93KSB7QG9iX2NsZWFuKCk7IGM5OXNoX2dldHVwZGF0ZSgkc2VsZndyaXRlLDEpOyBleGl0O30NCiRzZXNzX2RhdGEgPSB1bnNlcmlhbGl6ZSgkX0NPT0tJRVsiJHNlc3NfY29va2llIl0pOw0KaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhKSkgeyRzZXNzX2RhdGEgPSBhcnJheSgpO30NCmlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY29weSJdKSkgeyRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5KCk7fQ0KaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhWyJjdXQiXSkpIHskc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5KCk7fQ0KDQokZGlzYWJsZWZ1bmMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCmlmICghZW1wdHkoJGRpc2FibGVmdW5jKSkNCnsNCiAkZGlzYWJsZWZ1bmMgPSBzdHJfcmVwbGFjZSgiICIsIiIsJGRpc2FibGVmdW5jKTsNCiAkZGlzYWJsZWZ1bmMgPSBleHBsb2RlKCIsIiwkZGlzYWJsZWZ1bmMpOw0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiYzk5X2J1ZmZfcHJlcGFyZSIpKQ0Kew0KZnVuY3Rpb24gYzk5X2J1ZmZfcHJlcGFyZSgpDQp7DQogZ2xvYmFsICRzZXNzX2RhdGE7DQogZ2xvYmFsICRhY3Q7DQogZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7JHNlc3NfZGF0YVsiY29weSJdWyRrXSA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO30NCiBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgeyRzZXNzX2RhdGFbImN1dCJdWyRrXSA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO30NCiAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY29weSJdKTsNCiAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjdXQiXSk7DQogc29ydCgkc2Vzc19kYXRhWyJjb3B5Il0pOw0KIHNvcnQoJHNlc3NfZGF0YVsiY3V0Il0pOw0KIGlmICgkYWN0ICE9ICJjb3B5Iikge2ZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsgfX19DQogZWxzZSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImN1dCJdWyRrXSA9PSAkdikge3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX19DQp9DQp9DQpjOTlfYnVmZl9wcmVwYXJlKCk7DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiYzk5X3Nlc3NfcHV0IikpDQp7DQpmdW5jdGlvbiBjOTlfc2Vzc19wdXQoJGRhdGEpDQp7DQogZ2xvYmFsICRzZXNzX2Nvb2tpZTsNCiBnbG9iYWwgJHNlc3NfZGF0YTsNCiBjOTlfYnVmZl9wcmVwYXJlKCk7DQogJHNlc3NfZGF0YSA9ICRkYXRhOw0KICRkYXRhID0gc2VyaWFsaXplKCRkYXRhKTsNCiBzZXRjb29raWUoJHNlc3NfY29va2llLCRkYXRhKTsNCn0NCn0NCmZvcmVhY2ggKGFycmF5KCJzb3J0Iiwic3FsX3NvcnQiKSBhcyAkdikNCnsNCiBpZiAoIWVtcHR5KCRfR0VUWyR2XSkpIHskJHYgPSAkX0dFVFskdl07fQ0KIGlmICghZW1wdHkoJF9QT1NUWyR2XSkpIHskJHYgPSAkX1BPU1RbJHZdO30NCn0NCmlmICgkc29ydF9zYXZlKQ0Kew0KIGlmICghZW1wdHkoJHNvcnQpKSB7c2V0Y29va2llKCJzb3J0Iiwkc29ydCk7fQ0KIGlmICghZW1wdHkoJHNxbF9zb3J0KSkge3NldGNvb2tpZSgic3FsX3NvcnQiLCRzcWxfc29ydCk7fQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cjJtaW5pIikpDQp7DQpmdW5jdGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKQ0Kew0KIGlmIChzdHJsZW4oJGNvbnRlbnQpID4gJGxlbikNCiB7DQogICRsZW4gPSBjZWlsKCRsZW4vMikgLSAyOw0KICByZXR1cm4gc3Vic3RyKCRjb250ZW50LCAwLCRsZW4pLiIuLi4iLnN1YnN0cigkY29udGVudCwtJGxlbik7DQogfQ0KIGVsc2Uge3JldHVybiAkY29udGVudDt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19zaXplIikpDQp7DQpmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpDQp7DQogaWYgKCFpc19udW1lcmljKCRzaXplKSkge3JldHVybiBGQUxTRTt9DQogZWxzZQ0KIHsNCiAgaWYgKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNzM3NDE4MjQqMTAwKS8xMDAgLiIgR0IiO30NCiAgZWxzZWlmICgkc2l6ZSA+PSAxMDQ4NTc2KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDQ4NTc2KjEwMCkvMTAwIC4iIE1CIjt9DQogIGVsc2VpZiAoJHNpemUgPj0gMTAyNCkgeyRzaXplID0gcm91bmQoJHNpemUvMTAyNCoxMDApLzEwMCAuIiBLQiI7fQ0KICBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBCIjt9DQogIHJldHVybiAkc2l6ZTsNCiB9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9kaXIiKSkNCnsNCmZ1bmN0aW9uIGZzX2NvcHlfZGlyKCRkLCR0KQ0Kew0KICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogJGggPSBvcGVuZGlyKCRkKTsNCiB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkNCiB7DQogIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKQ0KICB7DQogICBpZiAoIWlzX2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBjb3B5KCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQ0KICAgZWxzZSB7JHJldCA9IG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pOyBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30NCiAgfQ0KIH0NCiBjbG9zZWRpcigkaCk7DQogcmV0dXJuIFRSVUU7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9vYmoiKSkNCnsNCmZ1bmN0aW9uIGZzX2NvcHlfb2JqKCRkLCR0KQ0Kew0KICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7DQogaWYgKCFpc19kaXIoZGlybmFtZSgkdCkpKSB7bWtkaXIoZGlybmFtZSgkdCkpO30NCiBpZiAoaXNfZGlyKCRkKSkNCiB7DQogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgaWYgKHN1YnN0cigkdCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICByZXR1cm4gZnNfY29weV9kaXIoJGQsJHQpOw0KIH0NCiBlbHNlaWYgKGlzX2ZpbGUoJGQpKSB7cmV0dXJuIGNvcHkoJGQsJHQpO30NCiBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX21vdmVfZGlyIikpDQp7DQpmdW5jdGlvbiBmc19tb3ZlX2RpcigkZCwkdCkNCnsNCiAkaCA9IG9wZW5kaXIoJGQpOw0KIGlmICghaXNfZGlyKCR0KSkge21rZGlyKCR0KTt9DQogd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpDQogew0KICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkNCiAgew0KICAgJHJldCA9IFRSVUU7DQogICBpZiAoIWlzX2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBjb3B5KCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQ0KICAgZWxzZSB7aWYgKG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pIGFuZCBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IEZBTFNFO319DQogICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogIH0NCiB9DQogY2xvc2VkaXIoJGgpOw0KIHJldHVybiBUUlVFOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX21vdmVfb2JqIikpDQp7DQpmdW5jdGlvbiBmc19tb3ZlX29iaigkZCwkdCkNCnsNCiAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogJHQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHQpOw0KIGlmIChpc19kaXIoJGQpKQ0KIHsNCiAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICBpZiAoc3Vic3RyKCR0LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogIHJldHVybiBmc19tb3ZlX2RpcigkZCwkdCk7DQogfQ0KIGVsc2VpZiAoaXNfZmlsZSgkZCkpDQogew0KICBpZihjb3B5KCRkLCR0KSkge3JldHVybiB1bmxpbmsoJGQpO30NCiAgZWxzZSB7dW5saW5rKCR0KTsgcmV0dXJuIEZBTFNFO30NCiB9DQogZWxzZSB7cmV0dXJuIEZBTFNFO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybWRpciIpKQ0Kew0KZnVuY3Rpb24gZnNfcm1kaXIoJGQpDQp7DQogJGggPSBvcGVuZGlyKCRkKTsNCiB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkNCiB7DQogIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKQ0KICB7DQogICBpZiAoIWlzX2RpcigkZC4kbykpIHt1bmxpbmsoJGQuJG8pO30NCiAgIGVsc2Uge2ZzX3JtZGlyKCRkLiRvLkRJUkVDVE9SWV9TRVBBUkFUT1IpOyBybWRpcigkZC4kbyk7fQ0KICB9DQogfQ0KIGNsb3NlZGlyKCRoKTsNCiBybWRpcigkZCk7DQogcmV0dXJuICFpc19kaXIoJGQpOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX3Jtb2JqIikpDQp7DQpmdW5jdGlvbiBmc19ybW9iaigkbykNCnsNCiAkbyA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbyk7DQogaWYgKGlzX2RpcigkbykpDQogew0KICBpZiAoc3Vic3RyKCRvLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JG8gLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogIHJldHVybiBmc19ybWRpcigkbyk7DQogfQ0KIGVsc2VpZiAoaXNfZmlsZSgkbykpIHtyZXR1cm4gdW5saW5rKCRvKTt9DQogZWxzZSB7cmV0dXJuIEZBTFNFO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJ0YWJzb3J0IikpIHtmdW5jdGlvbiB0YWJzb3J0KCRhLCRiKSB7Z2xvYmFsICR2OyByZXR1cm4gc3RybmF0Y21wKCRhWyR2XSwgJGJbJHZdKTt9fQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXMiKSkNCnsNCmZ1bmN0aW9uIHZpZXdfcGVybXMoJG1vZGUpDQp7DQogaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0eXBlID0gInMiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0eXBlID0gImQiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgeyR0eXBlID0gImwiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0eXBlID0gIi0iO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0eXBlID0gImIiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgeyR0eXBlID0gImMiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0eXBlID0gInAiO30NCiBlbHNlIHskdHlwZSA9ICI/Ijt9DQoNCiAkb3duZXJbInJlYWQiXSA9ICgkbW9kZSAmIDAwNDAwKT8iciI6Ii0iOw0KICRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKT8idyI6Ii0iOw0KICRvd25lclsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAxMDApPyJ4IjoiLSI7DQogJGdyb3VwWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDA0MCk/InIiOiItIjsNCiAkZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCk/InciOiItIjsNCiAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDEwKT8ieCI6Ii0iOw0KICR3b3JsZFsicmVhZCJdID0gKCRtb2RlICYgMDAwMDQpPyJyIjoiLSI7DQogJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpPyAidyI6Ii0iOw0KICR3b3JsZFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMDEpPyJ4IjoiLSI7DQoNCiBpZiAoJG1vZGUgJiAweDgwMCkgeyRvd25lclsiZXhlY3V0ZSJdID0gKCRvd25lclsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQogaWYgKCRtb2RlICYgMHg0MDApIHskZ3JvdXBbImV4ZWN1dGUiXSA9ICgkZ3JvdXBbImV4ZWN1dGUiXSA9PSAieCIpPyJzIjoiUyI7fQ0KIGlmICgkbW9kZSAmIDB4MjAwKSB7JHdvcmxkWyJleGVjdXRlIl0gPSAoJHdvcmxkWyJleGVjdXRlIl0gPT0gIngiKT8idCI6IlQiO30NCg0KIHJldHVybiAkdHlwZS5qb2luKCIiLCRvd25lcikuam9pbigiIiwkZ3JvdXApLmpvaW4oIiIsJHdvcmxkKTsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldHB3dWlkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHVpZCkge3JldHVybiBGQUxTRTt9fQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldGdyZ2lkIikgYW5kICFpbl9hcnJheSgicG9zaXhfZ2V0Z3JnaWQiLCRkaXNhYmxlZnVuYykpIHtmdW5jdGlvbiBwb3NpeF9nZXRncmdpZCgkZ2lkKSB7cmV0dXJuIEZBTFNFO319DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfa2lsbCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2tpbGwiLCRkaXNhYmxlZnVuYykpIHtmdW5jdGlvbiBwb3NpeF9raWxsKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZV9wZXJtcyIpKQ0Kew0KZnVuY3Rpb24gcGFyc2VfcGVybXMoJG1vZGUpDQp7DQogaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0ID0gInMiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0ID0gImQiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgeyR0ID0gImwiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0ID0gIi0iO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0ID0gImIiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgeyR0ID0gImMiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0ID0gInAiO30NCiBlbHNlIHskdCA9ICI/Ijt9DQogJG9bInIiXSA9ICgkbW9kZSAmIDAwNDAwKSA+IDA7ICRvWyJ3Il0gPSAoJG1vZGUgJiAwMDIwMCkgPiAwOyAkb1sieCJdID0gKCRtb2RlICYgMDAxMDApID4gMDsNCiAkZ1siciJdID0gKCRtb2RlICYgMDAwNDApID4gMDsgJGdbInciXSA9ICgkbW9kZSAmIDAwMDIwKSA+IDA7ICRnWyJ4Il0gPSAoJG1vZGUgJiAwMDAxMCkgPiAwOw0KICR3WyJyIl0gPSAoJG1vZGUgJiAwMDAwNCkgPiAwOyAkd1sidyJdID0gKCRtb2RlICYgMDAwMDIpID4gMDsgJHdbIngiXSA9ICgkbW9kZSAmIDAwMDAxKSA+IDA7DQogcmV0dXJuIGFycmF5KCJ0Ij0+JHQsIm8iPT4kbywiZyI9PiRnLCJ3Ij0+JHcpOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlc29ydCIpKQ0Kew0KZnVuY3Rpb24gcGFyc2Vzb3J0KCRzb3J0KQ0Kew0KICRvbmUgPSBpbnR2YWwoJHNvcnQpOw0KICRzZWNvbmQgPSBzdWJzdHIoJHNvcnQsLTEpOw0KIGlmICgkc2Vjb25kICE9ICJkIikgeyRzZWNvbmQgPSAiYSI7fQ0KIHJldHVybiBhcnJheSgkb25lLCRzZWNvbmQpOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXNfY29sb3IiKSkNCnsNCmZ1bmN0aW9uIHZpZXdfcGVybXNfY29sb3IoJG8pDQp7DQogaWYgKCFpc19yZWFkYWJsZSgkbykpIHtyZXR1cm4gIjxmb250IGNvbG9yPXJlZD4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30NCiBlbHNlaWYgKCFpc193cml0YWJsZSgkbykpIHtyZXR1cm4gIjxmb250IGNvbG9yPXdoaXRlPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KIGVsc2Uge3JldHVybiAiPGZvbnQgY29sb3I9Z3JlZW4+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZHVtcCIpKXsNCmZ1bmN0aW9uIG15c3FsX2R1bXAoJHNldCkNCnsNCiBnbG9iYWwgJHNodmVyOw0KICRzb2NrID0gJHNldFsic29jayJdOw0KICRkYiA9ICRzZXRbImRiIl07DQogJHByaW50ID0gJHNldFsicHJpbnQiXTsNCiAkbmwyYnIgPSAkc2V0WyJubDJiciJdOw0KICRmaWxlID0gJHNldFsiZmlsZSJdOw0KICRhZGRfZHJvcCA9ICRzZXRbImFkZF9kcm9wIl07DQogJHRhYnMgPSAkc2V0WyJ0YWJzIl07DQogJG9ubHl0YWJzID0gJHNldFsib25seXRhYnMiXTsNCiAkcmV0ID0gYXJyYXkoKTsNCiAkcmV0WyJlcnIiXSA9IGFycmF5KCk7DQogaWYgKCFpc19yZXNvdXJjZSgkc29jaykpIHtlY2hvKCJFcnJvcjogXCRzb2NrIGlzIG5vdCB2YWxpZCByZXNvdXJjZS4iKTt9DQogaWYgKGVtcHR5KCRkYikpIHskZGIgPSAiZGIiO30NCiBpZiAoZW1wdHkoJHByaW50KSkgeyRwcmludCA9IDA7fQ0KIGlmIChlbXB0eSgkbmwyYnIpKSB7JG5sMmJyID0gMDt9DQogaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30NCiBpZiAoZW1wdHkoJGZpbGUpKQ0KIHsNCiAgJGZpbGUgPSAkdG1wZGlyLiJkdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOw0KIH0NCiBpZiAoIWlzX2FycmF5KCR0YWJzKSkgeyR0YWJzID0gYXJyYXkoKTt9DQogaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30NCiBpZiAoc2l6ZW9mKCR0YWJzKSA9PSAwKQ0KIHsNCiAgLy8gcmV0cml2ZSB0YWJsZXMtbGlzdA0KICAkcmVzID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEVTIEZST00gIi4kZGIsICRzb2NrKTsNCiAgaWYgKG15c3FsX251bV9yb3dzKCRyZXMpID4gMCkge3doaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpKSB7JHRhYnNbXSA9ICRyb3dbMF07fX0NCiB9DQogJG91dCA9ICIjIER1bXBlZCBieSAiLiRzaHZlci4iDQojIEhvbWUgcGFnZTogaHR0cDovL3c0Y2sxbmcuY29tDQojDQojIEhvc3Qgc2V0dGluZ3M6DQojIE15U1FMIHZlcnNpb246ICgiLm15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLiIpIHJ1bm5pbmcgb24gIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAoIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIikiLiINCiMgRGF0ZTogIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiINCiMgREI6IFwiIi4kZGIuIlwiDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoiOw0KICRjID0gY291bnQoJG9ubHl0YWJzKTsNCiBmb3JlYWNoKCR0YWJzIGFzICR0YWIpDQogew0KICBpZiAoKGluX2FycmF5KCR0YWIsJG9ubHl0YWJzKSkgb3IgKCEkYykpDQogIHsNCiAgIGlmICgkYWRkX2Ryb3ApIHskb3V0IC49ICJEUk9QIFRBQkxFIElGIEVYSVNUUyBgIi4kdGFiLiJgO1xuIjt9DQogICAvLyByZWNpZXZlIHF1ZXJ5IGZvciBjcmVhdGUgdGFibGUgc3RydWN0dXJlDQogICAkcmVzID0gbXlzcWxfcXVlcnkoIlNIT1cgQ1JFQVRFIFRBQkxFIGAiLiR0YWIuImAiLCAkc29jayk7DQogICBpZiAoISRyZXMpIHskcmV0WyJlcnIiXVtdID0gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgIGVsc2UNCiAgIHsNCiAgICAkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpOw0KICAgICRvdXQgLj0gJHJvd1siMSJdLiI7XG5cbiI7DQogICAgLy8gcmVjaWV2ZSB0YWJsZSB2YXJpYWJsZXMNCiAgICAkcmVzID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gYCR0YWJgIiwgJHNvY2spOw0KICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApDQogICAgew0KICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXMpKQ0KICAgICB7DQogICAgICAka2V5cyA9IGltcGxvZGUoImAsIGAiLCBhcnJheV9rZXlzKCRyb3cpKTsNCiAgICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJHJvdyk7DQogICAgICBmb3JlYWNoKCR2YWx1ZXMgYXMgJGs9PiR2KSB7JHZhbHVlc1ska10gPSBhZGRzbGFzaGVzKCR2KTt9DQogICAgICAkdmFsdWVzID0gaW1wbG9kZSgiJywgJyIsICR2YWx1ZXMpOw0KICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIuJHZhbHVlcy4iJyk7XG4iOw0KICAgICAgJG91dCAuPSAkc3FsOw0KICAgICB9DQogICAgfQ0KICAgfQ0KICB9DQogfQ0KICRvdXQgLj0gIiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIjsNCiBpZiAoJGZpbGUpDQogew0KICAkZnAgPSBmb3BlbigkZmlsZSwgInciKTsNCiAgaWYgKCEkZnApIHskcmV0WyJlcnIiXVtdID0gMjt9DQogIGVsc2UNCiAgew0KICAgZndyaXRlICgkZnAsICRvdXQpOw0KICAgZmNsb3NlICgkZnApOw0KICB9DQogfQ0KIGlmICgkcHJpbnQpIHtpZiAoJG5sMmJyKSB7ZWNobyBubDJicigkb3V0KTt9IGVsc2Uge2VjaG8gJG91dDt9fQ0KIHJldHVybiAkb3V0Ow0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2J1aWxkd2hlcmUiKSkNCnsNCmZ1bmN0aW9uIG15c3FsX2J1aWxkd2hlcmUoJGFycmF5LCRzZXA9IiBhbmQiLCRmdW5jdHM9YXJyYXkoKSkNCnsNCiBpZiAoIWlzX2FycmF5KCRhcnJheSkpIHskYXJyYXkgPSBhcnJheSgpO30NCiAkcmVzdWx0ID0gIiI7DQogZm9yZWFjaCgkYXJyYXkgYXMgJGs9PiR2KQ0KIHsNCiAgJHZhbHVlID0gIiI7DQogIGlmICghZW1wdHkoJGZ1bmN0c1ska10pKSB7JHZhbHVlIC49ICRmdW5jdHNbJGtdLiIoIjt9DQogICR2YWx1ZSAuPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOw0KICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAiKSI7fQ0KICAkcmVzdWx0IC49ICJgIi4kay4iYCA9ICIuJHZhbHVlLiRzZXA7DQogfQ0KICRyZXN1bHQgPSBzdWJzdHIoJHJlc3VsdCwwLHN0cmxlbigkcmVzdWx0KS1zdHJsZW4oJHNlcCkpOw0KIHJldHVybiAkcmVzdWx0Ow0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2ZldGNoX2FsbCIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfZmV0Y2hfYWxsKCRxdWVyeSwkc29jaykNCnsNCiBpZiAoJHNvY2spIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRzb2NrKTt9DQogZWxzZSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSk7fQ0KICRhcnJheSA9IGFycmF5KCk7DQogd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRhcnJheVtdID0gJHJvdzt9DQogbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogcmV0dXJuICRhcnJheTsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9zbWFydGVycm9yIikpDQp7DQpmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKQ0Kew0KIGlmICgkc29jaykgeyRlcnJvciA9IG15c3FsX2Vycm9yKCRzb2NrKTt9DQogZWxzZSB7JGVycm9yID0gbXlzcWxfZXJyb3IoKTt9DQogJGVycm9yID0gaHRtbHNwZWNpYWxjaGFycygkZXJyb3IpOw0KIHJldHVybiAkZXJyb3I7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9ybSIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfcXVlcnlfZm9ybSgpDQp7DQogZ2xvYmFsICRzdWJtaXQsJHNxbF9hY3QsJHNxbF9xdWVyeSwkc3FsX3F1ZXJ5X3Jlc3VsdCwkc3FsX2NvbmZpcm0sJHNxbF9xdWVyeV9lcnJvciwkdGJsX3N0cnVjdDsNCiBpZiAoKCRzdWJtaXQpIGFuZCAoISRzcWxfcXVlcnlfcmVzdWx0KSBhbmQgKCRzcWxfY29uZmlybSkpIHtpZiAoISRzcWxfcXVlcnlfZXJyb3IpIHskc3FsX3F1ZXJ5X2Vycm9yID0gIlF1ZXJ5IHdhcyBlbXB0eSI7fSBlY2hvICI8Yj5FcnJvcjo8L2I+IDxicj4iLiRzcWxfcXVlcnlfZXJyb3IuIjxicj4iO30NCiBpZiAoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF9hY3QgPSAkc3FsX2dvdG87fQ0KIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpDQogew0KICBlY2hvICI8dGFibGUgYm9yZGVyPTA+PHRyPjx0ZD48Zm9ybSBuYW1lPVwiYzk5c2hfc3FscXVlcnlcIiBtZXRob2Q9UE9TVD48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJtaXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvIjt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSI7fSBlY2hvICI6PC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9c3FsX3F1ZXJ5IGNvbHM9MTAwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfYWN0IHZhbHVlPXF1ZXJ5PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF90YmwgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXNxbF9jb25maXJtIHZhbHVlPVwiWWVzXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD4iOw0KICBpZiAoJHRibF9zdHJ1Y3QpDQogIHsNCiAgIGVjaG8gIjx0ZCB2YWxpZ249XCJ0b3BcIj48Yj5GaWVsZHM6PC9iPjxicj4iOw0KICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3QgYXMgJGZpZWxkKSB7JG5hbWUgPSAkZmllbGRbIkZpZWxkIl07IGVjaG8gIsK7IDxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LmM5OXNoX3NxbHF1ZXJ5LnNxbF9xdWVyeS52YWx1ZSs9J2AiLiRuYW1lLiJgJztcIj48Yj4iLiRuYW1lLiI8L2I+PC9hPjxicj4iO30NCiAgIGVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7DQogIH0NCiB9DQogaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2NyZWF0ZV9kYiIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfY3JlYXRlX2RiKCRkYiwkc29jaz0iIikNCnsNCiAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsNCiBpZiAoJHNvY2spIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCwkc29jayk7fQ0KIGVsc2Uge3JldHVybiBteXNxbF9xdWVyeSgkc3FsKTt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkNCnsNCmZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkNCnsNCiAkcXVlcnkgPSB0cmltKCRxdWVyeSk7DQogJGFyciA9IGV4cGxvZGUgKCIgIiwkcXVlcnkpOw0KIC8qYXJyYXkgYXJyYXkoKQ0KIHsNCiAgIk1FVEhPRCI9PmFycmF5KG91dHB1dF90eXBlKSwNCiAgIk1FVEhPRDEiLi4uDQogIC4uLg0KIH0NCiBpZiBvdXRwdXRfdHlwZSA9PSAwLCBubyBvdXRwdXQsDQogaWYgb3V0cHV0X3R5cGUgPT0gMSwgbm8gb3V0cHV0IGlmIG5vIGVycm9yDQogaWYgb3V0cHV0X3R5cGUgPT0gMiwgb3V0cHV0IHdpdGhvdXQgY29udHJvbC1idXR0b25zDQogaWYgb3V0cHV0X3R5cGUgPT0gMywgb3V0cHV0IHdpdGggY29udHJvbC1idXR0b25zDQogKi8NCiAkdHlwZXMgPSBhcnJheSgNCiAgIlNFTEVDVCI9PmFycmF5KDMsMSksDQogICJTSE9XIj0+YXJyYXkoMiwxKSwNCiAgIkRFTEVURSI9PmFycmF5KDEpLA0KICAiRFJPUCI9PmFycmF5KDEpDQogKTsNCiAkcmVzdWx0ID0gYXJyYXkoKTsNCiAkb3AgPSBzdHJ0b3VwcGVyKCRhcnJbMF0pOw0KIGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpDQogew0KICAkcmVzdWx0WyJwcm9wZXJ0aW9ucyJdID0gJHR5cGVzWyRvcF07DQogICRyZXN1bHRbInF1ZXJ5Il0gID0gJHF1ZXJ5Ow0KICBpZiAoJHR5cGVzWyRvcF0gPT0gMikNCiAgew0KICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikNCiAgIHsNCiAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlUIikNCiAgICB7DQogICAgICRyZXN1bHRbImxpbWl0Il0gPSAkYXJyWyRrKzFdOw0KICAgICAkcmVzdWx0WyJsaW1pdCJdID0gZXhwbG9kZSgiLCIsJHJlc3VsdFsibGltaXQiXSk7DQogICAgIGlmIChjb3VudCgkcmVzdWx0WyJsaW1pdCJdKSA9PSAxKSB7JHJlc3VsdFsibGltaXQiXSA9IGFycmF5KDAsJHJlc3VsdFsibGltaXQiXVswXSk7fQ0KICAgICB1bnNldCgkYXJyWyRrXSwkYXJyWyRrKzFdKTsNCiAgICB9DQogICB9DQogIH0NCiB9DQogZWxzZSB7cmV0dXJuIEZBTFNFO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlmc2VhcmNoIikpDQp7DQpmdW5jdGlvbiBjOTlmc2VhcmNoKCRkKQ0Kew0KIGdsb2JhbCAkZm91bmQ7DQogZ2xvYmFsICRmb3VuZF9kOw0KIGdsb2JhbCAkZm91bmRfZjsNCiBnbG9iYWwgJHNlYXJjaF9pX2Y7DQogZ2xvYmFsICRzZWFyY2hfaV9kOw0KIGdsb2JhbCAkYTsNCiBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogJGggPSBvcGVuZGlyKCRkKTsNCiB3aGlsZSAoKCRmID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkNCiB7DQogIGlmKCRmICE9ICIuIiAmJiAkZiAhPSAiLi4iKQ0KICB7DQogICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gRkFMU0UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQogICBpZiAoaXNfZGlyKCRkLiRmKSkNCiAgIHsNCiAgICAkc2VhcmNoX2lfZCsrOw0KICAgIGlmIChlbXB0eSgkYVsidGV4dCJdKSBhbmQgJGJvb2wpIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZCsrO30NCiAgICBpZiAoIWlzX2xpbmsoJGQuJGYpKSB7Yzk5ZnNlYXJjaCgkZC4kZik7fQ0KICAgfQ0KICAgZWxzZQ0KICAgew0KICAgICRzZWFyY2hfaV9mKys7DQogICAgaWYgKCRib29sKQ0KICAgIHsNCiAgICAgaWYgKCFlbXB0eSgkYVsidGV4dCJdKSkNCiAgICAgew0KICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgaWYgKCRhWyJ0ZXh0X3d3byJdKSB7JGFbInRleHQiXSA9ICIgIi50cmltKCRhWyJ0ZXh0Il0pLiIgIjt9DQogICAgICBpZiAoISRhWyJ0ZXh0X2NzIl0pIHskYVsidGV4dCJdID0gc3RydG9sb3dlcigkYVsidGV4dCJdKTsgJHIgPSBzdHJ0b2xvd2VyKCRyKTt9DQogICAgICBpZiAoJGFbInRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQ0KICAgICAgZWxzZSB7JGJvb2wgPSBzdHJwb3MoIiAiLiRyLCRhWyJ0ZXh0Il0sMSk7fQ0KICAgICAgaWYgKCRhWyJ0ZXh0X25vdCJdKSB7JGJvb2wgPSAhJGJvb2w7fQ0KICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgIH0NCiAgICAgZWxzZSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgfQ0KICAgfQ0KICB9DQogfQ0KIGNsb3NlZGlyKCRoKTsNCn0NCn0NCmlmICgkYWN0ID09ICJnb2ZpbGUiKSB7aWYgKGlzX2RpcigkZikpIHskYWN0ID0gImxzIjsgJGQgPSAkZjt9IGVsc2UgeyRhY3QgPSAiZiI7ICRkID0gZGlybmFtZSgkZik7ICRmID0gYmFzZW5hbWUoJGYpO319DQovL1NlbmRpbmcgaGVhZGVycw0KQG9iX3N0YXJ0KCk7DQpAb2JfaW1wbGljaXRfZmx1c2goMCk7DQpmdW5jdGlvbiBvbnBocHNodXRkb3duKCkNCnsNCiBnbG9iYWwgJGd6aXBlbmNvZGUsJGZ0Ow0KIGlmICghaGVhZGVyc19zZW50KCkgYW5kICRnemlwZW5jb2RlIGFuZCAhaW5fYXJyYXkoJGZ0LGFycmF5KCJpbWciLCJkb3dubG9hZCIsIm5vdGVwYWQiKSkpDQogew0KICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgQG9iX2VuZF9jbGVhbigpOw0KICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOw0KICBlY2hvICR2Ow0KICBAb2JfZW5kX2ZsdXNoKCk7DQogfQ0KfQ0KZnVuY3Rpb24gYzk5c2hleGl0KCkNCnsNCiBvbnBocHNodXRkb3duKCk7DQogZXhpdDsNCn0NCmhlYWRlcigiRXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsNCmhlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikuIiBHTVQiKTsNCmhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsNCmhlYWRlcigiQ2FjaGUtQ29udHJvbDogcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCIsIEZBTFNFKTsNCmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KaWYgKGVtcHR5KCR0bXBkaXIpKQ0Kew0KICR0bXBkaXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpOw0KIGlmIChpc19kaXIoJHRtcGRpcikpIHskdG1wZGlyID0gIi90bXAvIjt9DQp9DQokdG1wZGlyID0gcmVhbHBhdGgoJHRtcGRpcik7DQokdG1wZGlyID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0bXBkaXIpOw0KaWYgKHN1YnN0cigkdG1wZGlyLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHRtcGRpciAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCmlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9sb2dzID0gJHRtcGRpcjt9DQplbHNlIHskdG1wZGlyX2xvZ3MgPSByZWFscGF0aCgkdG1wZGlyX2xvZ3MpO30NCmlmIChAaW5pX2dldCgic2FmZV9tb2RlIikgb3Igc3RydG9sb3dlcihAaW5pX2dldCgic2FmZV9tb2RlIikpID09ICJvbiIpDQp7DQogJHNhZmVtb2RlID0gVFJVRTsNCiAkaHNhZmVtb2RlID0gIjxmb250IGNvbG9yPXJlZD5PTiAoc2VjdXJlKTwvZm9udD4iOw0KfQ0KZWxzZSB7JHNhZmVtb2RlID0gRkFMU0U7ICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2VjdXJlKTwvZm9udD4iO30NCiR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaWYgKCR2IG9yIHN0cnRvbG93ZXIoJHYpID09ICJvbiIpIHskb3BlbmJhc2VkaXIgPSBUUlVFOyAkaG9wZW5iYXNlZGlyID0gIjxmb250IGNvbG9yPXJlZD4iLiR2LiI8L2ZvbnQ+Ijt9DQplbHNlIHskb3BlbmJhc2VkaXIgPSBGQUxTRTsgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBzZWN1cmUpPC9mb250PiI7fQ0KJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzb3J0KTsNCmlmIChlbXB0eSgkc29ydCkpIHskc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQ0KJHNvcnRbMV0gPSBzdHJ0b2xvd2VyKCRzb3J0WzFdKTsNCiRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7DQppZiAoIWVyZWcoIlBIUC8iLnBocHZlcnNpb24oKSwkRElTUF9TRVJWRVJfU09GVFdBUkUpKSB7JERJU1BfU0VSVkVSX1NPRlRXQVJFIC49ICIuIFBIUC8iLnBocHZlcnNpb24oKTt9DQokRElTUF9TRVJWRVJfU09GVFdBUkUgPSBzdHJfcmVwbGFjZSgiUEhQLyIucGhwdmVyc2lvbigpLCI8YSBocmVmPVwiIi4kc3VybC4iYWN0PXBocGluZm9cIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj48dT5QSFAvIi5waHB2ZXJzaW9uKCkuIjwvdT48L2I+PC9hPiIsaHRtbHNwZWNpYWxjaGFycygkRElTUF9TRVJWRVJfU09GVFdBUkUpKTsNCkBpbmlfc2V0KCJoaWdobGlnaHQuYmciLCRoaWdobGlnaHRfYmcpOyAvL0ZGRkZGRg0KQGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOyAvLyNGRjgwMDANCkBpbmlfc2V0KCJoaWdobGlnaHQuZGVmYXVsdCIsJGhpZ2hsaWdodF9kZWZhdWx0KTsgLy8jMDAwMEJCDQpAaW5pX3NldCgiaGlnaGxpZ2h0Lmh0bWwiLCRoaWdobGlnaHRfaHRtbCk7IC8vIzAwMDAwMA0KQGluaV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOyAvLyMwMDc3MDANCkBpbmlfc2V0KCJoaWdobGlnaHQuc3RyaW5nIiwkaGlnaGxpZ2h0X3N0cmluZyk7IC8vI0REMDAwMA0KaWYgKCFpc19hcnJheSgkYWN0Ym94KSkgeyRhY3Rib3ggPSBhcnJheSgpO30NCiRkc3BhY3QgPSAkYWN0ID0gaHRtbHNwZWNpYWxjaGFycygkYWN0KTsNCiRkaXNwX2Z1bGxwYXRoID0gJGxzX2FyciA9ICRub3RscyA9IG51bGw7DQokdWQgPSB1cmxlbmNvZGUoJGQpOw0KPz4NCg0KPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUxIj48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LUxhbmd1YWdlIiBjb250ZW50PSJlbi11cyI+PHRpdGxlPnNoZWxsQDw/cGhwIGVjaG8gZ2V0ZW52KCJIVFRQX0hPU1QiKTsgPz48L3RpdGxlPjxTVFlMRT4NClREIHsgRk9OVC1TSVpFOiA4cHQ7IENPTE9SOiAjZWJlYmViOyBGT05ULUZBTUlMWTogdmVyZGFuYTt9Qk9EWSB7IHNjcm9sbGJhci1mYWNlLWNvbG9yOiAjODAwMDAwOyBzY3JvbGxiYXItc2hhZG93LWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItM2RsaWdodC1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLWRhcmtzaGFkb3ctY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci10cmFjay1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLWFycm93LWNvbG9yOiAjMTAxMDEwOyBmb250LWZhbWlseTogVmVyZGFuYTt9VEQuaGVhZGVyIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgRk9OVC1TSVpFOiAxMHB0OyBCQUNLR1JPVU5EOiAjN2Q3NDc0OyBDT0xPUjogd2hpdGU7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hO31BIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICNkYWRhZGE7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hOyBURVhULURFQ09SQVRJT046IG5vbmU7fUE6dW5rbm93biB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiAjZmZmZmZmOyBGT05ULUZBTUlMWTogdmVyZGFuYTsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BLkxpbmtzIHsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QS5MaW5rczp1bmtub3duIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QTpob3ZlciB7IENPTE9SOiAjZmZmZmZmOyBURVhULURFQ09SQVRJT046IHVuZGVybGluZTt9LnNraW4we3Bvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoyMDBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjazsgYmFja2dyb3VuZC1jb2xvcjptZW51OyBmb250LWZhbWlseTpWZXJkYW5hOyBsaW5lLWhlaWdodDoyMHB4OyBjdXJzb3I6ZGVmYXVsdDsgdmlzaWJpbGl0eTpoaWRkZW47O30uc2tpbjF7Y3Vyc29yOiBkZWZhdWx0OyBmb250OiBtZW51dGV4dDsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTQ1cHg7IGJhY2tncm91bmQtY29sb3I6IG1lbnU7IGJvcmRlcjogMSBzb2xpZCBidXR0b25mYWNlO3Zpc2liaWxpdHk6aGlkZGVuOyBib3JkZXI6IDIgb3V0c2V0IGJ1dHRvbmhpZ2hsaWdodDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsR2VuZXZhLCBBcmlhbDsgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogYmxhY2s7fS5tZW51aXRlbXN7cGFkZGluZy1sZWZ0OjE1cHg7IHBhZGRpbmctcmlnaHQ6MTBweDs7fWlucHV0e2JhY2tncm91bmQtY29sb3I6ICM4MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6ICM4MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiAjODAwMDAwOyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjogIzgwMDAwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9b3B0aW9uIHtiYWNrZ3JvdW5kLWNvbG9yOiAjODAwMDAwOyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31pZnJhbWUge2JhY2tncm91bmQtY29sb3I6ICM4MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXAge01BUkdJTi1UT1A6IDBweDsgTUFSR0lOLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdIVDogMTUwJX1ibG9ja3F1b3RleyBmb250LXNpemU6IDhwdDsgZm9udC1mYW1pbHk6IENvdXJpZXIsIEZpeGVkLCBBcmlhbDsgYm9yZGVyIDogOHB4IHNvbGlkICNBOUE5QTk7IHBhZGRpbmc6IDFlbTsgbWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tYm90dG9tOiA1ZW07IG1hcmdpbi1yaWdodDogM2VtOyBtYXJnaW4tbGVmdDogNGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjQjdCMkIwO31ib2R5LHRkLHRoIHsgZm9udC1mYW1pbHk6IHZlcmRhbmE7IGNvbG9yOiAjZDlkOWQ5OyBmb250LXNpemU6IDExcHg7fWJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO30NCi5zdHlsZTEgew0KICAgIGNvbG9yOiAjRkYwMDAwOw0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLnN0eWxlMiB7Zm9udC1zaXplOiAtM30NCjwvc3R5bGU+PC9oZWFkPjxCT0RZIHRleHQ9I2ZmZmZmZiBib3R0b21NYXJnaW49MCBiZ0NvbG9yPSMwMDAwMDAgbGVmdE1hcmdpbj0wIHRvcE1hcmdpbj0wIHJpZ2h0TWFyZ2luPTAgbWFyZ2luaGVpZ2h0PTAgbWFyZ2lud2lkdGg9MD48ZGl2IGFsaWduPSJjZW50ZXIiPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSIjQzBDMEMwIj48dHI+PHRoIHdpZHRoPSIxMDElIiBoZWlnaHQ9IjE1IiBub3dyYXAgYm9yZGVyY29sb3I9IiNDMEMwQzAiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48L3A+DQo8L3RoPjwvdHI+PHRyPjx0ZD48cCBhbGlnbj0ibGVmdCI+PGI+U29mdHdhcmU6Jm5ic3A7PD9waHAgZWNobyAkRElTUF9TRVJWRVJfU09GVFdBUkU7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+U3lzdGVtIEluZm86Jm5ic3A7PD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5hbWUoKSw5MCwiPGJyPiIsMSk7ID8+PC9iPiZuYnNwOzwvcD48PyBlY2hvICI8Yj5EaXNhYmxlZCBmdW5jdGlvbnM8L2I+OiA8Yj4iOw0KaWYoJyc9PSgkZGY9QGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJykpKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5OT05FPC9mb250PjwvYj4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPiI7fSA/PjxwIGFsaWduPSJsZWZ0Ij48Yj5XZSBhcmU6IDw/cGhwIGlmICghJHdpbikge2VjaG8gd29yZHdyYXAobXlzaGVsbGV4ZWMoImlkIiksOTAsIjxicj4iLDEpO30gZWxzZSB7ZWNobyBnZXRfY3VycmVudF91c2VyKCk7fSA/Pjw/cGhwICRjdXJsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJyk7DQplY2hvICI8YnIvPmNVUkw6IDxiPiIuKCgkY3VybF9vbik/KCI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iKTooIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IikpOyA/PjwvYnI+PD8gaWYoQGluaV9nZXQoInJlZ2lzdGVyX2dsb2JhbHMiKSl7JHJlZ19nPSI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iO31lbHNleyRyZWdfZz0iPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30gZWNobygiPGI+UmVnaXN0ZXIgZ2xvYmFsczo8L2I+ICRyZWdfZyIpOyA/Pjw/cGhwIGVjaG8gIjxici8+TXlTUUw6IDxiPiI7DQokbXlzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7DQppZigkbXlzcWxfb24pew0KZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+IjsgfSBlbHNlIHsgZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iOyB9DQplY2hvICI8L2I+IjsNCmVjaG8gIjxici8+TVNTUUw6IDxiPiI7DQokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQppZigkbXNzcWxfb24pe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30gPz48P3BocCBlY2hvICI8YnIvPlBvc3RncmVTUUw6IDxiPiI7DQokcGdfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0Jyk7DQppZigkcGdfb24pe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30gPz48P3BocCBlY2hvICI8YnIvPk9yYWNsZTogPGI+IjsNCiRvcmFfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpOw0KaWYoJG9yYV9vbil7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7fSA/PiA8L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj5TYWZlLW1vZGU6Jm5ic3A7PD9waHAgZWNobyAkaHNhZmVtb2RlOyA/PjwvYj48L3A+PHAgYWxpZ249ImxlZnQiPjw/cGhwDQokZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQppZiAoZW1wdHkoJGQpKSB7JGQgPSByZWFscGF0aCgiLiIpO30gZWxzZWlmKHJlYWxwYXRoKCRkKSkgeyRkID0gcmVhbHBhdGgoJGQpO30NCiRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCmlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiRkID0gc3RyX3JlcGxhY2UoIlxcXFwiLCJcXCIsJGQpOw0KJGRpc3BkID0gaHRtbHNwZWNpYWxjaGFycygkZCk7DQokcGQgPSAkZSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUixzdWJzdHIoJGQsMCwtMSkpOw0KJGkgPSAwOw0KZm9yZWFjaCgkcGQgYXMgJGIpDQp7DQogJHQgPSAiIjsNCiAkaiA9IDA7DQogZm9yZWFjaCAoJGUgYXMgJHIpDQogew0KICAkdC49ICRyLkRJUkVDVE9SWV9TRVBBUkFUT1I7DQogIGlmICgkaiA9PSAkaSkge2JyZWFrO30NCiAgJGorKzsNCiB9DQogZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRiKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiI8L2I+PC9hPiI7DQogJGkrKzsNCn0NCmVjaG8gIiZuYnNwOyZuYnNwOyZuYnNwOyI7DQppZiAoaXNfd3JpdGFibGUoJGQpKQ0Kew0KICR3ZCA9IFRSVUU7DQogJHdkdCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5bIG9rIF08L2ZvbnQ+IjsNCiBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRkKSkuIjwvZm9udD48L2I+IjsNCn0NCmVsc2UNCnsNCiAkd2QgPSBGQUxTRTsNCiAkd2R0ID0gIjxmb250IGNvbG9yPXJlZD5bIFJlYWQtT25seSBdPC9mb250PiI7DQogZWNobyAiPGI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkKS4iPC9iPiI7DQp9DQppZiAoaXNfY2FsbGFibGUoImRpc2tfZnJlZV9zcGFjZSIpKQ0Kew0KICRmcmVlID0gZGlza19mcmVlX3NwYWNlKCRkKTsNCiAkdG90YWwgPSBkaXNrX3RvdGFsX3NwYWNlKCRkKTsNCiBpZiAoJGZyZWUgPT09IEZBTFNFKSB7JGZyZWUgPSAwO30NCiBpZiAoJHRvdGFsID09PSBGQUxTRSkgeyR0b3RhbCA9IDA7fQ0KIGlmICgkZnJlZSA8IDApIHskZnJlZSA9IDA7fQ0KIGlmICgkdG90YWwgPCAwKSB7JHRvdGFsID0gMDt9DQogJHVzZWQgPSAkdG90YWwtJGZyZWU7DQogJGZyZWVfcGVyY2VudCA9IHJvdW5kKDEwMC8oJHRvdGFsLyRmcmVlKSwyKTsNCiBlY2hvICI8YnI+PGI+RnJlZSAiLnZpZXdfc2l6ZSgkZnJlZSkuIiBvZiAiLnZpZXdfc2l6ZSgkdG90YWwpLiIgKCIuJGZyZWVfcGVyY2VudC4iJSk8L2I+IjsNCg0KfQ0KZWNobyAiPGJyPiI7DQplY2hvICI8Yj5Zb3VyIGlwOiA8YSBocmVmPWh0dHA6Ly8iLiRfU0VSVkVSWyJSRU1PVEVfQUREUiJdLiI+Ii4kX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4iPC9hPiAtIFNlcnZlciBpcDogPGEgaHJlZj1odHRwOi8vIi5nZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIj4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPC9hPjwvYj48YnIvPiI7DQokbGV0dGVycyA9ICIiOw0KaWYgKCR3aW4pDQp7DQogJHYgPSBleHBsb2RlKCJcXCIsJGQpOw0KICR2ID0gJHZbMF07DQogZm9yZWFjaCAocmFuZ2UoImEiLCJ6IikgYXMgJGxldHRlcikNCiB7DQogICRib29sID0gJGlzZGlza2V0dGUgPSBpbl9hcnJheSgkbGV0dGVyLCRzYWZlbW9kZV9kaXNrZXR0ZXMpOw0KICBpZiAoISRib29sKSB7JGJvb2wgPSBpc19kaXIoJGxldHRlci4iOlxcIik7fQ0KICBpZiAoJGJvb2wpDQogIHsNCiAgICRsZXR0ZXJzIC49ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWxzJmQ9Ii51cmxlbmNvZGUoJGxldHRlci4iOlxcIikuIlwiIi4oJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1ci4nKVwiIjoiIikuIj5bICI7DQogICBpZiAoJGxldHRlci4iOiIgIT0gJHYpIHskbGV0dGVycyAuPSAkbGV0dGVyO30NCiAgIGVsc2UgeyRsZXR0ZXJzIC49ICI8Zm9udCBjb2xvcj1ncmVlbj4iLiRsZXR0ZXIuIjwvZm9udD4iO30NCiAgICRsZXR0ZXJzIC49ICIgXTwvYT4gIjsNCiAgfQ0KIH0NCiBpZiAoIWVtcHR5KCRsZXR0ZXJzKSkge2VjaG8gIjxiPkRldGVjdGVkIGRyaXZlczwvYj46ICIuJGxldHRlcnMuIjxicj4iO30NCn0NCmlmIChjb3VudCgkcXVpY2tsYXVuY2gpID4gMCkNCnsNCiBmb3JlYWNoKCRxdWlja2xhdW5jaCBhcyAkaXRlbSkNCiB7DQogICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVkIix1cmxlbmNvZGUoJGQpLCRpdGVtWzFdKTsNCiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFdKTsNCiAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsNCiAgaWYgKGVtcHR5KCR2KSkgeyRhID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsgJHYgPSBqb2luKERJUkVDVE9SWV9TRVBBUkFUT1IsJGEpO30NCiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7DQogIGVjaG8gIjxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiB9DQp9DQplY2hvICI8L3A+PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQppZiAoKCFlbXB0eSgkZG9uYXRlZF9odG1sKSkgYW5kIChpbl9hcnJheSgkYWN0LCRkb25hdGVkX2FjdCkpKSB7ZWNobyAiPFRBQkxFIHN0eWxlPVwiQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZVwiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9XCIxMDAlXCIgdmFsaWduPVwidG9wXCI+Ii4kZG9uYXRlZF9odG1sLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+Ijt9DQplY2hvICI8VEFCTEUgc3R5bGU9XCJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlXCIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiB2YWxpZ249XCJ0b3BcIj4iOw0KaWYgKCRhY3QgPT0gIiIpIHskYWN0ID0gJGRzcGFjdCA9ICJscyI7fQ0KaWYgKCRhY3QgPT0gInNxbCIpDQp7DQogJHNxbF9zdXJsID0gJHN1cmwuImFjdD1zcWwiOw0KIGlmICgkc3FsX2xvZ2luKSAgeyRzcWxfc3VybCAuPSAiJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7fQ0KIGlmICgkc3FsX3Bhc3N3ZCkgeyRzcWxfc3VybCAuPSAiJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTt9DQogaWYgKCRzcWxfc2VydmVyKSB7JHNxbF9zdXJsIC49ICImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpO30NCiBpZiAoJHNxbF9wb3J0KSAgIHskc3FsX3N1cmwgLj0gIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTt9DQogaWYgKCRzcWxfZGIpICAgICB7JHNxbF9zdXJsIC49ICImc3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTt9DQogJHNxbF9zdXJsIC49ICImIjsNCiA/PjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSIjQzBDMEMwIj48dHI+PHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiIGNvbHNwYW49IjIiIHZhbGlnbj0idG9wIj48Y2VudGVyPjw/cGhwDQogaWYgKCRzcWxfc2VydmVyKQ0KIHsNCiAgJHNxbF9zb2NrID0gbXlzcWxfY29ubmVjdCgkc3FsX3NlcnZlci4iOiIuJHNxbF9wb3J0LCAkc3FsX2xvZ2luLCAkc3FsX3Bhc3N3ZCk7DQogICRlcnIgPSBteXNxbF9zbWFydGVycm9yKCk7DQogIEBteXNxbF9zZWxlY3RfZGIoJHNxbF9kYiwkc3FsX3NvY2spOw0KICBpZiAoJHNxbF9xdWVyeSBhbmQgJHN1Ym1pdCkgeyRzcWxfcXVlcnlfcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3NvY2spOyAkc3FsX3F1ZXJ5X2Vycm9yID0gbXlzcWxfc21hcnRlcnJvcigpO30NCiB9DQogZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQ0KIGVjaG8gIjxiPlNRTCBNYW5hZ2VyOjwvYj48YnI+IjsNCiBpZiAoISRzcWxfc29jaykNCiB7DQogIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNUSU9OIjt9DQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+Q2FuJ3QgY29ubmVjdDwvYj48L2NlbnRlcj4iOyBlY2hvICI8Yj4iLiRlcnIuIjwvYj4iO30NCiB9DQogZWxzZQ0KIHsNCiAgJHNxbHF1aWNrbGF1bmNoID0gYXJyYXkoKTsNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiSW5kZXgiLCRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJiIpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJRdWVyeSIsJHNxbF9zdXJsLiJzcWxfYWN0PXF1ZXJ5JnNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpKTsNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyLXN0YXR1cyIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX2FjdD1zZXJ2ZXJzdGF0dXMiKTsNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyIHZhcmlhYmxlcyIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX2FjdD1zZXJ2ZXJ2YXJzIik7DQogICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX2FjdD1wcm9jZXNzZXMiKTsNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiTG9nb3V0Iiwkc3VybC4iYWN0PXNxbCIpOw0KICBlY2hvICI8Y2VudGVyPjxiPk15U1FMICIubXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCkuIiAocHJvdG8gdi4iLm15c3FsX2dldF9wcm90b19pbmZvICgpLiIpIHJ1bm5pbmcgaW4gIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iOiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIgYXMgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJAIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iIChwYXNzd29yZCAtIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCIpPC9iPjxicj4iOw0KICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPjxiPiIuJGl0ZW1bMF0uIjwvYj48L2E+IF0gIjt9fQ0KICBlY2hvICI8L2NlbnRlcj4iOw0KIH0NCiBlY2hvICI8L3RkPjwvdHI+PHRyPiI7DQogaWYgKCEkc3FsX3NvY2spIHs/Pjx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjEwMCIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGZvbnQgc2l6ZT0iNSI+PGJyLz48L2ZvbnQ+PC9jZW50ZXI+PGxpPklmIGxvZ2luIGlzIG51bGwsIGxvZ2luIGlzIG93bmVyIG9mIHByb2Nlc3MuPGxpPklmIGhvc3QgaXMgbnVsbCwgaG9zdCBpcyBsb2NhbGhvc3Q8L2I+PGxpPklmIHBvcnQgaXMgbnVsbCwgcG9ydCBpcyAzMzA2IChkZWZhdWx0KTwvdGQ+PHRkIHdpZHRoPSI5MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxUQUJMRSBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9IjEwMCUiIGJvcmRlcj0wPjx0cj48dGQ+Jm5ic3A7PHRhYmxlPjx0cj48dGQ+PGI+VXNlcm5hbWU8L2I+PC90ZD48dGQ+PGI+UGFzc3dvcmQ8L2I+Jm5ic3A7PC90ZD48dGQ+PGI+RGF0YWJhc2U8L2I+Jm5ic3A7PC90ZD48L3RyPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48dHI+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSJyb290IiBtYXhsZW5ndGg9IjY0Ij48L3RkPjx0ZD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfZGIiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PC90cj48dHI+PHRkPjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9ImxvY2FsaG9zdCIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iMzMwNiIgbWF4bGVuZ3RoPSI2IiBzaXplPSIzIj48L3RkPjx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+PD9waHAgfQ0KIGVsc2UNCiB7DQogIC8vU3RhcnQgbGVmdCBwYW5lbA0KICBpZiAoIWVtcHR5KCRzcWxfZGIpKQ0KICB7DQogICA/Pjx0ZCB3aWR0aD0iMjUlIiBoZWlnaHQ9IjEwMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSI8P3BocCBlY2hvICRzdXJsLiJ3NC9hY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJiI7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocA0KICAgJHJlc3VsdCA9IG15c3FsX2xpc3RfdGFibGVzKCRzcWxfZGIpOw0KICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KICAgZWxzZQ0KICAgew0KICAgIGVjaG8gIi0tLVsgPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiImXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiI8L2I+PC9hPiBdLS0tPGJyPiI7DQogICAgJGMgPSAwOw0KICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskY291bnQgPSBteXNxbF9xdWVyeSAoIlNFTEVDVCBDT1VOVCgqKSBGUk9NICIuJHJvd1swXSk7ICRjb3VudF9yb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkY291bnQpOyBlY2hvICI8Yj7CuyZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iJnNxbF90Ymw9Ii5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiJcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSkuIjwvYj48L2E+ICgiLiRjb3VudF9yb3dbMF0uIik8L2JyPjwvYj4iOyBteXNxbF9mcmVlX3Jlc3VsdCgkY291bnQpOyAkYysrO30NCiAgICBpZiAoISRjKSB7ZWNobyAiTm8gdGFibGVzIGZvdW5kIGluIGRhdGFiYXNlLiI7fQ0KICAgfQ0KICB9DQogIGVsc2UNCiAgew0KICAgPz48dGQgd2lkdGg9IjEiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3FsX3N1cmw7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocA0KICAgJHJlc3VsdCA9IG15c3FsX2xpc3RfZGJzKCRzcWxfc29jayk7DQogICBpZiAoISRyZXN1bHQpIHtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICBlbHNlDQogICB7DQogICAgPz48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PHNlbGVjdCBuYW1lPSJzcWxfZGIiPjw/cGhwDQogICAgJGMgPSAwOw0KICAgICRkYnMgPSAiIjsNCiAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzdWx0KSkgeyRkYnMgLj0gIjxvcHRpb24gdmFsdWU9XCIiLiRyb3dbMF0uIlwiIjsgaWYgKCRzcWxfZGIgPT0gJHJvd1swXSkgeyRkYnMgLj0gIiBzZWxlY3RlZCI7fSAkZGJzIC49ICI+Ii4kcm93WzBdLiI8L29wdGlvbj4iOyAkYysrO30NCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+RGF0YWJhc2VzICgiLiRjLiIpPC9vcHRpb24+IjsNCiAgICBlY2hvICRkYnM7DQogICB9DQogICA/Pjwvc2VsZWN0PjxociBzaXplPSIxIiBub3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9IjEiIG5vc2hhZGU+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIj48L2Zvcm0+PD9waHANCiAgfQ0KICAvL0VuZCBsZWZ0IHBhbmVsDQogIGVjaG8gIjwvdGQ+PHRkIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjFcIiB2YWxpZ249XCJ0b3BcIj4iOw0KICAvL1N0YXJ0IGNlbnRlciBwYW5lbA0KICAkZGlwbGF5ID0gVFJVRTsNCiAgaWYgKCRzcWxfZGIpDQogIHsNCiAgIGlmICghaXNfbnVtZXJpYygkYykpIHskYyA9IDA7fQ0KICAgaWYgKCRjID09IDApIHskYyA9ICJubyI7fQ0KICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRoZXJlIGFyZSAiLiRjLiIgdGFibGUocykgaW4gdGhpcyBEQiAoIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiIpLjxicj4iOw0KICAgaWYgKGNvdW50KCRkYnF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRkYnNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKSB7ZWNobyAiWyA8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPiBdICI7fX0NCiAgIGVjaG8gIjwvYj48L2NlbnRlcj4iOw0KICAgJGFjdHMgPSBhcnJheSgiIiwiZHVtcCIpOw0KICAgaWYgKCRzcWxfYWN0ID09ICJ0Ymxkcm9wIikgeyRzcWxfcXVlcnkgPSAiRFJPUCBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4iYCBcbiI7fSAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsZHVtcCIpIHtpZiAoY291bnQoJGJveHRibCkgPiAwKSB7JGRtcHRibHMgPSAkYm94dGJsO30gZWxzZWlmKCR0aGlzdGJsKSB7JGRtcHRibHMgPSBhcnJheSgkc3FsX3RibCk7fSAkc3FsX2FjdCA9ICJkdW1wIjt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxjaGVjayIpIHskc3FsX3F1ZXJ5ID0gIkNIRUNLIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxvcHRpbWl6ZSIpIHskc3FsX3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxyZXBhaXIiKSB7JHNxbF9xdWVyeSA9ICJSRVBBSVIgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGFuYWx5emUiKSB7JHNxbF9xdWVyeSA9ICJBTkFMWVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJkZWxldGVyb3ciKSB7JHNxbF9xdWVyeSA9ICIiOyBpZiAoIWVtcHR5KCRib3hyb3dfYWxsKSkgeyRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYDsiO30gZWxzZSB7Zm9yZWFjaCgkYm94cm93IGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHYuIiBMSU1JVCAxO1xuIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfdGJsX2FjdCA9PSAiaW5zZXJ0IikNCiAgIHsNCiAgICBpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDEpDQogICAgew0KICAgICAka2V5cyA9ICIiOw0KICAgICAkYWtleXMgPSBhcnJheV9rZXlzKCRzcWxfdGJsX2luc2VydCk7DQogICAgIGZvcmVhY2ggKCRha2V5cyBhcyAkdikgeyRrZXlzIC49ICJgIi5hZGRzbGFzaGVzKCR2KS4iYCwgIjt9DQogICAgIGlmICghZW1wdHkoJGtleXMpKSB7JGtleXMgPSBzdWJzdHIoJGtleXMsMCxzdHJsZW4oJGtleXMpLTIpO30NCiAgICAgJHZhbHVlcyA9ICIiOw0KICAgICAkaSA9IDA7DQogICAgIGZvcmVhY2ggKGFycmF5X3ZhbHVlcygkc3FsX3RibF9pbnNlcnQpIGFzICR2KSB7aWYgKCRmdW5jdCA9ICRzcWxfdGJsX2luc2VydF9mdW5jdHNbJGFrZXlzWyRpXV0pIHskdmFsdWVzIC49ICRmdW5jdC4iICgiO30gJHZhbHVlcyAuPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOyBpZiAoJGZ1bmN0KSB7JHZhbHVlcyAuPSAiKSI7fSAkdmFsdWVzIC49ICIsICI7ICRpKys7fQ0KICAgICBpZiAoIWVtcHR5KCR2YWx1ZXMpKSB7JHZhbHVlcyA9IHN1YnN0cigkdmFsdWVzLDAsc3RybGVuKCR2YWx1ZXMpLTIpO30NCiAgICAgJHNxbF9xdWVyeSA9ICJJTlNFUlQgSU5UTyBgIi4kc3FsX3RibC4iYCAoICIuJGtleXMuIiApIFZBTFVFUyAoICIuJHZhbHVlcy4iICk7IjsNCiAgICAgJHNxbF9hY3QgPSAicXVlcnkiOw0KICAgICAkc3FsX3RibF9hY3QgPSAiYnJvd3NlIjsNCiAgICB9DQogICAgZWxzZWlmICgkc3FsX3RibF9pbnNlcnRfcmFkaW8gPT0gMikNCiAgICB7DQogICAgICRzZXQgPSBteXNxbF9idWlsZHdoZXJlKCRzcWxfdGJsX2luc2VydCwiLCAiLCRzcWxfdGJsX2luc2VydF9mdW5jdHMpOw0KICAgICAkc3FsX3F1ZXJ5ID0gIlVQREFURSBgIi4kc3FsX3RibC4iYCBTRVQgIi4kc2V0LiIgV0hFUkUgIi4kc3FsX3RibF9pbnNlcnRfcS4iIExJTUlUIDE7IjsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQyk7DQogICAgICRzcWxfYWN0ID0gInF1ZXJ5IjsNCiAgICAgJHNxbF90YmxfYWN0ID0gImJyb3dzZSI7DQogICAgfQ0KICAgfQ0KICAgaWYgKCRzcWxfYWN0ID09ICJxdWVyeSIpDQogICB7DQogICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQ0KICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX2FjdCA9ICRzcWxfZ290bzt9DQogICAgaWYgKCghJHN1Ym1pdCkgb3IgKCRzcWxfYWN0KSkge2VjaG8gIjx0YWJsZSBib3JkZXI9XCIwXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMVwiPjx0cj48dGQ+PGZvcm0gYWN0aW9uPVwiIi4kc3FsX3N1cmwuIlwiIG1ldGhvZD1cIlBPU1RcIj48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJtaXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvOiI7fSBlbHNlIHtlY2hvICJTUUwtUXVlcnkgOiI7fSBlY2hvICI8L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1cInNxbF9xdWVyeVwiIGNvbHM9XCIxMDBcIiByb3dzPVwiMTBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfYWN0XCIgdmFsdWU9XCJxdWVyeVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwic3FsX2NvbmZpcm1cIiB2YWx1ZT1cIlllc1wiPiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJOb1wiPjwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT4iO30NCiAgIH0NCiAgIGlmIChpbl9hcnJheSgkc3FsX2FjdCwkYWN0cykpDQogICB7DQogICAgPz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+DQogICAgPHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIGEgbmV3IHRhYmxlOjwvYj4NCiAgICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9Im5ld3RibCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPjwvZm9ybT48L3RkPg0KICAgIA0KICAgIDx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgRGF0YUJhc2U6PC9iPg0KICAgICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0iZHVtcCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZHVtcF9maWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocA0KICAgIGlmICghZW1wdHkoJHNxbF9hY3QpKSB7ZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iO30NCiAgICBpZiAoJHNxbF9hY3QgPT0gIm5ld3RibCIpDQogICAgew0KICAgICBlY2hvICI8Yj4iOw0KICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVkIHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7DQogICAgfQ0KICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgIH0NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gImR1bXAiKQ0KICAgew0KICAgIGlmIChlbXB0eSgkc3VibWl0KSkNCiAgICB7DQogICAgICRkaXBsYXkgPSBGQUxTRTsNCiAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiYWN0XCIgdmFsdWU9XCJzcWxcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfYWN0XCIgdmFsdWU9XCJkdW1wXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9sb2dpblwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfc2VydmVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcG9ydFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxiPlNRTC1EdW1wOjwvYj48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxiPkRCOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkc3FsX2RiKS4iXCI+PGJyPjxicj4iOw0KICAgICAkdiA9IGpvaW4gKCI7IiwkZG1wdGJscyk7DQogICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwvc3VwPjwvYj46PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIiBzaXplPVwiIi4oc3RybGVuKCR2KSs1KS4iXCI+PGJyPjxicj4iOw0KICAgICBpZiAoJGR1bXBfZmlsZSkgeyR0bXAgPSAkZHVtcF9maWxlO30NCiAgICAgZWxzZSB7JHRtcCA9IGh0bWxzcGVjaWFsY2hhcnMoIi4vZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCIpO30NCiAgICAgZWNobyAiPGI+RmlsZTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2YWx1ZT1cIiIuJHRtcC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdG1wKStzdHJsZW4oJHRtcCkgJSAzMCkuIlwiPjxicj48YnI+IjsNCiAgICAgZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxiPlNhdmUgdG8gZmlsZTogPC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic3FsX2R1bXBfc2F2ZXRvZmlsZVwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+IjsNCiAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIkR1bXBcIj48YnI+PGJyPjxiPjxzdXA+MTwvc3VwPjwvYj4gLSBhbGwsIGlmIGVtcHR5IjsNCiAgICAgZWNobyAiPC9mb3JtPiI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICRkaXBsYXkgPSBUUlVFOw0KICAgICAkc2V0ID0gYXJyYXkoKTsNCiAgICAgJHNldFsic29jayJdID0gJHNxbF9zb2NrOw0KICAgICAkc2V0WyJkYiJdID0gJHNxbF9kYjsNCiAgICAgJGR1bXBfb3V0ID0gImRvd25sb2FkIjsNCiAgICAgJHNldFsicHJpbnQiXSA9IDA7DQogICAgICRzZXRbIm5sMmJyIl0gPSAwOw0KICAgICAkc2V0WyIiXSA9IDA7DQogICAgICRzZXRbImZpbGUiXSA9ICRkdW1wX2ZpbGU7DQogICAgICRzZXRbImFkZF9kcm9wIl0gPSBUUlVFOw0KICAgICAkc2V0WyJvbmx5dGFicyJdID0gYXJyYXkoKTsNCiAgICAgaWYgKCFlbXB0eSgkZG1wdGJscykpIHskc2V0WyJvbmx5dGFicyJdID0gZXhwbG9kZSgiOyIsJGRtcHRibHMpO30NCiAgICAgJHJldCA9IG15c3FsX2R1bXAoJHNldCk7DQogICAgIGlmICgkc3FsX2R1bXBfZG93bmxvYWQpDQogICAgIHsNCiAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgaGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOw0KICAgICAgaGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJHJldCkpOw0KICAgICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuYmFzZW5hbWUoJHNxbF9kdW1wX2ZpbGUpLiJcIjsiKTsNCiAgICAgIGVjaG8gJHJldDsNCiAgICAgIGV4aXQ7DQogICAgIH0NCiAgICAgZWxzZWlmICgkc3FsX2R1bXBfc2F2ZXRvZmlsZSkNCiAgICAgew0KICAgICAgJGZwID0gZm9wZW4oJHNxbF9kdW1wX2ZpbGUsInciKTsNCiAgICAgIGlmICghJGZwKSB7ZWNobyAiPGI+RHVtcCBlcnJvciEgQ2FuJ3Qgd3JpdGUgdG8gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kdW1wX2ZpbGUpLiJcIiEiO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICBmd3JpdGUoJGZwLCRyZXQpOw0KICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgIGVjaG8gIjxiPkR1bXBlZCEgRHVtcCBoYXMgYmVlbiB3cml0ZWQgdG8gXCIiLmh0bWxzcGVjaWFsY2hhcnMocmVhbHBhdGgoJHNxbF9kdW1wX2ZpbGUpKS4iXCIgKCIudmlld19zaXplKGZpbGVzaXplKCRzcWxfZHVtcF9maWxlKSkuIik8L2I+LiI7DQogICAgICB9DQogICAgIH0NCiAgICAgZWxzZSB7ZWNobyAiPGI+RHVtcDogbm90aGluZyB0byBkbyE8L2I+Ijt9DQogICAgfQ0KICAgfQ0KICAgaWYgKCRkaXBsYXkpDQogICB7DQogICAgaWYgKCFlbXB0eSgkc3FsX3RibCkpDQogICAgew0KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfYWN0KSkgeyRzcWxfdGJsX2FjdCA9ICJicm93c2UiO30NCiAgICAgJGNvdW50ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGAiLiRzcWxfdGJsLiJgOyIpOw0KICAgICAkY291bnRfcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJGNvdW50KTsNCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsNCiAgICAgJHRibF9zdHJ1Y3RfcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgRklFTERTIEZST00gYCIuJHNxbF90YmwuImA7Iik7DQogICAgICR0Ymxfc3RydWN0X2ZpZWxkcyA9IGFycmF5KCk7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHRibF9zdHJ1Y3RfcmVzdWx0KSkgeyR0Ymxfc3RydWN0X2ZpZWxkc1tdID0gJHJvdzt9DQogICAgIGlmICgkc3FsX2xzID4gJHNxbF9sZSkgeyRzcWxfbGUgPSAkc3FsX2xzICsgJHBlcnBhZ2U7fQ0KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfcGFnZSkpIHskc3FsX3RibF9wYWdlID0gMDt9DQogICAgIGlmIChlbXB0eSgkc3FsX3RibF9scykpIHskc3FsX3RibF9scyA9IDA7fQ0KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbGUpKSB7JHNxbF90YmxfbGUgPSAzMDt9DQogICAgICRwZXJwYWdlID0gJHNxbF90YmxfbGUgLSAkc3FsX3RibF9sczsNCiAgICAgaWYgKCFpc19udW1lcmljKCRwZXJwYWdlKSkgeyRwZXJwYWdlID0gMTA7fQ0KICAgICAkbnVtcGFnZXMgPSAkY291bnRfcm93WzBdLyRwZXJwYWdlOw0KICAgICAkZSA9IGV4cGxvZGUoIiAiLCRzcWxfb3JkZXIpOw0KICAgICBpZiAoY291bnQoJGUpID09IDIpDQogICAgIHsNCiAgICAgIGlmICgkZVswXSA9PSAiZCIpIHskYXNjX2Rlc2MgPSAiREVTQyI7fQ0KICAgICAgZWxzZSB7JGFzY19kZXNjID0gIkFTQyI7fQ0KICAgICAgJHYgPSAiT1JERVIgQlkgYCIuJGVbMV0uImAgIi4kYXNjX2Rlc2MuIiAiOw0KICAgICB9DQogICAgIGVsc2UgeyR2ID0gIiI7fQ0KICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIi4kc3FsX3RibC4iYCAiLiR2LiJMSU1JVCAiLiRzcWxfdGJsX2xzLiIgLCAiLiRwZXJwYWdlLiIiOw0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5KSBvciBwcmludChteXNxbF9zbWFydGVycm9yKCkpOw0KICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxjZW50ZXI+PGI+VGFibGUgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iICgiLm15c3FsX251bV9maWVsZHMoJHJlc3VsdCkuIiBjb2xzIGFuZCAiLiRjb3VudF9yb3dbMF0uIiByb3dzKTwvYj48L2NlbnRlcj4iOw0KICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9hY3Q9c3RydWN0dXJlXCI+WyZuYnNwOzxiPlN0cnVjdHVyZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX2FjdD1icm93c2VcIj5bJm5ic3A7PGI+QnJvd3NlPC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF9hY3Q9dGJsZHVtcCZ0aGlzdGJsPTFcIj5bJm5ic3A7PGI+RHVtcDwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX2FjdD1pbnNlcnRcIj5bJm5ic3A7PGI+SW5zZXJ0PC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgaWYgKCRzcWxfdGJsX2FjdCA9PSAic3RydWN0dXJlIikge2VjaG8gIjxicj48YnI+PGI+Q29taW5nIHNvb29uITwvYj4iO30NCiAgICAgaWYgKCRzcWxfdGJsX2FjdCA9PSAiaW5zZXJ0IikNCiAgICAgew0KICAgICAgaWYgKCFpc19hcnJheSgkc3FsX3RibF9pbnNlcnQpKSB7JHNxbF90YmxfaW5zZXJ0ID0gYXJyYXkoKTt9DQogICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9yYWRpbykpDQogICAgICB7DQoNCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICBlY2hvICI8YnI+PGJyPjxiPkluc2VydGluZyByb3cgaW50byB0YWJsZTo8L2I+PGJyPiI7DQogICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpDQogICAgICAgew0KICAgICAgICAkc3FsX3F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAiOw0KICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgV0hFUkUiLiRzcWxfdGJsX2luc2VydF9xOw0KICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgTElNSVQgMTsiOw0KICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3NvY2spIG9yIHByaW50KCI8YnI+PGJyPiIubXlzcWxfc21hcnRlcnJvcigpKTsNCiAgICAgICAgJHZhbHVlcyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpOw0KICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICB9DQogICAgICAgZWxzZSB7JHZhbHVlcyA9IGFycmF5KCk7fQ0KICAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMSVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQ+PGI+RmllbGQ8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5GdW5jdGlvbjwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsNCiAgICAgICBmb3JlYWNoICgkdGJsX3N0cnVjdF9maWVsZHMgYXMgJGZpZWxkKQ0KICAgICAgIHsNCiAgICAgICAgJG5hbWUgPSAkZmllbGRbIkZpZWxkIl07DQogICAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHskdiA9ICIiO30NCiAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiI8L2I+PC90ZD48dGQ+Ii4kZmllbGRbIlR5cGUiXS4iPC90ZD48dGQ+PHNlbGVjdCBuYW1lPVwic3FsX3RibF9pbnNlcnRfZnVuY3RzWyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIj48b3B0aW9uIHZhbHVlPVwiXCI+PC9vcHRpb24+PG9wdGlvbj5QQVNTV09SRDwvb3B0aW9uPjxvcHRpb24+TUQ1PC9vcHRpb24+PG9wdGlvbj5FTkNSWVBUPC9vcHRpb24+PG9wdGlvbj5BU0NJSTwvb3B0aW9uPjxvcHRpb24+Q0hBUjwvb3B0aW9uPjxvcHRpb24+UkFORDwvb3B0aW9uPjxvcHRpb24+TEFTVF9JTlNFUlRfSUQ8L29wdGlvbj48b3B0aW9uPkNPVU5UPC9vcHRpb24+PG9wdGlvbj5BVkc8L29wdGlvbj48b3B0aW9uPlNVTTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJcIj4tLS0tLS0tLTwvb3B0aW9uPjxvcHRpb24+U09VTkRFWDwvb3B0aW9uPjxvcHRpb24+TENBU0U8L29wdGlvbj48b3B0aW9uPlVDQVNFPC9vcHRpb24+PG9wdGlvbj5OT1c8L29wdGlvbj48b3B0aW9uPkNVUkRBVEU8L29wdGlvbj48b3B0aW9uPkNVUlRJTUU8L29wdGlvbj48b3B0aW9uPkZST01fREFZUzwvb3B0aW9uPjxvcHRpb24+RlJPTV9VTklYVElNRTwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0FERDwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0RJRkY8L29wdGlvbj48b3B0aW9uPlRPX0RBWVM8L29wdGlvbj48b3B0aW9uPlVOSVhfVElNRVNUQU1QPC9vcHRpb24+PG9wdGlvbj5VU0VSPC9vcHRpb24+PG9wdGlvbj5XRUVLREFZPC9vcHRpb24+PG9wdGlvbj5DT05DQVQ8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9pbnNlcnRbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2YWx1ZXNbJG5hbWVdKS4iXCIgc2l6ZT01MD48L3RkPjwvdHI+IjsNCiAgICAgICAgJGkrKzsNCiAgICAgICB9DQogICAgICAgZWNobyAiPC90YWJsZT48YnI+IjsNCiAgICAgICBlY2hvICI8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3JhZGlvXCIgdmFsdWU9XCIxXCIiOyBpZiAoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7ZWNobyAiIGNoZWNrZWQiO30gZWNobyAiPjxiPkluc2VydCBhcyBuZXcgcm93PC9iPiI7DQogICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgb3IgPGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzcWxfdGJsX2luc2VydF9yYWRpb1wiIHZhbHVlPVwiMlwiIGNoZWNrZWQ+PGI+U2F2ZTwvYj4iOyBlY2hvICI8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsX2luc2VydF9xXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmxfaW5zZXJ0X3EpLiJcIj4iO30NCiAgICAgICBlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPiI7DQogICAgICB9DQogICAgIH0NCiAgICAgaWYgKCRzcWxfdGJsX2FjdCA9PSAiYnJvd3NlIikNCiAgICAgew0KICAgICAgJHNxbF90YmxfbHMgPSBhYnMoJHNxbF90YmxfbHMpOw0KICAgICAgJHNxbF90YmxfbGUgPSBhYnMoJHNxbF90YmxfbGUpOw0KICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgICAgZWNobyAiW1BhZ2VzXSZuYnNwOyI7DQogICAgICAkYiA9IDA7DQogICAgICBmb3IoJGk9MDskaTwkbnVtcGFnZXM7JGkrKykNCiAgICAgIHsNCiAgICAgICBpZiAoKCRpKiRwZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF9vcmRlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIiZzcWxfdGJsX2xzPSIuKCRpKiRwZXJwYWdlKS4iJnNxbF90YmxfbGU9Ii4oJGkqJHBlcnBhZ2UrJHBlcnBhZ2UpLiJcIj48dT4iO30NCiAgICAgICBlY2hvICRpOw0KICAgICAgIGlmICgoJGkqJHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9yICgkaSokcGVycGFnZSskcGVycGFnZSAhPSAkc3FsX3RibF9sZSkpIHtlY2hvICI8L3U+PC9hPiI7fQ0KICAgICAgIGlmICgoJGkvMzAgPT0gcm91bmQoJGkvMzApKSBhbmQgKCRpID4gMCkpIHtlY2hvICI8YnI+Ijt9DQogICAgICAgZWxzZSB7ZWNobyAiJm5ic3A7Ijt9DQogICAgICB9DQogICAgICBpZiAoJGkgPT0gMCkge2VjaG8gImVtcHR5Ijt9DQogICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJhY3RcIiB2YWx1ZT1cInNxbFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfb3JkZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX29yZGVyKS4iXCI+PGI+RnJvbTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbHNcIiB2YWx1ZT1cIiIuJHNxbF90YmxfbHMuIlwiPiZuYnNwOzxiPlRvOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9sZVwiIHZhbHVlPVwiIi4kc3FsX3RibF9sZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIlZpZXdcIj48L2Zvcm0+IjsNCiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjElXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4iOw0KICAgICAgZWNobyAiPHRyPiI7DQogICAgICBlY2hvICI8dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3hyb3dfYWxsXCIgdmFsdWU9XCIxXCI+PC90ZD4iOw0KICAgICAgZm9yICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykNCiAgICAgIHsNCiAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7DQogICAgICAgaWYgKCRlWzBdID09ICJhIikgeyRzID0gImQiOyAkbSA9ICJhc2MiO30NCiAgICAgICBlbHNlIHskcyA9ICJhIjsgJG0gPSAiZGVzYyI7fQ0KICAgICAgIGVjaG8gIjx0ZD4iOw0KICAgICAgIGlmIChlbXB0eSgkZVswXSkpIHskZVswXSA9ICJhIjt9DQogICAgICAgaWYgKCRlWzFdICE9ICR2KSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kZVswXS4iJTIwIi4kdi4iXCI+PGI+Ii4kdi4iPC9iPjwvYT4iO30NCiAgICAgICBlbHNlIHtlY2hvICI8Yj4iLiR2LiI8L2I+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kcy4iJTIwIi4kdi4iXCI+W3NvcnRdPC9hPiI7fQ0KICAgICAgIGVjaG8gIjwvdGQ+IjsNCiAgICAgIH0NCiAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj1cImdyZWVuXCI+PGI+QWN0aW9uPC9iPjwvZm9udD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkNCiAgICAgIHsNCiAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAkdyA9ICIiOw0KICAgICAgICRpID0gMDsNCiAgICAgICBmb3JlYWNoICgkcm93IGFzICRrPT4kdikgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsgJHcgLj0gIiBgIi4kbmFtZS4iYCA9ICciLmFkZHNsYXNoZXMoJHYpLiInIEFORCI7ICRpKys7fQ0KICAgICAgIGlmIChjb3VudCgkcm93KSA+IDApIHskdyA9IHN1YnN0cigkdywwLHN0cmxlbigkdyktMyk7fQ0KICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd1tdXCIgdmFsdWU9XCIiLiR3LiJcIj48L3RkPiI7DQogICAgICAgJGkgPSAwOw0KICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KQ0KICAgICAgIHsNCiAgICAgICAgJHYgPSBodG1sc3BlY2lhbGNoYXJzKCR2KTsNCiAgICAgICAgaWYgKCR2ID09ICIiKSB7JHYgPSAiPGZvbnQgY29sb3I9XCJncmVlblwiPk5VTEw8L2ZvbnQ+Ijt9DQogICAgICAgIGVjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7DQogICAgICAgICRpKys7DQogICAgICAgfQ0KICAgICAgIGVjaG8gIjx0ZD4iOw0KICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+W0RlbGV0ZV08L2E+Jm5ic3A7IjsNCiAgICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfaW5zZXJ0X3E9Ii51cmxlbmNvZGUoJHcpLiJcIj48Yj5bRWRpdF08L2I+PC9hPiZuYnNwOyI7DQogICAgICAgZWNobyAiPC90ZD4iOw0KICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgIH0NCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwibGVmdFwiPjxzZWxlY3QgbmFtZT1cInNxbF9hY3RcIj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJkZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQogICAgIH0NCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIsICRzcWxfc29jayk7DQogICAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgZWxzZQ0KICAgICB7DQogICAgICBlY2hvICI8YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94dGJsX2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+PHRkPjxjZW50ZXI+PGI+VGFibGU8L2I+PC9jZW50ZXI+PC90ZD48dGQ+PGI+Um93czwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkNyZWF0ZWQ8L2I+PC90ZD48dGQ+PGI+TW9kaWZpZWQ8L2I+PC90ZD48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQogICAgICAkaSA9IDA7DQogICAgICAkdHNpemUgPSAkdHJvd3MgPSAwOw0KICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpDQogICAgICB7DQogICAgICAgJHRzaXplICs9ICRyb3dbIkRhdGFfbGVuZ3RoIl07DQogICAgICAgJHRyb3dzICs9ICRyb3dbIlJvd3MiXTsNCiAgICAgICAkc2l6ZSA9IHZpZXdfc2l6ZSgkcm93WyJEYXRhX2xlbmd0aCJdKTsNCiAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICBlY2hvICI8dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3h0YmxbXVwiIHZhbHVlPVwiIi4kcm93WyJOYW1lIl0uIlwiPjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRyb3dbIk5hbWUiXSkuIlwiPjxiPiIuJHJvd1siTmFtZSJdLiI8L2I+PC9hPiZuYnNwOzwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJSb3dzIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJUeXBlIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJDcmVhdGVfdGltZSJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVXBkYXRlX3RpbWUiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRzaXplLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRFTEVURSBGUk9NIGAiLiRyb3dbIk5hbWUiXS4iYCIpLiJcIj5bRW1wdHldPC9hPiZuYnNwOyZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPltEcm9wXTwvYT4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiJcIj48Yj5bSW5zZXJ0XTwvYj48L2E+Jm5ic3A7PC90ZD4iOw0KICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAkaSsrOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRyIGJnY29sb3I9XCIwMDAwMDBcIj4iOw0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+wrs8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+Ii4kaS4iIHRhYmxlKHMpPC9iPjwvY2VudGVyPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD48Yj4iLiR0cm93cy4iPC9iPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMV0uIjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTBdLiI8L3RkPiI7DQogICAgICBlY2hvICI8dGQ+Ii4kcm93WzExXS4iPC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxiPiIudmlld19zaXplKCR0c2l6ZSkuIjwvYj48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PC90ZD4iOw0KICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwicmlnaHRcIj48c2VsZWN0IG5hbWU9XCJzcWxfYWN0XCI+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGVtcHR5XCI+RW1wdHk8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGR1bXBcIj5EdW1wPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNrIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxvcHRpbWl6ZVwiPk9wdGltaXplIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxyZXBhaXJcIj5SZXBhaXIgdGFibGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFuYWx5emVcIj5BbmFseXplIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPjwvcD4iOw0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgIH0NCiAgICB9DQogICB9DQogICB9DQogIH0NCiAgZWxzZQ0KICB7DQogICAkYWN0cyA9IGFycmF5KCIiLCJuZXdkYiIsInNlcnZlcnN0YXR1cyIsInNlcnZlcnZhcnMiLCJwcm9jZXNzZXMiLCJnZXRmaWxlIik7DQogICBpZiAoaW5fYXJyYXkoJHNxbF9hY3QsJGFjdHMpKSB7Pz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyBEYXRhQmFzZTo8L2I+DQogICAgICAgICAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJuZXdkYiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld2RiIiBzaXplPSIyMCI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZSI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+VmlldyBGaWxlOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJnZXRmaWxlIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfZ2V0ZmlsZSIgc2l6ZT0iMzAiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nZXRmaWxlKTsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHZXQiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48L3RhYmxlPjw/cGhwIH0NCiAgIGlmICghZW1wdHkoJHNxbF9hY3QpKQ0KICAgew0KICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICBpZiAoJHNxbF9hY3QgPT0gIm5ld2RiIikNCiAgICB7DQogICAgIGVjaG8gIjxiPiI7DQogICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7ZWNobyAiREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBzdWNjZXNzITwvYj48YnI+Ijt9DQogICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgICB9DQogICAgaWYgKCRzcWxfYWN0ID09ICJzZXJ2ZXJzdGF0dXMiKQ0KICAgIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFNUQVRVUyIsICRzcWxfc29jayk7DQogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyLXN0YXR1cyB2YXJpYWJsZXM6PC9iPjxicj48YnI+IjsNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jMzMzMzMzIGJvcmRlcj0xPjx0ZD48Yj5OYW1lPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHtlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjwvdHI+Ijt9DQogICAgIGVjaG8gIjwvdGFibGU+PC9jZW50ZXI+IjsNCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgfQ0KICAgIGlmICgkc3FsX2FjdCA9PSAic2VydmVydmFycyIpDQogICAgew0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgVkFSSUFCTEVTIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXIgdmFyaWFibGVzOjwvYj48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsNCiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7ZWNobyAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48L3RyPiI7fQ0KICAgICBlY2hvICI8L3RhYmxlPiI7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgIH0NCiAgICBpZiAoJHNxbF9hY3QgPT0gInByb2Nlc3NlcyIpDQogICAgew0KICAgICBpZiAoIWVtcHR5KCRraWxsKSkgeyRxdWVyeSA9ICJLSUxMICIuJGtpbGwuIjsiOyAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCAkc3FsX3NvY2spOyBlY2hvICI8Yj5LaWxsaW5nIHByb2Nlc3MgIyIuJGtpbGwuIi4uLiBvay4gaGUgaXMgZGVhZCwgYW1lbi48L2I+Ijt9DQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBQUk9DRVNTTElTVCIsICRzcWxfc29jayk7DQogICAgIGVjaG8gIjxjZW50ZXI+PGI+UHJvY2Vzc2VzOjwvYj48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+SUQ8L2I+PC90ZD48dGQ+PGI+VVNFUjwvYj48L3RkPjx0ZD48Yj5IT1NUPC9iPjwvdGQ+PHRkPjxiPkRCPC9iPjwvdGQ+PHRkPjxiPkNPTU1BTkQ8L2I+PC90ZD48dGQ+PGI+VElNRTwvYj48L3RkPjx0ZD48Yj5TVEFURTwvYj48L3RkPjx0ZD48Yj5JTkZPPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+IjsNCiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7IGVjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PHRkPiIuJHJvd1syXS4iPC90ZD48dGQ+Ii4kcm93WzNdLiI8L3RkPjx0ZD4iLiRyb3dbNF0uIjwvdGQ+PHRkPiIuJHJvd1s1XS4iPC90ZD48dGQ+Ii4kcm93WzZdLiI8L3RkPjx0ZD4iLiRyb3dbN10uIjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2FjdD1wcm9jZXNzZXMma2lsbD0iLiRyb3dbMF0uIlwiPjx1PktpbGw8L3U+PC9hPjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfYWN0ID09ICJnZXRmaWxlIikNCiAgICB7DQogICAgICR0bXBkYiA9ICRzcWxfbG9naW4uIl90bXBkYiI7DQogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsNCiAgICAgaWYgKCEkc2VsZWN0KSB7bXlzcWxfY3JlYXRlX2RiKCR0bXBkYik7ICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsgJGNyZWF0ZWQgPSAhISRzZWxlY3Q7fQ0KICAgICBpZiAoJHNlbGVjdCkNCiAgICAgew0KICAgICAgJGNyZWF0ZWQgPSBGQUxTRTsNCiAgICAgIG15c3FsX3F1ZXJ5KCJDUkVBVEUgVEFCTEUgYHRtcF9maWxlYCAoIGBWaWV3aW5nIHRoZSBmaWxlIGluIHNhZmVfbW9kZStvcGVuX2Jhc2VkaXJgIExPTkdCTE9CIE5PVCBOVUxMICk7Iik7DQogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7DQogICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdG1wX2ZpbGU7Iik7DQogICAgICBpZiAoISRyZXN1bHQpIHtlY2hvICI8Yj5FcnJvciBpbiByZWFkaW5nIGZpbGUgKHBlcm1pc2lvbiBkZW5pZWQpITwvYj4iO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICBmb3IgKCRpPTA7JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpO30NCiAgICAgICAkZiA9ICIiOw0KICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKSB7JGYgLj0gam9pbiAoIlxyXG4iLCRyb3cpO30NCiAgICAgICBpZiAoZW1wdHkoJGYpKSB7ZWNobyAiPGI+RmlsZSBcIiIuJHNxbF9nZXRmaWxlLiJcIiBkb2VzIG5vdCBleGlzdHMgb3IgZW1wdHkhPC9iPjxicj4iO30NCiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5ubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30NCiAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSB0bXBfZmlsZTsiKTsNCiAgICAgIH0NCiAgICAgfQ0KICAgICBteXNxbF9kcm9wX2RiKCR0bXBkYik7IC8vY29tbWVudCBpdCBpZiB5b3Ugd2FudCB0byBsZWF2ZSBkYXRhYmFzZQ0KICAgIH0NCiAgIH0NCiAgfQ0KIH0NCiBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOw0KIGlmICgkc3FsX3NvY2spDQogew0KICAkYWZmZWN0ZWQgPSBAbXlzcWxfYWZmZWN0ZWRfcm93cygkc3FsX3NvY2spOw0KICBpZiAoKCFpc19udW1lcmljKCRhZmZlY3RlZCkpIG9yICgkYWZmZWN0ZWQgPCAwKSl7JGFmZmVjdGVkID0gMDt9DQogIGVjaG8gIjx0cj48dGQ+PGNlbnRlcj48Yj5BZmZlY3RlZCByb3dzOiAiLiRhZmZlY3RlZC4iPC9jZW50ZXI+PC90ZD48L3RyPiI7DQogfQ0KIGVjaG8gIjwvdGFibGU+IjsNCn0NCmlmICgkYWN0ID09ICJta2RpciIpDQp7DQogaWYgKCRta2RpciAhPSAkZCkNCiB7DQogIGlmIChmaWxlX2V4aXN0cygkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZGlyKS4iXCI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fQ0KICBlbHNlaWYgKCFta2RpcigkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZGlyKS4iXCI8L2I+OiBhY2Nlc3MgZGVuaWVkIjt9DQogIGVjaG8gIjxicj48YnI+IjsNCiB9DQogJGFjdCA9ICRkc3BhY3QgPSAibHMiOw0KfQ0KaWYgKCRhY3QgPT0gImZ0cHF1aWNrYnJ1dGUiKQ0Kew0KIGVjaG8gIjxiPkZUUCBCcnV0ZSBGb3JjZXI6IDwvYj48YnI+IjsNCiBpZiAoIXdpbikge2VjaG8gIlRoaXMgZnVuY3Rpb25zIG5vdCB3b3JrIGluIFdpbmRvd3MhPGJyPjxicj4iO30NCiBlbHNlDQogew0KICBmdW5jdGlvbiBjOTlmdHBicnV0ZWNoZWNrKCRob3N0LCRwb3J0LCR0aW1lb3V0LCRsb2dpbiwkcGFzcywkc2gsJGZxYl9vbmx5d2l0aHNoKQ0KICB7DQogICBpZiAoJGZxYl9vbmx5d2l0aHNoKSB7JFRSVUUgPSAoIWluX2FycmF5KCRzaCxhcnJheSgiL2Jpbi9GQUxTRSIsIi9zYmluL25vbG9naW4iKSkpO30NCiAgIGVsc2UgeyRUUlVFID0gVFJVRTt9DQogICBpZiAoJFRSVUUpDQogICB7DQogICAgJHNvY2sgPSBAZnRwX2Nvbm5lY3QoJGhvc3QsJHBvcnQsJHRpbWVvdXQpOw0KICAgIGlmIChAZnRwX2xvZ2luKCRzb2NrLCRsb2dpbiwkcGFzcykpDQogICAgew0KICAgICBlY2hvICI8YSBocmVmPVwiZnRwOi8vIi4kbG9naW4uIjoiLiRwYXNzLiJAIi4kaG9zdC4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+Q29ubmVjdGVkIHRvICIuJGhvc3QuIiB3aXRoIGxvZ2luIFwiIi4kbG9naW4uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHBhc3MuIlwiPC9iPjwvYT4uPGJyPiI7DQogICAgIG9iX2ZsdXNoKCk7DQogICAgIHJldHVybiBUUlVFOw0KICAgIH0NCiAgIH0NCiAgfQ0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KICB7DQogICBpZiAoIWlzX251bWVyaWMoJGZxYl9sZW5naHQpKSB7JGZxYl9sZW5naHQgPSAkbml4cHdkcGVycGFnZTt9DQogICAkZnAgPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCJyIik7DQogICBpZiAoISRmcCkge2VjaG8gIkNhbid0IGdldCAvZXRjL3Bhc3N3ZCBmb3IgcGFzc3dvcmQtbGlzdC4iO30NCiAgIGVsc2UNCiAgIHsNCiAgICBpZiAoJGZxYl9sb2dnaW5nKQ0KICAgIHsNCiAgICAgaWYgKCRmcWJfbG9nZmlsZSkgeyRmcWJfbG9nZnAgPSBmb3BlbigkZnFiX2xvZ2ZpbGUsInciKTt9DQogICAgIGVsc2UgeyRmcWJfbG9nZnAgPSBGQUxTRTt9DQogICAgICRmcWJfbG9nID0gIkZUUCBRdWljayBCcnV0ZSAoY2FsbGVkIGM5OXNoZWxsIHYuICIuJHNodmVyLiIpIHN0YXJ0ZWQgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuXHJcbiI7DQogICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHtmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQogICAgfQ0KICAgIG9iX2ZsdXNoKCk7DQogICAgJGkgPSAkc3VjY2VzcyA9IDA7DQogICAgJGZ0cHF1aWNrX3N0ID0gZ2V0bWljcm90aW1lKCk7DQogICAgd2hpbGUoIWZlb2YoJGZwKSkNCiAgICB7DQogICAgICRzdHIgPSBleHBsb2RlKCI6IixmZ2V0cygkZnAsMjA0OCkpOw0KICAgICBpZiAoYzk5ZnRwYnJ1dGVjaGVjaygibG9jYWxob3N0IiwyMSwxLCRzdHJbMF0sJHN0clswXSwkc3RyWzZdLCRmcWJfb25seXdpdGhzaCkpDQogICAgIHsNCiAgICAgIGVjaG8gIjxiPkNvbm5lY3RlZCB0byAiLmdldGVudigiU0VSVkVSX05BTUUiKS4iIHdpdGggbG9naW4gXCIiLiRzdHJbMF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0clswXS4iXCI8L2I+PGJyPiI7DQogICAgICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIiwgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuIjsNCiAgICAgIGlmICgkZnFiX2xvZ2ZwKSB7ZnNlZWsoJGZxYl9sb2dmcCwwKTsgZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fQ0KICAgICAgJHN1Y2Nlc3MrKzsNCiAgICAgIG9iX2ZsdXNoKCk7DQogICAgIH0NCiAgICAgaWYgKCRpID4gJGZxYl9sZW5naHQpIHticmVhazt9DQogICAgICRpKys7DQogICAgfQ0KICAgIGlmICgkc3VjY2VzcyA9PSAwKSB7ZWNobyAiTm8gc3VjY2Vzcy4gY29ubmVjdGlvbnMhIjsgJGZxYl9sb2cgLj0gIk5vIHN1Y2Nlc3MuIGNvbm5lY3Rpb25zIVxyXG4iO30NCiAgICAkZnRwcXVpY2tfdCA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRmdHBxdWlja19zdCw0KTsNCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxiPkRvbmUhPC9iPjxicj5Ub3RhbCB0aW1lIChzZWNzLik6ICIuJGZ0cHF1aWNrX3QuIjxicj5Ub3RhbCBjb25uZWN0aW9uczogIi4kaS4iPGJyPlN1Y2Nlc3MuOiA8Zm9udCBjb2xvcj1ncmVlbj48Yj4iLiRzdWNjZXNzLiI8L2I+PC9mb250Pjxicj5VbnN1Y2Nlc3MuOiIuKCRpLSRzdWNjZXNzKS4iPC9iPjxicj5Db25uZWN0cyBwZXIgc2Vjb25kOiAiLnJvdW5kKCRpLyRmdHBxdWlja190LDIpLiI8YnI+IjsNCiAgICAkZnFiX2xvZyAuPSAiXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5Eb25lIVxyXG5Ub3RhbCB0aW1lIChzZWNzLik6ICIuJGZ0cHF1aWNrX3QuIlxyXG5Ub3RhbCBjb25uZWN0aW9uczogIi4kaS4iXHJcblN1Y2Nlc3MuOiAiLiRzdWNjZXNzLiJcclxuVW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIlxyXG5Db25uZWN0cyBwZXIgc2Vjb25kOiAiLnJvdW5kKCRpLyRmdHBxdWlja190LDIpLiJcclxuIjsNCiAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30NCiAgICBpZiAoJGZxYl9sb2dlbWFpbCkge0BhcnJheSgkZnFiX2xvZ2VtYWlsLCJjOTlzaGVsbCB2LiAiLiRzaHZlci4iIHJlcG9ydCIsJGZxYl9sb2cpO30NCiAgICBmY2xvc2UoJGZxYl9sb2dmcCk7DQogICB9DQogIH0NCiAgZWxzZQ0KICB7DQogICAkbG9nZmlsZSA9ICR0bXBkaXJfbG9ncy4iZnRwcXVpY2ticnV0ZV8iLmRhdGUoImQubS5ZX0hfaV9zIikuIi5sb2ciOw0KICAgJGxvZ2ZpbGUgPSBzdHJfcmVwbGFjZSgiLy8iLERJUkVDVE9SWV9TRVBBUkFUT1IsJGxvZ2ZpbGUpOw0KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPVwiZnRwcXVpY2ticnV0ZVwiPjxicj5SZWFkIGZpcnN0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9XCJmcWJfbGVuZ2h0XCIgdmFsdWU9XCIiLiRuaXhwd2RwZXJwYWdlLiJcIj48YnI+PGJyPlVzZXJzIG9ubHkgd2l0aCBzaGVsbD8mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImZxYl9vbmx5d2l0aHNoXCIgdmFsdWU9XCIxXCI+PGJyPjxicj5Mb2dnaW5nPyZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZnFiX2xvZ2dpbmdcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxicj48YnI+TG9nZ2luZyB0byBmaWxlPyZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwiIHZhbHVlPVwiIi4kbG9nZmlsZS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3RybGVuKCRsb2dmaWxlKS8xMCkpLiJcIj48YnI+TG9nZ2luZyB0byBlLW1haWw/Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sb2dlbWFpbFwiIHZhbHVlPVwiIi4kbG9nX2VtYWlsLiJcIiBzaXplPVwiIi4oc3RybGVuKCRsb2dlbWFpbCkrMiooc3RybGVuKCRsb2dlbWFpbCkvMTApKS4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJCcnV0ZVwiPjwvZm9ybT4iOw0KICB9DQogfQ0KfQ0KaWYgKCRhY3QgPT0gImQiKQ0Kew0KIGlmICghaXNfZGlyKCRkKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCE8L2I+PC9jZW50ZXI+Ijt9DQogZWxzZQ0KIHsNCiAgZWNobyAiPGI+RGlyZWN0b3J5IGluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPiI7DQogIGlmICghJHdpbikNCiAgew0KICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZCkpOw0KICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkKSk7DQogICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQpKTsNCiAgfQ0KICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Y2htb2QmZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj48L2E+PHRyPjx0ZD48Yj5DcmVhdGUgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWN0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPkFjY2VzcyB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlYXRpbWUoJGQpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+TU9ESUZZIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVtdGltZSgkZCkpLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiB9DQp9DQppZiAoJGFjdCA9PSAicGhwaW5mbyIpIHtAb2JfY2xlYW4oKTsgcGhwaW5mbygpOyBjOTlzaGV4aXQoKTt9DQppZiAoJGFjdCA9PSAic2VjdXJpdHkiKQ0Kew0KIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIEluZm9ybWF0aW9uOjwvYj48L2NlbnRlcj48Yj5PcGVuIGJhc2UgZGlyOiAiLiRob3BlbmJhc2VkaXIuIjwvYj48YnI+IjsNCiBpZiAoISR3aW4pDQogew0KICBpZiAoJG5peHBhc3N3ZCkNCiAgew0KICAgaWYgKCRuaXhwYXNzd2QgPT0gMSkgeyRuaXhwYXNzd2QgPSAwO30NCiAgIGVjaG8gIjxiPipuaXggL2V0Yy9wYXNzd2Q6PC9iPjxicj4iOw0KICAgaWYgKCFpc19udW1lcmljKCRuaXhwd2RfcykpIHskbml4cHdkX3MgPSAwO30NCiAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX2UpKSB7JG5peHB3ZF9lID0gJG5peHB3ZHBlcnBhZ2U7fQ0KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPVwic2VjdXJpdHlcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cIm5peHBhc3N3ZFwiIHZhbHVlPVwiMVwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dD1cIiBuYW1lPVwibml4cHdkX3NcIiB2YWx1ZT1cIiIuJG5peHB3ZF9zLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5peHB3ZF9lXCIgdmFsdWU9XCIiLiRuaXhwd2RfZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiVmlld1wiPjwvZm9ybT48YnI+IjsNCiAgICRpID0gJG5peHB3ZF9zOw0KICAgd2hpbGUgKCRpIDwgJG5peHB3ZF9lKQ0KICAgew0KICAgICR1aWQgPSBwb3NpeF9nZXRwd3VpZCgkaSk7DQogICAgaWYgKCR1aWQpDQogICAgew0KICAgICAkdWlkWyJkaXIiXSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWxzJmQ9Ii51cmxlbmNvZGUoJHVpZFsiZGlyIl0pLiJcIj4iLiR1aWRbImRpciJdLiI8L2E+IjsNCiAgICAgZWNobyBqb2luKCI6IiwkdWlkKS4iPGJyPiI7DQogICAgfQ0KICAgICRpKys7DQogICB9DQogIH0NCiAgZWxzZSB7ZWNobyAiPGJyPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9c2VjdXJpdHkmbml4cGFzc3dkPTEmZD0iLiR1ZC4iXCI+PGI+PHU+R2V0IC9ldGMvcGFzc3dkPC91PjwvYj48L2E+PGJyPiI7fQ0KIH0NCiBlbHNlDQogew0KICAkdiA9ICRfU0VSVkVSWyJXSU5ESVIiXS4iXHJlcGFpclxzYW0iOw0KICBpZiAoZmlsZV9nZXRfY29udGVudHMoJHYpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9cmVkPllvdSBjYW4ndCBjcmFjayB3aW5udCBwYXNzd29yZHMoIi4kdi4iKSA8L2ZvbnQ+PC9iPjxicj4iO30NCiAgZWxzZSB7ZWNobyAiPC9icj48Yj48Zm9udCBjb2xvcj1ncmVlbj5Zb3UgY2FuIGNyYWNrIHdpbm50IHBhc3N3b3Jkcy4gPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9c2FtJmQ9Ii4kX1NFUlZFUlsiV0lORElSIl0uIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+PGI+RG93bmxvYWQ8L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyDCqS48L2ZvbnQ+PC9iPjxicj4iO30NCiB9DQogaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL3VzZXJkb21haW5zIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj11c2VyZG9tYWlucyZkPSIudXJsZW5jb2RlKCIvZXRjIikuIiZmdD10eHRcIj48dT48Yj5WaWV3IGNwYW5lbCB1c2VyLWRvbWFpbnMgbG9nczwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL3Zhci9jcGFuZWwvYWNjb3VudGluZy5sb2ciKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPWFjY291bnRpbmcubG9nJmQ9Ii51cmxlbmNvZGUoIi92YXIvY3BhbmVsLyIpLiJcIiZmdD10eHQ+PHU+PGI+VmlldyBjcGFuZWwgbG9nczwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL3Vzci9sb2NhbC9hcGFjaGUvY29uZi9odHRwZC5jb25mIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1odHRwZC5jb25mJmQ9Ii51cmxlbmNvZGUoIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYiKS4iJmZ0PXR4dFwiPjx1PjxiPkFwYWNoZSBjb25maWd1cmF0aW9uIChodHRwZC5jb25mKTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9odHRwZC5jb25mIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1odHRwZC5jb25mJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPkFwYWNoZSBjb25maWd1cmF0aW9uIChodHRwZC5jb25mKTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9zeXNsb2cuY29uZiIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9c3lzbG9nLmNvbmYmZD0iLnVybGVuY29kZSgiL2V0YyIpLiImZnQ9dHh0XCI+PHU+PGI+U3lzbG9nIGNvbmZpZ3VyYXRpb24gKHN5c2xvZy5jb25mKTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9tb3RkIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1tb3RkJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPk1lc3NhZ2UgT2YgVGhlIERheTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9ob3N0cyIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9aG9zdHMmZD0iLnVybGVuY29kZSgiL2V0YyIpLiImZnQ9dHh0XCI+PHU+PGI+SG9zdHM8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBmdW5jdGlvbiBkaXNwbGF5c2VjaW5mbygkbmFtZSwkdmFsdWUpIHtpZiAoIWVtcHR5KCR2YWx1ZSkpIHtpZiAoIWVtcHR5KCRuYW1lKSkgeyRuYW1lID0gIjxiPiIuJG5hbWUuIiAtIDwvYj4iO30gZWNobyAkbmFtZS5ubDJicigkdmFsdWUpLiI8YnI+Ijt9fQ0KIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uPyIsbXlzaGVsbGV4ZWMoImNhdCAvcHJvYy92ZXJzaW9uIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJLZXJuZWwgdmVyc2lvbj8iLG15c2hlbGxleGVjKCJzeXNjdGwgLWEgfCBncmVwIHZlcnNpb24iKSk7DQogZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgbmFtZSIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjL2lzc3VlLm5ldCIpKTsNCiBkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBuYW1lICgyKSIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjLyotcmVhbGlzZSIpKTsNCiBkaXNwbGF5c2VjaW5mbygiQ1BVPyIsbXlzaGVsbGV4ZWMoImNhdCAvcHJvYy9jcHVpbmZvIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJSQU0iLG15c2hlbGxleGVjKCJmcmVlIC1tIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJIREQgc3BhY2UiLG15c2hlbGxleGVjKCJkZiAtaCIpKTsNCiBkaXNwbGF5c2VjaW5mbygiTGlzdCBvZiBBdHRyaWJ1dGVzIixteXNoZWxsZXhlYygibHNhdHRyIC1hIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJNb3VudCBvcHRpb25zICIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjL2ZzdGFiIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBjVVJMIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBjdXJsIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBseW54IGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBseW54IikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBsaW5rcyBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbGlua3MiKSk7DQogZGlzcGxheXNlY2luZm8oIklzIGZldGNoIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBmZXRjaCIpKTsNCiBkaXNwbGF5c2VjaW5mbygiSXMgR0VUIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBHRVQiKSk7DQogZGlzcGxheXNlY2luZm8oIklzIHBlcmwgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIHBlcmwiKSk7DQogZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIGFwYWNoZSIsbXlzaGVsbGV4ZWMoIndoZXJlaXMgYXBhY2hlIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBwZXJsPyIsbXlzaGVsbGV4ZWMoIndoZXJlaXMgcGVybCIpKTsNCiBkaXNwbGF5c2VjaW5mbygibG9jYXRlIHByb2Z0cGQuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBwcm9mdHBkLmNvbmYiKSk7DQogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBodHRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIGh0dHBkLmNvbmYiKSk7DQogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBteS5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIG15LmNvbmYiKSk7DQogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBwc3libmMuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBwc3libmMuY29uZiIpKTsNCn0NCmlmICgkYWN0ID09ICJta2ZpbGUiKQ0Kew0KIGlmICgkbWtmaWxlICE9ICRkKQ0KIHsNCiAgaWYgKGZpbGVfZXhpc3RzKCRta2ZpbGUpKSB7ZWNobyAiPGI+TWFrZSBGaWxlIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpLiJcIjwvYj46IG9iamVjdCBhbHJlZHkgZXhpc3RzIjt9DQogIGVsc2VpZiAoIWZvcGVuKCRta2ZpbGUsInciKSkge2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+OiBhY2Nlc3MgZGVuaWVkIjt9DQogIGVsc2UgeyRhY3QgPSAiZiI7ICRkID0gZGlybmFtZSgkbWtmaWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30NCiB9DQogZWxzZSB7JGFjdCA9ICRkc3BhY3QgPSAibHMiO30NCn0NCmlmICgkYWN0ID09ICJlbmNvZGVyIikNCnsNCiBlY2hvICI8c2NyaXB0PmZ1bmN0aW9uIHNldF9lbmNvZGVyX2lucHV0KHRleHQpIHtkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmlucHV0LnZhbHVlID0gdGV4dDt9PC9zY3JpcHQ+PGI+RW5jb2Rlcjo8L2I+PC9icj48L2JyPjxmb3JtIG5hbWU9XCJlbmNvZGVyXCIgYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWVuY29kZXI+PGI+SW5wdXQ6PC9iPjxicj48dGV4dGFyZWEgbmFtZT1cImVuY29kZXJfaW5wdXRcIiBpZD1cImlucHV0XCIgY29scz01MCByb3dzPTU+Ii5AaHRtbHNwZWNpYWxjaGFycygkZW5jb2Rlcl9pbnB1dCkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJjYWxjdWxhdGVcIj48YnI+PGJyPjxiPkhhc2hlczwvYj46PC9icj48L2JyPiI7DQogZm9yZWFjaChhcnJheSgibWQ1IiwiY3J5cHQiLCJzaGExIiwiY3JjMzIiKSBhcyAkdikNCiB7DQogIGVjaG8gJHYuIiAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLiR2KCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+PGJyPiI7DQogfQ0KIGVjaG8gIjwvYnI+PGI+VXJsOjwvYj48YnI+dXJsZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIudXJsZW5jb2RlKCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+DQogPGJyPnVybGRlY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnModXJsZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkuIlwiIHJlYWRvbmx5Pg0KIDwvYnI+PC9icj48Yj5CYXNlNjQ6PC9iPjwvYnI+IGJhc2U2NF9lbmNvZGUgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi5iYXNlNjRfZW5jb2RlKCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+IjsNCiBlY2hvICI8L2JyPmJhc2U2NF9kZWNvZGUgLSAiOw0KIGlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpKSAhPSAkZW5jb2Rlcl9pbnB1dCkge2VjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSB2YWx1ZT1cImZhaWxlZFwiIGRpc2FibGVkIHJlYWRvbmx5PiI7fQ0KIGVsc2UNCiB7DQogICRkZWJhc2U2NCA9IGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpOw0KICAkZGViYXNlNjQgPSBzdHJfcmVwbGFjZSgiXDAiLCJbMF0iLCRkZWJhc2U2NCk7DQogICRhID0gZXhwbG9kZSgiXHJcbiIsJGRlYmFzZTY0KTsNCiAgJHJvd3MgPSBjb3VudCgkYSk7DQogICRkZWJhc2U2NCA9IGh0bWxzcGVjaWFsY2hhcnMoJGRlYmFzZTY0KTsNCiAgaWYgKCRyb3dzID09IDEpIHtlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kZGViYXNlNjQuIlwiIGlkPVwiZGViYXNlNjRcIiByZWFkb25seT4iO30NCiAgZWxzZSB7JHJvd3MrKzsgZWNobyAiPHRleHRhcmVhIGNvbHM9XCI0MFwiIHJvd3M9XCIiLiRyb3dzLiJcIiBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiIuJGRlYmFzZTY0LiI8L3RleHRhcmVhPiI7fQ0KICBlY2hvICImbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzZXRfZW5jb2Rlcl9pbnB1dChkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmRlYmFzZTY0LnZhbHVlKVwiPjxiPjwvYj48L2E+IjsNCiB9DQogZWNobyAiPC9icj48L2JyPjxiPkJhc2UgY29udmVydGF0aW9uczwvYj46PC9icj48L2JyPmRlYzJoZXggLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIjsNCiAkYyA9IHN0cmxlbigkZW5jb2Rlcl9pbnB1dCk7DQogZm9yKCRpPTA7JGk8JGM7JGkrKykNCiB7DQogICRoZXggPSBkZWNoZXgob3JkKCRlbmNvZGVyX2lucHV0WyRpXSkpOw0KICBpZiAoJGVuY29kZXJfaW5wdXRbJGldID09ICImIikge2VjaG8gJGVuY29kZXJfaW5wdXRbJGldO30NCiAgZWxzZWlmICgkZW5jb2Rlcl9pbnB1dFskaV0gIT0gIlxcIikge2VjaG8gIiUiLiRoZXg7fQ0KIH0NCiBlY2hvICJcIiByZWFkb25seT48YnI+PC9mb3JtPiI7DQp9DQppZiAoJGFjdCA9PSAiYmFja2MiKQ0Kew0KICRpcCA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOw0KICRtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZyddOw0KICRlbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2dlJ107DQogZWNobygiPGI+QmFjay1Db25uZWN0aW9uOjwvYj48L2JyPjwvYnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPkhvc3Q6PGlucHV0IHR5cGU9dGV4dCBuYW1lPWJhY2tjb25uZWN0aXAgc2l6ZT0xNSB2YWx1ZT0kaXA+IFBvcnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1iYWNrY29ubmVjdHBvcnQgc2l6ZT0xNSB2YWx1ZT01OTkyPiBVc2U6IDxzZWxlY3Qgc2l6ZT0xIG5hbWU9dXNlPjxvcHRpb24gdmFsdWU9UGVybD5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1DPkM8L29wdGlvbj48L3NlbGVjdD4gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPUNvbm5lY3Q+PC9mb3JtPkNsaWNrICdDb25uZWN0JyBvbmx5IGFmdGVyIHlvdSBvcGVuIHBvcnQgZm9yIGl0IGZpcnN0LiBPbmNlIG9wZW4sIHVzZSBOZXRDYXQsIGFuZCBydW4gJzxiPm5jIC1sIC1uIC12IC1wIDU5OTI8L2I+Jzxicj48YnI+Iik7DQogZWNobygiJG1zZyIpOw0KIGVjaG8oIiRlbXNnIik7DQp9DQoNCmlmICgkYWN0ID09ICJzaGJkIil7DQokbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2cnXTsNCiRlbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2dlJ107DQplY2hvKCI8Yj5CaW5kIFNoZWxsIEJhY2tkb29yOjwvYj48L2JyPjwvYnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPg0KQmluZCBQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nYmFja2Nvbm5lY3Rwb3J0JyB2YWx1ZT0nNTk5Mic+DQo8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd1c2UnIHZhbHVlPSdzaGJkJz4NCjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdJbnN0YWxsIEJhY2tkb29yJz48L2Zvcm0+Iik7DQplY2hvKCIkbXNnIik7DQplY2hvKCIkZW1zZyIpOw0KfQ0KDQoNCmlmICgkYWN0ID09ICJwcm94eSIpIHsNCiBjZigiL3RtcC9oYW50dS50Z3oiLCRwcm94eV9zaGl0KTsNCiBleCgiY2QgL3RtcDt0YXIgLXp4dmYgaGFudHUudGd6Iik7DQogZXgoImNkIC90bXA7Y2QgLnNldGFuO2NobW9kIDc3NyB4aCIpOw0KIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjtjaG1vZCA3NzcgaHR0cGQiKTsNCiBleCgiY2QgL3RtcDtjZCAuc2V0YW47Li94aCAtcyBba21vZF0gLi9odHRwZCBzdGFydCIpOw0KIGNoZWNrcHJveHlob3N0KCk7DQogJG1zZyA9ICRfUE9TVFsncHJveHlob3N0bXNnJ107DQogZWNobygiJG1zZyIpOw0KIHVubGluaygiL3RtcC9oYW50dS50Z3oiKTsNCiBleCgiY2QgL3RtcDsgcm0gLXIgLnNldGFuIik7IA0KfQ0KDQppZiAoJGFjdCA9PSAic2VsZnJlbW92ZSIpDQp7DQogaWYgKCgkc3VibWl0ID09ICRybmRjb2RlKSBhbmQgKCRzdWJtaXQgIT0gIiIpKQ0KIHsNCiAgaWYgKHVubGluayhfX0ZJTEVfXykpIHtAb2JfY2xlYW4oKTsgZWNobyAiR29uZSEiOyBjOTlzaGV4aXQoKTsgfQ0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IGRlbGV0ZSAiLl9fRklMRV9fLiIhPC9iPjwvY2VudGVyPiI7fQ0KIH0NCiBlbHNlDQogew0KICBpZiAoIWVtcHR5KCRybmRjb2RlKSkge2VjaG8gIjxiPkVycm9yOiBpbmNvcnJlY3QgY29uZmltYXRpb24hPC9iPiI7fQ0KICAkcm5kID0gcmFuZCgwLDkpLnJhbmQoMCw5KS5yYW5kKDAsOSk7DQogIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1zZWxmcmVtb3ZlPjxiPlNlbGYtcmVtb3ZlOiAiLl9fRklMRV9fLiIgPC9icj48L2JyPkZvciBjb25maXJtYXRpb24sIGVudGVyIFwiIi4kcm5kLiJcIjwvYj46Jm5ic3A7PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cm5kY29kZSB2YWx1ZT1cIiIuJHJuZC4iXCI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1Ym1pdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJZRVNcIj48L2Zvcm0+IjsNCiB9DQp9DQppZiAoJGFjdCA9PSAic2VhcmNoIil7DQogZWNobyAiPGI+U2VhcmNoIGZpbGUtc3lzdGVtOjwvYj48L2JyPjwvYnI+IjsNCiBpZiAoZW1wdHkoJHNlYXJjaF9pbikpIHskc2VhcmNoX2luID0gJGQ7fQ0KIGlmIChlbXB0eSgkc2VhcmNoX25hbWUpKSB7JHNlYXJjaF9uYW1lID0gIiguKikiOyAkc2VhcmNoX25hbWVfcmVnZXhwID0gMTt9DQogaWYgKGVtcHR5KCRzZWFyY2hfdGV4dF93d28pKSB7JHNlYXJjaF90ZXh0X3JlZ2V4cCA9IDA7fQ0KIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogew0KICAkZm91bmQgPSBhcnJheSgpOw0KICAkZm91bmRfZCA9IDA7DQogICRmb3VuZF9mID0gMDsNCiAgJHNlYXJjaF9pX2YgPSAwOw0KICAkc2VhcmNoX2lfZCA9IDA7DQogICRhID0gYXJyYXkNCiAgKA0KICAgIm5hbWUiPT4kc2VhcmNoX25hbWUsICJuYW1lX3JlZ2V4cCI9PiRzZWFyY2hfbmFtZV9yZWdleHAsDQogICAidGV4dCI9PiRzZWFyY2hfdGV4dCwgInRleHRfcmVnZXhwIj0+JHNlYXJjaF90ZXh0X3JlZ3hwLA0KICAgInRleHRfd3dvIj0+JHNlYXJjaF90ZXh0X3d3bywNCiAgICJ0ZXh0X2NzIj0+JHNlYXJjaF90ZXh0X2NzLA0KICAgInRleHRfbm90Ij0+JHNlYXJjaF90ZXh0X25vdA0KICApOw0KICAkc2VhcmNodGltZSA9IGdldG1pY3JvdGltZSgpOw0KICAkaW4gPSBhcnJheV91bmlxdWUoZXhwbG9kZSgiOyIsJHNlYXJjaF9pbikpOw0KICBmb3JlYWNoKCRpbiBhcyAkdikge2M5OWZzZWFyY2goJHYpO30NCiAgJHNlYXJjaHRpbWUgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kc2VhcmNodGltZSw0KTsNCiAgaWYgKGNvdW50KCRmb3VuZCkgPT0gMCkge2VjaG8gIjxiPk5vIGZpbGVzIGZvdW5kITwvYj4iO30NCiAgZWxzZQ0KICB7DQogICAkbHNfYXJyID0gJGZvdW5kOw0KICAgJGRpc3BfZnVsbHBhdGggPSBUUlVFOw0KICAgJGFjdCA9ICJscyI7DQogIH0NCiB9DQogZWNobyAiPGZvcm0gbWV0aG9kPVBPU1Q+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIuJGRpc3BkLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9XCIiLiRkc3BhY3QuIlwiPg0KPGI+RmlsZS9mb2xkZXIgbmFtZTogPC9iPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzZWFyY2hfbmFtZVwiIHNpemU9XCIiLnJvdW5kKHN0cmxlbigkc2VhcmNoX25hbWUpKzI1KS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9uYW1lKS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfbmFtZV9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX25hbWVfcmVnZXhwID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSByZWdleHANCjxicj48Yj5EaXJlY3Rvcnk6Jm5ic3A7Jm5ic3A7IDwvYj48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic2VhcmNoX2luXCIgc2l6ZT1cIiIucm91bmQoc3RybGVuKCRzZWFyY2hfaW4pKzI1KS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9pbikuIlwiPg0KPGJyPjxiPlRleHQ6PC9iPiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXRleHQgbmFtZT1cInNlYXJjaF90ZXh0XCIgc2l6ZT00MiB2YWx1ZT0iLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF90ZXh0KS4iPg0KDQo8YnI+PGJyPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX3RleHRfcmVnZXhwXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X3JlZ2V4cCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IC0gcmVnZXhwDQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X3d3b1wiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF93d28gPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIDx1Pnc8L3U+aG9sZSB3b3JkcyBvbmx5DQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X2NzID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSBjYXM8dT5lPC91PiBzZW5zaXRpdmUNCiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX3RleHRfbm90XCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X25vdCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IC0gZmluZCBmaWxlcyA8dT5OT1Q8L3U+IGNvbnRhaW5pbmcgdGhlIHRleHQNCjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2VhcmNoXCI+PC9mb3JtPiI7DQogaWYgKCRhY3QgPT0gImxzIikgeyRkc3BhY3QgPSAkYWN0OyBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxiPlNlYXJjaCB0b29rICIuJHNlYXJjaHRpbWUuIiBzZWNzICgiLiRzZWFyY2hfaV9mLiIgZmlsZXMgYW5kICIuJHNlYXJjaF9pX2QuIiBmb2xkZXJzLCAiLnJvdW5kKCgkc2VhcmNoX2lfZiskc2VhcmNoX2lfZCkvJHNlYXJjaHRpbWUsNCkuIiBvYmplY3RzIHBlciBzZWNvbmQpLjwvYj48YnI+PGJyPiI7fQ0KfQ0KaWYgKCRhY3QgPT0gImNobW9kIikNCnsNCiAkbW9kZSA9IGZpbGVwZXJtcygkZC4kZik7DQogaWYgKCEkbW9kZSkge2VjaG8gIjxiPkNoYW5nZSBmaWxlLW1vZGUgd2l0aCBlcnJvcjo8L2I+IGNhbid0IGdldCBjdXJyZW50IHZhbHVlLiI7fQ0KIGVsc2UNCiB7DQogICRmb3JtID0gVFJVRTsNCiAgaWYgKCRjaG1vZF9zdWJtaXQpDQogIHsNCiAgICRvY3RldCA9ICIwIi5iYXNlX2NvbnZlcnQoKCRjaG1vZF9vWyJyIl0/MTowKS4oJGNobW9kX29bInciXT8xOjApLigkY2htb2Rfb1sieCJdPzE6MCkuKCRjaG1vZF9nWyJyIl0/MTowKS4oJGNobW9kX2dbInciXT8xOjApLigkY2htb2RfZ1sieCJdPzE6MCkuKCRjaG1vZF93WyJyIl0/MTowKS4oJGNobW9kX3dbInciXT8xOjApLigkY2htb2Rfd1sieCJdPzE6MCksMiw4KTsNCiAgIGlmIChjaG1vZCgkZC4kZiwkb2N0ZXQpKSB7JGFjdCA9ICJscyI7ICRmb3JtID0gRkFMU0U7ICRlcnIgPSAiIjt9DQogICBlbHNlIHskZXJyID0gIkNhbid0IGNobW9kIHRvICIuJG9jdGV0LiIuIjt9DQogIH0NCiAgaWYgKCRmb3JtKQ0KICB7DQogICAkcGVybXMgPSBwYXJzZV9wZXJtcygkbW9kZSk7DQogICBlY2hvICI8Yj5DaGFuZ2luZyBmaWxlLW1vZGUgKCIuJGQuJGYuIiksICIudmlld19wZXJtc19jb2xvcigkZC4kZikuIiAoIi5zdWJzdHIoZGVjb2N0KGZpbGVwZXJtcygkZC4kZikpLC00LDQpLiIpPC9iPjxicj4iLigkZXJyPyI8Yj5FcnJvcjo8L2I+ICIuJGVycjoiIikuIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRmKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiLigkcGVybXNbImciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbeF0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsNCiAgfQ0KIH0NCn0NCmlmICgkYWN0ID09ICJ1cGxvYWQiKQ0Kew0KICR1cGxvYWRtZXNzID0gIiI7DQogJHVwbG9hZHBhdGggPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHVwbG9hZHBhdGgpOw0KIGlmIChlbXB0eSgkdXBsb2FkcGF0aCkpIHskdXBsb2FkcGF0aCA9ICRkO30NCiBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gIi8iKSB7JHVwbG9hZHBhdGggLj0gIi8iO30NCiBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KIHsNCiAgZ2xvYmFsICRIVFRQX1BPU1RfRklMRVM7DQogICR1cGxvYWRmaWxlID0gJEhUVFBfUE9TVF9GSUxFU1sidXBsb2FkZmlsZSJdOw0KICBpZiAoIWVtcHR5KCR1cGxvYWRmaWxlWyJ0bXBfbmFtZSJdKSkNCiAgew0KICAgaWYgKGVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVbIm5hbWUiXTt9DQogICBlbHNlIHskZGVzdGluID0gJHVzZXJmaWxlbmFtZTt9DQogICBpZiAoIW1vdmVfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSwkdXBsb2FkcGF0aC4kZGVzdGluKSkgeyR1cGxvYWRtZXNzIC49ICJFcnJvciB1cGxvYWRpbmcgZmlsZSAiLiR1cGxvYWRmaWxlWyJuYW1lIl0uIi4gQ2FuJ3QgY29weSBcIiIuJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0uIlwiIHRvIFwiIi4kdXBsb2FkcGF0aC4kZGVzdGluLiJcIi48L2JyPjwvYnI+Ijt9DQogIH0NCiAgZWxzZWlmICghZW1wdHkoJHVwbG9hZHVybCkpDQogIHsNCiAgIGlmICghZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkgeyRkZXN0aW4gPSAkdXBsb2FkZmlsZW5hbWU7fQ0KICAgZWxzZQ0KICAgew0KICAgICRkZXN0aW4gPSBleHBsb2RlKCIvIiwkZGVzdGluKTsNCiAgICAkZGVzdGluID0gJGRlc3Rpbltjb3VudCgkZGVzdGluKS0xXTsNCiAgICBpZiAoZW1wdHkoJGRlc3RpbikpDQogICAgew0KICAgICAkaSA9IDA7DQogICAgICRiID0gIiI7DQogICAgIHdoaWxlKGZpbGVfZXhpc3RzKCR1cGxvYWRwYXRoLiRkZXN0aW4pKSB7aWYgKCRpID4gMCkgeyRiID0gIl8iLiRpO30gJGRlc3RpbiA9ICJpbmRleCIuJGIuIi5odG1sIjsgJGkrKzt9fQ0KICAgfQ0KICAgaWYgKCghZXJlZ2koImh0dHA6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiaHR0cHM6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiZnRwOi8vIiwkdXBsb2FkdXJsKSkpIHtlY2hvICI8Yj5JbmNvcmVjdCB1cmwhPC9iPjxicj4iO30NCiAgIGVsc2UNCiAgIHsNCiAgICAkc3QgPSBnZXRtaWNyb3RpbWUoKTsNCiAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXBsb2FkdXJsKTsNCiAgICAkZHQgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kc3QsNCk7DQogICAgaWYgKCEkY29udGVudCkgeyR1cGxvYWRtZXNzIC49ICAiQ2FuJ3QgZG93bmxvYWQgZmlsZSE8YnI+Ijt9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgaWYgKCRmaWxlc3RlYWx0aCkgeyRzdGF0ID0gc3RhdCgkdXBsb2FkcGF0aC4kZGVzdGluKTt9DQogICAgICRmcCA9IGZvcGVuKCR1cGxvYWRwYXRoLiRkZXN0aW4sInciKTsNCiAgICAgaWYgKCEkZnApIHskdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3JpdGluZyB0byBmaWxlICIuaHRtbHNwZWNpYWxjaGFycygkZGVzdGluKS4iITxicj4iO30NCiAgICAgZWxzZQ0KICAgICB7DQogICAgICBmd3JpdGUoJGZwLCRjb250ZW50LHN0cmxlbigkY29udGVudCkpOw0KICAgICAgZmNsb3NlKCRmcCk7DQogICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7dG91Y2goJHVwbG9hZHBhdGguJGRlc3Rpbiwkc3RhdFs5XSwkc3RhdFs4XSk7fQ0KICAgICB9DQogICAgfQ0KICAgfQ0KICB9DQogfQ0KIGlmICgkbWluaWZvcm0pDQogew0KICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNzLiI8L2I+IjsNCiAgJGFjdCA9ICJscyI7DQogfQ0KIGVsc2UNCiB7DQogIGVjaG8gIjxiPkZpbGUgdXBsb2FkOjwvYj48YnI+PGI+Ii4kdXBsb2FkbWVzcy4iPC9iPjxmb3JtIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgYWN0aW9uPVwiIi4kc3VybC4iYWN0PXVwbG9hZCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVBPU1Q+DQpTZWxlY3QgZmlsZSBvbiB5b3VyIGxvY2FsIGNvbXB1dGVyOiA8aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtvcjxicj4NCklucHV0IFVSTDogPGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR1cGxvYWR1cmwpLiJcIiBzaXplPVwiNzBcIj48YnI+PGJyPg0KU2F2ZSB0aGlzIGZpbGUgZGlyOiA8aW5wdXQgbmFtZT1cInVwbG9hZHBhdGhcIiBzaXplPVwiNzBcIiB2YWx1ZT1cIiIuJGRpc3BkLiJcIj48YnI+PGJyPg0KRmlsZS1uYW1lIChhdXRvLWZpbGwpOiA8aW5wdXQgbmFtZT11cGxvYWRmaWxlbmFtZSBzaXplPTI1Pjxicj48YnI+DQo8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVwbG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiZuYnNwO2NvbnZlcnQgZmlsZSBuYW1lIHRvIGxvdmVyY2FzZTxicj48YnI+DQo8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJVcGxvYWRcIj4NCjwvZm9ybT4iOw0KIH0NCn0NCmlmICgkYWN0ID09ICJkZWxldGUiKQ0Kew0KICRkZWxlcnIgPSAiIjsNCiBmb3JlYWNoICgkYWN0Ym94IGFzICR2KQ0KIHsNCiAgJHJlc3VsdCA9IEZBTFNFOw0KICAkcmVzdWx0ID0gZnNfcm1vYmooJHYpOw0KICBpZiAoISRyZXN1bHQpIHskZGVsZXJyIC49ICJDYW4ndCBkZWxldGUgIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iPGJyPiI7fQ0KIH0NCiBpZiAoIWVtcHR5KCRkZWxlcnIpKSB7ZWNobyAiPGI+RGVsZXRpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRkZWxlcnI7fQ0KICRhY3QgPSAibHMiOw0KfQ0KaWYgKCEkdXNlZnNidWZmKQ0Kew0KIGlmICgoJGFjdCA9PSAicGFzdGUiKSBvciAoJGFjdCA9PSAiY29weSIpIG9yICgkYWN0ID09ICJjdXQiKSBvciAoJGFjdCA9PSAidW5zZWxlY3QiKSkge2VjaG8gIjxjZW50ZXI+PGI+U29ycnksIGJ1ZmZlciBpcyBkaXNhYmxlZC4gRm9yIGVuYWJsZSwgc2V0IGRpcmVjdGl2ZSBcIlwkdXNlRlNidWZmXCIgYXMgVFJVRS48L2NlbnRlcj4iO30NCn0NCmVsc2UNCnsNCiBpZiAoJGFjdCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkYWN0ID0gImxzIjsgfQ0KIGVsc2VpZiAoJGFjdCA9PSAiY3V0IikgeyRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY3V0Il0sJGFjdGJveCk7IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsgJGFjdCA9ICJscyI7fQ0KIGVsc2VpZiAoJGFjdCA9PSAidW5zZWxlY3QiKSB7Zm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO319IGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX0gYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkYWN0ID0gImxzIjt9DQogaWYgKCRhY3RlbXB0eWJ1ZmYpIHskc2Vzc19kYXRhWyJjb3B5Il0gPSAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5KCk7IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTt9DQogZWxzZWlmICgkYWN0cGFzdGVidWZmKQ0KIHsNCiAgJHBzdGVyciA9ICIiOw0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpDQogIHsNCiAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsNCiAgIGlmICghZnNfY29weV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICB9DQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX21vdmVfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogIH0NCiAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICBpZiAoIWVtcHR5KCRwc3RlcnIpKSB7ZWNobyAiPGI+UGFzdGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJHBzdGVycjt9DQogICRhY3QgPSAibHMiOw0KIH0NCiBlbHNlaWYgKCRhY3RhcmNidWZmKQ0KIHsNCiAgJGFyY2VyciA9ICIiOw0KICBpZiAoc3Vic3RyKCRhY3RhcmNidWZmX3BhdGgsLTcsNykgPT0gIi50YXIuZ3oiKSB7JGV4dCA9ICIudGFyLmd6Ijt9DQogIGVsc2UgeyRleHQgPSAiLnRhci5neiI7fQ0KICBpZiAoJGV4dCA9PSAiLnRhci5neiIpIHskY21kbGluZSA9ICJ0YXIgY2Z6diI7fQ0KICAkY21kbGluZSAuPSAiICIuJGFjdGFyY2J1ZmZfcGF0aDsNCiAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sJHNlc3NfZGF0YVsiY3V0Il0pOw0KICBmb3JlYWNoKCRvYmplY3RzIGFzICR2KQ0KICB7DQogICAkdiA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7DQogICBpZiAoc3Vic3RyKCR2LDAsc3RybGVuKCRkKSkgPT0gJGQpIHskdiA9IGJhc2VuYW1lKCR2KTt9DQogICBpZiAoaXNfZGlyKCR2KSkNCiAgIHsNCiAgICBpZiAoc3Vic3RyKCR2LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHYgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgJHYgLj0gIioiOw0KICAgfQ0KICAgJGNtZGxpbmUgLj0gIiAiLiR2Ow0KICB9DQogICR0bXAgPSByZWFscGF0aCgiLiIpOw0KICBjaGRpcigkZCk7DQogICRyZXQgPSBteXNoZWxsZXhlYygkY21kbGluZSk7DQogIGNoZGlyKCR0bXApOw0KICBpZiAoZW1wdHkoJHJldCkpIHskYXJjZXJyIC49ICJDYW4ndCBjYWxsIGFyY2hpdmF0b3IgKCIuaHRtbHNwZWNpYWxjaGFycyhzdHIybWluaSgkY21kbGluZSw2MCkpLiIpITxicj4iO30NCiAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRyZXQpOw0KICAkcmV0ID0gZXhwbG9kZSgiXG4iLCRyZXQpOw0KICBpZiAoJGNvcHlfdW5zZXQpIHtmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fQ0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikNCiAgew0KICAgaWYgKGluX2FycmF5KCR2LCRyZXQpKSB7ZnNfcm1vYmooJHYpO30NCiAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogIH0NCiAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICBpZiAoIWVtcHR5KCRhcmNlcnIpKSB7ZWNobyAiPGI+QXJjaGl2YXRpb24gZXJyb3JzOjwvYj48YnI+Ii4kYXJjZXJyO30NCiAgJGFjdCA9ICJscyI7DQogfQ0KIGVsc2VpZiAoJGFjdHBhc3RlYnVmZikNCiB7DQogICRwc3RlcnIgPSAiIjsNCiAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICB9DQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX21vdmVfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsNCiAgfQ0KICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30NCiAgJGFjdCA9ICJscyI7DQogfQ0KfQ0KaWYgKCRhY3QgPT0gImNtZCIpDQp7DQppZiAodHJpbSgkY21kKSA9PSAicHMgYXV4IikgeyRhY3QgPSAicHJvY2Vzc2VzIjt9DQplbHNlaWYgKHRyaW0oJGNtZCkgPT0gInRhc2tsaXN0IikgeyRhY3QgPSAicHJvY2Vzc2VzIjt9DQplbHNlDQp7DQogQGNoZGlyKCRjaGRpcik7DQogaWYgKCFlbXB0eSgkc3VibWl0KSkNCiB7DQogICRleGVjY21kID0gJF9SRVFVRVNUWydjbWQnXTsNCiAgZWNobyAiUmVzdWx0IE9mIExvY2FsbHkgRXhlY3V0ZWQgQ29tbWFuZDogPGI+JGV4ZWNjbWQ8L2I+PC9icj4iOw0KICAkb2xkZGlyID0gcmVhbHBhdGgoIi4iKTsNCiAgQGNoZGlyKCRkKTsNCiAgJHJldCA9IG15c2hlbGxleGVjKCRjbWQpOw0KICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7DQogIGlmICgkY21kX3R4dCkNCiAgew0KICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9DQogICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiIi4kcm93cy4iXCIgcmVhZG9ubHk+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3RleHRhcmVhPiI7DQogIH0NCiAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9DQogIEBjaGRpcigkb2xkZGlyKTsNCiB9DQogZWxzZSB7ZWNobyAiPGI+RXhlY3V0aW9uIGNvbW1hbmQ8L2I+IjsgaWYgKGVtcHR5KCRjbWRfdHh0KSkgeyRjbWRfdHh0ID0gVFJVRTt9fQ0KIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jbWQ+PHRleHRhcmVhIG5hbWU9Y21kIGNvbHM9MTIyIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRjbWQpLiI8L3RleHRhcmVhPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPiZuYnNwO0Rpc3BsYXkgaW4gdGV4dC1hcmVhJm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJjbWRfdHh0XCIgdmFsdWU9XCIxXCIiOyBpZiAoJGNtZF90eHQpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PC9mb3JtPiI7DQp9DQp9DQppZiAoJGFjdCA9PSAibHMiKQ0Kew0KIGlmIChjb3VudCgkbHNfYXJyKSA+IDApIHskbGlzdCA9ICRsc19hcnI7fQ0KIGVsc2UNCiB7DQogICRsaXN0ID0gYXJyYXkoKTsNCiAgaWYgKCRoID0gQG9wZW5kaXIoJGQpKQ0KICB7DQogICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgeyRsaXN0W10gPSAkZC4kbzt9DQogICBjbG9zZWRpcigkaCk7DQogIH0NCiAgZWxzZSB7fQ0KIH0NCiBpZiAoY291bnQoJGxpc3QpID09IDApIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IG9wZW4gZm9sZGVyICIuaHRtbHNwZWNpYWxjaGFycygkZCkuIjwvYj48L2NlbnRlcj4iO30NCiBlbHNlDQogew0KICAvL0J1aWxkaW5nIGFycmF5DQogICRvYmplY3RzID0gYXJyYXkoKTsNCiAgJHZkID0gImYiOyAvL1ZpZXdpbmcgbW9kZQ0KICBpZiAoJHZkID09ICJmIikNCiAgew0KICAgJG9iamVjdHNbImhlYWQiXSA9IGFycmF5KCk7DQogICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXkoKTsNCiAgICRvYmplY3RzWyJsaW5rcyJdID0gYXJyYXkoKTsNCiAgICRvYmplY3RzWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgIGZvcmVhY2ggKCRsaXN0IGFzICR2KQ0KICAgew0KICAgICRvID0gYmFzZW5hbWUoJHYpOw0KICAgICRyb3cgPSBhcnJheSgpOw0KICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkxJTksiO30NCiAgICBlbHNlaWYgKCRvID09ICIuLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkxJTksiO30NCiAgICBlbHNlaWYgKGlzX2RpcigkdikpDQogICAgew0KICAgICBpZiAoaXNfbGluaygkdikpIHskdHlwZSA9ICJMSU5LIjt9DQogICAgIGVsc2UgeyR0eXBlID0gIkRJUiI7fQ0KICAgICAkcm93W10gPSAkdjsNCiAgICAgJHJvd1tdID0gJHR5cGU7DQogICAgfQ0KICAgIGVsc2VpZihpc19maWxlKCR2KSkgeyRyb3dbXSA9ICR2OyAkcm93W10gPSBmaWxlc2l6ZSgkdik7fQ0KICAgICRyb3dbXSA9IGZpbGVtdGltZSgkdik7DQogICAgaWYgKCEkd2luKQ0KICAgIHsNCiAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7DQogICAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkdikpOw0KICAgICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCR2KSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJHYpKTsNCiAgICB9DQogICAgJHJvd1tdID0gZmlsZXBlcm1zKCR2KTsNCiAgICBpZiAoKCRvID09ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JG9iamVjdHNbImhlYWQiXVtdID0gJHJvdzt9DQogICAgZWxzZWlmIChpc19saW5rKCR2KSkgeyRvYmplY3RzWyJsaW5rcyJdW10gPSAkcm93O30NCiAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskb2JqZWN0c1siZm9sZGVycyJdW10gPSAkcm93O30NCiAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKSB7JG9iamVjdHNbImZpbGVzIl1bXSA9ICRyb3c7fQ0KICAgICRpKys7DQogICB9DQogICAkcm93ID0gYXJyYXkoKTsNCiAgICRyb3dbXSA9ICI8Yj5OYW1lPC9iPiI7DQogICAkcm93W10gPSAiPGI+U2l6ZTwvYj4iOw0KICAgJHJvd1tdID0gIjxiPk1vZGlmeTwvYj4iOw0KICAgaWYgKCEkd2luKQ0KICB7JHJvd1tdID0gIjxiPk93bmVyL0dyb3VwPC9iPiI7fQ0KICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7DQogICAkcm93W10gPSAiPGI+QWN0aW9uPC9iPiI7DQogICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRzb3J0KTsNCiAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOw0KICAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHBhcnNlc29ydFsxXSA9ICJkIjt9DQogICAkeSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImc29ydD0iLiRrLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iZCI6ImEiKS4iXCI+IjsNCiAgICR5IC49ICJbU29ydC0iLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iQXNjLiI6IkRlc2MiKS4iXTwvYT4iOw0KICAgJHJvd1ska10gLj0gJHk7DQogICBmb3IoJGk9MDskaTxjb3VudCgkcm93KS0xOyRpKyspDQogICB7DQogICAgaWYgKCRpICE9ICRrKSB7JHJvd1skaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnNvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzFdLiJcIj4iLiRyb3dbJGldLiI8L2E+Ijt9DQogICB9DQogICAkdiA9ICRwYXJzZXNvcnRbMF07DQogICB1c29ydCgkb2JqZWN0c1siZm9sZGVycyJdLCAidGFic29ydCIpOw0KICAgdXNvcnQoJG9iamVjdHNbImxpbmtzIl0sICJ0YWJzb3J0Iik7DQogICB1c29ydCgkb2JqZWN0c1siZmlsZXMiXSwgInRhYnNvcnQiKTsNCiAgIGlmICgkcGFyc2Vzb3J0WzFdID09ICJkIikNCiAgIHsNCiAgICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZm9sZGVycyJdKTsNCiAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOw0KICAgfQ0KICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOw0KICAgJHRhYiA9IGFycmF5KCk7DQogICAkdGFiWyJjb2xzIl0gPSBhcnJheSgkcm93KTsNCiAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7DQogICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KICAgJHRhYlsibGlua3MiXSA9IGFycmF5KCk7DQogICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgICRpID0gMDsNCiAgIGZvcmVhY2ggKCRvYmplY3RzIGFzICRhKQ0KICAgew0KICAgICR2ID0gJGFbMF07DQogICAgJG8gPSBiYXNlbmFtZSgkdik7DQogICAgJGRpciA9IGRpcm5hbWUoJHYpOw0KICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30NCiAgICBlbHNlIHskZGlzcHBhdGggPSAkbzt9DQogICAgJGRpc3BwYXRoID0gc3RyMm1pbmkoJGRpc3BwYXRoLDYwKTsNCiAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQ0KICAgIGVsc2VpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY29weSJdKSkgeyRkaXNwcGF0aCA9ICI8dT4iLiRkaXNwcGF0aC4iPC91PiI7fQ0KICAgIGZvcmVhY2ggKCRyZWd4cF9oaWdobGlnaHQgYXMgJHIpDQogICAgew0KICAgICBpZiAoZXJlZygkclswXSwkbykpDQogICAgIHsNCiAgICAgIGlmICgoIWlzX251bWVyaWMoJHJbMV0pKSBvciAoJHJbMV0gPiAzKSkgeyRyWzFdID0gMDsgb2JfY2xlYW4oKTsgZWNobyAiV2FybmluZyEgQ29uZmlndXJhdGlvbiBlcnJvciBpbiBcJHJlZ3hwX2hpZ2hsaWdodFsiLiRrLiJdWzBdIC0gdW5rbm93biBjb21tYW5kLiI7IGM5OXNoZXhpdCgpO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAkclsxXSA9IHJvdW5kKCRyWzFdKTsNCiAgICAgICAkaXNkaXIgPSBpc19kaXIoJHYpOw0KICAgICAgIGlmICgoJHJbMV0gPT0gMCkgb3IgKCgkclsxXSA9PSAxKSBhbmQgISRpc2Rpcikgb3IgKCgkclsxXSA9PSAyKSBhbmQgISRpc2RpcikpDQogICAgICAgew0KICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKSB7JHJbMl0gPSAiPGI+IjsgJHJbM10gPSAiPC9iPiI7fQ0KICAgICAgICAkZGlzcHBhdGggPSAkclsyXS4kZGlzcHBhdGguJHJbM107DQogICAgICAgIGlmICgkcls0XSkge2JyZWFrO30NCiAgICAgICB9DQogICAgICB9DQogICAgIH0NCiAgICB9DQogICAgJHVvID0gdXJsZW5jb2RlKCRvKTsNCiAgICAkdWQgPSB1cmxlbmNvZGUoJGRpcik7DQogICAgJHV2ID0gdXJsZW5jb2RlKCR2KTsNCiAgICAkcm93ID0gYXJyYXkoKTsNCiAgICBpZiAoJG8gPT0gIi4iKQ0KICAgIHsNCiAgICAgJHJvd1tdID0gIiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj4iLiRvLiI8L2E+IjsNCiAgICAgJHJvd1tdID0gIkxJTksiOw0KICAgIH0NCiAgICBlbHNlaWYgKCRvID09ICIuLiIpDQogICAgew0KICAgICAkcm93W10gPSAiJm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIiZzb3J0PSIuJHNvcnQuIlwiPiIuJG8uIjwvYT4iOw0KICAgICAkcm93W10gPSAiTElOSyI7DQogICAgfQ0KICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkNCiAgICB7DQogICAgIGlmIChpc19saW5rKCR2KSkNCiAgICAgew0KICAgICAgJGRpc3BwYXRoIC49ICIgPT4gIi5yZWFkbGluaygkdik7DQogICAgICAkdHlwZSA9ICJMSU5LIjsNCiAgICAgICRyb3dbXSA9ICAiJm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIuJHV2LiImc29ydD0iLiRzb3J0LiJcIj5bIi4kZGlzcHBhdGguIl08L2E+IjsNCiAgICAgfQ0KICAgICBlbHNlDQogICAgIHsNCiAgICAgICR0eXBlID0gIkRJUiI7DQogICAgICAkcm93W10gPSAgIiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+WyIuJGRpc3BwYXRoLiJdPC9hPiI7DQogICAgICB9DQogICAgICRyb3dbXSA9ICR0eXBlOw0KICAgIH0NCiAgICBlbHNlaWYoaXNfZmlsZSgkdikpDQogICAgew0KICAgICAkZXh0ID0gZXhwbG9kZSgiLiIsJG8pOw0KICAgICAkYyA9IGNvdW50KCRleHQpLTE7DQogICAgICRleHQgPSAkZXh0WyRjXTsNCiAgICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAgICRyb3dbXSA9ICAiJm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZkPSIuJHVkLiImXCI+Ii4kZGlzcHBhdGguIjwvYT4iOw0KICAgICAkcm93W10gPSB2aWV3X3NpemUoJGFbMV0pOw0KICAgIH0NCiAgICAkcm93W10gPSBkYXRlKCJkLm0uWSBIOmk6cyIsJGFbMl0pOw0KICAgIGlmICghJHdpbikgeyRyb3dbXSA9ICRhWzNdO30NCiAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1jaG1vZCZmPSIuJHVvLiImZD0iLiR1ZC4iXCI+PGI+Ii52aWV3X3Blcm1zX2NvbG9yKCR2KS4iPC9iPjwvYT4iOw0KICAgIGlmICgkbyA9PSAiLiIpIHskY2hlY2tib3ggPSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIG9uY2xpY2s9XCJsc19yZXZlcnNlX2FsbCgpO1wiPiI7ICRpLS07fQ0KICAgIGVsc2UgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgaWQ9XCJhY3Rib3giLiRpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdikuIlwiPiI7fQ0KICAgIGlmIChpc19kaXIoJHYpKSB7JHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZCZkPSIuJHV2LiJcIj5bSW5mb108L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQ0KICAgIGVsc2UgeyRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLiR1by4iJmZ0PWluZm8mZD0iLiR1ZC4iXCI+W0luZm9dPC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9ZWRpdCZkPSIuJHVkLiJcIj5bQ2hhbmdlXTwvYT4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLiR1by4iJmZ0PWRvd25sb2FkJmQ9Ii4kdWQuIlwiPltEb3dubG9hZF08L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQ0KICAgIGlmICgoJG8gPT0gIi4iKSBvciAoJG8gPT0gIi4uIikpIHskdGFiWyJoZWFkIl1bXSA9ICRyb3c7fQ0KICAgIGVsc2VpZiAoaXNfbGluaygkdikpIHskdGFiWyJsaW5rcyJdW10gPSAkcm93O30NCiAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskdGFiWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQ0KICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpIHskdGFiWyJmaWxlcyJdW10gPSAkcm93O30NCiAgICAkaSsrOw0KICAgfQ0KICB9DQogIC8vIENvbXBpbGluZyB0YWJsZQ0KICAkdGFibGUgPSBhcnJheV9tZXJnZSgkdGFiWyJjb2xzIl0sJHRhYlsiaGVhZCJdLCR0YWJbImZvbGRlcnMiXSwkdGFiWyJsaW5rcyJdLCR0YWJbImZpbGVzIl0pOw0KICBlY2hvICI8Y2VudGVyPjxiPjx1Pkxpc3RpbmcgRm9sZGVyOiAiLmNvdW50KCR0YWJbImZpbGVzIl0pLiIgZmlsZXMgYW5kICIuKGNvdW50KCR0YWJbImZvbGRlcnMiXSkrY291bnQoJHRhYlsibGlua3MiXSkpLiIgZm9sZGVyczwvdT48L2I+PC9jZW50ZXI+PGJyPjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9MTAwJSBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jNDMzMzMzIGJvcmRlcj0wPjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUIG5hbWU9XCJsc19mb3JtXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSIuJGRzcGFjdC4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9Ii4kZC4iPiI7DQogIGZvcmVhY2goJHRhYmxlIGFzICRyb3cpDQogIHsNCiAgIGVjaG8gIjx0cj5cclxuIjsNCiAgIGZvcmVhY2goJHJvdyBhcyAkdikge2VjaG8gIjx0ZD4iLiR2LiI8L3RkPlxyXG4iO30NCiAgIGVjaG8gIjwvdHI+XHJcbiI7DQogIH0NCiAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwicmlnaHRcIj4NCiAgPHNjcmlwdD4NCiAgZnVuY3Rpb24gbHNfc2V0Y2hlY2tib3hhbGwoc3RhdHVzKQ0KICB7DQogICB2YXIgaWQgPSAxOw0KICAgdmFyIG51bSA9ICIuKGNvdW50KCR0YWJsZSktMikuIjsNCiAgIHdoaWxlIChpZCA8PSBudW0pDQogICB7DQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSBzdGF0dXM7DQogICAgaWQrKzsNCiAgIH0NCiAgfQ0KICBmdW5jdGlvbiBsc19yZXZlcnNlX2FsbCgpDQogIHsNCiAgIHZhciBpZCA9IDE7DQogICB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0yKS4iOw0KICAgd2hpbGUgKGlkIDw9IG51bSkNCiAgIHsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZDsNCiAgICBpZCsrOw0KICAgfQ0KICB9DQogIDwvc2NyaXB0Pg0KICA8aW5wdXQgdHlwZT1cImJ1dHRvblwiIG9uY2xpY2s9XCJsc19zZXRjaGVja2JveGFsbCh0cnVlKTtcIiB2YWx1ZT1cIlNlbGVjdCBhbGxcIj4mbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImJ1dHRvblwiIG9uY2xpY2s9XCJsc19zZXRjaGVja2JveGFsbChmYWxzZSk7XCIgdmFsdWU9XCJVbnNlbGVjdCBhbGxcIj4gDQogIDxiPiI7DQogIGlmIChjb3VudChhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sJHNlc3NfZGF0YVsiY3V0Il0pKSA+IDAgYW5kICgkdXNlZnNidWZmKSkNCiAgew0KICAgZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9YWN0YXJjYnVmZiB2YWx1ZT1cIlBhY2sgYnVmZmVyIHRvIGFyY2hpdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYWN0YXJjYnVmZl9wYXRoXCIgdmFsdWU9XCJhcmNoaXZlXyIuc3Vic3RyKG1kNShyYW5kKDEsMTAwMCkucmFuZCgxLDEwMDApKSwwLDUpLiIudGFyLmd6XCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RwYXN0ZWJ1ZmZcIiB2YWx1ZT1cIlBhc3RlXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RlbXB0eWJ1ZmZcIiB2YWx1ZT1cIkVtcHR5IGJ1ZmZlclwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7DQogIH0NCiAgZWNobyAiPHNlbGVjdCBuYW1lPWFjdD48b3B0aW9uIHZhbHVlPVwiIi4kYWN0LiJcIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7DQogIGVjaG8gIjxvcHRpb24gdmFsdWU9ZGVsZXRlIi4oJGRzcGFjdCA9PSAiZGVsZXRlIj8iIHNlbGVjdGVkIjoiIikuIj5EZWxldGU8L29wdGlvbj4iOw0KICBlY2hvICI8b3B0aW9uIHZhbHVlPWNobW9kIi4oJGRzcGFjdCA9PSAiY2htb2QiPyIgc2VsZWN0ZWQiOiIiKS4iPkNoYW5nZS1tb2RlPC9vcHRpb24+IjsNCiAgaWYgKCR1c2Vmc2J1ZmYpDQogIHsNCiAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y3V0Ii4oJGRzcGFjdCA9PSAiY3V0Ij8iIHNlbGVjdGVkIjoiIikuIj5DdXQ8L29wdGlvbj4iOw0KICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jb3B5Ii4oJGRzcGFjdCA9PSAiY29weSI/IiBzZWxlY3RlZCI6IiIpLiI+Q29weTwvb3B0aW9uPiI7DQogICBlY2hvICI8b3B0aW9uIHZhbHVlPXVuc2VsZWN0Ii4oJGRzcGFjdCA9PSAidW5zZWxlY3QiPyIgc2VsZWN0ZWQiOiIiKS4iPlVuc2VsZWN0PC9vcHRpb24+IjsNCiAgfQ0KICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJDb25maXJtXCI+PC9wPiI7DQogIGVjaG8gIjwvZm9ybT4iOw0KIH0NCn0NCg0KaWYgKCRhY3QgPT0gInByb2Nlc3NlcyIpDQp7DQogZWNobyAiPGI+UHJvY2Vzc2VzOjwvYj48YnI+IjsNCiBpZiAoISR3aW4pIHskaGFuZGxlciA9ICJwcyBhdXgiLigkZ3JlcD8iIHwgZ3JlcCAnIi5hZGRzbGFzaGVzKCRncmVwKS4iJyI6IiIpO30NCiBlbHNlIHskaGFuZGxlciA9ICJ0YXNrbGlzdCI7fQ0KICRyZXQgPSBteXNoZWxsZXhlYygkaGFuZGxlcik7DQogaWYgKCEkcmV0KSB7ZWNobyAiPC9icj5DYW4ndCBleGVjdXRlIFwiIi4kaGFuZGxlci4iXCIhIjt9DQogZWxzZQ0KIHsNCiAgaWYgKGVtcHR5KCRwcm9jZXNzZXNfc29ydCkpIHskcHJvY2Vzc2VzX3NvcnQgPSAkc29ydF9kZWZhdWx0O30NCiAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkcHJvY2Vzc2VzX3NvcnQpOw0KICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9DQogICRrID0gJHBhcnNlc29ydFswXTsNCiAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj5bc29ydF9kZXNjXTwvYT4iO30NCiAgZWxzZSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImRcIj5bc29ydF9hc2NdPC9hPiI7fQ0KICAkcmV0ID0gaHRtbHNwZWNpYWxjaGFycygkcmV0KTsNCiAgaWYgKCEkd2luKQ0KICB7DQogICBpZiAoJHBpZCkNCiAgIHsNCiAgICBpZiAoaXNfbnVsbCgkc2lnKSkgeyRzaWcgPSA5O30NCiAgICBlY2hvICJTZW5kaW5nIHNpZ25hbCAiLiRzaWcuIiB0byAjIi4kcGlkLiIuLi4gIjsNCiAgICBpZiAocG9zaXhfa2lsbCgkcGlkLCRzaWcpKSB7ZWNobyAiT0suIjt9DQogICAgZWxzZSB7ZWNobyAiRVJST1IuIjt9DQogICB9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30NCiAgICRzdGFjayA9IGV4cGxvZGUoIlxuIiwkcmV0KTsNCiAgICRoZWFkID0gZXhwbG9kZSgiICIsJHN0YWNrWzBdKTsNCiAgIHVuc2V0KCRzdGFja1swXSk7DQogICBmb3IoJGk9MDskaTxjb3VudCgkaGVhZCk7JGkrKykNCiAgIHsNCiAgICBpZiAoJGkgIT0gJGspIHskaGVhZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii4kaGVhZFskaV0uIjwvYj48L2E+Ijt9DQogICB9DQogICAkcHJjcyA9IGFycmF5KCk7DQogICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpDQogICB7DQogICAgaWYgKCFlbXB0eSgkbGluZSkpDQp7DQogZWNobyAiPHRyPiI7DQogICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOw0KICAgICAkbGluZVsxMF0gPSBqb2luKCIgIixhcnJheV9zbGljZSgkbGluZSwxMCkpOw0KICAgICAkbGluZSA9IGFycmF5X3NsaWNlKCRsaW5lLDAsMTEpOw0KICAgICBpZiAoJGxpbmVbMF0gPT0gZ2V0X2N1cnJlbnRfdXNlcigpKSB7JGxpbmVbMF0gPSAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kbGluZVswXS4iPC9mb250PiI7fQ0KICAgICAkbGluZVtdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMV0uIiZzaWc9OVwiPjx1PktJTEw8L3U+PC9hPiI7DQogICAgICRwcmNzW10gPSAkbGluZTsNCiAgICAgZWNobyAiPC90cj4iOw0KICAgIH0NCiAgIH0NCiAgfQ0KICBlbHNlDQogIHsNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQ0KICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIiLCRyZXQpO30NCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQ0KICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIiLCRyZXQpO30NCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiIsJHJldCk7fQ0KICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIiLCRyZXQpO30NCiAgIHdoaWxlIChlcmVnKCIiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIiLCIiLCRyZXQpO30NCiAgIHdoaWxlIChlcmVnKCIgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICIsIiIsJHJldCk7fQ0KICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCRyZXQpOw0KICAgdW5zZXQoJHN0YWNrWzBdLCRzdGFja1syXSk7DQogICAkc3RhY2sgPSBhcnJheV92YWx1ZXMoJHN0YWNrKTsNCiAgICRoZWFkID0gZXhwbG9kZSgiIiwkc3RhY2tbMF0pOw0KICAgJGhlYWRbMV0gPSBleHBsb2RlKCIgIiwkaGVhZFsxXSk7DQogICAkaGVhZFsxXSA9ICRoZWFkWzFdWzBdOw0KICAgJHN0YWNrID0gYXJyYXlfc2xpY2UoJHN0YWNrLDEpOw0KICAgdW5zZXQoJGhlYWRbMl0pOw0KICAgJGhlYWQgPSBhcnJheV92YWx1ZXMoJGhlYWQpOw0KICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj5bc29ydF9kZXNjXTwvYT4iO30NCiAgIGVsc2UgeyR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+W3NvcnRfYXNjXTwvYT4iO30NCiAgIGlmICgkayA+IGNvdW50KCRoZWFkKSkgeyRrID0gY291bnQoJGhlYWQpLTE7fQ0KICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspDQogICB7DQogICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPjxiPiIudHJpbSgkaGVhZFskaV0pLiI8L2I+PC9hPiI7fQ0KICAgfQ0KICAgJHByY3MgPSBhcnJheSgpOw0KICAgZm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKQ0KICAgew0KICAgIGlmICghZW1wdHkoJGxpbmUpKQ0KICAgIHsNCiAgICAgZWNobyAiPHRyPiI7DQogICAgICRsaW5lID0gZXhwbG9kZSgiIiwkbGluZSk7DQogICAgICRsaW5lWzFdID0gaW50dmFsKCRsaW5lWzFdKTsgJGxpbmVbMl0gPSAkbGluZVszXTsgdW5zZXQoJGxpbmVbM10pOw0KICAgICAkbGluZVsyXSA9IGludHZhbChzdHJfcmVwbGFjZSgiICIsIiIsJGxpbmVbMl0pKSoxMDI0OyANCiAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICBlY2hvICI8L3RyPiI7DQogICAgfQ0KICAgfQ0KICB9DQogICRoZWFkWyRrXSA9ICI8Yj4iLiRoZWFkWyRrXS4iPC9iPiIuJHk7DQogICR2ID0gJHByb2Nlc3Nlc19zb3J0WzBdOw0KICB1c29ydCgkcHJjcywidGFic29ydCIpOw0KICBpZiAoJHByb2Nlc3Nlc19zb3J0WzFdID09ICJkIikgeyRwcmNzID0gYXJyYXlfcmV2ZXJzZSgkcHJjcyk7fQ0KICAkdGFiID0gYXJyYXkoKTsNCiAgJHRhYltdID0gJGhlYWQ7DQogICR0YWIgPSBhcnJheV9tZXJnZSgkdGFiLCRwcmNzKTsNCiAgZWNobyAiPFRBQkxFIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPVwiI0MwQzBDMFwiPiI7DQogIGZvcmVhY2goJHRhYiBhcyAkaT0+JGspDQogIHsNCiAgIGVjaG8gIjx0cj4iOw0KICAgZm9yZWFjaCgkayBhcyAkaj0+JHYpIHtpZiAoJHdpbiBhbmQgJGkgPiAwIGFuZCAkaiA9PSAyKSB7JHYgPSB2aWV3X3NpemUoJHYpO30gZWNobyAiPHRkPiIuJHYuIjwvdGQ+Ijt9DQogICBlY2hvICI8L3RyPiI7DQogIH0NCiAgZWNobyAiPC90YWJsZT4iOw0KIH0NCn0NCmlmICgkYWN0ID09ICJldmFsIikNCnsNCiBpZiAoIWVtcHR5KCRldmFsKSkNCiB7DQogIGVjaG8gIjxiPlJlc3VsdCBvZiBleGVjdXRpb24gdGhpcyBQSFAtY29kZTwvYj46PGJyPiI7DQogICR0bXAgPSBvYl9nZXRfY29udGVudHMoKTsNCiAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogIEBjaGRpcigkZCk7DQogIGlmICgkdG1wKQ0KICB7DQogICBvYl9jbGVhbigpOw0KICAgZXZhbCgkZXZhbCk7DQogICAkcmV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7DQogICBvYl9jbGVhbigpOw0KICAgZWNobyAkdG1wOw0KICAgaWYgKCRldmFsX3R4dCkNCiAgIHsNCiAgICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyZXQpKSsxOw0KICAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9DQogICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iOw0KICAgfQ0KICAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9DQogIH0NCiAgZWxzZQ0KICB7DQogICBpZiAoJGV2YWxfdHh0KQ0KICAgew0KICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIxNVwiIHJlYWRvbmx5PiI7DQogICAgZXZhbCgkZXZhbCk7DQogICAgZWNobyAiPC90ZXh0YXJlYT4iOw0KICAgfQ0KICAgZWxzZSB7ZWNobyAkcmV0O30NCiAgfQ0KICBAY2hkaXIoJG9sZGRpcik7DQogfQ0KIGVsc2Uge2VjaG8gIjxiPkV4ZWN1dGlvbiBQSFAtY29kZTwvYj4iOyBpZiAoZW1wdHkoJGV2YWxfdHh0KSkgeyRldmFsX3R4dCA9IFRSVUU7fX0NCiBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ZXZhbD48dGV4dGFyZWEgbmFtZT1cImV2YWxcIiBjb2xzPVwiMTIyXCIgcm93cz1cIjEwXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRldmFsKS4iPC90ZXh0YXJlYT48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIuJGRpc3BkLiJcIj48YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj4mbmJzcDtEaXNwbGF5IGluIHRleHQtYXJlYSZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZXZhbF90eHRcIiB2YWx1ZT1cIjFcIiI7IGlmICgkZXZhbF90eHQpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PC9mb3JtPiI7DQp9DQppZiAoJGFjdCA9PSAiZiIpDQp7DQogaWYgKCghaXNfcmVhZGFibGUoJGQuJGYpIG9yIGlzX2RpcigkZC4kZikpIGFuZCAkZnQgIT0gImVkaXQiKQ0KIHsNCiAgaWYgKGZpbGVfZXhpc3RzKCRkLiRmKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PC9jZW50ZXI+Ijt9DQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+RmlsZSBkb2VzIG5vdCBleGlzdHMgKCIuaHRtbHNwZWNpYWxjaGFycygkZC4kZikuIikhPC9iPjxicj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiImYz0xXCI+PHU+Q3JlYXRlPC91PjwvYT48L2NlbnRlcj4iO30NCiB9DQogZWxzZQ0KIHsNCiAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOw0KICAkYyA9IGNvdW50KCRleHQpLTE7DQogICRleHQgPSAkZXh0WyRjXTsNCiAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICRyZnQgPSAiIjsNCiAgZm9yZWFjaCgkZnR5cGVzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkZXh0LCR2KSkgeyRyZnQgPSAkazsgYnJlYWs7fX0NCiAgaWYgKGVyZWdpKCJzZXNzXyguKikiLCRmKSkgeyRyZnQgPSAicGhwc2VzcyI7fQ0KICBpZiAoZW1wdHkoJGZ0KSkgeyRmdCA9ICRyZnQ7fQ0KICAkYXJyID0gYXJyYXkoDQogICBhcnJheSgiW2hleF0iLCJpbmZvIiksDQogICBhcnJheSgiW2h0bWxdIiwiaHRtbCIpLA0KICAgYXJyYXkoIlt0eHRdIiwidHh0IiksDQogICBhcnJheSgiW0NvZGVdIiwiY29kZSIpLA0KICAgYXJyYXkoIltTZXNzaW9uXSIsInBocHNlc3MiKSwNCiAgIGFycmF5KCJbZXhlXSIsImV4ZSIpLA0KICAgYXJyYXkoIltTREJdIiwic2RiIiksDQogICBhcnJheSgiW2dpZl0iLCJpbWciKSwNCiAgIGFycmF5KCJbaW5pXSIsImluaSIpLA0KICAgYXJyYXkoIltkb3dubG9hZF0iLCJkb3dubG9hZCIpLA0KICAgYXJyYXkoIltydGZdIiwibm90ZXBhZCIpLA0KICAgYXJyYXkoIltjaGFuZ2VdIiwiZWRpdCIpDQogICk7DQogIGVjaG8gIjxiPlZpZXdpbmcgZmlsZTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtbJGV4dF0mbmJzcDsiLiRmLiIgKCIudmlld19zaXplKGZpbGVzaXplKCRkLiRmKSkuIikgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9iPjxicj5TZWxlY3QgYWN0aW9uL2ZpbGUtdHlwZTo8YnI+IjsNCiAgZm9yZWFjaCgkYXJyIGFzICR0KQ0KICB7DQogICBpZiAoJHRbMV0gPT0gJHJmdCkge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxmb250IGNvbG9yPWdyZWVuPiIuJHRbMF0uIjwvZm9udD48L2E+Ijt9DQogICBlbHNlaWYgKCR0WzFdID09ICRmdCkge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPjx1PiIuJHRbMF0uIjwvdT48L2I+PC9hPiI7fQ0KICAgZWxzZSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGI+Ii4kdFswXS4iPC9iPjwvYT4iO30NCiAgIGVjaG8gIiAoPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJndoaXRlPTEmZD0iLnVybGVuY29kZSgkZCkuIlwiIHRhcmdldD1cIl9ibGFua1wiPis8L2E+KSB8IjsNCiAgfQ0KICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogIGlmICgkZnQgPT0gImluZm8iKQ0KICB7DQogICBlY2hvICI8Yj5JbmZvcm1hdGlvbjo8L2I+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj48dHI+PHRkPjxiPlBhdGg8L2I+PC90ZD48dGQ+ICIuJGQuJGYuIjwvdGQ+PC90cj48dHI+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+ICIudmlld19zaXplKGZpbGVzaXplKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1ENTwvYj48L3RkPjx0ZD4gIi5tZDVfZmlsZSgkZC4kZikuIjwvdGQ+PC90cj4iOw0KICAgaWYgKCEkd2luKQ0KICAgew0KICAgIGVjaG8gIjx0cj48dGQ+PGI+T3duZXIvR3JvdXA8L2I+PC90ZD48dGQ+ICI7ICAgIA0KICAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZC4kZikpOw0KICAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZC4kZikpOw0KICAgIGVjaG8gKCRvd1sibmFtZSJdPyRvd1sibmFtZSJdOmZpbGVvd25lcigkZC4kZikpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1lIl06ZmlsZWdyb3VwKCRkLiRmKSk7DQogICB9DQogICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Y2htb2QmZj0iLnVybGVuY29kZSgkZikuIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9hPjwvdGQ+PC90cj48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOw0KICAgJGZpID0gZm9wZW4oJGQuJGYsInJiIik7DQogICBpZiAoJGZpKQ0KICAgew0KICAgIGlmICgkZnVsbGhleGR1bXApIHtlY2hvICI8Yj5GVUxMIEhFWERVTVA8L2I+IjsgJHN0ciA9IGZyZWFkKCRmaSxmaWxlc2l6ZSgkZC4kZikpO30NCiAgICBlbHNlIHtlY2hvICI8Yj5IRVhEVU1QIFBSRVZJRVc8L2I+IjsgJHN0ciA9IGZyZWFkKCRmaSwkaGV4ZHVtcF9saW5lcyokaGV4ZHVtcF9yb3dzKTt9DQogICAgJG4gPSAwOw0KICAgICRhMCA9ICIwMDAwMDAwMDxicj4iOw0KICAgICRhMSA9ICIiOw0KICAgICRhMiA9ICIiOw0KICAgIGZvciAoJGk9MDsgJGk8c3RybGVuKCRzdHIpOyAkaSsrKQ0KICAgIHsNCiAgICAgJGExIC49IHNwcmludGYoIiUwMlgiLG9yZCgkc3RyWyRpXSkpLiIgIjsNCiAgICAgc3dpdGNoIChvcmQoJHN0clskaV0pKQ0KICAgICB7DQogICAgICBjYXNlIDA6ICAkYTIgLj0gIjxmb250PjA8L2ZvbnQ+IjsgYnJlYWs7DQogICAgICBjYXNlIDMyOg0KICAgICAgY2FzZSAxMDoNCiAgICAgIGNhc2UgMTM6ICRhMiAuPSAiJm5ic3A7IjsgYnJlYWs7DQogICAgICBkZWZhdWx0OiAkYTIgLj0gaHRtbHNwZWNpYWxjaGFycygkc3RyWyRpXSk7DQogICAgIH0NCiAgICAgJG4rKzsNCiAgICAgaWYgKCRuID09ICRoZXhkdW1wX3Jvd3MpDQogICAgIHsNCiAgICAgICRuID0gMDsNCiAgICAgIGlmICgkaSsxIDwgc3RybGVuKCRzdHIpKSB7JGEwIC49IHNwcmludGYoIiUwOFgiLCRpKzEpLiI8YnI+Ijt9DQogICAgICAkYTEgLj0gIjxicj4iOw0KICAgICAgJGEyIC49ICI8YnI+IjsNCiAgICAgfQ0KICAgIH0NCiAgICAvL2lmICgkYTEgIT0gIiIpIHskYTAgLj0gc3ByaW50ZigiJTA4WCIsJGkpLiI8YnI+Ijt9DQogICAgZWNobyAiPHRhYmxlIGJvcmRlcj0wIGJnY29sb3I9IzY2NjY2NiBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTQ+PHRyPjx0ZCBiZ2NvbG9yPSM2NjY2NjY+Ii4kYTAuIjwvdGQ+PHRkIGJnY29sb3I9MDAwMDAwPiIuJGExLiI8L3RkPjx0ZCBiZ2NvbG9yPTAwMDAwMD4iLiRhMi4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogICB9DQogICAkZW5jb2RlZCA9ICIiOw0KICAgaWYgKCRiYXNlNjQgPT0gMSkNCiAgIHsNCiAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlPC9iPjxicj4iOw0KICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOw0KICAgfQ0KICAgZWxzZWlmKCRiYXNlNjQgPT0gMikNCiAgIHsNCiAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlICsgQ2h1bms8L2I+PGJyPiI7DQogICAgJGVuY29kZWQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSkpOw0KICAgfQ0KICAgZWxzZWlmKCRiYXNlNjQgPT0gMykNCiAgIHsNCiAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlICsgQ2h1bmsgKyBRdW90ZXM8L2I+PGJyPiI7DQogICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7DQogICAgJGVuY29kZWQgPSBzdWJzdHIocHJlZ19yZXBsYWNlKCIhLnsxLDc2fSEiLCInXFwwJy5cbiIsJGVuY29kZWQpLDAsLTIpOw0KICAgfQ0KICAgZWxzZWlmKCRiYXNlNjQgPT0gNCkNCiAgIHsNCiAgICAkdGV4dCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsNCiAgICAkZW5jb2RlZCA9IGJhc2U2NF9kZWNvZGUoJHRleHQpOw0KICAgIGVjaG8gIjxiPkJhc2U2NCBEZWNvZGUiOw0KICAgIGlmIChiYXNlNjRfZW5jb2RlKCRlbmNvZGVkKSAhPSAkdGV4dCkge2VjaG8gIiAoZmFpbGVkKSI7fQ0KICAgIGVjaG8gIjwvYj48YnI+IjsNCiAgIH0NCiAgIGlmICghZW1wdHkoJGVuY29kZWQpKQ0KICAgew0KICAgIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTgwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVkKS4iPC90ZXh0YXJlYT48YnI+PGJyPiI7DQogICB9DQogICBlY2hvICI8Yj5IRVhEVU1QOjwvYj48bm9icj4gWzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mZnVsbGhleGR1bXA9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RnVsbDwvYT5dIFs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5QcmV2aWV3PC9hPl08YnI+PGI+QmFzZTY0OiA8L2I+DQo8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RW5jb2RlPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+K2NodW5rPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MyZkPSIudXJsZW5jb2RlKCRkKS4iXCI+K2NodW5rK3F1b3RlczwvYT5dJm5ic3A7PC9ub2JyPg0KPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTQmZD0iLnVybGVuY29kZSgkZCkuIlwiPkRlY29kZTwvYT5dJm5ic3A7PC9ub2JyPg0KPFA+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaHRtbCIpDQogIHsNCiAgIGlmICgkd2hpdGUpIHtAb2JfY2xlYW4oKTt9DQogICBlY2hvICRyOw0KICAgaWYgKCR3aGl0ZSkge2M5OXNoZXhpdCgpO30NCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAidHh0Iikge2VjaG8gIjxwcmU+Ii5odG1sc3BlY2lhbGNoYXJzKCRyKS4iPC9wcmU+Ijt9DQogIGVsc2VpZiAoJGZ0ID09ICJpbmkiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcChwYXJzZV9pbmlfZmlsZSgkZC4kZixUUlVFKSk7IGVjaG8gIjwvcHJlPiI7fQ0KICBlbHNlaWYgKCRmdCA9PSAicGhwc2VzcyIpDQogIHsNCiAgIGVjaG8gIjxwcmU+IjsNCiAgICR2ID0gZXhwbG9kZSgifCIsJHIpOw0KICAgZWNobyAkdlswXS4iPGJyPiI7DQogICB2YXJfZHVtcCh1bnNlcmlhbGl6ZSgkdlsxXSkpOw0KICAgZWNobyAiPC9wcmU+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiZXhlIikNCiAgew0KICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsNCiAgICRjID0gY291bnQoJGV4dCktMTsNCiAgICRleHQgPSAkZXh0WyRjXTsNCiAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgJHJmdCA9ICIiOw0KICAgZm9yZWFjaCgkZXhlZnR5cGVzIGFzICRrPT4kdikNCiAgIHsNCiAgICBpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO30NCiAgIH0NCiAgICRjbWQgPSBzdHJfcmVwbGFjZSgiJWYlIiwkZiwkcmZ0KTsNCiAgIGVjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8L2I+PGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNtZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIlwiIHNpemU9XCIiLihzdHJsZW4oJGNtZCkrMikuIlwiPjxicj5EaXNwbGF5IGluIHRleHQtYXJlYTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiY21kX3R4dFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJzZGIiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcCh1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImNvZGUiKQ0KICB7DQogICBpZiAoZXJlZygicGhwIi4iQkIgMi4oLiopIGF1dG8tZ2VuZXJhdGVkIGNvbmZpZyBmaWxlIiwkcikpDQogICB7DQogICAgJGFyciA9IGV4cGxvZGUoIlxuIiwkcik7DQogICAgaWYgKGNvdW50KCRhcnIgPT0gMTgpKQ0KICAgIHsNCiAgICAgaW5jbHVkZSgkZC4kZik7DQogICAgIGVjaG8gIjxiPnBocEJCIGNvbmZpZ3VyYXRpb24gaXMgZGV0ZWN0ZWQgaW4gdGhpcyBmaWxlITxicj4iOw0KICAgICBpZiAoJGRibXMgPT0gIm15c3FsNCIpIHskZGJtcyA9ICJteXNxbCI7fQ0KICAgICBpZiAoJGRibXMgPT0gIm15c3FsIikge2VjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9c3FsJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkuIlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQ0KICAgICBlbHNlIHtlY2hvICJCdXQsIHlvdSBjYW4ndCBjb25uZWN0IHRvIGZvcnVtIHNxbC1iYXNlLCBiZWNhdXNlIGRiLXNvZnR3YXJlPVwiIi4kZGJtcy4iXCIgaXMgbm90IHN1cHBvcnRlZCBieSBjOTlzaGVsbC4gUGxlYXNlLCByZXBvcnQgdXMgZm9yIGZpeC4iO30NCiAgICAgZWNobyAiUGFyYW1ldGVycyBmb3IgbWFudWFsIGNvbm5lY3Q6PGJyPiI7DQogICAgICRjZmd2YXJzID0gYXJyYXkoImRibXMiPT4kZGJtcywiZGJob3N0Ij0+JGRiaG9zdCwiZGJuYW1lIj0+JGRibmFtZSwiZGJ1c2VyIj0+JGRidXNlciwiZGJwYXNzd2QiPT4kZGJwYXNzd2QpOw0KICAgICBmb3JlYWNoICgkY2ZndmFycyBhcyAkaz0+JHYpIHtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGspLiI9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic8YnI+Ijt9DQogICAgIGVjaG8gIjwvYj48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgfQ0KICAgfQ0KICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7XCI+IjsNCiAgIGlmICghZW1wdHkoJHdoaXRlKSkge0BvYl9jbGVhbigpO30NCiAgIGhpZ2hsaWdodF9maWxlKCRkLiRmKTsNCiAgIGlmICghZW1wdHkoJHdoaXRlKSkge2M5OXNoZXhpdCgpO30NCiAgIGVjaG8gIjwvZGl2PiI7DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikNCiAgew0KICAgQG9iX2NsZWFuKCk7DQogICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQogICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRkLiRmKSk7DQogICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iXCI7Iik7DQogICBlY2hvICRyOw0KICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAibm90ZXBhZCIpDQogIHsNCiAgIEBvYl9jbGVhbigpOw0KICAgaGVhZGVyKCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW4iKTsNCiAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmLiIudHh0XCI7Iik7DQogICBlY2hvKCRyKTsNCiAgIGV4aXQ7DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImltZyIpDQogIHsNCiAgICRpbmYgPSBnZXRpbWFnZXNpemUoJGQuJGYpOw0KICAgaWYgKCEkd2hpdGUpDQogICB7DQogICAgaWYgKGVtcHR5KCRpbWdzaXplKSkgeyRpbWdzaXplID0gMjA7fQ0KICAgICR3aWR0aCA9ICRpbmZbMF0vMTAwKiRpbWdzaXplOw0KICAgICRoZWlnaHQgPSAkaW5mWzFdLzEwMCokaW1nc2l6ZTsNCiAgICBlY2hvICI8Y2VudGVyPjxiPlNpemU6PC9iPiZuYnNwOyI7DQogICAgJHNpemVzID0gYXJyYXkoIjEwMCIsIjUwIiwiMjAiKTsNCiAgICBmb3JlYWNoICgkc2l6ZXMgYXMgJHYpDQogICAgew0KICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbWcmZD0iLnVybGVuY29kZSgkZCkuIiZpbWdzaXplPSIuJHYuIlwiPiI7DQogICAgIGlmICgkaW1nc2l6ZSAhPSAkdiApIHtlY2hvICR2O30NCiAgICAgZWxzZSB7ZWNobyAiPHU+Ii4kdi4iPC91PiI7fQ0KICAgICBlY2hvICI8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICB9DQogICAgZWNobyAiPGJyPjxicj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW1nJndoaXRlPTEmZD0iLnVybGVuY29kZSgkZCkuIlwiIHdpZHRoPVwiIi4kd2lkdGguIlwiIGhlaWdodD1cIiIuJGhlaWdodC4iXCIgYm9yZGVyPVwiMVwiPjwvY2VudGVyPiI7DQogICB9DQogICBlbHNlDQogICB7DQogICAgQG9iX2NsZWFuKCk7DQogICAgJGV4dCA9IGV4cGxvZGUoJGYsIi4iKTsNCiAgICAkZXh0ID0gJGV4dFtjb3VudCgkZXh0KS0xXTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kaW5mWyJtaW1lIl0pOw0KICAgIHJlYWRmaWxlKCRkLiRmKTsNCiAgICBleGl0Ow0KICAgfQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJlZGl0IikNCiAgew0KICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCiAgIHsNCiAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCRkLiRmKTt9DQogICAgJGZwID0gZm9wZW4oJGQuJGYsInciKTsNCiAgICBpZiAoISRmcCkge2VjaG8gIjxiPkNhbid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7fQ0KICAgIGVsc2UNCiAgICB7DQogICAgIGVjaG8gIjxiPlNhdmVkITwvYj4iOw0KICAgICBmd3JpdGUoJGZwLCRlZGl0X3RleHQpOw0KICAgICBmY2xvc2UoJGZwKTsNCiAgICAgaWYgKCRmaWxlc3RlYWx0aCkge3RvdWNoKCRkLiRmLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgICRyID0gJGVkaXRfdGV4dDsNCiAgICB9DQogICB9DQogICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyKSk7DQogICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQ0KICAgaWYgKCRyb3dzID4gMzApIHskcm93cyA9IDMwO30NCiAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJsLiJhY3Q9bHMmZD0iLnN1YnN0cigkZCwwLC0xKSkuIic7XCIgdmFsdWU9XCJCYWNrXCI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwiZWRpdF90ZXh0XCIgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3RleHRhcmVhPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoIWVtcHR5KCRmdCkpIHtlY2hvICI8Y2VudGVyPjxiPk1hbnVhbGx5IHNlbGVjdGVkIHR5cGUgaXMgaW5jb3JyZWN0LiBJZiB5b3UgdGhpbmssIGl0IGlzIG1pc3Rha2UsIHBsZWFzZSBzZW5kIHVzIHVybCBhbmQgZHVtcCBvZiBcJEdMT0JBTFMuPC9iPjwvY2VudGVyPiI7fQ0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPlVua25vd24gZXh0ZW5zaW9uICgiLiRleHQuIiksIHBsZWFzZSwgc2VsZWN0IHR5cGUgbWFudWFsbHkuPC9iPjwvY2VudGVyPiI7fQ0KIH0NCn0NCn0NCmVsc2UNCnsNCiBAb2JfY2xlYW4oKTsNCiAvL0ZvciBzaW1wbGUgc2l6ZS0gYW5kIHNwZWVkLW9wdGltaXphdGlvbi4NCiAkaW1nZXF1YWxzID0gYXJyYXkoDQogICJleHRfdGFyIj0+YXJyYXkoImV4dF90YXIiLCJleHRfcjAwIiwiZXh0X2FjZSIsImV4dF9hcmoiLCJleHRfYnoiLCJleHRfYnoyIiwiZXh0X3RieiIsImV4dF90YnoyIiwiZXh0X3RneiIsImV4dF91dSIsImV4dF94eGUiLCJleHRfemlwIiwiZXh0X2NhYiIsImV4dF9neiIsImV4dF9pc28iLCJleHRfbGhhIiwiZXh0X2x6aCIsImV4dF9wYmsiLCJleHRfcmFyIiwiZXh0X3V1ZiIpLA0KICAiZXh0X3BocCI9PmFycmF5KCJleHRfcGhwIiwiZXh0X3BocDMiLCJleHRfcGhwNCIsImV4dF9waHA1IiwiZXh0X3BodG1sIiwiZXh0X3NodG1sIiwiZXh0X2h0bSIpLA0KICAiZXh0X2pwZyI9PmFycmF5KCJleHRfanBnIiwiZXh0X2dpZiIsImV4dF9wbmciLCJleHRfanBlZyIsImV4dF9qZmlmIiwiZXh0X2pwZSIsImV4dF9ibXAiLCJleHRfaWNvIiwiZXh0X3RpZiIsInRpZmYiKSwNCiAgImV4dF9odG1sIj0+YXJyYXkoImV4dF9odG1sIiwiZXh0X2h0bSIpLA0KICAiZXh0X2F2aSI9PmFycmF5KCJleHRfYXZpIiwiZXh0X21vdiIsImV4dF9tdmkiLCJleHRfbXBnIiwiZXh0X21wZWciLCJleHRfd212IiwiZXh0X3JtIiksDQogICJleHRfbG5rIj0+YXJyYXkoImV4dF9sbmsiLCJleHRfdXJsIiksDQogICJleHRfaW5pIj0+YXJyYXkoImV4dF9pbmkiLCJleHRfY3NzIiwiZXh0X2luZiIpLA0KICAiZXh0X2RvYyI9PmFycmF5KCJleHRfZG9jIiwiZXh0X2RvdCIpLA0KICAiZXh0X2pzIj0+YXJyYXkoImV4dF9qcyIsImV4dF92YnMiKSwNCiAgImV4dF9jbWQiPT5hcnJheSgiZXh0X2NtZCIsImV4dF9iYXQiLCJleHRfcGlmIiksDQogICJleHRfd3JpIj0+YXJyYXkoImV4dF93cmkiLCJleHRfcnRmIiksDQogICJleHRfc3dmIj0+YXJyYXkoImV4dF9zd2YiLCJleHRfZmxhIiksDQogICJleHRfbXAzIj0+YXJyYXkoImV4dF9tcDMiLCJleHRfYXUiLCJleHRfbWlkaSIsImV4dF9taWQiKSwNCiAgImV4dF9odGFjY2VzcyI9PmFycmF5KCJleHRfaHRhY2Nlc3MiLCJleHRfaHRwYXNzd2QiLCJleHRfaHQiLCJleHRfaHRhIiwiZXh0X3NvIikNCiApOw0KIGlmICghJGdldGFsbCkNCiB7DQogIGhlYWRlcigiQ29udGVudC10eXBlOiBpbWFnZS9naWYiKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTsNCiAgaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBtYXgtYWdlPSIuKDYwKjYwKjI0KjcpKTsNCiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmRhdGUoInIiLGZpbGVtdGltZShfX0ZJTEVfXykpKTsNCiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkaW1nLCR2KSkgeyRpbWcgPSAkazsgYnJlYWs7fX0NCiAgaWYgKGVtcHR5KCRpbWFnZXNbJGltZ10pKSB7JGltZyA9ICJzbWFsbF91bmsiO30NCiAgaWYgKGluX2FycmF5KCRpbWcsJGV4dF90YXIpKSB7JGltZyA9ICJleHRfdGFyIjt9DQogIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsNCiB9DQogZWxzZQ0KIHsNCiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRhPT4kYikge2ZvcmVhY2ggKCRiIGFzICRkKSB7aWYgKCRhICE9ICRkKSB7aWYgKCFlbXB0eSgkaW1hZ2VzWyRkXSkpIHtlY2hvKCJXYXJuaW5nISBSZW1vdmUgXCRpbWFnZXNbIi4kZC4iXTxicj4iKTt9fX19DQogIG5hdHNvcnQoJGltYWdlcyk7DQogICRrID0gYXJyYXlfa2V5cygkaW1hZ2VzKTsNCiAgZWNobyAgIjxjZW50ZXI+IjsNCiAgZm9yZWFjaCAoJGsgYXMgJHUpIHtlY2hvICR1LiI6PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz0iLiR1LiJcIiBib3JkZXI9XCIxXCI+PGJyPiI7fQ0KICBlY2hvICI8L2NlbnRlcj4iOw0KIH0NCiBleGl0Ow0KfQ0KPz4NCjwvdGQ+PC90cj48L3RhYmxlPjxhIGJvb2ttYXJrPSJtaW5pcGFuZWwiPjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPg0KPHRyPjx0ZCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+PGJyLz48Yj5Mb2NhbCBDb21tYW5kOjwvYj4gPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRjbWQpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT48L3RkPjwvdHI+PC9UQUJMRT4NCjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjExNiIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+DQo8dHI+DQogIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCiAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxici8+DQogICAgPGI+IFF1aWNrIENvbW1hbmRzIDwvYj48L2Rpdj4NCiAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4NCiAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+DQogICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iY21kIj4NCiAgICAgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KICAgICAgICAgPFNFTEVDVCBOQU1FPSJjbWQiPg0KICAgICAgICAgPE9QVElPTiBWQUxVRT0iIyI+IFtGaWxlIE1hbmlwdWxhdGlvbl0NCiAgICAgICAgIDxPUFRJT04gVkFMVUU9IiI+ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgPE9QVElPTiBWQUxVRT0ibHNhdHRyIC12YSI+TGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0NCiAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiPkZpbmQgc3VpZCBmaWxlcw0KICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIj5GaW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXJlY3RvcnkNCiAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyI+RmluZCBzZ2lkIGZpbGVzDQogICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMiPkZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0ibHMgLWxpYSI+TGlzdCB5b3UgY3VycmVudCBkaXJlY3RvcnkncyBmaWxlcywgZm9sZGVycywgJiBwZXJtaXNzaW9ucw0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwIj5GaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzDQogICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAuIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAiPkZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMgaW4gY3VycmVudCBkaXJlY3RvcnkNCiAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC8gLXR5cGUgZiAtbmFtZSAiY29uZmlnKiI+RmluZCBjb25maWcqIGZpbGVzDQogICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAuIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiPkZpbmQgY29uZmlnKiBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMiAtbHMiPkZpbmQgYWxsIHdyaXRhYmxlIGZpbGVzDQogICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAuIC10eXBlIGYgLXBlcm0gLTIgLWxzIj5GaW5kIGFsbCB3cml0YWJsZSBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLyAtcGVybSAtMiAtbHMiPkZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcw0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLiAtcGVybSAtMiAtbHMiPkZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIj5GaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcw0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIj5GaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyZWN0b3J5DQogICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIj5GaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMNCiAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiPkZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyZWN0b3J5DQogICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSI+RmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcw0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiPkZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5teXNxbF9oaXN0b3J5Ij5GaW5kIGFsbCAubXlzcWxfaGlzdG9yeSBmaWxlcw0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAuIC10eXBlIGYgLW5hbWUgLm15c3FsX2hpc3RvcnkiPkZpbmQgLm15c3FsX2hpc3RvcnkgZmlsZXMgaW4gY3VycmVudCBkaXJlY3RvcnkNCiAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiPkZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcw0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZmluZCAuIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIj5GaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iY2F0IC92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIj5HZXQgY3BhbmVsIGxvZ3MNCiAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IiI+ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICA8T1BUSU9OIFZBTFVFPSIjIj4gW0RpcmVjdG9yeSBNYWxpcHVsYXRpb25dDQogICAgICAgIDxPUFRJT04gVkFMVUU9IiI+ICAgICAgICAgICAgICAgICAgDQogICAgICAgIDxPUFRJT04gVkFMVUU9InB3ZCI+TGlzdCB5b3VyIGN1cnJlbnQgZGlyZWN0b3J5DQogICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgL2V0Yy8gLXR5cGUgZiAtcGVybSAtbyt3IDI+IC9kZXYvbnVsbCI+SXMgL2V0Yy8gd3JpdGFibGU/DQogICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgLyAgLXR5cGUgZCAtcGVybSAtMiAtbHMiPkZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzDQo8T1BUSU9OIFZBTFVFPSJmaW5kIC4gLXR5cGUgZCAtcGVybSAtMiAtbHMiPkZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGluIGN1cnJlbnQgZGlyZWN0b3J5DQo8T1BUSU9OIFZBTFVFPSJmaW5kIC8gIC10eXBlIGQgLXBlcm0gLTIgLWxzIj5GaW5kIGFsbCB3cml0YWJsZSBkaXJlY3Rvcmllcw0KPE9QVElPTiBWQUxVRT0iZmluZCAuIC10eXBlIGQgLXBlcm0gLTIgLWxzIj5GaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBpbiBjdXJyZW50IGRpcmVjdG9yeQ0KPE9QVElPTiBWQUxVRT0iIj4gICAgICAgICAgICAgICAgICAgDQo8T1BUSU9OIFZBTFVFPSIjIj4gW01pc2NlbGxhbmVvdXMgQ29tbWFuZHNdDQo8T1BUSU9OIFZBTFVFPSIiPiAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgPE9QVElPTiBWQUxVRT0idGFyIC1jdmYgTkVXVEFSISEudGFyIC1jIDw/cGhwIHBhc3N0aHJ1KCdwd2QnKTsgPz4iPlRhciB5b3VyIGN1cnJlbnQgZGlyZWN0b3J5LiAoT25seSB3b3JrcyBpZiB0aGUgZGlyZWN0b3J5IGlzIHdyaXRhYmxlKQ0KICA8T1BUSU9OIFZBTFVFPSJ1bmFtZSAtYSI+S2VybmVsIHZlcnNpb24NCiAgICAgICAgICAgPE9QVElPTiBWQUxVRT0idyI+TG9nZ2VkIGluIHVzZXJzDQogICAgICAgICAgIDxPUFRJT04gVkFMVUU9Imxhc3Rsb2ciPkxhc3QgdXNlcnMgdG8gY29ubmVjdA0KICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2JpbiAtcGVybSAtNDAwMCAyPiAvZGV2L251bGwiPlN1aWQgYmlucw0KICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJjdXQgLWQ6IC1mMSwyLDMgL2V0Yy9wYXNzd2QgfCBncmVwIDo6Ij5Vc2VycyB3aXRob3V0IHBhc3N3b3Jkcw0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iY2F0IC9wcm9jL3ZlcnNpb24gL3Byb2MvY3B1aW5mbyI+Q3B1SW5mbw0KICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Im5ldHN0YXQgLWF0dXAgfCBncmVwIElTVCI+T3BlbiBwb3J0cyAgICANCiAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IiMiPiBbQXBwbGljYXRpb24gVmVyaWZpY2F0aW9uXQ0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iIj4gICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ3aGljaCB3Z2V0IGN1cmwgdzNtIGx5bngiPkNoZWNrIEZvciBEb3dubG9hZGVycyAoV0dFVCwgZXQgY2V0ZXJhKQ0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0ibG9jYXRlIGdjYyI+Q2hlY2sgRm9yIEdDQw0KICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iIj4gICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgIDxPUFRJT04gVkFMVUU9IiMiPiBbTG9nIENsZWFuZXJzXQ0KICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIiPiAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0id2dldCBodHRwOi8vcGFja2V0c3Rvcm1zZWN1cml0eS5vcmcvVU5JWC9wZW5ldHJhdGlvbi9sb2ctd2lwZXJzL2xvZ2NsZWFuZXItMC4zLmMiPldpcGVsb2dzIChQYXJ0IDEpKFphcDMpDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImdjYyBsb2djbGVhbmVyLTAuMy5jIC1vIGxvZ2NsZWFuZXItMC4zIj5XaXBlbG9ncyAoUGFydCAyKShaYXAzKQ0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIuL2xvZ2NsZWFuZXItMC4zIDw/IGVjaG8gJF9TRVJWRVJbIlJFTU9URV9BRERSIl07ID8+Ij5XaXBlbG9ncyAoUGFydCAzKShaYXAzKQ0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJHb25lITw/IGlmKCRfUkVRVUVTVFsnY21kJ109PSJHb25lISIpIHsgaWYgKGZpbGVfZXhpc3RzKCJsb2djbGVhbmVyLTAuMy5jIikpIHsgdW5saW5rKCJsb2djbGVhbmVyLTAuMy5jIik7IH0gaWYgKGZpbGVfZXhpc3RzKCJsb2djbGVhbmVyLTAuMyIpKSB7IHVubGluaygibG9nY2xlYW5lci0wLjMiKTsgfSB9ID8+Ij5SZW1vdmUgQWxsIFphcDMgVHJhY2VzDQogICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iIj4gIA0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ3Z2V0IGh0dHA6Ly93d3cucGFja2V0c3Rvcm1zZWN1cml0eS5vcmcvVU5JWC9wZW5ldHJhdGlvbi9sb2ctd2lwZXJzL3ZhbmlzaC5jIj5XaXBlbG9ncyAoUGFydCAxKShWYW5pc2gpDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImdjYyB2YW5pc2guYyAtbyB2YW5pc2giPldpcGVsb2dzIChQYXJ0IDIpKFZhbmlzaCkNCiAgICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Ii4vdmFuaXNoIDw/IGVjaG8gZXhlYygnd2hvYW1pJyk7ID8+IDw/IGVjaG8gJF9TRVJWRVJbIlJFTU9URV9BRERSIl07ID8+IDw/IGVjaG8gZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pOyA/PiI+V2lwZWxvZ3MgKFBhcnQgMykoVmFuaXNoKQ0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJHb25lISE8PyBpZigkX1JFUVVFU1RbJ2NtZCddPT0iR29uZSEhIikgeyBpZiAoZmlsZV9leGlzdHMoInZhbmlzaC5jIikpIHsgdW5saW5rKCJ2YW5pc2guYyIpOyB9IGlmIChmaWxlX2V4aXN0cygidmFuaXNoIikpIHsgdW5saW5rKCJ2YW5pc2giKTsgfSB9ID8+Ij5SZW1vdmUgQWxsIFZhbmlzaCBUcmFjZXMNCiAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIiPiANCiAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIjIj4gW1Jvb3QgRXhwbG9pdHNdDQogICAgICAgICAgIDxPUFRJT04gVkFMVUU9IiI+IA0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ3Z2V0IGh0dHA6Ly93d3cuc3luc3RhLnRlbXBsYXRlei5vcmcvMS50eHQiPkxpbnV4IEtlcm5lbCAyLjYuMTMgLSAyLjYuMTcuNCBMb2NhbCBSb290IEV4cGxvaXQgKFBhcnQgMSkNCiAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJtdiAxLnR4dCBleHBsb2l0LmMiPkxpbnV4IEtlcm5lbCAyLjYuMTMgLSAyLjYuMTcuNCBMb2NhbCBSb290IEV4cGxvaXQgKFBhcnQgMikNCiAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJnY2MgZXhwbG9pdC5jIC1vIGV4cGxvaXQiPkxpbnV4IEtlcm5lbCAyLjYuMTMgLSAyLjYuMTcuNCBMb2NhbCBSb290IEV4cGxvaXQgKFBhcnQgMykNCiAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIuL2V4cGxvaXQiPkxpbnV4IEtlcm5lbCAyLjYuMTMgLSAyLjYuMTcuNCBMb2NhbCBSb290IEV4cGxvaXQgKFBhcnQgNCkNCiAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJHb25lISEhPD8gaWYoJF9SRVFVRVNUWydjbWQnXT09IkdvbmUhISEiKSB7IGlmIChmaWxlX2V4aXN0cygiZXhwbG9pdC5jIikpIHsgdW5saW5rKCJleHBsb2l0LmMiKTsgfSBpZiAoZmlsZV9leGlzdHMoIjEudHh0IikpIHsgdW5saW5rKCIxLnR4dCIpOyB9IGlmIChmaWxlX2V4aXN0cygiZXhwbG9pdCIpKSB7IHVubGluaygiZXhwbG9pdCIpOyB9IH0gPz4iPlJlbW92ZSBBbGwgRXhwbG9pdCBUcmFjZXMNCiAgICAgICAgICAgICAgICAgICAgPC9TRUxFQ1Q+DQogICAgICAgIA0KICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iY21kX3R4dCIgdmFsdWU9IjEiPg0KICAgICAgICAmbmJzcDsNCiAgICAgICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj48L2Rpdj4NCiAgICA8L2Zvcm0+DQogICAgPC90ZD4NCiAgPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPg0KICA8Y2VudGVyPjxici8+PGI+IEtlcm5lbCBJbmZvcm1hdGlvbiA8L2I+DQo8Zm9ybSBhY3Rpb249aHR0cDovL2dvb2dsZS5jb20vc2VhcmNoIG5hbWU9Zj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jbGllbnQgdmFsdWU9ImZpcmVmb3gtYSI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cmxzIHZhbHVlPSJvcmcubW96aWxsYTplbi1VUzpvZmZpY2lhbF9zIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1obCB2YWx1ZT1lbj48aW5wdXQgaWQ9c2YgbWF4TGVuZ3RoPTI1NiBuYW1lPXEgdmFsdWU9Ijw/cGhwIGVjaG8gd29yZHdyYXAocGhwX3VuYW1lKCkpOyA/PiIgc2l6ZT04MD4NCiZuYnNwOw0KPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJTZWFyY2giIG5hbWU9YnRuRz48L2Zvcm0+DQo8L2NlbnRlcj4NCiAgICA8L3RkPg0KPC90cj48L1RBQkxFPg0KPGJyPg0KPFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxMTYiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPg0KPHRyPg0KICA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSI4MyIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQogICAgPGRpdiBhbGlnbj0iY2VudGVyIj48c3Ryb25nPlBIUCBTYWZlLU1vZGUgQnlwYXNzIChSZWFkIEZpbGVzKSAgICA8L3N0cm9uZz48L2Rpdj4NCiAgICA8YnI+DQogICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+DQogICAgICBGaWxlOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZSI+IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZWFkIEZpbGUiPjxicj48YnI+IGVnOiAvZXRjL3Bhc3N3ZDxicj4NCiAgICAgIDw/cGhwDQogICAgICBmdW5jdGlvbiByc2dfcmVhZCgpDQogICAgeyAgICANCiAgICAkdGVzdD0iIjsNCiAgICAkdGVtcD10ZW1wbmFtKCR0ZXN0LCAiY3giKTsNCiAgICAkZmlsZT0kX1JFUVVFU1RbJ2ZpbGUnXTsgICAgDQogICAgJGdldD1odG1sc3BlY2lhbGNoYXJzKCRmaWxlKTsNCiAgICBlY2hvICI8L2JyPlRyeWluZyBUbyBHZXQgRmlsZSA8Zm9udCBjb2xvcj0jMDAwMDk5PjxiPiRnZXQ8L2I+PC9mb250Pjxicj4iOw0KICAgIGlmKGNvcHkoImNvbXByZXNzLnpsaWI6Ly8iLiRmaWxlLCAkdGVtcCkpew0KICAgICRmaWNoaWVyID0gZm9wZW4oJHRlbXAsICJyIik7DQogICAgJGFjdGlvbiA9IGZyZWFkKCRmaWNoaWVyLCBmaWxlc2l6ZSgkdGVtcCkpOw0KICAgIGZjbG9zZSgkZmljaGllcik7DQogICAgJHNvdXJjZT1odG1sc3BlY2lhbGNoYXJzKCRhY3Rpb24pOw0KDQoNCiAgICBlY2hvICI8ZGl2IGNsYXNzPVwic2hlbGxcIj48L2JyPjxiPlJlYWRpbmcgJGdldDo8L2I+PGJyPjxicj48dGV4dGFyZWEgcm93cz0xMCBjb2xzPTUwPiRzb3VyY2U8L3RleHRhcmVhPjxicj4iOw0KICAgIHVubGluaygkdGVtcCk7DQogICAgfSBlbHNlIHsNCiAgICBlY2hvKCI8L2JyPjxGT05UIENPTE9SPVwiUkVEXCI+PENFTlRFUj5Tb3JyeS4uLiBGaWxlDQogICAgPEI+Ii5odG1sc3BlY2lhbGNoYXJzKCRmaWxlKS4iPC9CPiBkb3Nlbid0IGV4aXN0cyBvciB5b3UgZG9uJ3QgaGF2ZQ0KICAgIGFjY2Vzcy48L0NFTlRFUj48L0ZPTlQ+Iik7DQogICAgICAgICAgICB9DQogICAgZWNobyAiPC9kaXY+IjsNCiAgICB9DQogICAgDQogICAgaWYoaXNzZXQoJF9SRVFVRVNUWydmaWxlJ10pKQ0Kew0KcnNnX3JlYWQoKTsNCn0NCiAgICANCiAgICA/Pg0KICAgIA0KICAgIDw/DQogICAgDQogICAgZnVuY3Rpb24gcnNnX2dsb2IoKQ0Kew0KJGNoZW1pbj0kX1JFUVVFU1RbJ2RpcmVjdG9yeSddOw0KJGZpbGVzID0gZ2xvYigiJGNoZW1pbioiKTsNCmVjaG8gIjwvYnI+VHJ5aW5nIFRvIExpc3QgRm9sZGVyIDxmb250IGNvbG9yPSMwMDAwOTk+PGI+JGNoZW1pbjwvYj48L2ZvbnQ+PGJyPiI7DQpmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGVuYW1lKSB7DQogICAgZWNobyAiPHByZT4iOw0KICAgZWNobyAiJGZpbGVuYW1lXG4iOw0KICAgZWNobyAiPC9wcmU+IjsNCn0NCn0NCg0KaWYoaXNzZXQoJF9SRVFVRVNUWydkaXJlY3RvcnknXSkpDQp7DQpyc2dfZ2xvYigpOw0KfQ0KDQo/Pg0KDQogICAgICAgICAgPGJyPg0KICAgICAgPC9kaXY+DQogICAgPC9mb3JtPg0KICAgIDwvdGQ+DQogIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCiAgIDxjZW50ZXI+DQogICAgIDxzdHJvbmc+UEhQIFNhZmUtTW9kZSBCeXBhc3MgKExpc3QgRGlyZWN0b3JpZXMpPC9zdHJvbmc+OiAgICAgDQogICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD0icG9zdCI+DQogICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxicj4NCiAgICAgIERpcjogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpcmVjdG9yeSI+IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJMaXN0IERpcmVjdG9yeSI+PGJyPjxicj4gZWc6IC9ldGMvPGJyPg0KDQogICAgPC9mb3JtPjwvY2VudGVyPg0KICAgIDwvdGQ+DQo8L3RyPjwvVEFCTEU+DQo8YnI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4NCjx0cj4NCiA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCiAgIDxiPlNlYXJjaDwvYj4NCiAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJzZWFyY2giPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9IjI5IiB2YWx1ZT0iKC4qKSI+Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFyY2hfbmFtZV9yZWdleHAiIHZhbHVlPSIxIiAgY2hlY2tlZD4gLSByZWdleHAmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+PC9mb3JtPjwvY2VudGVyPjwvcD48L3RkPg0KIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPg0KICAgPGI+VXBsb2FkPC9iPg0KICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBFTkNUWVBFPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9InVwbG9hZCI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZGZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9ybSIgdmFsdWU9IjEiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iVXBsb2FkIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8YnI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQogIDxiPjxzdHJvbmc+Q3JlYXRlIERpcmVjdG9yeQ0KICA8L3N0cm9uZz4NCiAgPHA+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRQSFBfU0VMRjsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibWtkaXIiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtkaXIiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+PGJyPjw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+PC9jZW50ZXI+PC90ZD48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCiAgICA8c3Ryb25nPkNyZWF0ZSBGaWxlIDwvc3Ryb25nPg0KICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJta2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtmaWxlIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImZ0IiB2YWx1ZT0iZWRpdCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDcmVhdGUiPjxicj48P3BocCBlY2hvICR3ZHQ7ID8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPg0KDQo8YnI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQogIDxiPkVudGVyIERpcmVjdG9yeSA8L2I+DQogIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibHMiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJHbyI+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQogICAgPGI+QWNjZXNzIEZpbGU8L2I+DQogICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJnb2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT4NCjwvdGQ+DQo8L3RyPg0KPC9UQUJMRT4NCjxicj48VEFCTEUgd2lkdGg9IjEwMCUiIGhlaWdodD0xIGJvcmRlcj0xIGNlbGxQYWRkaW5nPTAgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgYmdDb2xvcj0jMzMzMzMzIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIj4NCiAgPHRyPjx0ZCB3aWR0aD0iOTkwIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48cCBhbGlnbj0iY2VudGVyIj48Yj4tLVsgPD8gZWNobygiJHNodmVyIik7ID8+IF0tLTxicj4tLVsgUGFnZSBnZW5lcmF0aW9uIHRpbWU6IDw/cGhwIGVjaG8gcm91bmQoZ2V0bWljcm90aW1lKCktc3RhcnR0aW1lLDQpOyA/PiBdLS08L3A+PC90ZD48L3RyPjwvdGFibGU+DQo8YnIvPjwvYm9keT48L2h0bWw+PD9waHAgY2hkaXIoJGxhc3RkaXIpOyBjOTlzaGV4aXQoKTs=