YQ0NCgAAAABGGnxj/6YBAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABzAggAAGQAWgBkAWQCbAFtAloCAQBkAWQDbANaA2QBZANsBFoEZAFkA2wFWgVkAWQDbAZaBmQBZANsB1oHZAFkA2wIWghkAWQDbAlaCWQBZANsCloKZAFkA2wLWgtkAWQDbAxaDGQBZANsDVoNZAFkA2wOWg5kAWQDbA9aD2QBZANsEFoQZAFkA2wRWhFkAWQDbBJaEmQBZANsE1oUZAFkA2wVWhVkAWQDbBZaFmQBZANsF1oXZAFkA2wYWhhkAWQDbBlaGWQBZANsGloaZAFkA2wbWhtkAWQEbA5tHFocAQB6DGQBZANsHVodVwBuHAQAZR6QAXkEAQABAAEAZAFkA2wfWh1ZAG4CMAB6CGUgAQBXAG4YBABlIZABeSYBAAEAAQBlIlogWQBuAjAAZAFkBWwjbSRaJAEAZAFkBmwlbSZaJm0nWidtKFooAQBkAWQHbARtKVopAQB6HGQBZAhsBG0qWiptK1orbSxaLAEAZAlaLVcAbhgEAGUekAF5iAEAAQABAGQKWi1ZAG4CMABkAWQLbARtLlovAQBkAWQMbDBtMVoxbTJaMgEAehZkAWQDbDNtNFo1AQBlNWo2AQBXAG4YBABlHpABedQBAAEAAQBkA1o1WQBuAjAAZA1kDmw3bThaOAEAZAFkD2wjbTlaOQEAZAFkEGwjbTpaOgEAZTtkEYMBAQBlO2QSgwEBAGU7ZBODAQEAZTtkFIMBAQBlPFo9ZBVlA2o+BAADAGsAkAJyOGQWawCQAnJEbgQBAG4IZT9kF4MBggFlJGpAkAJyVGQDWkFkA1pCZANaQ2QDWkRkA1pFZANaRmQDWkdkA1pIZANaSWQDWkpkA1pLZANaTGQDWk1kA1pOZANaT2QDWlBkA1pRZANaUmQDWlNHAGQYZBmEAGQZZVSDA1pVZBpkG4QAWlZpAFpXZBxkHYQAWlhkHmQfhABaWWQgZCGEAFpaZCJkI4QAWltkJGQlhABaXGQmZCeEAFpdZChkKYQAWl5kKmQrhAAEAFpfWmBkLGQthABaYWcAZC6iAVpiRwBkL2QwhABkMGVjgwNaZEcAZDFkMoQAZDJlZIMDWmVHAGQzZDSEAGQ0ZWWDA1pmRwBkNWQ2hABkNmVkgwNaZ0cAZDdkOIQAZDhlZIMDWmhpAFppZDlqamUDaj6OAFprZDpabGQ7Wm1kDVpuZAFab2Q8WnBkPWQ+hABacWQ/ZECEAFpyZwBmAWRBZEKEAVpzZENkRIQAWnRkRWRGhABadWUHoHZkR6EBWndlB6B2ZEihAVp4ZXVaeWRJZEqEAFp6ZEtkTIQAWntle1p8ZE1kToQAWn1kT2RQhABafmTrZFFkUoQBWn9kU2RUhABagEcAZFVkVoQAZFaDAlqBRwBkV2RYhABkWGWBgwNagkcAZFlkWoQAZFqDAlqDRwBkW2RchABkXGWEgwNahUcAZF1kXoQAZF6DAlqGZYZah0cAZF9kYIQAZGBlP4MDWohHAGRhZGKEAGRigwJaiWRjZGSEAFqKZGVkZoQAWotkZ2RohABajGRpZGqEAFqNZGtkbIQAWo5kbWRuhABaj2TsZG9kcIQBWpBHAGRxZHKEAGRygwJakWVxZZJlkYMCAQBHAGRzZHSEAGR0ZZGDA1qTRwBkdWR2hABkdmWTgwNalGWUoJWhAAEARwBkd2R4hABkeGWRgwNalmWWgwBal0cAZHlkeoQAZHplhIMDWphHAGR7ZHyEAGR8ZZiDA1qZRwBkfWR+hABkfmWTgwNammVxZQpqm2WagwIBAEcAZH9kgIQAZIBlloMDWpxHAGSBZIKEAGSCZZSDA1qdRwBkg2SEhABkhGWagwNanmVYZIVpAGSGjQIBAGSHZIiEAFqfZO1kiWSKhAFaoGTuZItkjIQBWqFln2UKaptloYMCAQBk72SNZI6EAVqiZZ9lkmWigwIBAGSPZJCEAFqjZPBkkWSShAFapGSTZJSEAFqlRwBklWSWhABkloMCWqZkl2SYhABap2SZZJqEAFqoZJtknIQAWqlknWSehABaqmWfZQ5qq2WkgwIBAGWsZTVkn4MCkAZyEmWfZTVqrWWkgwIBAGVYZIVpAGSgjQIBAGVYZIVpAGShjQIBAGSiZKOEAFquZKRkpYQAWq9kpmSnhABasGSoZKmEAFqxZPFkqmSrhAFasmSsZK2EAFqzZa5lDmqrZbODAgEAZa5lCmqbZbODAgEAZaxlNWSfgwKQBnKMZa5lNWqtZbODAgEAZK5kr4QAWrRlrmWSZbSDAgEAZLBksYQAWrVksmSzhABatmkAZgFktGS1hAFat2S2ZLeEAFq4ZLhkuYQAWrlkumS7hABaumS8ZL2EAFq7ZQegdmS+oQFqvFq9ZQegdmS/ZQdqvmUHar9CAKECarxawEcAZMBkwYQAZMGDAlrBZMJkw4QAWsJkxGTFhABaw0cAZMZkx4QAZMeDAlrERwBkyGTJhABkyWXEgwNaxUcAZMpky4QAZMtlxIMDWsZlxGXFZcZkzJwDWsdkzWTOhABayEcAZM9k0IQAZNBlyYMDWspk0WTShABay0cAZNNk1IQAZNRlOmrMas2DA1rNZNVk1oQAWs5k12TYhABaz2TZZNqEAFrQZNtk3IQAWtFk3WTehABa0mTfZOCEAFrTZQtq1GThZVVkCWTijQMBAGTjZOSEAFrVZdVl1oMAZgFk5WTmhAGDAVrXZdVk52TohACDAVrYRwBk6WTqhABk6mXZgwNa2mQDUwAp8mFaAgAAClBhY2thZ2UgcmVzb3VyY2UgQVBJCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIHJlc291cmNlIGlzIGEgbG9naWNhbCBmaWxlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlLCBvciBhIGxvZ2ljYWwKc3ViZGlyZWN0b3J5IHRoZXJlb2YuICBUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgZXhwZWN0cyByZXNvdXJjZSBuYW1lcwp0byBoYXZlIHRoZWlyIHBhdGggcGFydHMgc2VwYXJhdGVkIHdpdGggYGAvYGAsICpub3QqIHdoYXRldmVyIHRoZSBsb2NhbApwYXRoIHNlcGFyYXRvciBpcy4gIERvIG5vdCB1c2Ugb3MucGF0aCBvcGVyYXRpb25zIHRvIG1hbmlwdWxhdGUgcmVzb3VyY2UKbmFtZXMgYmVpbmcgcGFzc2VkIGludG8gdGhlIEFQSS4KClRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggbm9ybWFsIGZpbGVzeXN0ZW0gcGFja2FnZXMsCi5lZ2cgZmlsZXMsIGFuZCB1bnBhY2tlZCAuZWdnIGZpbGVzLiAgSXQgY2FuIGFsc28gd29yayBpbiBhIGxpbWl0ZWQgd2F5IHdpdGgKLnppcCBmaWxlcyBhbmQgd2l0aCBjdXN0b20gUEVQIDMwMiBsb2FkZXJzIHRoYXQgc3VwcG9ydCB0aGUgYGBnZXRfZGF0YSgpYGAKbWV0aG9kLgrpAAAAACkB2g9hYnNvbHV0ZV9pbXBvcnROKQHaDGdldF9pbXBvcnRlcikB2gNzaXgpA9oGdXJsbGli2gNtYXDaBmZpbHRlcikB2gV1dGltZSkD2gVta2RpctoGcmVuYW1l2gZ1bmxpbmtURikB2gRvcGVuKQLaBWlzZGly2gVzcGxpdOkBAAAAKQHaCnB5MzFjb21wYXQpAdoMcGxhdGZvcm1kaXJzKQHaCXBhY2thZ2luZ3odcGlwLl92ZW5kb3IucGFja2FnaW5nLnZlcnNpb256IHBpcC5fdmVuZG9yLnBhY2thZ2luZy5zcGVjaWZpZXJzeiJwaXAuX3ZlbmRvci5wYWNrYWdpbmcucmVxdWlyZW1lbnRzeh1waXAuX3ZlbmRvci5wYWNrYWdpbmcubWFya2VycykC6QMAAAByAQAAACkCchMAAADpBQAAAHofUHl0aG9uIDMuNSBvciBsYXRlciBpcyByZXF1aXJlZGMAAAAAAAAAAAAAAAAAAAAAAQAAAEAAAABzEAAAAGUAWgFkAFoCZAFaA2QCUwApA9oNUEVQNDQwV2FybmluZ3phCiAgICBVc2VkIHdoZW4gdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCBhIHZlcnNpb24gb3Igc3BlY2lmaWVyIG5vdCBjb21wbHlpbmcgd2l0aAogICAgUEVQIDQ0MC4KICAgIE6pBNoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX6kAchsAAAByGwAAAPpfL2hvbWUvaG5pL1RvcG1ldGFsU2UtRFBTL3ZlbnYvbGliL3B5dGhvbjMuOS9zaXRlLXBhY2thZ2VzL3BpcC9fdmVuZG9yL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHlyFQAAAHgAAABzAgAAAAgBchUAAABjAQAAAAAAAAAAAAAAAQAAAAgAAABDAAAAczYAAAB6DnQAagGgAnwAoQFXAFMABAB0AGoBagN5MAEAAQABAHQAagGgBHwAoQEGAFkAUwAwAGQAUwCpAU4pBXISAAAA2gd2ZXJzaW9u2gdWZXJzaW9u2g5JbnZhbGlkVmVyc2lvbtoNTGVnYWN5VmVyc2lvbikB2gF2chsAAAByGwAAAHIcAAAA2g1wYXJzZV92ZXJzaW9ufwAAAHMIAAAA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IGFjY29yZGluZ2x5LgogICAgTtoGZGFyd2luegxtYWNvc3gtJXMtJXPaAS7pAgAAAHITAAAAKQnaEmdldF9idWlsZF9wbGF0Zm9ybdoSbWFjb3NWZXJzaW9uU3RyaW5n2gVtYXRjaNoDc3lz2ghwbGF0Zm9ybdoEam9pbtoMX21hY29zeF92ZXJz2gVncm91cNoKVmFsdWVFcnJvcikC2gRwbGF02gFtchsAAAByGwAAAHIcAAAA2hZnZXRfc3VwcG9ydGVkX3BsYXRmb3JtsQAAAHMQAAAAAA0GAQoBEgECASYBDAIGAXJSAAAAKUfaB3JlcXVpcmXaCnJ1bl9zY3JpcHTaDGdldF9wcm92aWRlctoQZ2V0X2Rpc3RyaWJ1dGlvbtoQbG9hZF9lbnRyeV9wb2ludNoNZ2V0X2VudHJ5X21hcNoOZ2V0X2VudHJ5X2luZm/aEWl0ZXJfZW50cnlfcG9pbnRz2g9yZXNvdXJjZV9zdHJpbmfaD3Jlc291cmNlX3N0cmVhbdoRcmVzb3VyY2VfZmlsZW5hbWXaEHJlc291cmNlX2xpc3RkaXLaD3Jlc291cmNlX2V4aXN0c9oOcmVzb3VyY2VfaXNkaXLaEWRlY2xhcmVfbmFtZXNwYWNl2gt3b3JraW5nX3NldNoXYWRkX2FjdGl2YXRpb25fbGlzdGVuZXLaEmZpbmRfZGlzdHJpYnV0aW9uc9oTc2V0X2V4dHJhY3Rpb25fcGF0aNoRY2xlYW51cF9yZXNvdXJjZXPaEWdldF9kZWZhdWx0X2NhY2hl2gtFbnZpcm9ubWVudNoKV29ya2luZ1NldNoPUmVzb3VyY2VNYW5hZ2Vy2gxEaXN0cmlidXRpb27aC1JlcXVpcmVtZW502gpFbnRyeVBvaW502g9SZXNvbHV0aW9uRXJyb3LaD1ZlcnNpb25Db25mbGljdNoURGlzdHJpYnV0aW9uTm90Rm91bmTaDFVua25vd25FeHRyYdoPRXh0cmFjdGlvbkVycm9ychUAAADaEnBhcnNlX3JlcXVpcmVtZW50c3IjAAAA2glzYWZlX25hbWXaDHNhZmVfdmVyc2lvbtoMZ2V0X3BsYXRmb3Jt2hRjb21wYXRpYmxlX3BsYXRmb3Jtc9oLeWllbGRfbGluZXPaDnNwbGl0X3NlY3Rpb25z2gpzYWZlX2V4dHJh2gt0b19maWxlbmFtZdoOaW52YWxpZF9tYXJrZXLaD2V2YWx1YXRlX21hcmtlctoQZW5zdXJlX2RpcmVjdG9yedoObm9ybWFsaXplX3BhdGjaCEVHR19ESVNU2gtCSU5BUllfRElTVNoLU09VUkNFX0RJU1TaDUNIRUNLT1VUX0RJU1TaDERFVkVMT1BfRElTVNoRSU1ldGFkYXRhUHJvdmlkZXLaEUlSZXNvdXJjZVByb3ZpZGVy2gxGaWxlTWV0YWRhdGHaDFBhdGhNZXRhZGF0YdoLRWdnTWV0YWRhdGHaDUVtcHR5UHJvdmlkZXLaDmVtcHR5X3Byb3ZpZGVy2gxOdWxsUHJvdmlkZXLaC0VnZ1Byb3ZpZGVy2g9EZWZhdWx0UHJvdmlkZXLaC1ppcFByb3ZpZGVy2g9yZWdpc3Rlcl9maW5kZXLaGnJlZ2lzdGVyX25hbWVzcGFjZV9oYW5kbGVy2hRyZWdpc3Rlcl9sb2FkZXJfdHlwZdoYZml4dXBfbmFtZXNwYWNlX3BhY2thZ2VzcgMAAADaHlBrZ1Jlc291cmNlc0RlcHJlY2F0aW9uV2FybmluZ9oIcnVuX21haW7aFkF2YWlsYWJsZURpc3RyaWJ1dGlvbnNjAAAAAAAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJuAAAAei5BYnN0cmFjdCBiYXNlIGZvciBkZXBlbmRlbmN5IHJlc29sdXRpb24gZXJyb3JzYwEAAAAAAAAAAAAAAAEAAAADAAAAQwAAAHMSAAAAfABqAGoBdAJ8AGoDgwEXAFMAch0AAAApBNoJX19jbGFzc19fchcAAADaBHJlcHJyQQAAAKkB2gRzZWxmchsAAAByGwAAAHIcAAAA2ghfX3JlcHJfX/4AAABzAgAAAAABehhSZXNvbHV0aW9uRXJyb3IuX19yZXByX19OKQVyFwAAAHIYAAAAchkAAAByGgAAAHKbAAAAchsAAAByGwAAAHIbAAAAchwAAABybgAAAPsAAABzBAAAAAgBBAJybgAAAGMAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABzPAAAAGUAWgFkAFoCZAFaA2QCWgRlBWQDZASEAIMBWgZlBWQFZAaEAIMBWgdkB2QIhABaCGQJZAqEAFoJZAtTACkM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cm92aWRlcyBhY2Nlc3MgdG8gcGFja2FnZSByZXNvdXJjZXNjAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6ZFJldHVybiBhIHRydWUgZmlsZXN5c3RlbSBwYXRoIGZvciBgcmVzb3VyY2VfbmFtZWAKCiAgICAgICAgYG1hbmFnZXJgIG11c3QgYmUgYW4gYGBJUmVzb3VyY2VNYW5hZ2VyYGBOchsAAACpAtoHbWFuYWdlctoNcmVzb3VyY2VfbmFtZXIbAAAAchsAAAByHAAAANoVZ2V0X3Jlc291cmNlX2ZpbGVuYW1lEAIAAHMCAAAAAAF6J0lSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9maWxlbmFtZWMCAAAAAAAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnppUmV0dXJuIGEgcmVhZGFibGUgZmlsZS1saWtlIG9iamVjdCBmb3IgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIbAAAAcvUAAAByGwAAAHIbAAAAchwAAADaE2dldF9yZXNvdXJjZV9zdHJlYW0VAgAAcwIAAAAAAXolSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX3N0cmVhbWMCAAAAAAAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnptUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yGwAAAHL1AAAAchsAAAByGwAAAHIcAAAA2hNnZXRfcmVzb3VyY2Vfc3RyaW5nGgIAAHMCAAAAAAF6JUlSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9zdHJpbmdjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6LERvZXMgdGhlIHBhY2thZ2UgY29udGFpbiB0aGUgbmFtZWQgcmVzb3VyY2U/TnIbAAAAqQFy9wAAAHIbAAAAchsAAAByHAAAANoMaGFzX3Jlc291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IHRvIGFsbCBkaXN0cmlidXRpb25zIGF2YWlsYWJsZSB3aXRoaW4gYW55CiAgICAgICAgZW50cnkgb3IgZGlzdHJpYnV0aW9uIGluIHRoZSB3b3JraW5nIHNldC4gIGBpbnN0YWxsZXJgLCBpZiBzdXBwbGllZCwKICAgICAgICB3aWxsIGJlIGludm9rZWQgd2l0aCBlYWNoIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIG1ldCBieSBhbgogICAgICAgIGFscmVhZHktaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbjsgaXQgc2hvdWxkIHJldHVybiBhIGBgRGlzdHJpYnV0aW9uYGAgb3IKICAgICAgICBgYE5vbmVgYC4KCiAgICAgICAgVW5sZXNzIGByZXBsYWNlX2NvbmZsaWN0aW5nPVRydWVgLCByYWlzZXMgYSBWZXJzaW9uQ29uZmxpY3QgZXhjZXB0aW9uCiAgICAgICAgaWYKICAgICAgICBhbnkgcmVxdWlyZW1lbnRzIGFyZSBmb3VuZCBvbiB0aGUgcGF0aCB0aGF0IGhhdmUgdGhlIGNvcnJlY3QgbmFtZSBidXQKICAgICAgICB0aGUgd3JvbmcgdmVyc2lvbi4gIE90aGVyd2lzZSwgaWYgYW4gYGluc3RhbGxlcmAgaXMgc3VwcGxpZWQgaXQgd2lsbCBiZQogICAgICAgIGludm9rZWQgdG8gb2J0YWluIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlIHJlcXVpcmVtZW50IGFuZCBhY3RpdmF0ZQogICAgICAgIGl0LgoKICAgICAgICBgZXh0cmFzYCBpcyBhIGxpc3Qgb2YgdGhlIGV4dHJhcyB0byBiZSB1c2VkIHdpdGggdGhlc2UgcmVxdWlyZW1lbnRzLgogICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZXh0cmEgcmVxdWlyZW1lbnRzIG1heSBsb29rIGxpa2UgYG15X3JlcTsKICAgICAgICBleHRyYSA9ICJteV9leHRyYSJgLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgYmUgaW50ZXJwcmV0ZWQgYXMgYSBwdXJlbHkKICAgICAgICBvcHRpb25hbCByZXF1aXJlbWVudC4gIEluc3RlYWQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBhc3NlcnQgdGhhdCB0aGVzZQogICAgICAgIHJlcXVpcmVtZW50cyBhcmUgdHJ1bHkgcmVxdWlyZWQuCiAgICAgICAgTnKsAAAAcgEAAAApAdoTcmVwbGFjZV9jb25mbGljdGluZ1QpF9oEbGlzdNoKX1JlcUV4dHJhc9oLY29sbGVjdGlvbnPaC2RlZmF1bHRkaWN02gNzZXTaA3BvcNoMbWFya2Vyc19wYXNzcswAAAByOwAAAHL/AAAAcmgAAABy/QAAAHJpAAAA2gpiZXN0X21hdGNocnAAAAByxQAAAHJvAAAAcqcAAAByGAEAANoGZXh0cmFz2gZleHRlbmRyDAEAANoMcHJvamVjdF9uYW1lKRJymgAAANoMcmVxdWlyZW1lbnRz2gNlbnbaCWluc3RhbGxlcnIjAQAAciwBAADaCXByb2Nlc3NlZNoEYmVzdNoLdG9fYWN0aXZhdGXaCnJlcV9leHRyYXNypgAAAHKfAAAAcp0AAAByCQEAAHKpAAAA2g1kZXBlbmRlbnRfcmVx2hBuZXdfcmVxdWlyZW1lbnRz2g9uZXdfcmVxdWlyZW1lbnRyGwAAAHIbAAAAchwAAAByCwEAAMsCAABzUAAAAAAbEgIEAgQBBAIGBAoCBgIKAQgCAgIMAQICDAEKAg4BFAEEAQgBCAEMBQgBCAEEAQYBAv4QBAgBDAEKAQoBCgIIARADFgEKAwgBEAEOAgoDehJXb3JraW5nU2V0LnJlc29sdmVjBQAAAAAAAAAAAAAADwAAAAwAAABDAAAAcxQBAAB0AHwBgwF9BXwFoAGhAAEAaQB9BmkAfQd8AmQBdQByNHQCfABqA4MBfQh8CHwBNwB9CG4IfAJ8ARcAfQh8AKAEZwChAX0JdAB0BXwJagZ8AIMCgwEBAHwFRABdoH0KfAF8ChkARABdkn0LfAugB6EAZwF9DHoSfAmgCHwMfAh8A6EDfQ1XAG5MBAB0CXnSAQB9DgEAejR8DnwGfAs8AHwEcrBXAFkAZAF9Dn4OcWZuDlcAWQBkAX0Ofg4BAHFaVwBZAGQBfQ5+DnFmZAF9Dn4OMAAwAHQAdAV8CWoGfA2DAoMBAQB8B6AKdAugDHwNoQGhAQEAAQBxWnFmcVp0AHwHgwF9B3wHoAGhAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXIkAQAA2gRzb3J0cmgAAABy/QAAAHKXAAAAcgYAAAByDAEAANoOYXNfcmVxdWlyZW1lbnRyCwEAAHJuAAAAciUAAAByJwAAAHIoAAAAKQ9ymgAAANoKcGx1Z2luX2VudtoIZnVsbF9lbnZyMQEAANoIZmFsbGJhY2vaD3BsdWdpbl9wcm9qZWN0c9oKZXJyb3Jf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AABzeAAAAGUAWgFkAFoCZAFaA2QCZQSDAGUFZgNkA2QEhAFaBmQFZAaEAFoHZAdkCIQAWghkGmQJZAqEAVoJZAtkDIQAWgpkDWQOhABaC2QbZBBkEYQBWgxkHGQSZBOEAVoNZBRkFYQAWg5kFmQXhABaD2QYZBmEAFoQZAJTACkdcmgAAAB6NVNlYXJjaGFibGUgc25hcHNob3Qgb2YgZGlzdHJpYnV0aW9ucyBvbiBhIHNlYXJjaCBwYXRoTmMEAAAAAAAAAAAAAAAEAAAAAwAAAEMAAABzIAAAAGkAfABfAHwCfABfAXwDfABfAnwAoAN8AaEBAQBkAVMAKQJhIQMAAFNuYXBzaG90IGRpc3RyaWJ1dGlvbnMgYXZhaWxhYmxlIG9uIGEgc2VhcmNoIHBhdGgKCiAgICAgICAgQW55IGRpc3RyaWJ1dGlvbnMgZm91bmQgb24gYHNlYXJjaF9wYXRoYCBhcmUgYWRkZWQgdG8gdGhlIGVudmlyb25tZW50LgogICAgICAgIGBzZWFyY2hfcGF0aGAgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgYGBzeXMucGF0aGBgIGl0ZW1zLiAgSWYgbm90CiAgICAgICAgc3VwcGxpZWQsIGBgc3lzLnBhdGhgYCBpcyB1c2VkLgoKICAgICAgICBgcGxhdGZvcm1gIGlzIGFuIG9wdGlvbmFsIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBwbGF0Zm9ybQogICAgICAgIHRoYXQgcGxhdGZvcm0tc3BlY2lmaWMgZGlzdHJpYnV0aW9ucyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aC4gIElmCiAgICAgICAgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHBsYXRmb3JtLiAgYHB5dGhvbmAgaXMgYW4KICAgICAgICBvcHRpb25hbCBzdHJpbmcgbmFtaW5nIHRoZSBkZXNpcmVkIHZlcnNpb24gb2YgUHl0aG9uIChlLmcuIGBgJzMuNidgYCk7CiAgICAgICAgaXQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdmVyc2lvbi4KCiAgICAgICAgWW91IG1heSBleHBsaWNpdGx5IHNldCBgcGxhdGZvcm1gIChhbmQvb3IgYHB5dGhvbmApIHRvIGBgTm9uZWBgIGlmIHlvdQogICAgICAgIHdpc2ggdG8gbWFwICphbGwqIGRpc3RyaWJ1dGlvbnMsIG5vdCBqdXN0IHRob3NlIGNvbXBhdGlibGUgd2l0aCB0aGUKICAgICAgICBydW5uaW5nIHBsYXRmb3JtIG9yIFB5dGhvbiB2ZXJzaW9uLgogICAgICAgIE4pBNoIX2Rpc3RtYXBySwAAANoGcHl0aG9u2gRzY2FuKQRymgAAANoLc2VhcmNoX3BhdGhySwAAAHJSAQAAchsAAAByGwAAAHIcAAAAcgMBAADCAwAAcwgAAAAAEwYBBgEGAXoURW52aXJvbm1lbnQuX19pbml0X19jAgAAAAAAAAAAAAAAAwAAAAMAAABDAAAAczIAAAB8AGoAZAF1AHAefAFqAWQBdQBwHnwBagF8AGoAawJ9AnwCbzB0AnwBagN8AGoDgwJTACkCeuVJcyBkaXN0cmlidXRpb24gYGRpc3RgIGFjY2VwdGFibGUgZm9yIHRoaXMgZW52aXJvbm1lbnQ/CgogICAgICAgIFRoZSBkaXN0cmlidXRpb24gbXVzdCBtYXRjaCB0aGUgcGxhdGZvcm0gYW5kIHB5dGhvbiB2ZXJzaW9uCiAgICAgICAgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCB3aGVuIHRoaXMgZW52aXJvbm1lbnQgd2FzIGNyZWF0ZWQsIG9yIEZhbHNlCiAgICAgICAgaXMgcmV0dXJuZWQuCiAgICAgICAgTikEclIBAADaCnB5X3ZlcnNpb25ydwAAAHJLAAAAKQNymgAAAHKdAAAA2glweV9jb21wYXRyGwAAAHIbAAAAchwAAADaB2Nhbl9hZGTaAwAAcwwAAAAACAoBCP8CAgr9AgV6E0Vudmlyb25tZW50LmNhbl9hZGRjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcxYAAAB8AGoAfAFqARkAoAJ8AaEBAQBkAVMAKQJ6IlJlbW92ZSBgZGlzdGAgZnJvbSB0aGUgZW52aXJvbm1lbnROKQNyUQEAAHI7AAAA2gZyZW1vdmVyEQEAAHIbAAAAchsAAAByHAAAAHJYAQAA6AMAAHMCAAAAAAJ6EkVudmlyb25tZW50LnJlbW92ZWMCAAAAAAAAAAAAAAAEAAAABQAAAEMAAABzNAAAAHwBZAF1AHIOdABqAX0BfAFEAF0cfQJ0AnwCgwFEAF0OfQN8AKADfAOhAQEAcR5xEmQBUwApAmFkAQAAU2NhbiBgc2VhcmNoX3BhdGhgIGZvciBkaXN0cmlidXRpb25zIHVzYWJsZSBpbiB0aGlzIGVudmlyb25tZW50CgogICAgICAgIEFueSBkaXN0cmlidXRpb25zIGZvdW5kIGFyZSBhZGRlZCB0byB0aGUgZW52aXJvbm1lbnQuCiAgICAgICAgYHNlYXJjaF9wYXRoYCBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBgYHN5cy5wYXRoYGAgaXRlbXMuICBJZiBub3QKICAgICAgICBzdXBwbGllZCwgYGBzeXMucGF0aGBgIGlzIHVzZWQuICBPbmx5IGRpc3RyaWJ1dGlvbnMgY29uZm9ybWluZyB0bwogICAgICAgIHRoZSBwbGF0Zm9ybS9weXRob24gdmVyc2lvbiBkZWZpbmVkIGF0IGluaXRpYWxpemF0aW9uIGFyZSBhZGRlZC4KICAgICAgICBOKQRySgAAAHLBAAAAcmQAAAByDAEAACkEcpoAAAByVAEAAHIaAQAAcp0AAAByGwAAAHIbAAAAchwAAAByUwEAAOwDAABzCgAAAAAICAEGAggBDAF6EEVudmlyb25tZW50LnNjYW5jAgAAAAAAAAAAAAAAAwAAAAQAAABDAAAAcxYAAAB8AaAAoQB9AnwAagGgAnwCZwChAlMAKQFhAQEAAFJldHVybiBhIG5ld2VzdC10by1vbGRlc3QgbGlzdCBvZiBkaXN0cmlidXRpb25zIGZvciBgcHJvamVjdF9uYW1lYAoKICAgICAgICBVc2VzIGNhc2UtaW5zZW5zaXRpdmUgYHByb2plY3RfbmFtZWAgY29tcGFyaXNvbiwgYXNzdW1pbmcgYWxsIHRoZQogICAgICAgIHByb2plY3QncyBkaXN0cmlidXRpb25zIHVzZSB0aGVpciBwcm9qZWN0J3MgbmFtZSBjb252ZXJ0ZWQgdG8gYWxsCiAgICAgICAgbG93ZXJjYXNlIGFzIHRoZWlyIGtleS4KCiAgICAgICAgKQPaBWxvd2VyclEBAAByzAAAACkDcpoAAAByLgEAANoQZGlzdHJpYnV0aW9uX2tleXIbAAAAchsAAAByHAAAANoLX19nZXRpdGVtX1/7AwAAcwQAAAAACAgBehdFbnZpcm9ubWVudC5fX2dldGl0ZW1fX2MCAAAAAAAAAAAAAAADAAAABAAAAEMAAABzTAAAAHwAoAB8AaEBckh8AaABoQBySHwAagKgA3wBagRnAKECfQJ8AXwCdgFySHwCoAV8AaEBAQB8AmoGdAegCGQBoQFkAmQDjQIBAGQEUwApBXpMQWRkIGBkaXN0YCBpZiB3ZSBgYGNhbl9hZGQoKWBgIGl0IGFuZCBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBhZGRlZAogICAgICAgINoHaGFzaGNtcFSpAnI7AAAA2gdyZXZlcnNlTikJclcBAADaC2hhc192ZXJzaW9uclEBAAByEAEAAHI7AAAAcsUAAAByOQEAANoIb3BlcmF0b3LaCmF0dHJnZXR0ZXIpA3KaAAAAcp0AAAByDwEAAHIbAAAAchsAAAByHAAAAHIMAQAABgQAAHMKAAAAAAMSARABCAEKAXoPRW52aXJvbm1lbnQuYWRkRmMFAAAAAAAAAAAAAAAGAAAACAAAAEMAAABzZAAAAHoOfAKgAHwBoQF9BVcAbhwEAHQBeSoBAAEAAQB8BHMiggBkAX0FWQBuAjAAfAVkAXUBcjh8BVMAfAB8AWoCGQBEAF0UfQV8BXwBdgByQnwFAgABAFMAcUJ8AKADfAF8A6ECUwApAmG4AgAARmluZCBkaXN0cmlidXRpb24gYmVzdCBtYXRjaGluZyBgcmVxYCBhbmQgdXNhYmxlIG9uIGB3b3JraW5nX3NldGAKCiAgICAgICAgVGhpcyBjYWxscyB0aGUgYGBmaW5kKHJlcSlgYCBtZXRob2Qgb2YgdGhlIGB3b3JraW5nX3NldGAgdG8gc2VlIGlmIGEKICAgICAgICBzdWl0YWJsZSBkaXN0cmlidXRpb24gaXMgYWxyZWFkeSBhY3RpdmUuICAoVGhpcyBtYXkgcmFpc2UKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGlmIGFuIHVuc3VpdGFibGUgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCBpcyBhbHJlYWR5CiAgICAgICAgYWN0aXZlIGluIHRoZSBzcGVjaWZpZWQgYHdvcmtpbmdfc2V0YC4pICBJZiBhIHN1aXRhYmxlIGRpc3RyaWJ1dGlvbgogICAgICAgIGlzbid0IGFjdGl2ZSwgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgbmV3ZXN0IGRpc3RyaWJ1dGlvbiBpbiB0aGUKICAgICAgICBlbnZpcm9ubWVudCB0aGF0IG1lZXRzIHRoZSBgYFJlcXVpcmVtZW50YGAgaW4gYHJlcWAuICBJZiBubyBzdWl0YWJsZQogICAgICAgIGRpc3RyaWJ1dGlvbiBpcyBmb3VuZCwgYW5kIGBpbnN0YWxsZXJgIGlzIHN1cHBsaWVkLCB0aGVuIHRoZSByZXN1bHQgb2YKICAgICAgICBjYWxsaW5nIHRoZSBlbnZpcm9ubWVudCdzIGBgb2J0YWluKHJlcSwgaW5zdGFsbGVyKWBgIG1ldGhvZCB3aWxsIGJlCiAgICAgICAgcmV0dXJuZWQuCiAgICAgICAgTikEcrIAAABybwAAAHI7AAAA2gZvYnRhaW4pBnKaAAAAcp8AAAByYgAAAHIxAQAAciMBAABynQAAAHIbAAAAchsAAAByHAAAAHIrAQAADwQAAHMYAAAAAA4CAQ4BDAEEAQIBCgEIAQQBDgEIAQoCehZFbnZpcm9ubWVudC5iZXN0X21hdGNoYwMAAAAAAAAAAAAAAAMAAAACAAAAQwAAAHMUAAAAfAJkAXUBchB8AnwBgwFTAGQBUwApAmHeAQAAT2J0YWluIGEgZGlzdHJpYnV0aW9uIG1hdGNoaW5nIGByZXF1aXJlbWVudGAgKGUuZy4gdmlhIGRvd25sb2FkKQoKICAgICAgICBPYnRhaW4gYSBkaXN0cm8gdGhhdCBtYXRjaGVzIHJlcXVpcmVtZW50IChlLmcuIHZpYSBkb3dubG9hZCkuICBJbiB0aGUKICAgICAgICBiYXNlIGBgRW52aXJvbm1lbnRgYCBjbGFzcywgdGhpcyByb3V0aW5lIGp1c3QgcmV0dXJucwogICAgICAgIGBgaW5zdGFsbGVyKHJlcXVpcmVtZW50KWBgLCB1bmxlc3MgYGluc3RhbGxlcmAgaXMgTm9uZSwgaW4gd2hpY2ggY2FzZQogICAgICAgIE5vbmUgaXMgcmV0dXJuZWQgaW5zdGVhZC4gIFRoaXMgbWV0aG9kIGlzIGEgaG9vayB0aGF0IGFsbG93cyBzdWJjbGFzc2Vz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aCBuYW1lIHBhcnRzICJ1bmRlciIgdGhlIGVnZydzIGV4dHJhY3Rpb24gbG9jYXRpb24uCgogICAgICAgIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSByZXNvdXJjZSBwcm92aWRlcnMgdGhhdCBuZWVkIHRvCiAgICAgICAgb2J0YWluIGFuIGV4dHJhY3Rpb24gbG9jYXRpb24sIGFuZCBvbmx5IGZvciBuYW1lcyB0aGV5IGludGVuZCB0bwogICAgICAgIGV4dHJhY3QsIGFzIGl0IHRyYWNrcyB0aGUgZ2VuZXJhdGVkIG5hbWVzIGZvciBwb3NzaWJsZSBjbGVhbnVwIGxhdGVyLgogICAgICAgIHoELXRtcHIPAAAAKQpycAEAAHJnAAAAcsAAAABywQAAAHJMAAAA2hhfYnlwYXNzX2Vuc3VyZV9kaXJlY3RvcnnaCUV4Y2VwdGlvbnJ5AQAA2hxfd2Fybl91bnNhZmVfZXh0cmFjdGlvbl9wYXRocmwBAAApBXKaAAAA2gxhcmNoaXZlX25hbWXaBW5hbWVz2gxleHRyYWN0X3BhdGjaC3RhcmdldF9wYXRochsAAAByGwAAAHIcAAAA2g5nZXRfY2FjaGVfcGF0aKoEAABzEgAAAAANDAEaAQIBDAEMAQ4CCgIKAXoeUmVzb3VyY2VNYW5hZ2VyLmdldF9jYWNoZV9wYXRoYwEAAAAAAAAAAAAAAAMAAAAEAAAAQwAAAHNWAAAAdABqAWQBawJyHnwAoAJ0AGoDZAIZAKEBcx5kA1MAdACgBHwAoQFqBX0BfAF0BGoGQABzPnwBdARqB0AAclJkBHwAFgB9AnQIoAl8AnQKoQIBAGQDUwApBWFOAQAACiAgICAgICAgSWYgdGhlIGRlZmF1bHQgZXh0cmFjdGlvbiBwYXRoIGlzIG92ZXJyaWRkZW4gYW5kIHNldCB0byBhbiBpbnNlY3VyZQogICAgICAgIGxvY2F0aW9uLCBzdWNoIGFzIC90bXAsIGl0IG9wZW5zIHVwIGFuIG9wcG9ydHVuaXR5IGZvciBhbiBhdHRhY2tlciB0bwogICAgICAgIHJlcGxhY2UgYW4gZXh0cmFjdGVkIGZpbGUgd2l0aCBhbiB1bmF1dGhvcml6ZWQgcGF5bG9hZC4gV2FybiB0aGUgdXNlcgogICAgICAgIGlmIGEga25vd24gaW5zZWN1cmUgbG9jYXRpb24gaXMgdXNlZC4KCiAgICAgICAgU2VlIERpc3RyaWJ1dGUgIzM3NSBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAgINoCbnTaBndpbmRpck56yyVzIGlzIHdyaXRhYmxlIGJ5IGdyb3VwL290aGVycyBhbmQgdnVsbmVyYWJsZSB0byBhdHRhY2sgd2hlbiB1c2VkIHdpdGggZ2V0X3Jlc291cmNlX2ZpbGVuYW1lLiBDb25zaWRlciBhIG1vcmUgc2VjdXJlIGxvY2F0aW9uIChzZXQgd2l0aCAuc2V0X2V4dHJhY3Rpb25fcGF0aCBvciB0aGUgUFlUSE9OX0VHR19DQUNIRSBlbnZpcm9ubWVudCB2YXJpYWJsZSkuKQtywAAAAHLmAAAActMAAADaB2Vudmlyb27aBHN0YXTaB3N0X21vZGXaB1NfSVdPVEjaB1NfSVdHUlDaCHdhcm5pbmdz2gR3YXJu2gtVc2VyV2FybmluZykDcsEAAADaBG1vZGXaA21zZ3IbAAAAchsAAAByHAAAAHJ8AQAAwwQAAHMSAAAAAAoaBAQBDAEUAgIEAvwC/wIHeixSZXNvdXJjZU1hbmFnZXIuX3dhcm5fdW5zYWZlX2V4dHJhY3Rpb25fcGF0aGMDAAAAAAAAAAAAAAAEAAAABAAAAEMAAABzLgAAAHQAagFkAWsCcip0AKACfAGhAWoDZAJCAGQDQAB9A3QAoAR8AXwDoQIBAGQEUwApBWE0AgAAUGVyZm9ybSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgcG9zdHByb2Nlc3Npbmcgb2YgYHRlbXBuYW1lYAoKICAgICAgICBUaGlzIGlzIHdoZXJlIE1hYyBoZWFkZXIgcmV3cml0ZXMgc2hvdWxkIGJlIGRvbmU7IG90aGVyIHBsYXRmb3JtcyBkb24ndAogICAgICAgIGhhdmUgYW55dGhpbmcgc3BlY2lhbCB0aGV5IHNob3VsZCBkby4KCiAgICAgICAgUmVzb3VyY2UgcHJvdmlkZXJzIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kIE9OTFkgYWZ0ZXIgc3VjY2Vzc2Z1bGx5CiAgICAgICAgZXh0cmFjdGluZyBhIGNvbXByZXNzZWQgcmVzb3VyY2UuICBUaGV5IG11c3QgTk9UIGNhbGwgaXQgb24gcmVzb3VyY2VzCiAgICAgICAgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGUgZmlsZXN5c3RlbS4KCiAgICAgICAgYHRlbXBuYW1lYCBpcyB0aGUgY3VycmVudCAodGVtcG9yYXJ5KSBuYW1lIG9mIHRoZSBmaWxlLCBhbmQgYGZpbGVuYW1lYAogICAgICAgIGlzIHRoZSBuYW1lIGl0IHdpbGwgYmUgcmVuYW1lZCB0byBieSB0aGUgY2FsbGVyIGFmdGVyIHRoaXMgcm91dGluZQogICAgICAgIHJldHVybnMuCiAgICAgICAg2gVwb3NpeGltAQAAaf8PAABOKQVywAAAAHLmAAAAcoUBAAByhgEAANoFY2htb2QpBHKaAAAA2gh0ZW1wbmFtZdoIZmlsZW5hbWVyjAEAAHIbAAAAchsAAAByHAAAANoLcG9zdHByb2Nlc3PdBAAAcwYAAAAADwoCFAF6G1Jlc291cmNlTWFuYWdlci5wb3N0cHJvY2Vzc2MCAAAAAAAAAAAAAAACAAAAAgAAAEMAAABzGAAAAHwAagByDnQBZAGDAYIBfAF8AF8CZAJTACkDYdIDAABTZXQgdGhlIGJhc2UgcGF0aCB3aGVyZSByZXNvdXJjZXMgd2lsbCBiZSBleHRyYWN0ZWQgdG8sIGlmIG5lZWRlZC4KCiAgICAgICAgSWYgeW91IGRvIG5vdCBjYWxsIHRoaXMgcm91dGluZSBiZWZvcmUgYW55IGV4dHJhY3Rpb25zIHRha2UgcGxhY2UsIHRoZQogICAgICAgIHBhdGggZGVmYXVsdHMgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiBgYGdldF9kZWZhdWx0X2NhY2hlKClgYC4gIChXaGljaAogICAgICAgIGlzIGJhc2VkIG9uIHRoZSBgYFBZVEhPTl9FR0dfQ0FDSEVgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2l0aCB2YXJpb3VzCiAgICAgICAgcGxhdGZvcm0tc3BlY2lmaWMgZmFsbGJhY2tzLiAgU2VlIHRoYXQgcm91dGluZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUKICAgICAgICBkZXRhaWxzLikKCiAgICAgICAgUmVzb3VyY2VzIGFyZSBleHRyYWN0ZWQgdG8gc3ViZGlyZWN0b3JpZXMgb2YgdGhpcyBwYXRoIGJhc2VkIHVwb24KICAgICAgICBpbmZvcm1hdGlvbiBnaXZlbiBieSB0aGUgYGBJUmVzb3VyY2VQcm92aWRlcmBgLiAgWW91IG1heSBzZXQgdGhpcyB0byBhCiAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSwgYnV0IHRoZW4geW91IG11c3QgY2FsbCBgYGNsZWFudXBfcmVzb3VyY2VzKClgYCB0bwogICAgICAgIGRlbGV0ZSB0aGUgZXh0cmFjdGVkIGZpbGVzIHdoZW4gZG9uZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0CiAgICAgICAgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgd2lsbCBiZSBhYmxlIHRvIHJlbW92ZSBhbGwgZXh0cmFjdGVkIGZpbGVzLgoKICAgICAgICAoTm90ZTogeW91IG1heSBub3QgY2hhbmdlIHRoZSBleHRyYWN0aW9uIHBhdGggZm9yIGEgZ2l2ZW4gcmVzb3VyY2UKICAgICAgICBtYW5hZ2VyIG9uY2UgcmVzb3VyY2VzIGhhdmUgYmVlbiBleHRyYWN0ZWQsIHVubGVzcyB5b3UgZmlyc3QgY2FsbAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgLikKICAgICAgICB6NUNhbid0IGNoYW5nZSBleHRyYWN0aW9uIHBhdGgsIGZpbGVzIGFscmVhZHkgZXh0cmFjdGVkTikDcmwBAAByTwAAAHJwAQAAqQJymgAAAHLBAAAAchsAAAByGwAAAHIcAAAAcmUAAADxBAAAcwoAAAAAEwYBAgEC/wQEeiNSZXNvdXJjZU1hbmFnZXIuc2V0X2V4dHJhY3Rpb25fcGF0aEZjAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJhQgIAAAogICAgICAgIERlbGV0ZSBhbGwgZXh0cmFjdGVkIHJlc291cmNlIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgcmV0dXJuaW5nIGEgbGlzdAogICAgICAgIG9mIHRoZSBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUg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YXJuZWQuY2xlYXIoKQogICAgICAgID4+PiB2cnAoJy9mb28vYmFyLnR4dCcpCiAgICAgICAgPj4+IGJvb2wod2FybmVkKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gdnJwKCdmb28vLi4vLi4vYmFyLnR4dCcpCiAgICAgICAgPj4+IGJvb2wod2FybmVkKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gd2FybmVkLmNsZWFyKCkKICAgICAgICA+Pj4gdnJwKCdmb28vZi4uL2Jhci50eHQnKQogICAgICAgID4+PiBib29sKHdhcm5lZCkKICAgICAgICBGYWxzZQoKICAgICAgICBXaW5kb3dzIHBhdGggc2VwYXJhdG9ycyBhcmUgc3RyYWlnaHQtdXAgZGlzYWxsb3dlZC4KICAgICAgICA+Pj4gdnJwKHInXGZvby9iYXIudHh0JykKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgLi4uCiAgICAgICAgVmFsdWVFcnJvcjogVXNlIG9mIC4uIG9yIGFic29sdXRlIHBhdGggaW4gYSByZXNvdXJjZSBwYXRoIGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICA+Pj4gdnJwKHInQzpcZm9vL2Jhci50eHQnKQogICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAuLi4KICAgICAgICBWYWx1ZUVycm9yOiBVc2Ugb2YgLi4gb3IgYWJzb2x1dGUgcGF0aCBpbiBhIHJlc291cmNlIHBhdGggaXMgbm90IGFsbG93ZWQuCgogICAgICAgIEJsYW5rIHZhbHVlcyBhcmUgYWxsb3dlZAoKICAgICAgICA+Pj4gdnJwKCcnKQogICAgICAgID4+PiBib29sKHdhcm5lZCkKICAgICAgICBGYWxzZQoKICAgICAgICBOb24tc3RyaW5nIHZhbHVlcyBhcmUgbm90LgoKICAgICAgICA+Pj4gdnJwKE5vbmUpCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIC4uLgogICAgICAgIEF0dHJpYnV0ZUVycm9yOiAuLi4K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cGFjZV9oYW5kbGVycykB2hNfbmFtZXNwYWNlX3BhY2thZ2VzYwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHMMAAAAfAF0AHwAPABkAVMAKQJhmgIAAFJlZ2lzdGVyIGBuYW1lc3BhY2VfaGFuZGxlcmAgdG8gZGVjbGFyZSBuYW1lc3BhY2UgcGFja2FnZXMKCiAgICBgaW1wb3J0ZXJfdHlwZWAgaXMgdGhlIHR5cGUgb3IgY2xhc3Mgb2YgYSBQRVAgMzAyICJJbXBvcnRlciIgKHN5cy5wYXRoIGl0ZW0KICAgIGhhbmRsZXIpLCBhbmQgYG5hbWVzcGFjZV9oYW5kbGVyYCBpcyBhIGNhbGxhYmxlIGxpa2UgdGhpczo6CgogICAgICAgIGRlZiBuYW1lc3BhY2VfaGFuZGxlcihpbXBvcnRlciwgcGF0aF9lbnRyeSwgbW9kdWxlTmFtZSwgbW9kdWxlKToKICAgICAgICAgICAgIyByZXR1cm4gYSBwYXRoX2VudHJ5IHRvIHVzZSBmb3IgY2hpbGQgcGFja2FnZXMKCiAgICBOYW1lc3BhY2UgaGFuZGxlcnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBpbXBvcnRlciBvYmplY3QgaGFzIGFscmVhZHkKICAgIGFncmVlZCB0aGF0IGl0IGNhbiBoYW5kbGUgdGhlIHJlbGV2YW50IHBhdGggaXRlbSwgYW5kIHRoZXkgc2hvdWxkIG9ubHkKICAgIHJldHVybiBhIHN1YnBhdGggaWYgdGhlIG1vZHVsZSBfX3BhdGhfXyBkb2VzIG5vdCBhbHJlYWR5IGNvbnRhaW4gYW4KICAgIGVxdWl2YWxlbnQgc3VicGF0aC4gIEZvciBhbiBleGFtcGxlIG5hbWVzcGFjZSBoYW5kbGVyLCBzZWUKICAgIGBgcGtnX3Jlc291cmNlcy5maWxlX25zX2hhbmRsZXJgYC4KICAgIE5yfwIAACkCcj4CAADaEW5hbWVzcGFjZV9oYW5kbGVychsAAAByGwAAAHIcAAAAcpEAAAB9CAAAcwIAAAAAD3KRAAAAYwIAAAAAAAAAAAAAAAgAAAAIAAAAQwAAAHPyAAAAdAB8AYMBfQJ8AmQBdQByFGQBUwB0AaACoQCPJAEAdAGgA2QCoQEBAHwCoAR8AKEBfQNX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c291cmNlc19zdHJlYW1yZgAAANoMcmVzb3VyY2VfZGlyclwAAAByZQAAAHJgAAAAclsAAAByWgAAAHJeAAAAcl0AAAByXwAAAHI9AgAAcoACAABygQIAANoOUnVudGltZVdhcm5pbmdyFQAAAHIjAAAAciYAAAByKwAAAHIyAAAAcjQAAAByOAAAAHI9AAAAcj4AAAByPwAAANoKX3NnZXRfbm9uZdoKX3NzZXRfbm9uZXJSAAAA2gdfX2FsbF9fcnsBAABybgAAAHJvAAAAcqUAAABycAAAAHJxAAAAcq0AAAByogAAAHJrAQAAcoAAAABygQAAAHKCAAAAcoMAAAByhAAAAHKSAAAAclUAAAByTQAAAHLOAAAAckcAAABywgEAAHJIAAAActkAAABydgAAAHJ3AAAAclQAAABylQAAAHJWAAAAclcAAAByWAAAAHJZAAAAcoUAAAByhgAAAHJpAAAAcicAAAByJQEAAHJoAAAAcpYAAABycgAAAHJqAAAAcmcAAABydAAAAHJ1AAAAcnoAAAByewAAAHJ8AAAAcn0AAAByjAAAAHIZAwAAco0AAAByjgAAAHLsAQAAcooAAAByiwAAAHLvAQAAcvkBAAByjwAAAHJJAgAAcocAAAByiAAAAHKJAAAAcpAAAAByZAAAAHJHAgAAck4CAAByVwIAAHJhAgAAclgCAAByZQIAAHJcAgAAcmMCAAByeAIAAHJkAgAA2gtJbXBJbXBvcnRlcnLDAAAAcn4CAABykQAAAHKQAgAAco0CAAByYQAAAHKTAAAAcqYCAABypwIAAHJ/AAAAcqoCAAByWgIAAHLeAQAAclsCAAByiwIAAHJ4AAAAckkAAABytgIAANoHVkVSQk9TRdoKSUdOT1JFQ0FTRXLgAgAAcm0AAABy1QIAAHLZAgAAcmsAAAByGwMAAHIdAwAAct8CAAByEwMAAHJPAAAAci4DAABycwAAAHIvAQAAcmwAAAByPAMAAHK4AAAAcn4AAAByegEAAHJ5AAAAch4CAADaDmZpbHRlcndhcm5pbmdzck0DAAByJAAAAHJQAwAAclIDAADaB1dhcm5pbmdylAAAAHIbAAAAchsAAAByGwAAAHIcAAAA2gg8bW9kdWxlPgIAAABzzAEAAAQQDAIIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEMAgIBDAEOAg4CAgEIAQ4BCgIMARQDDAECARQBCAEOAgoCDAEQAgIBDAIKAQ4BCgIMAQwBDAEIAQgBCAEIAwQDHgEIAggCBAEEBAQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAMQBwgHBAMIBQgICAcIBAgFCAQIBAwDCBgIMhAHECAQDRAbEAQEAgwBBAEEAQQBBAEEAwgKCA0MEAgECBgKAQoCBAMILggKBAMICwgFCgUIBQ4XEBwOfwB/AH8ABRAUDn8AFAQDEBAOfwA1CAwICAgMCAkICAgOCg8OfwBBCgMQFhAbCAMQEQYDEBsQFBB/AC0MAxAqEBkQDwwDCAoKBwobDAMKBAoDCBoKIAgRDhEIFQgPCAsIDgwCDAEMAgwBDAMIEggfCCIIIgoMCA0MAQwCDAEMAwgECgMIBQgLDAgIBwgKCAgIDgwBBAECCQr2Bg4OfwAFCAkIDQ5/AH8AfwAnEBMQMwIBAgEC/QYHCA0QBQgWFDcICggICAYIDQgaCA8QBAgFAgEQCwIBCiY=