bw0NCgAAAACiNI1jHagBAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABzzgcAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaBGQBZAJsBVoFZAFkAmwGWgZkAWQCbAdaB2QBZAJsCFoIZAFkAmwJWglkAWQCbApaCmQBZAJsC1oLZAFkAmwMWgxkAWQCbA1aDWQBZAJsDloOZAFkAmwPWg9kAWQCbBBaEGQBZAJsEVoSZAFkAmwTWhNkAWQCbBRaFGQBZAJsFVoVZAFkAmwWWhZkAWQCbBdaF2QBZAJsGFoYZAFkAmwZWhlkAWQCbBpaGmQBZANsDG0bWhsBAHoGZAFkAmwcWhxXAG4NBABlHXl/AQABAAEAZAFkAmweWhxZAG4BdwB6BGUfAQBXAG4LBABlIHmPAQABAAEAZSFaH1kAbgF3AGQBZARsAm0iWiIBAHoOZAFkBWwCbSNaI20kWiRtJVolAQBkBlomVwBuCwQAZR15rwEAAQABAGQHWiZZAG4BdwBkAWQIbAJtJ1ooAQBkAWQJbCltKloqbStaKwEAegtkAWQCbCxtLVouAQBlLmovAQBXAG4LBABlHXnUAQABAAEAZAJaLlkAbgF3AGQBZApsMG0xWjEBAGQBZAtsMG0yWjIBAGUzZAyDAQEAZTNkDYMBAQBlM2QOgwEBAGUzZA+DAQEAZQFqNGQQawBy+mU1ZBGDAYIBZAJaNmQCWjdkAlo4ZAJaOWQCWjpkAlo7ZAJaPGQCWj1kAlo+ZAJaP2QCWkBkAlpBZAJaQmQCWkNkAlpEZAJaRWQCWkZHAGQSZBOEAGQTZUeDA1pIZBRkFYQAWklpAFpKZBZkF4QAWktkGGQZhABaTGQaZBuEAFpNZBxkHYQAWk5kHmQfhABaT2QgZCGEAFpQZCJkI4QAWlFkJGQlhAAEAFpSWlNkJmQnhABaVGcAZCiiAVpVRwBkKWQqhABkKmVWgwNaV0cAZCtkLIQAZCxlV4MDWlhHAGQtZC6EAGQuZViDA1pZRwBkL2QwhABkMGVXgwNaWkcAZDFkMoQAZDJlV4MDWltpAFpcZDNqXWUBajSOAFpeZDRaX2Q1WmBkNlphZAFaYmQ3WmNkOGQ5hABaZGQ6ZDuEAFplZwBmAWQ8ZD2EAVpmZD5kP4QAWmdkQGRBhABaaGUFoGlkQqEBWmplBaBpZEOhAVprZWhabGREZEWEAFptZEZkR4QAWm5lblpvZEhkSYQAWnBkSmRLhABacWTsZExkTYQBWnJkTmRPhABac0cAZFBkUYQAZFGDAlp0RwBkUmRThABkU2V0gwNadUcAZFRkVYQAZFWDAlp2RwBkVmRXhABkV2V3gwNaeEcAZFhkWYQAZFmDAlp5ZXlaekcAZFpkW4QAZFtlNYMDWntHAGRcZF2EAGRdgwJafGReZF+EAFp9ZGBkYYQAWn5kYmRjhABaf2RkZGWEAFqAZGZkZ4QAWoFkaGRphABagmTsZGpka4QBWoNHAGRsZG2EAGRtgwJahGVkZYVlhIMCAQBkbmRvhABahkcAZHBkcYQAZHFlhIMDWodHAGRyZHOEAGRzZYeDA1qIZYigiaEAAQBHAGR0ZHWEAGR1ZYSDA1qKZYqDAFqLRwBkdmR3hABkd2V3gwNajEcAZHhkeYQAZHlljIMDWo1HAGR6ZHuEAGR7ZYeDA1qOZWRlCGqPZY6DAgEARwBkfGR9hABkfWWKgwNakEcAZH5kf4QAZH9liIMDWpFHAGSAZIGEAGSBZY6DA1qSZUtkgmkAZIONAgEAZIRkhYQAWpNk7WSGZIeEAVqUZO1kiGSJhAFalWWTZQhqj2WVgwIBAGTtZIpki4QBWpZlk2WFZZaDAgEAZIxkjYQAWpdk7WSOZI+EAVqYZJBkkYQAWplHAGSSZJOEAGSTgwJammSUZJWEAFqbZJZkl4QAWpxkmGSZhABanWSaZJuEAFqeZZNlDGqfZZiDAgEAZaBlLmScgwKQAnLdZZNlLmqhZZiDAgEAZUtkgmkAZJ2NAgEAZUtkgmkAZJ6NAgEAZJ9koIQAWqJkoWSihABao2SjZKSEAFqkZKVkpoQAWqVk7GSnZKiEAVqmZKlkqoQAWqdlomUMap9lp4MCAQBlomUIao9lp4MCAQBloGUuZJyDApADchplomUuaqFlp4MCAQBkq2SshABaqGWiZYVlqIMCAQBkrWSuhABaqWSvZLCEAFqqaQBmAWSxZLKEAVqrZLNktIQAWqxktWS2hABarWS3ZLiEAFquZLlkuoQAWq9ku2S8hABasGULarFkvWS+hACDAVqyZbKgs2W0oQFkv2TAhACDAVq1ZQWgaWTBoQFqtlq3ZQWgaWTCZQVquGUFarlCAKECarZaukcAZMNkxIQAZMSDAlq7ZMVkxoQAWrxHAGTHZMiEAGTIgwJavUcAZMlkyoQAZMplvYMDWr5HAGTLZMyEAGTMZb2DA1q/Zb1lvmW/ZM2cA1rAZM5kz4QAWsFk0GTRhABawkcAZNJk04QAZNNlMmrDasSDA1rFRwBk1GTVhABk1WUyasNqxoMDWsZk1mTXhABax2TYZNmEAFrIZNpk24QAWslk3GTdhABaymTeZN+EAFrLZOBk4YQAWsxlCWrNZOJlSGQGZOONAwEAZORk5YQAWs5lzmXPgwBmAWTmZOeEAYMBWtBHAGToZOmEAGTpZdGDA1rSZc5k6mTrhACDAVrTZAJTACnuYVoCAAAKUGFja2FnZSByZXNvdXJjZSBBUEkKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkEgcmVzb3VyY2UgaXMgYSBsb2dpY2FsIGZpbGUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UsIG9yIGEgbG9naWNhbApzdWJkaXJlY3RvcnkgdGhlcmVvZi4gIFRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBleHBlY3RzIHJlc291cmNlIG5hbWVzCnRvIGhhdmUgdGhlaXIgcGF0aCBwYXJ0cyBzZXBhcmF0ZWQgd2l0aCBgYC9gYCwgKm5vdCogd2hhdGV2ZXIgdGhlIGxvY2FsCnBhdGggc2VwYXJhdG9yIGlzLiAgRG8gbm90IHVzZSBvcy5wYXRoIG9wZXJhdGlvbnMgdG8gbWFuaXB1bGF0ZSByZXNvdXJjZQpuYW1lcyBiZWluZyBwYXNzZWQgaW50byB0aGUgQVBJLgoKVGhlIHBhY2thZ2UgcmVzb3VyY2UgQVBJIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBub3JtYWwgZmlsZXN5c3RlbSBwYWNrYWdlcywKLmVnZyBmaWxlcywgYW5kIHVucGFja2VkIC5lZ2cgZmlsZXMuICBJdCBjYW4gYWxzbyB3b3JrIGluIGEgbGltaXRlZCB3YXkgd2l0aAouemlwIGZpbGVzIGFuZCB3aXRoIGN1c3RvbSBQRVAgMzAyIGxvYWRlcnMgdGhhdCBzdXBwb3J0IHRoZSBgYGdldF9kYXRhKClgYAptZXRob2QuCukAAAAATikB2gxnZXRfaW1wb3J0ZXIpAdoFdXRpbWUpA9oFbWtkaXLaBnJlbmFtZdoGdW5saW5rVEYpAdoEb3BlbikC2gVpc2RpctoFc3BsaXQpAdoHYXBwZGlycykB2glwYWNrYWdpbmd6JnBrZ19yZXNvdXJjZXMuZXh0ZXJuLnBhY2thZ2luZy52ZXJzaW9ueilwa2dfcmVzb3VyY2VzLmV4dGVybi5wYWNrYWdpbmcuc3BlY2lmaWVyc3orcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLnJlcXVpcmVtZW50c3omcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLm1hcmtlcnMpAukDAAAA6QUAAAB6H1B5dGhvbiAzLjUgb3IgbGF0ZXIgaXMgcmVxdWlyZWRjAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAA8xAAAABlAFoBZABaAmQBWgNkAlMAKQPaDVBFUDQ0MFdhcm5pbmd6YQogICAgVXNlZCB3aGVuIHRoZXJlIGlzIGFuIGlzc3VlIHdpdGggYSB2ZXJzaW9uIG9yIHNwZWNpZmllciBub3QgY29tcGx5aW5nIHdpdGgKICAgIFBFUCA0NDAuCiAgICBOqQTaCF9fbmFtZV9f2gpfX21vZHVsZV9f2gxfX3F1YWxuYW1lX1/aB19fZG9jX1+pAHIVAAAAchUAAAD6YS9yb290L2dmMTgwLWRlbW8vY2FyYXZlbF91c2VyX3Byb2plY3QvdmVudi9saWIvcHl0aG9uMy4xMC9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHlyDwAAAGkAAADzBAAAAAgACAFyDwAAAGMBAAAAAAAAAAAAAAABAAAACAAAAEMAAABzRAAAAHoHdABqAaACfAChAVcAUwAEAHQAagFqA3khAQABAAEAdASgBXwAmwBkAZ0CdAahAgEAdABqAaAHfAChAQYAWQBTAHcAKQJOekQgaXMgYW4gaW52YWxpZCB2ZXJzaW9uIGFuZCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSkIcgsAAADaB3ZlcnNpb27aB1ZlcnNpb27aDkludmFsaWRWZXJzaW9u2gh3YXJuaW5nc9oEd2FybtoeUGtnUmVzb3VyY2VzRGVwcmVjYXRpb25XYXJuaW5n2g1MZWdhY3lWZXJzaW9uKQHaAXZyFQAA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aXMgZnVuY3Rpb24gc2hvdWxkIGJlIGV4dGVuZGVkIGFjY29yZGluZ2x5LgogICAgTtoGZGFyd2luegxtYWNvc3gtJXMtJXPaAS7pAgAAAHIMAAAAKQnaEmdldF9idWlsZF9wbGF0Zm9ybdoSbWFjb3NWZXJzaW9uU3RyaW5n2gVtYXRjaNoDc3lz2ghwbGF0Zm9ybdoEam9pbtoLX21hY29zX3ZlcnPaBWdyb3Vw2gpWYWx1ZUVycm9yKQLaBHBsYXTaAW1yFQAAAHIVAAAAchYAAADaFmdldF9zdXBwb3J0ZWRfcGxhdGZvcm2nAAAAcxYAAAAGDQoBEgECASQBBAQM/QICBAEC/QQDclQAAAApR9oHcmVxdWlyZdoKcnVuX3NjcmlwdNoMZ2V0X3Byb3ZpZGVy2hBnZXRfZGlzdHJpYnV0aW9u2hBsb2FkX2VudHJ5X3BvaW502g1nZXRfZW50cnlfbWFw2g5nZXRfZW50cnlfaW5mb9oRaXRlcl9lbnRyeV9wb2ludHPaD3Jlc291cmNlX3N0cmluZ9oPcmVzb3VyY2Vfc3RyZWFt2hFyZXNvdXJjZV9maWxlbmFtZdoQcmVzb3VyY2VfbGlzdGRpctoPcmVzb3VyY2VfZXhpc3Rz2g5yZXNvdXJjZV9pc2RpctoRZGVjbGFyZV9uYW1lc3BhY2XaC3dvcmtpbmdfc2V02hdhZGRfYWN0aXZhdGlvbl9saXN0ZW5lctoSZmluZF9kaXN0cmlidXRpb25z2hNzZXRfZXh0cmFjdGlvbl9wYXRo2hFjbGVhbnVwX3Jlc291cmNlc9oRZ2V0X2RlZmF1bHRfY2FjaGXaC0Vudmlyb25tZW502gpXb3JraW5nU2V02g9SZXNvdXJjZU1hbmFnZXLaDERpc3RyaWJ1dGlvbtoLUmVxdWlyZW1lbnTaCkVudHJ5UG9pbnTaD1Jlc29sdXRpb25FcnJvctoPVmVyc2lvbkNvbmZsaWN02hREaXN0cmlidXRpb25Ob3RGb3VuZNoMVW5rbm93bkV4dHJh2g9FeHRyYWN0aW9uRXJyb3JyDwAAANoScGFyc2VfcmVxdWlyZW1lbnRzciAAAADaCXNhZmVfbmFtZdoMc2FmZV92ZXJzaW9u2gxnZXRfcGxhdGZvcm3aFGNvbXBhdGlibGVfcGxhdGZvcm1z2gt5aWVsZF9saW5lc9oOc3BsaXRfc2VjdGlvbnPaCnNhZmVfZXh0cmHaC3RvX2ZpbGVuYW1l2g5pbnZhbGlkX21hcmtlctoPZXZhbHVhdGVfbWFya2Vy2hBlbnN1cmVfZGlyZWN0b3J52g5ub3JtYWxpemVfcGF0aNoIRUdHX0RJU1TaC0JJTkFSWV9ESVNU2gtTT1VSQ0VfRElTVNoNQ0hFQ0tPVVRfRElTVNoMREVWRUxPUF9ESVNU2hFJTWV0YWRhdGFQcm92aWRlctoRSVJlc291cmNlUHJvdmlkZXLaDEZpbGVNZXRhZGF0YdoMUGF0aE1ldGFkYXRh2gtFZ2dNZXRhZGF0YdoNRW1wdHlQcm92aWRlctoOZW1wdHlfcHJvdmlkZXLaDE51bGxQcm92aWRlctoLRWdnUHJvdmlkZXLaD0RlZmF1bHRQcm92aWRlctoLWmlwUHJvdmlkZXLaD3JlZ2lzdGVyX2ZpbmRlctoacmVnaXN0ZXJfbmFtZXNwYWNlX2hhbmRsZXLaFHJlZ2lzdGVyX2xvYWRlcl90eXBl2hhmaXh1cF9uYW1lc3BhY2VfcGFja2FnZXNyAgAAAHIdAAAA2ghydW5fbWFpbtoWQXZhaWxhYmxlRGlzdHJpYnV0aW9uc2MAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAADzGAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZARTACkFcnAAAAB6LkFic3RyYWN0IGJhc2UgZm9yIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiBlcnJvcnNjAQAAAAAAAAAAAAAAAQAAAAMAAABDAAAAcxIAAAB8AGoAagF0AnwAagODARcAUwByIQAAACkE2glfX2NsYXNzX19yEQAAANoEcmVwcnJDAAAAqQHaBHNlbGZyFQAAAHIVAAAAchYAAADaCF9fcmVwcl9f9AAAAPMCAAAAEgF6GFJlc29sdXRpb25FcnJvci5fX3JlcHJfX04pBXIRAAAAchIAAAByEwAAAHIUAAAAcp0AAAByFQAAAHIVAAAAchUAAAByFgAAAHJwAAAA8QAAAPMGAAAACAAEAQwCcnAAAABjAAAAAAAAAAAAAAAAAAAAAAMAAABAAAAAczwAAABlAFoBZABaAmQBWgNkAloEZQVkA2QEhACDAVoGZQVkBWQGhACDAVoHZAdkCIQAWghkCWQK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YCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIVAAAAqQLaB21hbmFnZXLaDXJlc291cmNlX25hbWVyFQAAAHIVAAAAchYAAADaFWdldF9yZXNvdXJjZV9maWxlbmFtZQYCAAByRQAAAHonSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX2ZpbGVuYW1lYwIAAAAAAAAAAAAAAAIAAAABAAAAQwAAAHL9AAAAKQJ6aVJldHVybiBhIHJlYWRhYmxlIGZpbGUtbGlrZSBvYmplY3QgZm9yIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yFQAAAHIGAQAAchUAAAByFQAAAHIWAAAA2hNnZXRfcmVzb3VyY2Vfc3RyZWFtCwIAAHJFAAAAeiVJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2Vfc3RyZWFtYwIAAAAAAAAAAAAAAAIAAAABAAAAQwAAAHL9AAAAKQJ6bVJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBgcmVzb3VyY2VfbmFtZWAKCiAgICAgICAgYG1hbmFnZXJgIG11c3QgYmUgYW4gYGBJUmVzb3VyY2VNYW5hZ2VyYGBOchUAAAByBgEAAHIVAAAAchUAAAByFgAAANoTZ2V0X3Jlc291cmNlX3N0cmluZxACAAByRQAAAHolSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX3N0cmluZ2MBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABy/QAAACkCeixEb2VzIHRoZSBwYWNrYWdlIGNvbnRhaW4gdGhlIG5hbWVkIHJlc291cmNlP05yFQAAAKkBcggBAAByFQAAAHIVAAAAchYAAADaDGhhc19yZXNvdXJjZRUCAAByRQAAAHoeSVJlc291cmNlUHJvdmlkZXIuaGFzX3Jlc291cmNlYwEAAAAAAAAAAAAAAAEAAAABAAAAQwAAAHL9AAAAKQJ6PklzIHRoZSBuYW1lZCByZXNvdXJjZSBhIGRpcmVjdG9yeT8gIChsaWtlIGBgb3MucGF0aC5pc2RpcigpYGApTnIVAAAAcgwBAAByFQAAAHIV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ZSBpbnZva2VkIHdpdGggZWFjaCByZXF1aXJlbWVudCB0aGF0IGNhbm5vdCBiZSBtZXQgYnkgYW4KICAgICAgICBhbHJlYWR5LWluc3RhbGxlZCBkaXN0cmlidXRpb247IGl0IHNob3VsZCByZXR1cm4gYSBgYERpc3RyaWJ1dGlvbmBgIG9yCiAgICAgICAgYGBOb25lYGAuCgogICAgICAgIFVubGVzcyBgcmVwbGFjZV9jb25mbGljdGluZz1UcnVlYCwgcmFpc2VzIGEgVmVyc2lvbkNvbmZsaWN0IGV4Y2VwdGlvbgogICAgICAgIGlmCiAgICAgICAgYW55IHJlcXVpcmVtZW50cyBhcmUgZm91bmQgb24gdGhlIHBhdGggdGhhdCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUgYnV0CiAgICAgICAgdGhlIHdyb25nIHZlcnNpb24uICBPdGhlcndpc2UsIGlmIGFuIGBpbnN0YWxsZXJgIGlzIHN1cHBsaWVkIGl0IHdpbGwgYmUKICAgICAgICBpbnZva2VkIHRvIG9idGFpbiB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSByZXF1aXJlbWVudCBhbmQgYWN0aXZhdGUKICAgICAgICBpdC4KCiAgICAgICAgYGV4dHJhc2AgaXMgYSBsaXN0IG9mIHRoZSBleHRyYXMgdG8gYmUgdXNlZCB3aXRoIHRoZXNlIHJlcXVpcmVtZW50cy4KICAgICAgICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGV4dHJhIHJlcXVpcmVtZW50cyBtYXkgbG9vayBsaWtlIGBteV9yZXE7CiAgICAgICAgZXh0cmEgPSAibXlfZXh0cmEiYCwgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGJlIGludGVycHJldGVkIGFzIGEgcHVyZWx5CiAgICAgICAgb3B0aW9uYWwgcmVxdWlyZW1lbnQuICBJbnN0ZWFkLCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gYXNzZXJ0IHRoYXQgdGhlc2UKICAgICAgICByZXF1aXJlbWVudHMgYXJlIHRydWx5IHJlcXVpcmVkLgogICAgICAgIE5ytgAAAHIBAAAAKQHaE3JlcGxhY2VfY29uZmxpY3RpbmdUKRfaBGxpc3TaCl9SZXFFeHRyYXPaC2NvbGxlY3Rpb25z2gtkZWZhdWx0ZGljdNoDc2V02gNwb3DaDG1hcmtlcnNfcGFzc3LYAAAAcjsAAAByEAEAAHJqAAAAcg4BAAByawAAANoKYmVzdF9tYXRjaHJyAAAActEAAABycQAAAHKxAAAAcikBAADaBmV4dHJhc9oGZXh0ZW5kch0BAADaDHByb2plY3RfbmFtZSkScpwAAADaDHJlcXVpcmVtZW50c9oDZW522glpbnN0YWxsZXJyNAEAAHI9AQAA2glwcm9jZXNzZWTaBGJlc3TaC3RvX2FjdGl2YXRl2gpyZXFfZXh0cmFzcrAAAABypgAAAHKiAAAAchoBAAByswAAANoNZGVwZW5kZW50X3JlcdoQbmV3X3JlcXVpcmVtZW50c9oPbmV3X3JlcXVpcmVtZW50chUAAAByFQAAAHIWAAAAchwBAADCAgAAc1IAAAASGwQCBAIEAQYCCgQEAgoCCAECAgwCAgEMAggBDgIUAQQBCAEIAQwBCAUIAQQBBgECARD+CAQMAQoBCgEIAQgCEAEWAwoBCAMQAQwBCAIE0QQyehJXb3JraW5nU2V0LnJlc29sdmVjBQAAAAAAAAAAAAAADwAAAAwAAABDAAAAcwIBAAB0AHwBgwF9BXwFoAGhAAEAaQB9BmkAfQd8AmQBdQByGnQCfABqA4MBfQh8CHwBNwB9CG4EfAJ8ARcAfQh8AKAEZwChAX0JdAB0BXwJagZ8AIMCgwEBAHwFRABdR30KfAF8ChkARABdQH0LfAugB6EAZwF9DHoJfAmgCHwMfAh8A6EDfQ1XAG4fBAB0CXliAQB9DgEAehN8DnwGfAs8AHwEcldXAFkAZAF9Dn4OcTNXAFkAZAF9Dn4OAQBuFmQBfQ5+DncBdwB0AHQFfAlqBnwNgwKDAQEAfAegCnQLoAx8DaEBoQEBAAEAcS10AHwHgwF9B3wHoAGhAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXI1AQAA2gRzb3J0cmoAAAByDgEAAHKZAAAA2gNtYXByHQEAANoOYXNfcmVxdWlyZW1lbnRyHAEAAHJwAAAAciMAAAByJQAAAHImAAAAKQ9ynAAAANoKcGx1Z2luX2VudtoIZnVsbF9lbnZyQgEAANoIZmFsbGJhY2vaD3BsdWdpbl9wcm9qZWN0c9oKZXJyb3JfaW5mb9oNZGlzdHJpYnV0aW9uc3JBAQAA2gpzaGFkb3dfc2V0cj8BAAByogAAAHKmAAAA2glyZXNvbHZlZXNyHwAAAHIVAAAAchUAAAByFgAAANoMZmluZF9wbHVnaW5zHgMAAHM6AAAACCQIAgQCBAEIAgoBCgEIAgoCEAIIAgwCCgICAhIBDgIIAgQBDAIOAwiAAvgQ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UwApHHJqAAAAejVTZWFyY2hhYmxlIHNuYXBzaG90IG9mIGRpc3RyaWJ1dGlvbnMgb24gYSBzZWFyY2ggcGF0aE5jBAAAAAAAAAAAAAAABAAAAAMAAABDAAAAcyAAAABpAHwAXwB8AnwAXwF8A3wAXwJ8AKADfAGhAQEAZAFTACkCYSEDAABTbmFwc2hvdCBkaXN0cmlidXRpb25zIGF2YWlsYWJsZSBvbiBhIHNlYXJjaCBwYXRoCgogICAgICAgIEFueSBkaXN0cmlidXRpb25zIGZvdW5kIG9uIGBzZWFyY2hfcGF0aGAgYXJlIGFkZGVkIHRvIHRoZSBlbnZpcm9ubWVudC4KICAgICAgICBgc2VhcmNoX3BhdGhgIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGBgc3lzLnBhdGhgYCBpdGVtcy4gIElmIG5vdAogICAgICAgIHN1cHBsaWVkLCBgYHN5cy5wYXRoYGAgaXMgdXNlZC4KCiAgICAgICAgYHBsYXRmb3JtYCBpcyBhbiBvcHRpb25hbCBzdHJpbmcgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgcGxhdGZvcm0KICAgICAgICB0aGF0IHBsYXRmb3JtLXNwZWNpZmljIGRpc3RyaWJ1dGlvbnMgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGguICBJZgogICAgICAgIHVuc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBwbGF0Zm9ybS4gIGBweXRob25gIGlzIGFuCiAgICAgICAgb3B0aW9uYWwgc3RyaW5nIG5hbWluZyB0aGUgZGVzaXJlZCB2ZXJzaW9uIG9mIFB5dGhvbiAoZS5nLiBgYCczLjYnYGApOwogICAgICAgIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHZlcnNpb24uCgogICAgICAgIFlvdSBtYXkgZXhwbGljaXRseSBzZXQgYHBsYXRmb3JtYCAoYW5kL29yIGBweXRob25gKSB0byBgYE5vbmVgYCBpZiB5b3UKICAgICAgICB3aXNoIHRvIG1hcCAqYWxsKiBkaXN0cmlidXRpb25zLCBub3QganVzdCB0aG9zZSBjb21wYXRpYmxlIHdpdGggdGhlCiAgICAgICAgcnVubmluZyBw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dCB0aGF0IG1lZXRzIHRoZSBgYFJlcXVpcmVtZW50YGAgaW4gYHJlcWAuICBJZiBubyBzdWl0YWJsZQogICAgICAgIGRpc3RyaWJ1dGlvbiBpcyBmb3VuZCwgYW5kIGBpbnN0YWxsZXJgIGlzIHN1cHBsaWVkLCB0aGVuIHRoZSByZXN1bHQgb2YKICAgICAgICBjYWxsaW5nIHRoZSBlbnZpcm9ubWVudCdzIGBgb2J0YWluKHJlcSwgaW5zdGFsbGVyKWBgIG1ldGhvZCB3aWxsIGJlCiAgICAgICAgcmV0dXJuZWQuCiAgICAgICAgTikEcr4AAABycQAAAHI7AAAA2gZvYnRhaW4pBnKcAAAAcqYAAAByZAAAAHJCAQAAcjQBAAByogAAAHIVAAAAchUAAAByFgAAAHI8AQAABgQAAHMcAAAAAg4OAQwBBAECAQgBAv0IBAQBDgEIAQgBAv8MA3oWRW52aXJvbm1lbnQuYmVzdF9tYXRjaGMDAAAAAAAAAAAAAAADAAAAAgAAAEMAAABzFAAAAHwCZAF1AXIIfAJ8AYMBUwBkAVMAKQJh3gEAAE9idGFpbiBhIGRpc3RyaWJ1dGlvbiBtYXRjaGluZyBgcmVxdWlyZW1lbnRgIChlLmcuIHZpYSBkb3dubG9hZCkKCiAgICAgICAgT2J0YWluIGEgZGlzdHJvIHRoYXQgbWF0Y2hlcyByZXF1aXJlbWVudCAoZS5nLiB2aWEgZG93bmxvYWQpLiAgSW4gdGhlCiAgICAgICAgYmFzZSBgYEVudmlyb25tZW50YGAgY2xhc3MsIHRoaXMgcm91dGluZSBqdXN0IHJldHVybnMKICAgICAgICBgYGluc3RhbGxlcihyZXF1aXJlbWVudClgYCwgdW5sZXNzIGBpbnN0YWxsZXJgIGlzIE5vbmUsIGluIHdoaWNoIGNhc2UKICAgICAgICBOb25lIGlzIHJldHVybmVkIGluc3RlYWQuICBUaGlzIG1ldGhvZCBpcyBhIGhvb2sgdGhhdCBhbGxvd3Mgc3ViY2xhc3NlcwogICAgICAgIHRvIGF0dGVtcHQgb3RoZXIgd2F5cyBvZiBvYnRhaW5pbmcgYSBkaXN0cmlidXRpb24gYmVmb3JlIGZhbGxpbmcgYmFjawogICAgICAgIHRvIHRoZSBgaW5zdGFs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cyBhbmQgdnVsbmVyYWJsZSB0byBhdHRhY2sgd2hlbiB1c2VkIHdpdGggZ2V0X3Jlc291cmNlX2ZpbGVuYW1lICh7cGF0aH0pLiBDb25zaWRlciBhIG1vcmUgc2VjdXJlIGxvY2F0aW9uIChzZXQgd2l0aCAuc2V0X2V4dHJhY3Rpb25fcGF0aCBvciB0aGUgUFlUSE9OX0VHR19DQUNIRSBlbnZpcm9ubWVudCB2YXJpYWJsZSkuchUAAAApDXLMAAAAcvMAAABy3wAAANoHZW52aXJvbtoEc3RhdNoHc3RfbW9kZdoHU19JV09USNoHU19JV0dSUHKrAAAAcqwAAAByGwAAAHIcAAAA2gtVc2VyV2FybmluZykDcs0AAADaBG1vZGXaA21zZ3IVAAAAchUAAAByFgAAAHKWAQAAugQAAHMWAAAAGgoEBAwBFAECAgIGBPkEBwb5EAgE93osUmVzb3VyY2VNYW5hZ2VyLl93YXJuX3Vuc2FmZV9leHRyYWN0aW9uX3BhdGhjAwAAAAAAAAAAAAAABAAAAAQAAABDAAAAczIAAAB0AGoBZAFrAnIXdACgAnwBoQFqA2QCQgBkA0AAfQN0AKAEfAF8A6ECAQBkBFMAZARTACkFYTQCAABQZXJmb3JtIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBwb3N0cHJvY2Vzc2luZyBvZiBgdGVtcG5hbWVgCgogICAgICAgIFRoaXMgaXMgd2hlcmUgTWFjIGhlYWRlciByZXdyaXRlcyBzaG91bGQgYmUgZG9uZTsgb3RoZXIgcGxhdGZvcm1zIGRvbid0CiAgICAgICAgaGF2ZSBhbnl0aGluZyBzcGVjaWFsIHRoZXkgc2hvdWxkIGRvLgoKICAgICAgICBSZXNvdXJjZSBwcm92aWRlcnMgc2hvdWxkIGNhbGwgdGhpcyBtZXRob2QgT05MWSBhZnRlciBzdWNjZXNzZnVsbHkKICAgICAgICBleHRyYWN0aW5nIGEgY29tcHJlc3NlZCByZXNvdXJjZS4gIFRoZXkgbXVzdCBOT1QgY2FsbCBpdCBvbiByZXNvdXJjZXMKICAgICAgICB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmaWxlc3lzdGVtLgoKICAgICAgICBgdGVtcG5hbWVgIGlzIHRoZSBjdXJyZW50ICh0ZW1wb3JhcnkpIG5hbWUgb2YgdGhlIGZpbGUsIGFuZCBgZmlsZW5hbWVgCiAgICAgICAgaXMgdGhlIG5hbWUgaXQgd2lsbCBiZSByZW5hbWVkIHRvIGJ5IHRoZSBjYWxsZXIgYWZ0ZXIgdGhpcyByb3V0aW5lCiAgICAgICAgcmV0dXJucy4KICAgICAgICDaBXBvc2l4aW0BAABp/w8AAE4pBXLMAAAAcvMAAABynwEAAHKgAQAA2gVjaG1vZCkEcpwAAADaCHRlbXBuYW1l2ghmaWxlbmFtZXKkAQAAchUAAAByFQAAAHIWAAAA2gtwb3N0cHJvY2Vzc9UEAABzCAAAAAoPFAIQAQT9ehtSZXNvdXJjZU1hbmFnZXIucG9zdHByb2Nlc3NjAgAAAAAAAAAAAAAAAgAAAAIAAABDAAAAcxgAAAB8AGoAcgd0AWQBgwGCAXwBfABfAmQCUwApA2HSAwAAU2V0IHRoZSBiYXNlIHBhdGggd2hlcmUgcmVzb3VyY2VzIHdpbGwgYmUgZXh0cmFjdGVkIHRvLCBpZiBuZWVkZWQuCgogICAgICAgIElmIHlvdSBkbyBub3QgY2FsbCB0aGlzIHJvdXRpbmUgYmVmb3JlIGFueSBleHRyYWN0aW9ucyB0YWtlIHBsYWNlLCB0aGUKICAgICAgICBwYXRoIGRlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGBnZXRfZGVmYXVsdF9jYWNoZSgpYGAuICAoV2hpY2gKICAgICAgICBpcyBiYXNlZCBvbiB0aGUgYGBQWVRIT05fRUdHX0NBQ0hFYGAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHdpdGggdmFyaW91cwogICAgICAgIHBsYXRmb3JtLXNwZWNpZmljIGZhbGxiYWNrcy4gIFNlZSB0aGF0IHJvdXRpbmUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlCiAgICAgICAgZGV0YWlscy4pCgogICAgICAgIFJlc291cmNlcyBhcmUgZXh0cmFjdGVkIHRvIHN1YmRpcmVjdG9yaWVzIG9mIHRoaXMgcGF0aCBiYXNlZCB1cG9uCiAgICAgICAgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIGBgSVJlc291cmNlUHJvdmlkZXJgYC4gIFlvdSBtYXkgc2V0IHRoaXMgdG8gYQogICAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnksIGJ1dCB0aGVuIHlvdSBtdXN0IGNhbGwgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgdG8KICAgICAgICBkZWxldGUgdGhlIGV4dHJhY3RlZCBmaWxlcyB3aGVuIGRvbmUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgIHdpbGwgYmUgYWJsZSB0byByZW1vdmUgYWxsIGV4dHJhY3RlZCBmaWxlcy4KCiAgICAgICAgKE5vdGU6IHlvdSBtYXkgbm90IGNoYW5nZSB0aGUgZXh0cmFjdGlvbiBwYXRoIGZvciBhIGdpdmVuIHJlc291cmNlCiAgICAgICAgbWFuYWdlciBvbmNlIHJlc291cmNlcyBoYXZlIGJlZW4gZXh0cmFjdGVkLCB1bmxlc3MgeW91IGZpcnN0IGNhbGwKICAgICAgICBgYGNsZWFudXBfcmVzb3VyY2VzKClgYC4pCiAgICAgICAgejVDYW4ndCBjaGFuZ2UgZXh0cmFjdGlvbiBwYXRoLCBmaWxlcyBhbHJlYWR5IGV4dHJhY3RlZE4pA3KBAQAAclEAAAByigEAAKkCcpwAAAByzQAAAHIVAAAAchUAAAByFgAAAHJnAAAA6QQAAHMKAAAABhMCAQIBBP8KBHojUmVzb3VyY2VNYW5hZ2VyLnNldF9leHRyYWN0aW9uX3BhdGhGYwIAAAAAAAAAAAAAAAIAAAABAAAAQwAAAHL9AAAAKQJhQgIAAAogICAgICAgIERlbGV0ZSBhbGwgZXh0cmFjdGVkIHJlc291cmNlIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgcmV0dXJuaW5nIGEgbGlzdAogICAgICAgIG9mIHRoZSBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uLCBzbyBpdCBzaG91bGQKICAgICAgICBnZW5lcmFsbHkgb25seSBiZSBj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AAAAAAAAAAAAAgAAAAQAAABDAAAActQBAAByIQAAAHLVAQAAcssBAAByFQAAAHIVAAAAchYAAAByAQEAAHYHAAByQAAAAHofRmlsZU1ldGFkYXRhLmdldF9tZXRhZGF0YV9saW5lc04pCnIRAAAAchIAAAByEwAAAHIUAAAAchQBAAByzAEAAHL/AAAAcgABAAByXQIAAHIBAQAAchUAAAByFQAAAHIVAAAAchYAAAByiQAAAFEHAABzEAAAAAgABAEICwgDCAMIAwgJDAdyiQAAAGMAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAABymAAAACkFcooAAABhcwIAAE1ldGFkYXRhIHByb3ZpZGVyIGZvciBlZ2cgZGlyZWN0b3JpZXMKCiAgICBVc2FnZTo6CgogICAgICAgICMgRGV2ZWxvcG1lbnQgZWdnczoKCiAgICAgICAgZWdnX2luZm8gPSAiL3BhdGgvdG8vUGFja2FnZU5hbWUuZWdnLWluZm8iCiAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZWdnX2luZm8pCiAgICAgICAgbWV0YWRhdGEgPSBQYXRoTWV0YWRhdGEoYmFzZV9kaXIsIGVnZ19pbmZvKQogICAgICAgIGRpc3RfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShlZ2dfaW5mbykpWzBdCiAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbihiYXNlZGlyLCBwcm9qZWN0X25hbWU9ZGlzdF9uYW1lLCBtZXRhZGF0YT1tZXRhZGF0YSkKCiAgICAgICAgIyBVbnBhY2tlZCBlZ2cgZGlyZWN0b3JpZXM6CgogICAgICAgIGVnZ19wYXRoID0gIi9wYXRoL3RvL1BhY2thZ2VOYW1lLXZlci1weXZlci1ldGMuZWdnIgogICAgICAgIG1ldGFkYXRhID0gUGF0aE1ldGFkYXRhKGVnZ19wYXRoLCBvcy5wYXRoLmpvaW4oZWdnX3BhdGgsJ0VHRy1JTkZPJykpCiAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbi5mcm9tX2ZpbGVuYW1lKGVnZ19wYXRoLCBtZXRhZGF0YT1tZXRhZGF0YSkKICAgIGMDAAAAAAAAAAAAAAADAAAAAgAAAEMAAABzEAAAAHwBfABfAHwCfABfAWQAUwByIQAAACkCcsABAAByygEAACkDcpwAAAByzQAAAHLKAQAAchUAAAByFQAAAHIWAAAAchQBAACOBwAAcwQAAAAGAQoBehVQYXRoTWV0YWRhdGEuX19pbml0X19OqQVyEQAAAHISAAAAchMAAAByFAAAAHIUAQAAchUAAAByFQAAAHIVAAAAchYAAAByigAAAHoHAABzBgAAAAgABAEME3KKAAAAYwAAAAAAAAAAAAAAAAAAAAACAAAAQAAAAHKYAAAAKQVyiwAAAHogTWV0YWRhdGEgcHJvdmlkZXIgZm9yIC5lZ2cgZmlsZXNjAgAAAAAAAAAAAAAAAgAAAAQAAABDAAAAc0QAAAB8AWoAdAFqAhcAfABfA3wBfABfBHwBagVyGHQBagagB3wBagB8AWoFoQJ8AF8IbgR8AWoAfABfCHwAoAmhAAEAZAFTACkCei1DcmVhdGUgYSBtZXRhZGF0YSBwcm92aWRlciBmcm9tIGEgemlwaW1wb3J0ZXJOKQpyJwIAAHLMAAAAcvQBAAByKAIAAHLHAAAA2gZwcmVmaXhyzQAAAHJOAAAAcsABAABy/QEAACkCcpwAAADaCGltcG9ydGVychUAAAByFQAAAHIWAAAAchQBAACWBwAAcwwAAAAOAwYBBgEWAQgCDAF6FEVnZ01ldGFkYXRhLl9faW5pdF9fTnJgAgAAchUAAAByFQAAAHIVAAAAchYAAAByiwAAAJMHAABynwAAAHKLAAAAciUAAACpAdoVX2Rpc3RyaWJ1dGlvbl9maW5kZXJzYwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHK3AAAAKQJheAEAAFJlZ2lzdGVyIGBkaXN0cmlidXRpb25fZmluZGVyYCB0byBmaW5kIGRpc3RyaWJ1dGlvbnMgaW4gc3lzLnBhdGggaXRlbXMKCiAgICBgaW1wb3J0ZXJfdHlwZWAgaXMgdGhlIHR5cGUgb3IgY2xhc3Mgb2YgYSBQRVAgMzAyICJJbXBvcnRlciIgKHN5cy5wYXRoIGl0ZW0KICAgIGhhbmRsZXIpLCBhbmQgYGRpc3RyaWJ1dGlvbl9maW5kZXJgIGlzIGEgY2FsbGFibGUgdGhhdCwgcGFzc2VkIGEgcGF0aAogICAgaXRlbSBhbmQgdGhlIGltcG9ydGVyIGluc3RhbmNlLCB5aWVsZHMgYGBEaXN0cmlidXRpb25gYCBpbnN0YW5jZXMgZm91bmQgb24KICAgIHRoYXQgcGF0aCBpdGVtLiAgU2VlIGBgcGtnX3Jlc291cmNlcy5maW5kX29uX3BhdGhgYCBmb3IgYW4gZXhhbXBsZS5OcmMCAAApAtoNaW1wb3J0ZXJfdHlwZdoTZGlzdHJpYnV0aW9uX2ZpbmRlcnIVAAAAchUAAAByFgAAAHKSAAAApQcAAHK7AAAAcpIAAABjAgAAAAAAAAAAAAAABAAAAAQAAABDAAAAcx4AAAB0AHwAgwF9AnQBdAJ8AoMCfQN8A3wCfAB8AYMDUwApAXouWWllbGQgZGlzdHJpYnV0aW9ucyBhY2Nlc3NpYmxlIHZpYSBgcGF0aF9pdGVtYCkDcgIAAAByxAAAAHJkAgAAKQTaCXBhdGhfaXRlbdoEb25seXJiAgAA2gZmaW5kZXJyFQAAAHIVAAAAchYAAAByZgAAAK8HAABzBgAAAAgCCgEMAXJmAAAAYwMAAAAAAAAAAAAAAAkAAAAGAAAAYwAAAHPIAAAAgQB8AGoAoAFkAaEBcglkAlMAdAJ8AIMBfQN8A6ADZAOhAXIadARqBXwBfANkBI0CVgABAHwCch5kAlMAfAOgBmQFoQFEAF0+fQR0B3wEgwFyQXQIagmgCnwBfAShAn0FdAt0DKANfAWhAXwFgwJ9BnwGRABdBX0HfAdWAAEAcTpxI3wEoA6hAKABZAahAXJhdAhqCaAKfAF8BKECfQV0AnQMoA18BaEBgwF9CHwFfAhfD3QEoBB8AXwEfAihA1YAAQBxI2QCUwApB3pACiAgICBGaW5kIGVnZ3MgaW4gemlwIGZpbGVzOyBwb3NzaWJseSBtdWx0aXBsZSBuZXN0ZWQgZWdncy4KICAgIHoELndobE5yWgIAAKkBcl4CAAByyAAAACkC+gouZGlzdC1pbmZv+gkuZWdnLWluZm8pEXInAgAA2ghlbmRzd2l0aHKLAAAAcv8AAABybQAAANoNZnJvbV9maWxlbmFtZXJgAAAAcv8BAAByzAAAAHLNAAAAck4AAADaEGZpbmRfZWdnc19pbl96aXDaCXppcGltcG9ydNoLemlwaW1wb3J0ZXJybQEAAHLKAQAA2g1mcm9tX2xvY2F0aW9uKQlyYgIAAHJnAgAAcmgCAAByXgIAANoHc3ViaXRlbdoHc3VicGF0aHIgAQAAcqIAAADaB3N1Ym1ldGFyFQAAAHIVAAAAchYAAABybwIAALYHAABzLAAAAAKADAQEAwgBCgEQAQQBBAIOAQgBDgEQAQgBCAEC/w4CDgEOAQYBEAECgAT2cm8CAABjAwAAAAAAAAAAAAAAAwAAAAEAAABDAAAAcv0AAAByqAAAAHIVAAAAKQNyYgIAAHJnAgAAcmgCAAByFQAAAHIVAAAAchYAAADaDGZpbmRfbm90aGluZ9QHAAByFQIAAHJ2AgAAYwEAAAAAAAAAAAAAAAIAAAAFAAAAAwAAAHMiAAAAZAFkAoQAiQCHAGYBZANkBIQIfQF0AHwAfAFkBWQGjQNTACkHYUwCAAAKICAgIEdpdmVuIGEgbGlzdCBvZiBmaWxlbmFtZXMsIHJldHVybiB0aGVtIGluIGRlc2NlbmRpbmcgb3JkZXIKICAgIGJ5IHZlcnNpb24gbnVtYmVyLgoKICAgID4+PiBuYW1lcyA9ICdiYXInLCAnZm9vJywgJ1B5dGhvbi0yLjcuMTAuZWdnJywgJ1B5dGhvbi0yLjcuMi5lZ2cnCiAgICA+Pj4gX2J5X3ZlcnNpb25fZGVzY2VuZGluZyhuYW1lcykKICAgIFsnUHl0aG9uLTIuNy4xMC5lZ2cnLCAnUHl0aG9uLTIuNy4yLmVnZycsICdiYXInLCAnZm9vJ10KICAgID4+PiBuYW1lcyA9ICdTZXR1cHRvb2xzLTEuMi4zYjEuZWdnJywgJ1NldHVwdG9vbHMtMS4yLjMuZWdnJwogICAgPj4+IF9ieV92ZXJzaW9uX2Rlc2NlbmRpbmcobmFtZXMpCiAgICBbJ1NldHVwdG9vbHMtMS4yLjMuZWdnJywgJ1NldHVwdG9vbHMtMS4yLjNiMS5lZ2cnXQogICAgPj4+IG5hbWVzID0gJ1NldHVwdG9vbHMtMS4yLjNiMS5lZ2cnLCAnU2V0dXB0b29scy0xLjIuMy5wb3N0MS5lZ2cnCiAgICA+Pj4gX2J5X3ZlcnNpb25fZGVzY2VuZGluZyhuYW1lcykKICAgIFsnU2V0dXB0b29scy0xLjIuMy5wb3N0MS5lZ2cnLCAnU2V0dXB0b29scy0xLjIuM2IxLmVnZyddCiAgICBjAQAAAAAAAAAAAAAAAQAAAAgAAABTAAAAcy4AAAB6B3QAagGgAnwAoQFXAFMABAB0A3kWAQABAAEAdABqAaACZAGhAQYAWQBTAHcAKQJ6SQogICAgICAgIEF0dGVtcHQgdG8gcGFyc2UgYXMgYSB2ZXJzaW9uIG9yIHJldHVybiBhIG51bGwgdmVyc2lvbi4KICAgICAgICDaATApBHILAAAAchgAAAByGQAAAHKVAQAAcv4AAAByFQAAAHIVAAAAchYAAADaCXRyeV9wYXJzZeoHAABzCgAAAAIEDgEMARABAv96KV9ieV92ZXJzaW9uX2Rlc2NlbmRpbmcuPGxvY2Fscz4udHJ5X3BhcnNlYwEAAAAAAAAAAAAAAAMAAAAFAAAAEwAAAHM2AAAAdABqAaACfAChAVwCfQB9AXQDoAR8AKAFZAGhAXwBZwGhAn0ChwBmAWQCZAOECHwCRACDAVMAKQR6NgogICAgICAgIFBhcnNlIGVhY2ggY29tcG9uZW50IG9mIHRoZSBmaWxlbmFtZQogICAgICAgIHK0AQAAYwEAAAAAAAAAAAAAAAIAAAAEAAAAEwAAAHMUAAAAZwB8AF0GfQGIAHwBgwGRAnECUwByFQAAAHIVAAAAKQJyJQEAANoEcGFydKkBcngCAAByFQAAAHIWAAAA2go8bGlzdGNvbXA++QcAAPMCAAAAFAB6P19ieV92ZXJzaW9uX2Rlc2NlbmRpbmcuPGxvY2Fscz4uX2J5X3ZlcnNpb24uPGxvY2Fscz4uPGxpc3Rjb21wPikGcswAAAByzQAAANoIc3BsaXRleHTaCWl0ZXJ0b29sc9oFY2hhaW5yCQAAACkDcvMAAADaA2V4dHJVAgAAcnoCAAByFQAAAHIWAAAA2gtfYnlfdmVyc2lvbvMHAABzBgAAABAEFAESAXorX2J5X3ZlcnNpb25fZGVzY2VuZGluZy48bG9jYWxzPi5fYnlfdmVyc2lvblRycQEAACkB2gZzb3J0ZWQpAnKYAQAAcoECAAByFQAAAHJ6AgAAchYAAADaFl9ieV92ZXJzaW9uX2Rlc2NlbmRpbmfbBwAAcwYAAAAIDwwJDghygwIAAGMDAAAAAAAAAAAAAAAKAAAACAAAACMAAABzpAAAAIEAdACIAYMBiQF0AYgBgwFyG3QCagOIAXQEiAF0BWoGoAeIAWQBoQKDAmQCjQJWAAEAZANTAIcBZgFkBGQFhAh0CIgBgwFEAIMBfQOHAIcBZgJkBmQFhAh8A0QAgwF9BHQJfASDAX0FfAVEAF0ZfQZ0BWoGoAeIAXwGoQJ9B3QKiAF8BogAgwN9CHwIfAeDAUQAXQV9CXwJVgABAHFJcTZkA1MAKQd6NllpZWxkIGRpc3RyaWJ1dGlvbnMgYWNjZXNzaWJsZSBvbiBhIHN5cy5wYXRoIGRpcmVjdG9yeXIEAgAAcmoCAABOYwEAAAAAAAAAAAAAAAIAAAAFAAAAMwAAAHMeAAAAgQB8AF0KfQF0AGoBoAKIAHwBoQJWAAEAcQJkAFMAciEAAAApA3LMAAAAcs0AAAByTgAAACkCciUBAADaBWNoaWxkKQFyZwIAAHIVAAAAchYAAAByJwEAAAoIAABzCgAAAAKABAACAgz/Cv96H2ZpbmRfb25fcGF0aC48bG9jYWxzPi48Z2VuZXhwcj5jAQAAAAAAAAAAAAAAAgAAAAUAAAAzAAAAcyAAAACBAHwAXQt9AXQAiAF8AYgAgwNyAnwBVgABAHECZABTAHIhAAAAKQHaDGRpc3RfZmFjdG9yeSkCciUBAAByEwEAAKkCcmgCAAByZwIAAHIVAAAAchYAAAByJwEAABIIAABzDgAAAAKABAACAgoBAv0CAQr/KQvaEV9ub3JtYWxpemVfY2FjaGVk2hBfaXNfdW5wYWNrZWRfZWdncm0AAABybgIAAHKKAAAAcswAAAByzQAAAHJOAAAA2gxzYWZlX2xpc3RkaXJygwIAAHKFAgAAKQpyYgIAAHJnAgAAcmgCAAByDgEAANoIZmlsdGVyZWTaEXBhdGhfaXRlbV9lbnRyaWVzchMBAADaCGZ1bGxwYXRo2gdmYWN0b3J5cqIAAAByFQAAAHKGAgAAchYAAADaDGZpbmRfb25fcGF0aP4HAABzLgAAAAKACAIIAgQBBAEOAQL/CP8EBQoCBgIG/gwIAgIG/ggHCAEOAQwBDAEIAQL/BP1yjgIAAGMDAAAAAAAAAAAAAAAHAAAABgAAAEMAAABzagAAAHwBoAChAH0DfAOgAWQBoQF9BHwDoAFkAqEBbxh0AmoDoAR0AmoDoAV8AHwBoQKhAX0FfARwHHwFfQZ8BnIhdAZTAHwCcyl0B3wBgwFyKXQIUwB8AnMyfAOgAWQDoQFyMnQJUwB0CoMAUwApBHoqUmV0dXJuIGEgZGlzdF9mYWN0b3J5IGZvciB0aGUgZ2l2ZW4gZW50cnkucmwCAAByawIAAHoJLmVnZy1saW5rKQtybQEAAHJtAgAAcswAAAByzQAAAHIIAAAAck4AAADaG2Rpc3RyaWJ1dGlvbnNfZnJvbV9tZXRhZGF0YXL/AQAAcmYAAADaEHJlc29sdmVfZWdnX2xpbmvaB05vRGlzdHMpB3JnAgAAchMBAAByaAIAAHJtAQAA2gtpc19lZ2dfaW5mb9oMaXNfZGlzdF9pbmZv2gdpc19tZXRhchUAAAByFQAAAHIWAAAAcoUCAAAhCAAAcyoAAAAIAgoBCgIUAQL+CAQCAwT/Av8CBAL/BgEE/wL9AgYC/wgBBP8C+wQHAvlyhQIAAGMAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAABzIAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZARkBYQAWgVkBlMAKQdykQIAAHpTCiAgICA+Pj4gYm9vbChOb0Rpc3RzKCkpCiAgICBGYWxzZQoKICAgID4+PiBsaXN0KE5vRGlzdHMoKSgnYW55dGhpbmcnKSkKICAgIFtdCiAgICBjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcv0AAAByfwEAAHIVAAAAcpsAAAByFQAAAHIVAAAAchYAAADaCF9fYm9vbF9fPQgAAHIVAgAAehBOb0Rpc3RzLl9fYm9vbF9fYwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMIAAAAdABkAYMBUwByqAAAACkB2gRpdGVyKQJynAAAAHKMAgAAchUAAAByFQAAAHIWAAAA2ghfX2NhbGxfX0AIAAByOAAAAHoQTm9EaXN0cy5fX2NhbGxfX04pBnIRAAAAchIAAAByEwAAAHIUAAAAcpUCAABylwIAAHIVAAAAchUAAAByFQAAAHIWAAAAcpECAAA1CAAAcwgAAAAIAAQBCAcMA3KRAgAAYwEAAAAAAAAAAAAAAAIAAAAKAAAAQwAAAHNiAAAAegZ0AKABfAChAVcAUwAEAHQCdANmAnkSAQABAAEAWQBkAlMABAB0BHkwAQB9AQEAehN8AWoFdAVqBnQFagd0BWoIZgN2AXIlggBXAFkAZAF9AX4BZAJTAGQBfQF+AXcBdwApA3pJCiAgICBBdHRlbXB0IHRvIGxpc3QgY29udGVudHMgb2YgcGF0aCwgYnV0IHN1cHByZXNzIHNvbWUgZXhjZXB0aW9ucy4KICAgIE5yFQAAACkJcswAAAByCQIAANoPUGVybWlzc2lvbkVycm9y2hJOb3RBRGlyZWN0b3J5RXJyb3LaB09TRXJyb3LaBWVycm5v2gdFTk9URElS2gZFQUNDRVPaBkVOT0VOVCkCcs0AAAByugEAAHIVAAAAchUAAAByFgAAAHKJAgAARAgAAHMYAAAAAgQMARABAgEEBg77FgMCAQr/BAIIgAL7cokCAABjAQAAAAAAAAAAAAAABAAAAAYAAABjAAAAc2gAAACBAHQAagGgAnwAoQF9AXQAagGgA3wAoQFyHnQEdACgBXwAoQGDAWQBawJyGGQAUwB0BnwBfACDAn0CbgR0B3wAgwF9AnQAagGgCHwAoQF9A3QJagp8AXwDfAJ0C2QCjQRWAAEAZABTACkDTnIBAAAAKQHaCnByZWNlZGVuY2UpDHLMAAAAcs0AAAByvwEAAHIIAAAAcuABAAByCQIAAHKKAAAAcokAAAByBQIAAHJtAAAAcnICAAByhgAAACkEcs0AAADaBHJvb3RyXgIAAHITAQAAchUAAAByFQAAAHIWAAAAco8CAABUCAAAcxYAAAACgAwBDAESAQQCDAEIAgwBBAEIAQz/co8CAABjAQAAAAAAAAAAAAAAAwAAAAgAAABjAAAAc0wAAACBAHQAfACDAY8XfQF8AUQAXQt9AnwCoAGhAH0CfAJyE3wCVgABAHEIVwBkAQQABACDAwEAZAFTADEAcx93AQEAAQABAFkAAQBkAVMAKQJ6MQogICAgWWllbGQgbm9uLWVtcHR5IGxpbmVzIGZyb20gZmlsZSBhdCBwYXRoCiAgICBOKQJyBwAAANoFc3RyaXApA3LNAAAAclACAADaBGxpbmVyFQAAAHIVAAAAchYAAADaD25vbl9lbXB0eV9saW5lc2MIAABzEgAAAAKACgQIAQgBBAEGAQKAAv0i/3KjAgAAYwEAAAAAAAAAAAAAAAQAAAADAAAAAwAAAHMuAAAAdACIAIMBfQGHAGYBZAFkAoQIfAFEAIMBfQJ0AXQCfAKDAn0DdAN8A2QDgwJTACkEemEKICAgIEdpdmVuIGEgcGF0aCB0byBhbiAuZWdnLWxpbmssIHJlc29sdmUgZGlzdHJpYnV0aW9ucwogICAgcHJlc2VudCBpbiB0aGUgcmVmZXJlbmNlZCBwYXRoLgogICAgYwEAAAAAAAAAAAAAAAIAAAAGAAAAMwAAAHMmAAAAgQB8AF0OfQF0AGoBoAJ0AGoBoAOIAKEBfAGhAlYAAQBxAmQAUwByIQAAACkEcswAAAByzQAAAHJOAAAAcr8BAAApAnIlAQAA2gNyZWZyVwIAAHIVAAAAchYAAAByJwEAAHQIAABzCgAAAAKABAACAhT/Cv96I3Jlc29sdmVfZWdnX2xpbmsuPGxvY2Fscz4uPGdlbmV4cHI+chUAAAApBHKjAgAAcksBAAByZgAAAHIAAgAAKQRyzQAAANoQcmVmZXJlbmNlZF9wYXRoc9oOcmVzb2x2ZWRfcGF0aHPaC2Rpc3RfZ3JvdXBzchUAAAByVwIAAHIWAAAAcpACAABuCAAAcwwAAAAIBQoBAgIG/goECgFykAIAANoKRmlsZUZpbmRlcqkB2hNfbmFtZXNwYWNlX2hhbmRsZXJzKQHaE19uYW1lc3BhY2VfcGFja2FnZXNjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcrcAAAApAmGaAgAAUmVnaXN0ZXIgYG5hbWVzcGFjZV9oYW5kbGVyYCB0byBkZWNsYXJlIG5hbWVzcGFjZSBwYWNrYWdlcwoKICAgIGBpbXBvcnRlcl90eXBlYCBpcyB0aGUgdHlwZSBvciBjbGFzcyBvZiBhIFBFUCAzMDIgIkltcG9ydGVyIiAoc3lzLnBhdGggaXRlbQogICAgaGFuZGxlciksIGFuZCBgbmFtZXNwYWNlX2hhbmRsZXJgIGlzIGEgY2FsbGFibGUgbGlrZSB0aGlzOjoKCiAgICAgICAgZGVmIG5hbWVzcGFjZV9oYW5kbGVyKGltcG9ydGVyLCBwYXRoX2VudHJ5LCBtb2R1bGVOYW1lLCBtb2R1bGUpOgogICAgICAgICAgICAjIHJldHVybiBhIHBhdGhfZW50cnkgdG8gdXNlIGZvciBjaGlsZCBwYWNrYWdlcwoKICAgIE5hbWVzcGFjZSBoYW5kbGVycyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGltcG9ydGVyIG9iamVjdCBoYXMgYWxyZWFkeQogICAgYWdyZWVkIHRoYXQgaXQgY2FuIGhhbmRsZSB0aGUgcmVsZXZhbnQgcGF0aCBpdGVtLCBhbmQgdGhleSBzaG91bGQgb25seQogICAgcmV0dXJuIGEgc3VicGF0aCBpZiB0aGUgbW9kdWxlIF9fcGF0aF9fIGRvZXMgbm90IGFscmVhZHkgY29udGFpbiBhbgogICAgZXF1aXZhbGVudCBzdWJwYXRoLiAgRm9yIGFuIGV4YW1wbGUgbmFtZXNwYWNlIGhhbmRsZXIsIHNlZQogICAgYGBwa2dfcmVzb3VyY2VzLmZpbGVfbnNfaGFuZGxlcmBgLgogICAgTnKpAgAAKQJyZQIAANoRbmFtZXNwYWNlX2hhbmRsZXJyFQAAAHIVAAAAchYAAABykwAAAIUIAABzAgAAAAwPcpMAAABjAgAAAAAAAAAAAAAACAAAAAsAAABDAAAAcxYBAAB0AHwBgwF9AnwCZAF1AHIKZAFTAHoIfAKgAXwAoQFqAn0DVwBuJwQAdAN5OQEAAQABAHQEoAWhAI8SAQB0BKAGZAKhAQEAfAKgB3wAoQF9A1cAZAEEAAQAgwMBAG4IMQBzMncBAQABAAEAWQABAFkAbgF3AHwDZAF1AHJAZAFTAHQIagmgCnwAoQF9BHwEZAF1AHJcdAugDHwAoQEEAH0EdAhqCXwAPABnAHwEXw10DnwAgwEBAG4KdA98BGQDgwJzZnQQZAR8AIMCggF0EXQSfAKDAn0FfAV8AnwBfAB8BIMEfQZ8BmQBdQFyiXwEag19B3wHoBN8BqEBAQB0FKAVfAChAQEAdBZ8B3wAfASDAwEAfAZTACkFekVFbnN1cmUgdGhhdCBuYW1lZCBwYWNrYWdlIGluY2x1ZGVzIGEgc3VicGF0aCBvZiBwYXRoX2l0ZW0gKGlmIG5lZWRlZClO2gZpZ25vcmXaCF9fcGF0aF9f+g5Ob3QgYSBwYWNrYWdlOikXcgIAAADaCWZpbmRfc3BlY3LHAAAAclMCAAByGwAAANoOY2F0Y2hfd2FybmluZ3PaDHNpbXBsZWZpbHRlctoLZmluZF9tb2R1bGVyTAAAAHLAAAAActgAAADaBXR5cGVz2gpNb2R1bGVUeXBlcq4CAADaDl9zZXRfcGFyZW50X25zcs8AAABy9QAAAHLEAAAAcqoCAABy0QAAANoJaW1wb3J0bGli2g1pbXBvcnRfbW9kdWxl2hFfcmVidWlsZF9tb2RfcGF0aCkI2gtwYWNrYWdlTmFtZXJnAgAAcmICAAByxwAAAHLGAAAA2gdoYW5kbGVycnQCAAByzQAAAHIVAAAAchUAAAByFgAAANoKX2hhbmRsZV9uc5cIAABzOgAAAAgDCAEEAQIDEAEMAQoCCgEMARz+BIAC/ggGBAEMAQgBFAEGAQoBCgEKAQoBDgEIAQYBCgEKAQwBBAFyvAIAAGMDAAAAAAAAAAAAAAAFAAAABAAAAAMAAABzbAAAAGQBZAKEAHQAagFEAIMBiQKHAmYBZANkBIQIiQGHAIcBZgJkBWQGhAh9A3QCfAB8A2QHjQJ9BGQIZAKEAHwERACDAX0EdAN8AmoEdAWDAnIxfAR8AmoEZAlkCYUCPABkCVMAfAR8Al8EZAlTACkKenEKICAgIFJlYnVpbGQgbW9kdWxlLl9fcGF0aF9fIGVuc3VyaW5nIHRoYXQgYWxsIGVudHJpZXMgYXJlIG9yZGVyZWQKICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlaXIgc3lzLnBhdGggb3JkZXIKICAgIGMBAAAAAAAAAAAAAAACAAAABAAAAFMAAADzFAAAAGcAfABdBn0BdAB8AYMBkQJxAlMAchUAAACpAXKHAgAAqQJyJQEAANoBcHIVAAAAchUAAAByFgAAAHJ7AgAAvwgAAHJ8AgAAeiVfcmVidWlsZF9tb2RfcGF0aC48bG9jYWxzPi48bGlzdGNvbXA+YwEAAAAAAAAAAAAAAAEAAAAIAAAAEwAAAHMoAAAAegaIAKAAfAChAVcAUwAEAHQBeRMBAAEAAQB0AmQBgwEGAFkAUwB3ACkCei8KICAgICAgICBXb3JrYXJvdW5kIGZvciAjNTIwIGFuZCAjNTEzLgogICAgICAgINoDaW5mKQPaBWluZGV4clEAAADaBWZsb2F0KQFyEwEAACkB2ghzeXNfcGF0aHIVAAAAchYAAADaE3NhZmVfc3lzX3BhdGhfaW5kZXjBCAAAcwoAAAACBAwBDAEMAQL/ei5fcmVidWlsZF9tb2RfcGF0aC48bG9jYWxzPi5zYWZlX3N5c19wYXRoX2luZGV4YwEAAAAAAAAAAAAAAAQAAAAFAAAAEwAAAHM8AAAAfACgAHQBagKhAX0BiACgA2QBoQFkAhcAfQJ8AWQDfAILAIUCGQB9A4gBdAR0AWoCoAV8A6EBgwGDAVMAKQR6UgogICAgICAgIFJldHVybiB0aGUgb3JkaW5hbCBvZiB0aGUgcGF0aCBiYXNlZCBvbiBpdHMgcG9zaXRpb24gaW4gc3lzLnBhdGgKICAgICAgICByRwAAAHKlAAAATikGcgkAAAByzAAAAHL0AQAA2gVjb3VudHKHAgAAck4AAAApBHLNAAAA2gpwYXRoX3BhcnRz2gxtb2R1bGVfcGFydHNyVQIAACkC2gxwYWNrYWdlX25hbWVyxQIAAHIVAAAAchYAAADaFHBvc2l0aW9uX2luX3N5c19wYXRoyggAAHMIAAAADAQOAQ4BFAF6L19yZWJ1aWxkX21vZF9wYXRoLjxsb2NhbHM+LnBvc2l0aW9uX2luX3N5c19wYXRoKQFyOwAAAGMBAAAAAAAAAAAAAAACAAAABAAAAFMAAAByvQIAAHIVAAAAcr4CAAByvwIAAHIVAAAAchUAAAByFgAAAHJ7AgAA1AgAAHJ8AgAATikGckwAAAByzQAAAHKCAgAAcr0AAAByrgIAAHI1AQAAKQXaCW9yaWdfcGF0aHLJAgAAcsYAAAByygIAANoIbmV3X3BhdGhyFQAAACkDcskCAAByxQIAAHLEAgAAchYAAAByuQIAALoIAABzEAAAABAFDAIOCQwJDgEMAhIBCgJyuQIAAGMBAAAAAAAAAAAAAAAGAAAACgAAAEMAAABz1gAAAHQAoAGhAAEAemF8AHQCdgByEFcAdACgA6EAAQBkAVMAdARqBX0BfACgBmQCoQFcA30CfQN9A3wCckR0B3wCgwEBAHwCdAJ2AXIpdAh8AoMBAQB6CHQEagl8AhkAagp9AVcAbhIEAHQLeUMBAH0EAQB6BnQMZAN8AoMCfASCAmQBfQR+BHcBdwB0AqANfAJwSWQBZwChAqAOfAChAQEAdAKgDXwAZwChAgEAfAFEAF0HfQV0D3wAfAWDAgEAcVdXAHQAoAOhAAEAZAFTAHQAoAOhAAEAdwApBHo5RGVjbGFyZSB0aGF0IHBhY2thZ2UgJ3BhY2thZ2VOYW1lJyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlTnJHAAAAcq8CAAApENoEX2ltcNoMYWNxdWlyZV9sb2NrcqsCAADaDHJlbGVhc2VfbG9ja3JMAAAAcs0AAADaCnJwYXJ0aXRpb25yYwAAAHLCAAAAcsAAAAByrgIAAHJTAgAAcvUAAAByIQEAAHLRAAAAcrwCAAApBnK6AgAAcs0AAAByVgIAAHLdAAAAcroBAAByZwIAAHIVAAAAchUAAAByFgAAAHJjAAAA3AgAAHMuAAAACAMCAQgBAgEMGQbpEAEEAggBCAEIAQIBEAEOAQwBCIAC/xYFDAEIAgwDAv0WBnJjAAAAYwIAAAAAAAAAAAAAAAQAAAAIAAAAQwAAAHNMAAAAdACgAaEAAQB6HHQCoAN8AWQBoQJEAF0OfQJ0BHwCfACDAn0DfANyGXQFfAN8AoMCAQBxC1cAdACgBqEAAQBkAlMAdACgBqEAAQB3ACkDekRFbnN1cmUgdGhhdCBwcmV2aW91c2x5LWRlY2xhcmVkIG5hbWVzcGFjZSBwYWNrYWdlcyBpbmNsdWRlIHBhdGhfaXRlbXIVAAAATikHcs0CAAByzgIAAHKrAgAActgAAAByvAIAAHKVAAAAcs8CAAApBHJnAgAAclYCAADaB3BhY2thZ2VydAIAAHIVAAAAchUAAAByFgAAAHKVAAAA/ggAAHMSAAAACAICARABCgEEAQoBAoAC/RYFcpUAAABjBAAAAAAAAAAAAAAABwAAAAYAAABDAAAAc0IAAAB0AGoBoAJ8AXwCoANkAaEBZAIZAKECfQR0BHwEgwF9BXwDagVEAF0LfQZ0BHwGgwF8BWsCch4BAGQDUwBxE3wEUwApBHpCQ29tcHV0ZSBhbiBucy1wYWNrYWdlIHN1YnBhdGggZm9yIGEgZmlsZXN5c3RlbSBvciB6aXBmaWxlIGltcG9ydGVyckcAAABytgAAAE4pBnLMAAAAcs0AAAByTgAAAHIJAAAAcocCAAByrgIAACkHcmICAAByZwIAAHK6AgAAcsYAAABydAIAANoKbm9ybWFsaXplZHIrAQAAchUAAAByFQAAAHIWAAAA2g9maWxlX25zX2hhbmRsZXIKCQAAcw4AAAAYAwgBCgEMAQYBAv8EBHLTAgAAYwQAAAAAAAAAAAAAAAQAAAABAAAAQwAAAHJBAAAAciEAAAByFQAAACkEcmICAAByZwIAAHK6AgAAcsYAAAByFQAAAHIVAAAAchYAAADaD251bGxfbnNfaGFuZGxlch4JAAByFQIAAHLUAgAAYwEAAAAAAAAAAAAAAAEAAAAIAAAAQwAAAHMgAAAAdABqAaACdABqAaADdABqAaAEdAV8AIMBoQGhAaEBUwApAXoxTm9ybWFsaXplIGEgZmlsZS9kaXIgbmFtZSBmb3IgY29tcGFyaXNvbiBwdXJwb3NlcykGcswAAAByzQAAANoIbm9ybWNhc2XaCHJlYWxwYXRociICAADaDV9jeWd3aW5fcGF0Y2ipAXKpAQAAchUAAAByFQAAAHIWAAAAcoEAAAAlCQAAcwYAAAASAgYBCP9ygQAAAGMBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzGgAAAHQAagFkAWsCcgt0AmoDoAR8AKEBUwB8AFMAKQJhCAEAAAogICAgQ29udHJhcnkgdG8gUE9TSVggMjAwOCwgb24gQ3lnd2luLCBnZXRjd2QgKDMpIGNvbnRhaW5zCiAgICBzeW1saW5rIGNvbXBvbmVudHMuIFVzaW5nCiAgICBvcy5wYXRoLmFic3BhdGgoKSB3b3JrcyBhcm91bmQgdGhpcyBsaW1pdGF0aW9uLiBBIGZpeCBpbiBvcy5nZXRjd2QoKQogICAgd291bGQgcHJvYmFibHkgYmV0dGVyLCBpbiBDeWd3aW4gZXZlbiBtb3JlIHNvLCBleGNlcHQKICAgIHRoYXQgdGhpcyBzZWVtcyB0byBiZSBieSBkZXNpZ24uLi4KICAgINoGY3lnd2luKQVyTAAAAHJNAAAAcswAAAByzQAAANoHYWJzcGF0aHLYAgAAchUAAAByFQAAAHIWAAAActcCAAArCQAAcwIAAAAaCHLXAgAAYwIAAAAAAAAAAAAAAAMAAAAIAAAAQwAAAHMyAAAAegV8AXwAGQBXAFMABAB0AHkYAQABAAEAdAF8AIMBBAB8AXwAPAB9AnwCBgBZAFMAdwByIQAAACkCcsEAAABygQAAACkDcqkBAABy0gAAANoGcmVzdWx0chUAAAByFQAAAHIWAAAAcocCAAA2CQAAcwwAAAACAQoBDAEQAQgBAv5yhwIAAGMBAAAAAAAAAAAAAAABAAAAAgAAAEMAAABzEAAAAHQAfACDAXAHdAF8AIMBUwApAXo3CiAgICBEZXRlcm1pbmUgaWYgZ2l2ZW4gcGF0aCBhcHBlYXJzIHRvIGJlIGFuIGVnZy4KICAgICkC2gtfaXNfemlwX2VnZ3KIAgAAclcCAAByFQAAAHIVAAAAchYAAABy/wEAAD4JAABzAgAAABAEcv8BAABjAQAAAAAAAAAAAAAAAQAAAAMAAABDAAAAcyQAAAB8AKAAoQCgAWQBoQFvEXQCagOgBHwAoQFvEXQFoAZ8AKEBUwApAk76BC5lZ2cpB3JtAQAAcm0CAAByzAAAAHLNAAAAckkCAAByGwIAANoKaXNfemlwZmlsZXJXAgAAchUAAAByFQAAAHIWAAAActwCAABFCQAAcwoAAAAOAgoBAv8IAgL9ctwCAABjAQAAAAAAAAAAAAAAAQAAAAcAAABDAAAAcyYAAAB8AKAAoQCgAWQBoQFvEnQCagOgBHQCagOgBXwAZAJkA6EDoQFTACkEekAKICAgIERldGVybWluZSBpZiBnaXZlbiBwYXRoIGFwcGVhcnMgdG8gYmUgYW4gdW5wYWNrZWQgZWdnLgogICAgct0CAAByBAIAAHJaAgAAKQZybQEAAHJtAgAAcswAAAByzQAAAHJJAgAAck4AAAByVwIAAHIVAAAAchUAAAByFgAAAHKIAgAATQkAAHMGAAAADgUWAQL+cogCAABjAQAAAAAAAAAAAAAABAAAAAUAAABDAAAAc0AAAAB8AKAAZAGhAX0BfAGgAaEAfQJ8AXIeZAGgAnwBoQF9A3QDdARqBXwDGQB8AnQEagV8ABkAgwMBAGQAUwBkAFMAKQJOckcAAAApBnIJAAAAcjoBAAByTgAAANoHc2V0YXR0cnJMAAAAcsAAAAApBHK6AgAAclUCAABy8wAAAHJWAgAAchUAAAByFQAAAHIWAAAAcrYCAABXCQAAcwwAAAAKAQgBBAEKARwBBP5ytgIAAGMBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzEAAAAHwAbwd8AKAAZAGhAQwAUwApAk76ASOpAXLfAAAAqQFyvwAAAHIVAAAAchUAAAByFgAAANoJX25vbmJsYW5rXwkAAHMCAAAAEAFy4wIAAGMBAAAAAAAAAAAAAAABAAAABQAAAEMAAABzEgAAAHQAagGgAnQDdAR8AIMCoQFTACkBeilZaWVsZCB2YWxpZCBsaW5lcyBvZiBhIHN0cmluZyBvciBpdGVyYWJsZSkFcn4CAAByfwIAANoNZnJvbV9pdGVyYWJsZXJLAQAAcnoAAAApAdoIaXRlcmFibGVyFQAAAHIVAAAAchYAAAByegAAAGMJAABzAgAAABIDcnoAAABjAQAAAAAAAAAAAAAAAQAAAAYAAABDAAAAcxYAAAB0AHQBdAJ0A2oEfACgBaEAgwKDAlMAciEAAAApBnL+AQAAcuMCAABySwEAAHK/AAAAcqECAADaCnNwbGl0bGluZXMpAXK5AQAAchUAAAByFQAAAHIWAAAAct0AAABpCQAAcmwBAABy3QAAAHoMXHcrKFwuXHcrKSokepYKICAgICg/UDxuYW1lPlteLV0rKSAoCiAgICAgICAgLSg/UDx2ZXI+W14tXSspICgKICAgICAgICAgICAgLXB5KD9QPHB5dmVyPlteLV0rKSAoCiAgICAgICAgICAgICAgICAtKD9QPHBsYXQ+LispCiAgICAgICAgICAgICk/CiAgICAgICAgKT8KICAgICk/CiAgICBjAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAc4YAAABlAFoBZABaAmQBWgNkGmQEZAWEAVoEZAZkB4QAWgVkCGQJhABaBmQbZAtkDIQBWgdkDWQOhABaCGQcZA9kEIQBWgllCqALZBGhAVoMZQ1kHWQSZBOEAYMBWg5lDWQUZBWEAIMBWg9lDWQdZBZkF4QBgwFaEGUNZB1kGGQZhAGDAVoRZANTACkecm8AAAB6M09iamVjdCByZXByZXNlbnRpbmcgYW4gYWR2ZXJ0aXNlZCBpbXBvcnRhYmxlIG9iamVjdHIVAAAATmMGAAAAAAAAAAAAAAAGAAAAAwAAAEMAAABzPAAAAHQAfAKDAXMJdAFkAXwCgwKCAXwBfABfAnwCfABfA3QEfAODAXwAXwV0BHwEgwF8AF8GfAV8AF8HZABTACkCTnoTSW52YWxpZCBtb2R1bGUgbmFtZSkI2gZNT0RVTEVyUQAAAHLzAAAA2gttb2R1bGVfbmFtZdoFdHVwbGXaBWF0dHJzcj0BAAByogAAACkGcpwAAABy8wAAAHLoAgAAcuoCAAByPQEAAHKiAAAAchUAAAByFQAAAHIWAAAAchQBAACACQAAcw4AAAAIAQoBBgEGAQoBCgEKAXoTRW50cnlQb2ludC5fX2luaXRfX2MBAAAAAAAAAAAAAAACAAAABQAAAEMAAABzSAAAAGQBfABqAHwAagFmAhYAfQF8AGoCchV8AWQCZAOgA3wAagKhARcANwB9AXwAagRyInwBZARkBaADfABqBKEBFgA3AH0BfAFTACkGTnoHJXMgPSAlc/oBOnJHAAAAegUgWyVzXfoBLCkFcvMAAABy6AIAAHLqAgAAck4AAAByPQEAACkCcpwAAADaAXNyFQAAAHIVAAAAchYAAABytQAAAIkJAABzDAAAABABBgEUAQYBFAEEAXoSRW50cnlQb2ludC5fX3N0cl9fYwEAAAAAAAAAAAAAAAEAAAADAAAAQwAAAPMMAAAAZAF0AHwAgwEWAFMAKQJOehRFbnRyeVBvaW50LnBhcnNlKCVyKXLiAgAAcpsAAAByFQAAAHIVAAAAchYAAABynQAAAJEJAAByCAIAAHoTRW50cnlQb2ludC5fX3JlcHJfX1RjAgAAAAAAAAAAAAAABAAAAAUAAABPAAAAczgAAAB8AXIGfAJzBnwDcg50AGoBZAF0AmQCZAONAwEAfAFyGHwAagN8AmkAfAOkAY4BAQB8AKAEoQBTACkEekgKICAgICAgICBSZXF1aXJlIHBhY2thZ2VzIGZvciB0aGlzIEVudHJ5UG9pbnQsIHRoZW4gcmVzb2x2ZSBpdC4KICAgICAgICB6SlBhcmFtZXRlcnMgdG8gbG9hZCBhcmUgZGVwcmVjYXRlZC4gIENhbGwgLnJlc29sdmUgYW5kIC5yZXF1aXJlIHNlcGFyYXRlbHkuckgAAABy8AEAACkFchsAAAByHAAAAHIdAAAAclUAAAByHAEAACkEcpwAAAByVQAAAHJDAAAA2gZrd2FyZ3NyFQAAAHIVAAAAchYAAAByHwIAAJQJAABzEgAAAAwEBAECAQICAgEG/AQGEAEIAXoPRW50cnlQb2ludC5sb2FkYwEAAAAAAAAAAAAAAAMAAAAKAAAAQwAAAHNMAAAAdAB8AGoBZAFnAWQCZAONA30Begl0AqADdAR8AGoFfAGhA1cAUwAEAHQGeSUBAH0CAQB6B3QHdAh8AoMBgwF8AoICZAR9An4CdwF3ACkFekQKICAgICAgICBSZXNvbHZlIHRoZSBlbnRyeSBwb2ludCBmcm9tIGl0cyBtb2R1bGUgYW5kIGF0dHJzLgogICAgICAgIHIRAAAAcgEAAAApAtoIZnJvbWxpc3TaBWxldmVsTikJcsIAAABy6AIAANoJZnVuY3Rvb2xz2gZyZWR1Y2VywwAAAHLqAgAAclMCAAByFwEAAHK/AAAAKQNynAAAAHLGAAAActMBAAByFQAAAHIVAAAAchYAAAByHAEAAKMJAABzDgAAABIEAgESAQ4BDgEIgAL/ehJFbnRyeVBvaW50LnJlc29sdmVjAwAAAAAAAAAAAAAABQAAAAYAAABDAAAAc0wAAAB8AGoAcgt8AGoBcwt0AmQBfACDAoIBfABqAaADfABqAKEBfQN0BGoFfAN8AXwCfABqAGQCjQR9BHQGdAd0BGoIfASDAoMBAQBkAFMAKQNOeiZDYW4ndCByZXF1aXJlKCkgd2l0aG91dCBhIGRpc3RyaWJ1dGlvbikBcj0BAAApCXI9AQAAcqIAAABycwAAAHIpAQAAcmQAAAByHAEAAHI1AQAAcksBAAByHQEAACkFcpwAAAByQQEAAHJCAQAAch8BAAByKwAAAHIVAAAAchUAAAByFgAAAHJVAAAArQkAAHMKAAAADAEKAQ4HFAEUAXoSRW50cnlQb2ludC5yZXF1aXJlel1ccyooP1A8bmFtZT4uKz8pXHMqPVxzKig/UDxtb2R1bGU+W1x3Ll0rKVxzKig6XHMqKD9QPGF0dHI+W1x3Ll0rKSk/XHMqKD9QPGV4dHJhcz5cWy4qXF0pP1xzKiRjAwAAAAAAAAAAAAAACAAAAAYAAABDAAAAc2YAAAB8AGoAoAF8AaEBfQN8A3MPZAF9BHQCfAR8AYMCggF8A6ADoQB9BXwAoAR8BWQCGQChAX0GfAVkAxkAciV8BWQDGQCgBWQEoQFuAWQFfQd8AHwFZAYZAHwFZAcZAHwHfAZ8AoMFUwApCGEUAQAAUGFyc2UgYSBzaW5nbGUgZW50cnkgcG9pbnQgZnJvbSBzdHJpbmcgYHNyY2AKCiAgICAgICAgRW50cnkgcG9pbnQgc3ludGF4IGZvbGxvd3MgdGhlIGZvcm06OgoKICAgICAgICAgICAgbmFtZSA9IHNvbWUubW9kdWxlOnNvbWUuYXR0ciBbZXh0cmExLCBleHRyYTJdCgogICAgICAgIFRoZSBlbnRyeSBuYW1lIGFuZCBtb2R1bGUgbmFtZSBhcmUgcmVxdWlyZWQsIGJ1dCB0aGUgYGA6YXR0cnNgYCBhbmQKICAgICAgICBgYFtleHRyYXNdYGAgcGFydHMgYXJlIG9wdGlvbmFsCiAgICAgICAgejlFbnRyeVBvaW50IG11c3QgYmUgaW4gJ25hbWU9bW9kdWxlOmF0dHJzIFtleHRyYXNdJyBmb3JtYXRyPQEAANoEYXR0cnJHAAAAchUAAABy8wAAAHLGAAAAKQbaB3BhdHRlcm5ySwAAAHJRAAAA2glncm91cGRpY3TaDV9wYXJzZV9leHRyYXNyCQAAACkIchkBAADaA3NyY3KiAAAAclMAAABypQEAANoDcmVzcj0BAABy6gIAAHIVAAAAchUAAAByFgAAAHL0AAAAwwkAAHMQAAAADAsEAQQBCgEIAQ4BGgEYAXoQRW50cnlQb2ludC5wYXJzZWMCAAAAAAAAAAAAAAADAAAABAAAAEMAAABzKAAAAHwBcwRkAVMAdACgAWQCfAEXAKEBfQJ8AmoCchF0A4MAggF8AmoEUwApA05yFQAAANoBeCkFcm4AAABy9AAAANoFc3BlY3NyUQAAAHI9AQAAKQNyGQEAANoLZXh0cmFzX3NwZWNypgAAAHIVAAAAchUAAAByFgAAAHL3AgAA1wkAAHMMAAAABAIEAQ4BBgEGAQYBehhFbnRyeVBvaW50Ll9wYXJzZV9leHRyYXNjBAAAAAAAAAAAAAAABwAAAAUAAABDAAAAc1YAAAB0AHwBgwFzCXQBZAF8AYMCggFpAH0EdAJ8AoMBRABdGX0FfACgA3wFfAOhAn0GfAZqBHwEdgByI3QBZAJ8AXwGagSDA4IBfAZ8BHwGagQ8AHEPfARTACkDehpQYXJzZSBhbiBlbnRyeSBwb2ludCBncm91cHoSSW52YWxpZCBncm91cCBuYW1lehVEdXBsaWNhdGUgZW50cnkgcG9pbnQpBXLnAgAAclEAAAByegAAAHL0AAAAcvMAAAApB3IZAQAAclAAAADaBWxpbmVzcqIAAADaBHRoaXNyogIAANoCZXByFQAAAHIVAAAAchYAAADaC3BhcnNlX2dyb3Vw4AkAAHMSAAAACAMKAQQBDAEMAQoBDgEMAQQBehZFbnRyeVBvaW50LnBhcnNlX2dyb3VwYwMAAAAAAAAAAAAAAAYAAAAGAAAAQwAAAHN0AAAAdAB8AXQBgwJyCnwBoAKhAH0BbgR0A3wBgwF9AWkAfQN8AUQAXSVcAn0EfQV8BGQBdQByIXwFcx1xEnQEZAKDAYIBfASgBaEAfQR8BHwDdgByLnQEZAN8BIMCggF8AKAGfAR8BXwCoQN8A3wEPABxEnwDUwApBHohUGFyc2UgYSBtYXAgb2YgZW50cnkgcG9pbnQgZ3JvdXBzTnolRW50cnkgcG9pbnRzIG11c3QgYmUgbGlzdGVkIGluIGdyb3Vwc3oURHVwbGljYXRlIGdyb3VwIG5hbWUpB3K9AAAAciUAAAByKwAAAHJ7AAAAclEAAAByoQIAAHIAAwAAKQZyGQEAANoEZGF0YXKiAAAA2gRtYXBzclAAAABy/QIAAHIVAAAAchUAAAByFgAAANoJcGFyc2VfbWFw7QkAAHMcAAAACgMKAQgCBAEMAQgBBAECAQgBCAEIAQoBFAEEAXoURW50cnlQb2ludC5wYXJzZV9tYXApA3IVAAAAchUAAABOclsBAAApAk5OciEAAAApEnIRAAAAchIAAAByEwAAAHIUAAAAchQBAABytQAAAHKdAAAAch8CAAByHAEAAHJVAAAAcrUBAABy3gEAAHL1AgAAclwBAABy9AAAAHL3AgAAcgADAAByAwMAAHIVAAAAchUAAAByFQAAAHIWAAAAcm8AAAB9CQAAcyYAAAAIAAQBCgIICQgICgMIDwoKBA0CAQT/AgkMAQITCgECCAwBAgwQAXJvAAAAYwEAAAAAAAAAAAAAAAYAAAADAAAAQwAAAHNAAAAAZAFkAoQAfQF0AHwBfACDAn0CdAF0AnwCgwFkA4MCfQN8A6ADZAShAVwDfQR9BH0FdAR8BaAFoQCDAXAfZAVTACkGeoQKICAgIEdpdmVuIGFuIGl0ZXJhYmxlIG9mIGxpbmVzIGZyb20gYSBNZXRhZGF0YSBmaWxlLCByZXR1cm4KICAgIHRoZSB2YWx1ZSBvZiB0aGUgVmVyc2lvbiBmaWVsZCwgaWYgcHJlc2VudCwgb3IgTm9uZSBvdGhlcndpc2UuCiAgICBjAQAAAAAAAAAAAAAAAQAAAAMAAABTAAAAcw4AAAB8AKAAoQCgAWQBoQFTACkCTnoIdmVyc2lvbjopAnJtAQAAct8AAAApAXKiAgAAchUAAAByFQAAAHIWAAAA2g9pc192ZXJzaW9uX2xpbmUGCgAAckAAAAB6K192ZXJzaW9uX2Zyb21fZmlsZS48bG9jYWxzPi5pc192ZXJzaW9uX2xpbmVyyAAAAHLrAgAATikGcv4BAAByAAIAAHKWAgAA2glwYXJ0aXRpb25ydwAAAHKhAgAAKQZy/QIAAHIEAwAA2g12ZXJzaW9uX2xpbmVzcqICAABy3QAAAHLSAQAAchUAAAByFQAAAHIWAAAA2hJfdmVyc2lvbl9mcm9tX2ZpbGUBCgAAcwoAAAAIBQoCDgEQARABcgcDAABjAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAc4wBAABlAFoBZABaAmQBWgNkAloEZANkA2QDZANlBWQDZQZmB2QEZAWEAVoHZQhkUmQGZAeEAYMBWglkCGQJhABaCmULZApkC4QAgwFaDGQMZA2EAFoNZA5kD4QAWg5kEGQRhABaD2QSZBOEAFoQZBRkFYQAWhFkFmQXhABaEmQYZBmEAFoTZQtkGmQbhACDAVoUZQtkHGQdhACDAVoVZB5kH4QAWhZlC2QgZCGEAIMBWhdlC2QiZCOEAIMBWhhlGWQkZCWEAIMBWhpkJmQnhABaG2RTZClkKoQBWhxkK2QshABaHWQtZC6EAFoeZC9kMIQAWh9kVGQyZDOEAVogZDRkNYQAWiFkNmQ3hABaImQ4ZDmEAFojZDpkO4QAWiSHAGYBZDxkPYQIWiVlCGRSZD5kP4QBgwFaJmRAZEGEAFonZEJkQ4QAWihkUmREZEWEAVopZEZkR4QAWipkVGRIZEmEAVorZEpkS4QAWixkTGRNhABaLWROZE+EAFouZQtkUGRRhACDAVovhwAEAFowUwApVXJtAAAAejVXcmFwIGFuIGFjdHVhbCBvciBwb3RlbnRpYWwgc3lzLnBhdGggZW50cnkgdy9tZXRhZGF0YXJaAgAATmMIAAAAAAAAAAAAAAAIAAAAAgAAAEMAAABzRgAAAHQAfANwBGQBgwF8AF8BfARkAHUBchB0AnwEgwF8AF8DfAV8AF8EfAZ8AF8FfAF8AF8GfAd8AF8HfAJwH3QIfABfCWQAUwApAk7aB1Vua25vd24pCnJ2AAAAcj8BAABydwAAANoIX3ZlcnNpb25yaAEAAHJNAAAAci8BAABynwIAAHKNAAAA2glfcHJvdmlkZXIpCHKcAAAAci8BAAByXgIAAHI/AQAAchgAAAByaAEAAHJNAAAAcp8CAAByFQAAAHIVAAAAchYAAAByFAEAABIKAABzEAAAAA4ECAEKAQYBBgEGAQYBDgF6FURpc3RyaWJ1dGlvbi5fX2luaXRfX2MEAAAAAAAAAAAAAAALAAAABwAAAEsAAABzfgAAAGQAZwFkARQAXAR9BX0GfQd9CHQAagGgAnwCoQFcAn0CfQl8CaADoQB0BHYAci90BHwJoAOhABkAfQB0BXwCgwF9CnwKci98CqAGZAJkA2QEZAWhBFwEfQV9Bn0HfQh8AHwBfANmAnwFfAZ8B3wIZAacBHwEpAGOAaAHoQBTACkHTnLbAAAAcvMAAADaA3ZlctoFcHl2ZXJyUgAAACkEcj8BAAByGAAAAHJoAQAAck0AAAApCHLMAAAAcs0AAAByfQIAAHJtAQAA2hFfZGlzdHJpYnV0aW9uSW1wbNoIRUdHX05BTUVyUAAAANoPX3JlbG9hZF92ZXJzaW9uKQtyGQEAAHIvAQAAcgUCAAByXgIAAHIoAAAAcj8BAAByGAAAAHJoAQAAck0AAABygAIAAHJLAAAAchUAAAByFQAAAHIWAAAAcnICAAAfCgAAcyYAAAASAhABDAEMAQgCBAEEAQgBDP8CAwQBAv8EAQQBBP4CAgT+BAMC/XoaRGlzdHJpYnV0aW9uLmZyb21fbG9jYXRpb25jAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAAB8AFMAciEAAAByFQAAAHKbAAAAchUAAAByFQAAAHIWAAAAcg8DAAAwCgAAchUCAAB6HERpc3RyaWJ1dGlvbi5fcmVsb2FkX3ZlcnNpb25jAQAAAAAAAAAAAAAAAQAAAAYAAABDAAAAcyQAAAB8AGoAfABqAXwAagJ8AGoDfABqBHAMZAF8AGoFcBBkAWYGUwByFAIAACkG2g5wYXJzZWRfdmVyc2lvbnKfAgAAcjsAAAByLwEAAHJoAQAAck0AAABymwAAAHIVAAAAchUAAAByFgAAAHJwAQAAMwoAAHMOAAAABAMEAQQBBAEIAQgBBPp6FERpc3RyaWJ1dGlvbi5oYXNoY21wYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAdAB8AGoBgwFTAHIhAAAAKQLaBGhhc2hycAEAAHKbAAAAchUAAAByFQAAAHIWAAAA2ghfX2hhc2hfXz4KAAByggEAAHoVRGlzdHJpYnV0aW9uLl9faGFzaF9fYwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAfABqAHwBagBrAFMAciEAAACpAXJwAQAAqQJynAAAAHJ5AQAAchUAAAByFQAAAHIWAAAA2gZfX2x0X19BCgAAcggCAAB6E0Rpc3RyaWJ1dGlvbi5fX2x0X19jAgAAAAAAAAAAAAAAAgAAAAIAAABDAAAAcwwAAAB8AGoAfAFqAGsBUwByIQAAAHITAwAAchQDAAByFQAAAHIVAAAAchYAAADaBl9fbGVfX0QKAAByCAIAAHoTRGlzdHJpYnV0aW9uLl9fbGVfX2MCAAAAAAAAAAAAAAACAAAAAgAAAEMAAABzDAAAAHwAagB8AWoAawRTAHIhAAAAchMDAAByFAMAAHIVAAAAchUAAAByFgAAANoGX19ndF9fRwoAAHIIAgAAehNEaXN0cmlidXRpb24uX19ndF9fYwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMMAAAAfABqAHwBagBrBVMAciEAAAByEwMAAHIUAwAAchUAAAByFQAAAHIWAAAA2gZfX2dlX19KCgAAcggCAAB6E0Rpc3RyaWJ1dGlvbi5fX2dlX19jAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcxwAAAB0AHwBfABqAYMCcwhkAVMAfABqAnwBagJrAlMAcn8BAAApA3K9AAAAcpkAAABycAEAAHIUAwAAchUAAAByFQAAAHIWAAAA2gZfX2VxX19NCgAAcwYAAAAMAQQCDAF6E0Rpc3RyaWJ1dGlvbi5fX2VxX19jAgAAAAAAAAAAAAAAAgAAAAIAAABDAAAA8woAAAB8AHwBawIMAFMAciEAAAByFQAAAHIUAwAAchUAAAByFQAAAHIWAAAA2gZfX25lX19TCgAAcoIBAAB6E0Rpc3RyaWJ1dGlvbi5fX25lX19jAQAAAAAAAAAAAAAAAgAAAAgAAABDAAAAczAAAAB6BHwAagBXAFMABAB0AXkXAQABAAEAfABqAqADoQAEAHwAXwB9AXwBBgBZAFMAdwByIQAAACkE2gRfa2V5clMCAAByPwEAAHJtAQAAcngBAAByFQAAAHIVAAAAchYAAAByOwAAAFoKAABzDAAAAAICCAEMARABCAEC/noQRGlzdHJpYnV0aW9uLmtleWMBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzHAAAAHQAfABkAYMCcwt0AXwAagKDAXwAXwN8AGoDUwApAk7aD19wYXJzZWRfdmVyc2lvbikEcs8AAAByIAAAAHIYAAAAch0DAABymwAAAHIVAAAAchUAAAByFgAAAHIQAwAAYgoAAHMGAAAACgIMAQYCehtEaXN0cmlidXRpb24ucGFyc2VkX3ZlcnNpb25jAQAAAAAAAAAAAAAABAAAAAcAAABDAAAAc1wAAAB0AGoBagJ9AXQDfABqBHwBgwJ9AnwCcw5kAFMAfABqAXMTZABTAHQFoAZkAaEBoAehAKAIZAJkA6ECfQN0CaAKfANqC2QEaQB0DHwAgwGkAY4BdA2hAgEAZABTACkFTmE+AQAACiAgICAgICAgICAgICd7cHJvamVjdF9uYW1lfSAoe3ZlcnNpb259KScgaXMgYmVpbmcgcGFyc2VkIGFzIGEgbGVnYWN5LAogICAgICAgICAgICBub24gUEVQIDQ0MCwKICAgICAgICAgICAgdmVyc2lvbi4gWW91IG1heSBmaW5kIG9kZCBiZWhhdmlvciBhbmQgc29ydCBvcmRlci4KICAgICAgICAgICAgSW4gcGFydGljdWxhciBpdCB3aWxsIGJlIHNvcnRlZCBhcyBsZXNzIHRoYW4gMC4wLiBJdAogICAgICAgICAgICBpcyByZWNvbW1lbmRlZCB0byBtaWdyYXRlIHRvIFBFUCA0NDAgY29tcGF0aWJsZQogICAgICAgICAgICB2ZXJzaW9ucy4KICAgICAgICAgICAgctkBAABy3AAAAHIVAAAAKQ5yCwAAAHIYAAAAch4AAAByvQAAAHIdAwAAcosBAAByjAEAAHKhAgAAcuEAAAByGwAAAHIcAAAAcqsAAADaBHZhcnNyDwAAACkEcpwAAADaAkxW2glpc19sZWdhY3lykQEAAHIVAAAAchUAAAByFgAAANoUX3dhcm5fbGVnYWN5X3ZlcnNpb25pCgAAcxQAAAAIAQwBBAEEAQYIBAEIAgwHAvkgCXohRGlzdHJpYnV0aW9uLl93YXJuX2xlZ2FjeV92ZXJzaW9uYwEAAAAAAAAAAAAAAAUAAAAKAAAAQwAAAHNoAAAAegR8AGoAVwBTAAQAdAF5MwEAfQEBAHojfACgAqEAfQJ8AmQAdQByJ3wAoAN8AGoEoQF9A2QBoAV8AGoEfAOhAn0EdAZ8BHwAgwJ8AYICfAJXAAYAWQBkAH0BfgFTAGQAfQF+AXcBdwApAk56NE1pc3NpbmcgJ1ZlcnNpb246JyBoZWFkZXIgYW5kL29yIHt9IGZpbGUgYXQgcGF0aDoge30pB3IJAwAAclMCAADaDF9nZXRfdmVyc2lvbtoeX2dldF9tZXRhZGF0YV9wYXRoX2Zvcl9kaXNwbGF52ghQS0dfSU5GT3KrAAAAclEAAAApBXKcAAAAcroBAAByGAAAAHLNAAAAcqUBAAByFQAAAHIVAAAAchYAAAByGAAAAIMKAABzGgAAAAICCAEOAQgBCAEMAQICCgEC/gwDEAIIgAL3ehREaXN0cmlidXRpb24udmVyc2lvbmMBAAAAAAAAAAAAAAABAAAACAAAAEMAAABzMAAAAHoEfABqAFcAUwAEAHQBeRcBAAEAAQB8AKACfACgA6EAoQF8AF8AWQB8AGoAUwB3ACkBen4KICAgICAgICBBIG1hcCBvZiBleHRyYSB0byBpdHMgbGlzdCBvZiAoZGlyZWN0KSByZXF1aXJlbWVudHMKICAgICAgICBmb3IgdGhpcyBkaXN0cmlidXRpb24sIGluY2x1ZGluZyB0aGUgbnVsbCBleHRyYS4KICAgICAgICApBNoWX0Rpc3RyaWJ1dGlvbl9fZGVwX21hcHJTAgAA2g5fZmlsdGVyX2V4dHJhc9oOX2J1aWxkX2RlcF9tYXBymwAAAHIVAAAAchUAAAByFgAAANoIX2RlcF9tYXCSCgAAcwwAAAACBggBDAESAQYBAv56FURpc3RyaWJ1dGlvbi5fZGVwX21hcGMBAAAAAAAAAAAAAAAHAAAABQAAAEMAAABzcgAAAHQAdAFkAXwAgwKDAUQAXS99AXwBfQJ8AKACfAGhAX0DfAGgA2QCoQFcA30CfQR9BXwFbyJ0BHwFgwFwInQFfAWDAQwAfQZ8BnInZwB9A3QGfAKDAXAsZAF9AnwAoAd8AmcAoQKgCHwDoQEBAHEHfABTACkDeqQKICAgICAgICBHaXZlbiBhIG1hcHBpbmcgb2YgZXh0cmFzIHRvIGRlcGVuZGVuY2llcywgc3RyaXAgb2ZmCiAgICAgICAgZW52aXJvbm1lbnQgbWFya2VycyBhbmQgZmlsdGVyIG91dCBhbnkgZGVwZW5kZW5jaWVzCiAgICAgICAgbm90IG1hdGNoaW5nIHRoZSBtYXJrZXJzLgogICAgICAgIE5y6wIAACkJcjUBAABy/gEAAHI6AQAAcgUDAAByfgAAAHJ/AAAAcnwAAAByIQEAAHI+AQAAKQfaAmRtcl0BAADaCW5ld19leHRyYXIfAQAAct0AAAByXwEAANoMZmFpbHNfbWFya2VychUAAAByFQAAAHIWAAAAciYDAACeCgAAcxoAAAASBwQBCgEQAQQBCAEIAQL+BAQEAQwBFAIEAXobRGlzdHJpYnV0aW9uLl9maWx0ZXJfZXh0cmFzYwEAAAAAAAAAAAAAAAUAAAAGAAAAQwAAAHNAAAAAaQB9AWQBRABdGX0CdAB8AKABfAKhAYMBRABdD1wCfQN9BHwBoAJ8A2cAoQKgA3QEfASDAaEBAQBxDXEEfAFTACkCTikCegxyZXF1aXJlcy50eHR6C2RlcGVuZHMudHh0KQVyewAAANoNX2dldF9tZXRhZGF0YXIhAQAAcj4BAABydQAAACkFcpwAAAByKQMAAHLzAAAAcl0BAAByHwEAAHIVAAAAchUAAAByFgAAAHInAwAAtAoAAHMMAAAABAEIARYBGAEC/wQCehtEaXN0cmlidXRpb24uX2J1aWxkX2RlcF9tYXByFQAAAGMCAAAAAAAAAAAAAAAGAAAACwAAAEMAAABzagAAAHwAagB9AmcAfQN8A6ABfAKgAmQBZAKhAqEBAQB8AUQAXSJ9BHoLfAOgAXwCdAN8BIMBGQChAQEAVwBxEAQAdAR5MgEAfQUBAHoJdAVkA3wAfARmAhYAgwF8BYICZAF9BX4FdwF3AHwDUwApBHpATGlzdCBvZiBSZXF1aXJlbWVudHMgbmVlZGVkIGZvciB0aGlzIGRpc3RybyBpZiBgZXh0cmFzYCBhcmUgdXNlZE5yFQAAAHofJXMgaGFzIG5vIHN1Y2ggZXh0cmEgZmVhdHVyZSAlcikGcigDAAByPgEAAHLYAAAAcnwAAABywQAAAHJzAAAAKQZynAAAAHI9AQAAcikDAADaBGRlcHNygAIAAHK6AQAAchUAAAByFQAAAHIWAAAAcikBAAC7CgAAcx4AAAAGAgQBEgEIAQIBFgEOAQIBCgEC/wICAv4IgAL/BAR6FURpc3RyaWJ1dGlvbi5yZXF1aXJlc2MCAAAAAAAAAAAAAAADAAAACAAAAEMAAABzKAAAAHoJfABqAKABfAGhAX0CVwB8AlMABAB0AnkTAQABAAEAWQBkAVMAdwApAnpLCiAgICAgICAgUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBnaXZlbiBtZXRhZGF0YSBmaWxlLCBpZiBhdmFpbGFibGUuCiAgICAgICAgehJbY291bGQgbm90IGRldGVjdF0pA3IKAwAAcswBAABylQEAAHLNAQAAchUAAAByFQAAAHIWAAAAciMDAADJCgAAcwwAAAACBA4EBAcM/QYBAv96K0Rpc3RyaWJ1dGlvbi5fZ2V0X21ldGFkYXRhX3BhdGhfZm9yX2Rpc3BsYXljAgAAAAAAAAAAAAAAAwAAAAMAAABjAAAAcyoAAACBAHwAoAB8AaEBchF8AKABfAGhAUQAXQd9AnwCVgABAHELZABTAGQAUwByIQAAACkCcv8AAAByAQEAACkDcpwAAABy8wAAAHKiAgAAchUAAAByFQAAAHIWAAAAciwDAADaCgAAcwwAAAACgAoBDgEIAQT+BAF6GkRpc3RyaWJ1dGlvbi5fZ2V0X21ldGFkYXRhYwEAAAAAAAAAAAAAAAMAAAADAAAAQwAAAHMYAAAAfACgAHwAagGhAX0BdAJ8AYMBfQJ8AlMAciEAAAApA3IsAwAAciQDAAByBwMAACkDcpwAAABy/QIAAHIYAAAAchUAAAByFQAAAHIWAAAAciIDAADfCgAAcwYAAAAMAQgBBAJ6GURpc3RyaWJ1dGlvbi5fZ2V0X3ZlcnNpb25GYwMAAAAAAAAAAAAAAAQAAAAEAAAAQwAAAHNaAAAAfAFkAXUAcgd0AGoBfQF8AGoCfAF8AmQCjQIBAHwBdABqAXUAcil0A3wAagSDAQEAfACgBWQDoQFEAF0NfQN8A3QAagZ2AHIodAd8A4MBAQBxHWQBUwBkAVMAKQR6PkVuc3VyZSBkaXN0cmlidXRpb24gaXMgaW1wb3J0YWJsZSBvbiBgcGF0aGAgKGRlZmF1bHQ9c3lzLnBhdGgpTnItAQAA+hZuYW1lc3BhY2VfcGFja2FnZXMudHh0KQhyTAAAAHLNAAAAci4BAABylQAAAHIvAQAAciwDAABywAAAAHJjAAAAKQRynAAAAHLNAAAAcuEAAADaA3BrZ3IVAAAAchUAAAByFgAAANoIYWN0aXZhdGXlCgAAcxYAAAAIAgYBDgEKAQoBDgEKAQgBAoAE/AQCehVEaXN0cmlidXRpb24uYWN0aXZhdGVjAQAAAAAAAAAAAAAAAgAAAAQAAABDAAAAczgAAABkAXQAfABqAYMBdAB8AGoCgwF8AGoDcA10BGYDFgB9AXwAagVyGnwBZAJ8AGoFFwA3AH0BfAFTACkDekBSZXR1cm4gd2hhdCB0aGlzIGRpc3RyaWJ1dGlvbidzIHN0YW5kYXJkIC5lZ2cgZmlsZW5hbWUgc2hvdWxkIGJlegolcy0lcy1weSVzcrQBAAApBnJ9AAAAcj8BAAByGAAAAHJoAQAAcoABAAByTQAAACkCcpwAAAByqQEAAHIVAAAAchUAAAByFgAAAHL6AQAA8AoAAHMOAAAAAgIQAQgBBv4GBQ4BBAF6FURpc3RyaWJ1dGlvbi5lZ2dfbmFtZWMBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzHAAAAHwAagByCmQBfAB8AGoAZgIWAFMAdAF8AIMBUwApAk56ByVzICglcykpAnIvAQAAcr8AAABymwAAAHIVAAAAchUAAAByFgAAAHKdAAAA+woAAHMGAAAABgEOAQgCehVEaXN0cmlidXRpb24uX19yZXByX19jAQAAAAAAAAAAAAAAAgAAAAgAAABDAAAAcz4AAAB6CHQAfABkAWQAgwN9AVcAbgsEAHQBeRMBAAEAAQBkAH0BWQBuAXcAfAFwF2QCfQFkA3wAagJ8AWYCFgBTACkETnIYAAAAehFbdW5rbm93biB2ZXJzaW9uXXoFJXMgJXMpA3LDAAAAclEAAAByPwEAACkCcpwAAAByGAAAAHIVAAAAchUAAAByFgAAAHK1AAAAAQsAAHMOAAAAAgEQAQwBCAEC/wgCDgF6FERpc3RyaWJ1dGlvbi5fX3N0cl9fYwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHMeAAAAfAGgAGQBoQFyCXQBfAGDAYIBdAJ8AGoDfAGDAlMAKQJ6QURlbGVnYXRlIGFsbCB1bnJlY29nbml6ZWQgcHVibGljIGF0dHJpYnV0ZXMgdG8gLm1ldGFkYXRhIHByb3ZpZGVyct0AAAApBHLfAAAAclMCAABywwAAAHIKAwAAKQJynAAAAHL0AgAAchUAAAByFQAAAHIWAAAA2gtfX2dldGF0dHJfXwkLAABzBgAAAAoCCAEMAXoYRGlzdHJpYnV0aW9uLl9fZ2V0YXR0cl9fYwEAAAAAAAAAAAAAAAEAAAAGAAAAAwAAAHMuAAAAdAB0AXQCdAN8AIMCoAShAIMBdAFkAWQChAB8AGoFoAShAEQAgwGDAUIAgwFTACkDTmMBAAAAAAAAAAAAAAACAAAABAAAAHMAAABzHgAAAIEAfABdCn0BfAGgAGQAoQFzAnwBVgABAHECZAFTAKkCct0AAABOcuECAAApAnIlAQAAcvQCAAByFQAAAHIVAAAAchYAAAByJwEAABILAABzDgAAAAKABAACAQgBAv4CAQr/eidEaXN0cmlidXRpb24uX19kaXJfXy48bG9jYWxzPi48Z2VuZXhwcj4pBnI1AQAAcjkBAADaBXN1cGVycm0AAADaB19fZGlyX19yCgMAAHKbAAAAcnwBAAByFQAAAHIWAAAAcjQDAAAPCwAAcw4AAAACARABCAEIAQb/Av8E/3oURGlzdHJpYnV0aW9uLl9fZGlyX19jAwAAAAAAAAAAAAAABAAAAAUAAABLAAAAcyIAAAB8AGoAdAF8AYMBdAJqA6AEfAGhAXwCZgNpAHwDpAGOAVMAciEAAAApBXJyAgAAcocCAAByzAAAAHLNAAAAcgUCAAApBHIZAQAAcqkBAAByXgIAAHIoAAAAchUAAAByFQAAAHIWAAAAcm4CAAAYCwAAcwoAAAAEAhIBBP8CAgb+ehpEaXN0cmlidXRpb24uZnJvbV9maWxlbmFtZWMBAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzPAAAAHQAfABqAXQCagNqBIMCchFkAXwAagV8AGoBZgIWAH0BbghkAnwAagV8AGoBZgIWAH0BdAagB3wBoQFTACkDej9SZXR1cm4gYSBgYFJlcXVpcmVtZW50YGAgdGhhdCBtYXRjaGVzIHRoaXMgZGlzdHJpYnV0aW9uIGV4YWN0bHl6BiVzPT0lc3oHJXM9PT0lcykIcr0AAAByEAMAAHILAAAAchgAAAByGQAAAHI/AQAAcm4AAABy9AAAACkCcpwAAADaBHNwZWNyFQAAAHIVAAAAchYAAAByTAEAAB8LAABzCAAAABACEgEQAgoCehtEaXN0cmlidXRpb24uYXNfcmVxdWlyZW1lbnRjAwAAAAAAAAAAAAAABAAAAAQAAABDAAAAcy4AAAB8AKAAfAF8AqECfQN8A2QBdQByE3QBZAJ8AXwCZgJmARYAgwGCAXwDoAKhAFMAKQN6PVJldHVybiB0aGUgYG5hbWVgIGVudHJ5IHBvaW50IG9mIGBncm91cGAgb3IgcmFpc2UgSW1wb3J0RXJyb3JOehhFbnRyeSBwb2ludCAlciBub3QgZm91bmQpA3JbAAAAchcBAAByHwIAACkEcpwAAAByUAAAAHLzAAAAcv8CAAByFQAAAHIVAAAAchYAAAByWQAAACgLAABzCAAAAAwCCAESAQgBeh1EaXN0cmlidXRpb24ubG9hZF9lbnRyeV9wb2ludGMCAAAAAAAAAAAAAAADAAAACAAAAEMAAABzTgAAAHoFfABqAH0CVwBuFQQAdAF5GgEAAQABAHQCoAN8AKAEZAGhAXwAoQIEAH0CfABfAFkAbgF3AHwBZAJ1AXIlfAKgBXwBaQChAlMAfAJTACkDcvoAAAB6EGVudHJ5X3BvaW50cy50eHROKQbaB19lcF9tYXByUwIAAHJvAAAAcgMDAAByLAMAAHLYAAAAKQNynAAAAHJQAAAA2gZlcF9tYXByFQAAAHIVAAAAchYAAAByWgAAAC8LAABzFAAAAAICCgEMAQQBCgEO/wL/CAQMAQQBehpEaXN0cmlidXRpb24uZ2V0X2VudHJ5X21hcGMDAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzEAAAAHwAoAB8AaEBoAF8AqEBUwBy/AAAACkCcloAAABy2AAAAHIoAQAAchUAAAByFQAAAHIWAAAAclsAAAA7CwAAcvkAAAB6G0Rpc3RyaWJ1dGlvbi5nZXRfZW50cnlfaW5mb2MEAAAAAAAAAAAAAAAKAAAACAAAAEMAAABzKAEAAHwCcAR8AGoAfQJ8AnMJZAFTAHQBfAKDAX0EdAJqA6AEfAShAX0FZAJkA4QAfAFEAIMBfQZ0BXwGgwFEAF08XAJ9B30IfAh8BGsCci18A3IqAQBuSwEAZAFTAHwIfAVrAnJafABqBnQHawJyWnwDc0N8BHwGfAdkAYUCGQB2AHJDAQBkAVMAfAF0CGoDdQByTHwAoAmhAAEAfAGgCnwHfAKhAgEAfAagCnwHfAShAgEAAQBuG3EefAF0CGoDdQByZHwAoAmhAAEAfANybnwBoApkBHwCoQIBAGQBUwB8AaALfAKhAQEAZAFTAAkAegp8BqAMfAR8B2QGFwChAn0JVwBuCgQAdA15igEAAQABAFkAZAFTAHcAfAZ8CT0AfAF8CT0AfAl9B3F2KQdh5AIAAEVuc3VyZSBzZWxmLmxvY2F0aW9uIGlzIG9uIHBhdGgKCiAgICAgICAgSWYgcmVwbGFjZT1GYWxzZSAoZGVmYXVsdCk6CiAgICAgICAgICAgIC0gSWYgbG9jYXRpb24gaXMgYWxyZWFkeSBpbiBwYXRoIGFueXdoZXJlLCBkbyBub3RoaW5nLgogICAgICAgICAgICAtIEVsc2U6CiAgICAgICAgICAgICAgLSBJZiBpdCdzIGFuIGVnZyBhbmQgaXRzIHBhcmVudCBkaXJlY3RvcnkgaXMgb24gcGF0aCwKICAgICAgICAgICAgICAgIGluc2VydCBqdXN0IGFoZWFkIG9mIHRoZSBwYXJlbnQuCiAgICAgICAgICAgICAgLSBFbHNlOiBhZGQgdG8gdGhlIGVuZCBvZiBwYXRoLgogICAgICAgIElmIHJlcGxhY2U9VHJ1ZToKICAgICAgICAgICAgLSBJZiBsb2NhdGlvbiBpcyBhbHJlYWR5IG9uIHBhdGggYW55d2hlcmUgKG5vdCBlZ2dzKQogICAgICAgICAgICAgIG9yIGhpZ2hlciBwcmlvcml0eSB0aGFuIGl0cyBwYXJlbnQgKGVnZ3MpCiAgICAgICAgICAgICAgZG8gbm90aGluZy4KICAgICAgICAgICAgLSBFbHNlOgogICAgICAgICAgICAgIC0gSWYgaXQncyBhbiBlZ2cgYW5kIGl0cyBwYXJlbnQgZGlyZWN0b3J5IGlzIG9uIHBhdGgsCiAgICAgICAgICAgICAgICBpbnNlcnQganVzdCBhaGVhZCBvZiB0aGUgcGFyZW50LAogICAgICAgICAgICAgICAgcmVtb3ZpbmcgYW55IGxvd2VyLXByaW9yaXR5IGVudHJpZXMuCiAgICAgICAgICAgICAgLSBFbHNlOiBhZGQgaXQgdG8gdGhlIGZyb250IG9mIHBhdGguCiAgICAgICAgTmMBAAAAAAAAAAAAAAACAAAABAAAAFMAAABzHAAAAGcAfABdCn0BfAFyCnQAfAGDAXALfAGRAnECUwByFQAAAHK+AgAAcr8CAAByFQAAAHIVAAAAchYAAAByewIAAFoLAABzAgAAABwAeipEaXN0cmlidXRpb24uaW5zZXJ0X29uLjxsb2NhbHM+LjxsaXN0Y29tcD5yAQAAAFRypQAAACkOci8BAAByhwIAAHLMAAAAcs0AAAByvwEAANoJZW51bWVyYXRlcp8CAAByggAAAHJMAAAA2hZjaGVja192ZXJzaW9uX2NvbmZsaWN0cjEBAABy0QAAAHLCAgAAclEAAAApCnKcAAAAcs0AAADaA2xvY3LhAAAA2gRubG9j2gRiZGly2gVucGF0aHLAAgAAcisBAADaAm5wchUAAAByFQAAAHIWAAAAci4BAABACwAAc0oAAAAKFAQBBAEIAgwBDgEQAggBBAEEAQYEEgEUAwYBCgEIAQwBDAEEAQKACgIIAQQBDAEEAwr/BAECAwIBFAEMAQIBBAYC+QwDBAIC+HoWRGlzdHJpYnV0aW9uLmluc2VydF9vbmMBAAAAAAAAAAAAAAAFAAAABgAAAEMAAABzqAAAAHwAagBkAWsCcgdkAFMAdAGgAnwAoANkAqEBoQF9AXQEfABqBYMBfQJ8AKADZAOhAUQAXTh9A3wDdAZqB3YBcyh8A3wBdgBzKHwDdAh2AHIpcRl8A2QEdgByLnEZdAl0BmoHfAMZAGQFZACDA30EfARyR3QEfASDAaAKfAKhAXNGfASgCnwAagWhAXJHcRl0C2QGfAN8BHwAagVmAxYAgwEBAHEZZABTACkHTtoKc2V0dXB0b29sc3IuAwAAeg10b3BfbGV2ZWwudHh0KQPaDXBrZ19yZXNvdXJjZXNyPwMAANoEc2l0ZXK+AQAAeklNb2R1bGUgJXMgd2FzIGFscmVhZHkgaW1wb3J0ZWQgZnJvbSAlcywgYnV0ICVzIGlzIGJlaW5nIGFkZGVkIHRvIHN5cy5wYXRoKQxyOwAAAHIlAAAAciYAAAByLAMAAHKBAAAAci8BAAByTAAAAHLAAAAAcqsCAABywwAAAHLfAAAA2g1pc3N1ZV93YXJuaW5nKQVynAAAANoDbnNwcjoDAADaB21vZG5hbWXaAmZuchUAAAByFQAAAHIWAAAAcjkDAACECwAAcywAAAAKAQQCEAIKAQ4BEgEGAQL/AgIIAQIBEgESAQoBAv8CAgIBAgEKAQL/Bv8E9nojRGlzdHJpYnV0aW9uLmNoZWNrX3ZlcnNpb25fY29uZmxpY3RjAQAAAAAAAAAAAAAAAQAAAAgAAABDAAAAczIAAAB6BnwAagABAFcAZANTAAQAdAF5GAEAAQABAHQCZAF0A3wAgwEXAIMBAQBZAGQCUwB3ACkETnoQVW5idWlsdCBlZ2cgZm9yIEZUKQRyGAAAAHJRAAAAckIDAABymgAAAHKbAAAAchUAAAByFQAAAHIWAAAAcnMBAACaCwAAcw4AAAACAQgBBAQM/RABBgEC/noYRGlzdHJpYnV0aW9uLmhhc192ZXJzaW9uYwEAAAAAAAAAAAAAAAQAAAAIAAAASwAAAHNEAAAAZAF9AnwCoAChAEQAXQx9A3wBoAF8A3QCfAB8A2QCgwOhAgEAcQZ8AaABZAN8AGoDoQIBAHwAagRkBGkAfAGkAY4BUwApBXpAQ29weSB0aGlzIGRpc3RyaWJ1dGlvbiwgc3Vic3RpdHV0aW5nIGluIGFueSBjaGFuZ2VkIGtleXdvcmQgYXJnc3o8cHJvamVjdF9uYW1lIHZlcnNpb24gcHlfdmVyc2lvbiBwbGF0Zm9ybSBsb2NhdGlvbiBwcmVjZWRlbmNlTnJeAgAAchUAAAApBXIJAAAAciEBAABywwAAAHIKAwAAcpkAAAApBHKcAAAAcigAAABymAEAAHL0AgAAchUAAAByFQAAAHIWAAAA2gVjbG9uZaILAABzCgAAAAQCDAEWAQ4BEAF6EkRpc3RyaWJ1dGlvbi5jbG9uZWMBAAAAAAAAAAAAAAABAAAAAgAAAEMAAABzEAAAAGQBZAKEAHwAagBEAIMBUwApA05jAQAAAAAAAAAAAAAAAgAAAAMAAABTAAAAcxQAAABnAHwAXQZ9AXwBcgJ8AZECcQJTAHIVAAAAchUAAAApAnIlAQAA2gNkZXByFQAAAHIVAAAAchYAAAByewIAAKwLAAByfAIAAHonRGlzdHJpYnV0aW9uLmV4dHJhcy48bG9jYWxzPi48bGlzdGNvbXA+KQFyKAMAAHKbAAAAchUAAAByFQAAAHIWAAAAcj0BAACqCwAAcvkAAAB6E0Rpc3RyaWJ1dGlvbi5leHRyYXNyIQAAAHKtAQAAcn8BAAApMXIRAAAAchIAAAByEwAAAHIUAAAAciQDAABygAEAAHKCAAAAchQBAAByXAEAAHJyAgAAcg8DAABysgAAAHJwAQAAchIDAAByFQMAAHIWAwAAchcDAAByGAMAAHIZAwAAchsDAAByOwAAAHIQAwAAciEDAAByGAAAAHIoAwAAcq8BAAByJgMAAHInAwAAcikBAAByIwMAAHIsAwAAciIDAAByMAMAAHL6AQAAcp0AAABytQAAAHIxAwAAcjQDAABybgIAAHJMAQAAclkAAAByWgAAAHJbAAAAci4BAAByOQMAAHJzAQAAckYDAAByPQEAANoNX19jbGFzc2NlbGxfX3IVAAAAchUAAAByfAEAAHIWAAAAcm0AAAAOCgAAc2oAAAAIAAQBBAEGAwYBAgEK/QINDAEIEAIDCgEICggDCAMIAwgDCAMIBgIHCgECBwoBCAYCGgoBAg4KAQILCgEIFQoHCA4IEQgFCgYICwgLCAYICAwGAgkMAQgGCAkKBwgMCgUIRAgWCAgCCBIBcm0AAABjAAAAAAAAAAAAAAAAAAAAAAIAAABAAAAAcxQAAABlAFoBZABaAmQBZAKEAFoDZANTACkE2hNFZ2dJbmZvRGlzdHJpYnV0aW9uYwEAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMWAAAAfACgAKEAfQF8AXIJfAF8AF8BfABTACkBYfEBAAAKICAgICAgICBQYWNrYWdlcyBpbnN0YWxsZWQgYnkgZGlzdHV0aWxzIChlLmcuIG51bXB5IG9yIHNjaXB5KSwKICAgICAgICB3aGljaCB1c2VzIGFuIG9sZCBzYWZlX3ZlcnNpb24sIGFuZCBzbwogICAgICAgIHRoZWlyIHZlcnNpb24gbnVtYmVycyBjYW4gZ2V0IG1hbmdsZWQgd2hlbgogICAgICAgIGNvbnZlcnRlZCB0byBmaWxlbmFtZXMgKGUuZy4sIDEuMTEuMC5kZXYwKzIzMjllYWUgdG8KICAgICAgICAxLjExLjAuZGV2MF8yMzI5ZWFlKS4gVGhlc2UgZGlzdHJpYnV0aW9ucyB3aWxsIG5vdCBiZQogICAgICAgIHBhcnNlZCBwcm9wZXJseQogICAgICAgIGRvd25zdHJlYW0gYnkgRGlzdHJpYnV0aW9uIGFuZCBzYWZlX3ZlcnNpb24sIHNvCiAgICAgICAgdGFrZSBhbiBleHRyYSBzdGVwIGFuZCB0cnkgdG8gZ2V0IHRoZSB2ZXJzaW9uIG51bWJlciBmcm9tCiAgICAgICAgdGhlIG1ldGFkYXRhIGZpbGUgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVuYW1lLgogICAgICAgICkCciIDAAByCQMAACkCcpwAAADaCm1kX3ZlcnNpb25yFQAAAHIVAAAAchYAAAByDwMAALALAABzCAAAAAgMBAEGAQQBeiNFZ2dJbmZvRGlzdHJpYnV0aW9uLl9yZWxvYWRfdmVyc2lvbk4pBHIRAAAAchIAAAByEwAAAHIPAwAAchUAAAByFQAAAHIVAAAAchYAAABySQMAAK8LAABzBAAAAAgADAFySQMAAGMAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABzPgAAAGUAWgFkAFoCZAFaA2QCWgRlBaAGZAOhAVoHZQhkBGQFhACDAVoJZQhkBmQHhACDAVoKZAhkCYQAWgtkClMAKQvaFERpc3RJbmZvRGlzdHJpYnV0aW9uelYKICAgIFdyYXAgYW4gYWN0dWFsIG9yIHBvdGVudGlhbCBzeXMucGF0aCBlbnRyeQogICAgdy9tZXRhZGF0YSwgLmRpc3QtaW5mbyBzdHlsZS4KICAgINoITUVUQURBVEF6GyhbXCgsXSlccyooXGQuKj8pXHMqKFssXCldKWMBAAAAAAAAAAAAAAACAAAACAAAAEMAAABzQAAAAHoEfABqAFcAUwAEAHQBeR8BAAEAAQB8AKACfABqA6EBfQF0BGoFoAahAKAHfAGhAXwAXwB8AGoABgBZAFMAdwApAXoYUGFyc2UgYW5kIGNhY2hlIG1ldGFkYXRhKQjaCV9wa2dfaW5mb3JTAgAAcgABAAByJAMAANoFZW1haWzaBnBhcnNlctoGUGFyc2Vy2ghwYXJzZXN0cikCcpwAAAByXgIAAHIVAAAAchUAAAByFgAAANoQX3BhcnNlZF9wa2dfaW5mb8oLAABzDgAAAAIDCAEMAQwBEgEKAQL9eiVEaXN0SW5mb0Rpc3RyaWJ1dGlvbi5fcGFyc2VkX3BrZ19pbmZvYwEAAAAAAAAAAAAAAAEAAAAIAAAAQwAAAHMsAAAAegR8AGoAVwBTAAQAdAF5FQEAAQABAHwAoAKhAHwAXwB8AGoABgBZAFMAdwByIQAAACkD2h5fRGlzdEluZm9EaXN0cmlidXRpb25fX2RlcF9tYXByUwIAANoVX2NvbXB1dGVfZGVwZW5kZW5jaWVzcpsAAAByFQAAAHIVAAAAchYAAAByKAMAANQLAABzDAAAAAICCAEMAQoBCgEC/nodRGlzdEluZm9EaXN0cmlidXRpb24uX2RlcF9tYXBjAQAAAAAAAAAAAAAABwAAAAUAAAADAAAAc5oAAABkAWcAaQEEAH0BfABfAGcAiQB8AGoBoAJkAqEBcBBnAEQAXQl9AogAoAN0BHwCgwGhAQEAcRGHAGYBZANkBIQIfQN0BXwDZAGDAYMBfQR8AWQBGQCgA3wEoQEBAHwAagGgAmQFoQFwNWcARABdFH0FdAZ8BaAHoQCDAX0GdAh0BXwDfAWDAYMBfAQYAIMBfAF8BjwAcTZ8AVMAKQZ6K1JlY29tcHV0ZSB0aGlzIGRpc3RyaWJ1dGlvbidzIGRlcGVuZGVuY2llcy5Oeg1SZXF1aXJlcy1EaXN0YwEAAAAAAAAAAAAAAAIAAAAFAAAAMwAAAHMsAAAAgQCIAEQAXRB9AXwBagByEHwBagCgAWQBfABpAaEBchN8AVYAAQBxA2QAUwApAk5yXQEAAHJeAQAAKQJyXQEAAHKmAAAAqQFyHwEAAHIVAAAAchYAAADaDnJlcXNfZm9yX2V4dHJh5QsAAHMMAAAAAoAIARYBBgECgAT+ekJEaXN0SW5mb0Rpc3RyaWJ1dGlvbi5fY29tcHV0ZV9kZXBlbmRlbmNpZXMuPGxvY2Fscz4ucmVxc19mb3JfZXh0cmF6DlByb3ZpZGVzLUV4dHJhKQlyUwMAAHJSAwAA2gdnZXRfYWxscj4BAABydQAAANoJZnJvemVuc2V0cnwAAAByoQIAAHI1AQAAKQdynAAAAHIpAwAAcqYAAAByVgMAANoGY29tbW9ucl0BAADaB3NfZXh0cmFyFQAAAHJVAwAAchYAAAByVAMAANwLAABzFgAAAA4CBAIUAhABDAIMBQ4BFAIMARoBBAJ6KkRpc3RJbmZvRGlzdHJpYnV0aW9uLl9jb21wdXRlX2RlcGVuZGVuY2llc04pDHIRAAAAchIAAAByEwAAAHIUAAAAciQDAABytQEAAHLeAQAA2gRFUUVRcrIAAAByUgMAAHIoAwAAclQDAAByFQAAAHIVAAAAchUAAAByFgAAAHJLAwAAwgsAAHMSAAAACAAEAQQECgECAgoBAgkKAQwHcksDAAApA3LdAgAAcmwCAAByawIAAGMAAAAAAAAAAAAAAAAEAAAACAAAAE8AAABzZgAAAGQBfQJ0AIMAfQN6FnQBoAJ8AqEBagN8A3UAchp8AmQBNwB9AnQBoAJ8AqEBagN8A3UAcw5XAG4JBAB0BHkkAQABAAEAWQBuAXcAdAVqBnwAZAJ8AmQBFwBpAXwBpAGOAQEAZABTACkDTnKlAAAAcvEBAAApB3IiAAAAckwAAABy7gAAAHLvAAAAclEAAAByGwAAAHIcAAAAKQRyQwAAAHIoAAAAcvECAAByLgAAAHIVAAAAchUAAAByFgAAAHJCAwAA+wsAAHMWAAAABAEGAQIBEAMIARD/BIAMAgQBAv8cAnJCAwAAYwEAAAAAAAAAAAAAAAMAAAAJAAAAYwAAAHOCAAAAgQB0AHQBfACDAYMBfQF8AUQAXTV9AmQBfAJ2AHIYfAJkAnwCoAJkAaEBhQIZAH0CfAKgA2QDoQFyOXwCZAJkBIUCGQCgBKEAfQJ6CHwCdAV8AYMBNwB9AlcAbgsEAHQGeTgBAAEAAQBZAAEAZAJTAHcAdAd8AoMBVgABAHEJZAJTACkFeopZaWVsZCBgYFJlcXVpcmVtZW50YGAgb2JqZWN0cyBmb3IgZWFjaCBzcGVjaWZpY2F0aW9uIGluIGBzdHJzYAoKICAgIGBzdHJzYCBtdXN0IGJlIGEgc3RyaW5nLCBvciBhIChwb3NzaWJseS1uZXN0ZWQpIGl0ZXJhYmxlIHRoZXJlb2YuCiAgICB6AiAjTvoBXOn+////KQhylgIAAHJ6AAAAcr4AAABybQIAAHKhAgAAcgACAADaDVN0b3BJdGVyYXRpb25ybgAAACkD2gRzdHJzcv0CAAByogIAAHIVAAAAchUAAAByFgAAAHJ1AAAACAwAAHMcAAAAAoAMBggCCAISAQoCEAECARABDAEIAQL/DAIE9XJ1AAAAYwAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAHIOAAAAKQPaFVJlcXVpcmVtZW50UGFyc2VFcnJvcnosQ29tcGF0aWJpbGl0eSB3cmFwcGVyIGZvciBJbnZhbGlkUmVxdWlyZW1lbnROchAAAAByFQAAAHIVAAAAchUAAAByFgAAAHJgAwAAHgwAAHIXAAAAcmADAABjAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAc1AAAABlAFoBZABaAocAZgFkAWQChAhaA2QDZASEAFoEZAVkBoQAWgVkB2QIhABaBmQJZAqEAFoHZAtkDIQAWghlCWQNZA6EAIMBWgqHAAQAWgtTACkPcm4AAABjAgAAAAAAAAAAAAAAAwAAAAYAAAADAAAAc5QAAAB0AHQBfACDAqACfAGhAQEAfABqA3wAXwR0BXwAagODAX0CfAJ8AqAGoQACAnwAXwd8AF8IZAFkAoQAfABqCUQAgwF8AF8KdAt0DHQNfABqDoMCgwF8AF8OfABqCHwAag98AGoJdBB8AGoOgwF8AGoRcj50EnwAahGDAW4BZANmBXwAXxN0FHwAahODAXwAXxVkA1MAKQR6PkRPIE5PVCBDQUxMIFRISVMgVU5ET0NVTUVOVEVEIE1FVEhPRDsgdXNlIFJlcXVpcmVtZW50LnBhcnNlKCkhYwEAAAAAAAAAAAAAAAIAAAAEAAAAUwAAAHMYAAAAZwB8AF0IfQF8AWoAfAFqAWYCkQJxAlMAchUAAAApAnJ0AQAAchgAAAApAnIlAQAAcjUDAAByFQAAAHIVAAAAchYAAAByewIAACkMAABzBgAAAAYADAEG/3ooUmVxdWlyZW1lbnQuX19pbml0X18uPGxvY2Fscz4uPGxpc3Rjb21wPk4pFnIzAwAAcm4AAAByFAEAAHLzAAAA2gt1bnNhZmVfbmFtZXJ2AAAAcm0BAAByPwEAAHI7AAAA2glzcGVjaWZpZXJy+wIAAHLpAgAAcksBAAByfAAAAHI9AQAA2gN1cmxyWAMAAHJfAQAAcr8AAADaB2hhc2hDbXByEQMAANoSX1JlcXVpcmVtZW50X19oYXNoKQNynAAAANoScmVxdWlyZW1lbnRfc3RyaW5ncj8BAAByfAEAAHIVAAAAchYAAAByFAEAACMMAABzHgAAABACCAEKARIBBgEEAQj/EgIEAgQBBAEIARIBBvsQB3oUUmVxdWlyZW1lbnQuX19pbml0X19jAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcxYAAAB0AHwBdAGDAm8KfABqAnwBagJrAlMAciEAAAApA3K9AAAAcm4AAAByZAMAAHIUAwAAchUAAAByFQAAAHIWAAAAchkDAAA1DAAAcwYAAAAKAgoBAv56ElJlcXVpcmVtZW50Ll9fZXFfX2MCAAAAAAAAAAAAAAACAAAAAgAAAEMAAAByGgMAAHIhAAAAchUAAAByFAMAAHIVAAAAchUAAAByFgAAAHIbAwAAOwwAAHKCAQAAehJSZXF1aXJlbWVudC5fX25lX19jAgAAAAAAAAAAAAAAAgAAAAQAAABDAAAAczAAAAB0AHwBdAGDAnIQfAFqAnwAagJrA3INZAFTAHwBagN9AXwAagRqBXwBZAJkA40CUwApBE5GVCkB2gtwcmVyZWxlYXNlcykGcr0AAABybQAAAHI7AAAAchgAAAByYgMAANoIY29udGFpbnMpAnKcAAAAcisBAAByFQAAAHIVAAAAchYAAAByIwEAAD4MAABzCgAAAAoBDAEEAQYCEAV6GFJlcXVpcmVtZW50Ll9fY29udGFpbnNfX2MBAAAAAAAAAAAAAAABAAAAAQAAAEMAAAByWAIAAHIhAAAAKQFyZQMAAHKbAAAAchUAAAByFQAAAHIWAAAAchIDAABKDAAAclkCAAB6FFJlcXVpcmVtZW50Ll9faGFzaF9fYwEAAAAAAAAAAAAAAAEAAAADAAAAQwAAAHLuAgAAKQJOehVSZXF1aXJlbWVudC5wYXJzZSglcily4gIAAHKbAAAAchUAAAByFQAAAHIWAAAAcp0AAABNDAAAcggCAAB6FFJlcXVpcmVtZW50Ll9fcmVwcl9fYwEAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMOAAAAdAB8AIMBXAF9AXwBUwByIQAAACkBcnUAAAApAnLtAgAAcqYAAAByFQAAAHIVAAAAchYAAABy9AAAAFAMAABzBAAAAAoCBAF6EVJlcXVpcmVtZW50LnBhcnNlKQxyEQAAAHISAAAAchMAAAByFAEAAHIZAwAAchsDAAByIwEAAHISAwAAcp0AAAByrwEAAHL0AAAAckgDAAByFQAAAHIVAAAAcnwBAAByFgAAAHJuAAAAIgwAAHMSAAAACAAMAQgSCAYIAwgMCAMCAxIBcm4AAABjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcxYAAAB0AHwAdgFyCXwAdABmARcAUwB8AFMAKQF6SgogICAgRW5zdXJlIG9iamVjdCBhcHBlYXJzIGluIHRoZSBtcm8gZXZlbgogICAgZm9yIG9sZC1zdHlsZSBjbGFzc2VzLgogICAgKQHaBm9iamVjdCkB2gdjbGFzc2VzchUAAAByFQAAAHIWAAAA2g5fYWx3YXlzX29iamVjdFYMAABzBgAAAAgFCgEEAXJrAwAAYwIAAAAAAAAAAAAAAAQAAAAIAAAAQwAAAHM8AAAAdAB0AaACdAN8AWQBdAR8AYMBgwOhAYMBfQJ8AkQAXQx9A3wDfAB2AHIbfAB8AxkAAgABAFMAcQ9kAlMAKQN6MlJldHVybiBhbiBhZGFwdGVyIGZhY3RvcnkgZm9yIGBvYmAgZnJvbSBgcmVnaXN0cnlgcpkAAABOKQVyawMAANoHaW5zcGVjdNoGZ2V0bXJvcsMAAAByEAIAACkE2ghyZWdpc3RyeXI8AAAAcrQCAADaAXRyFQAAAHIVAAAAchYAAAByxAAAAGAMAABzDAAAABoCCAEIAQwBAv8E/3LEAAAAYwEAAAAAAAAAAAAAAAIAAAAEAAAAQwAAAHMeAAAAdABqAaACfAChAX0BdABqA3wBZAFkAo0CAQBkA1MAKQR6MUVuc3VyZSB0aGF0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIGBwYXRoYCBleGlzdHNUKQHaCGV4aXN0X29rTikEcswAAAByzQAAAHK/AQAA2ghtYWtlZGlycykCcs0AAAByvwEAAHIVAAAAchUAAAByFgAAAHKAAAAAaAwAAHMEAAAADAISAXKAAAAAYwEAAAAAAAAAAAAAAAMAAAAIAAAAQwAAAHNiAAAAdABzBnQBZAGDAYIBdAJ8AIMBXAJ9AX0CfAFyK3wCci10A3wBgwFzL3QEfAGDAQEAegh0BXwBZAKDAgEAVwBkA1MABAB0BnkqAQABAAEAWQBkA1MAdwBkA1MAZANTAGQDUwApBHovU2FuZGJveC1ieXBhc3NpbmcgdmVyc2lvbiBvZiBlbnN1cmVfZGlyZWN0b3J5KCl6KiJvcy5ta2RpciIgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLmntAQAATikHckICAAByQwIAAHIJAAAAcggAAABylAEAAHIEAAAA2g9GaWxlRXhpc3RzRXJyb3IpA3LNAAAAcr8BAAByqQEAAHIVAAAAchUAAAByFgAAAHKUAQAAbgwAAHMWAAAABAIIAQwBEAEIAQIBEAEMAQYBAv8M/HKUAQAAYwEAAAAAAAAAAAAAAAQAAAAEAAAAYwAAAHN2AAAAgQBkAX0BZwB9AnQAfACDAUQAXSp9A3wDoAFkAqEBci58A6ACZAOhAXIpfAFzGXwCch58AXwCZgJWAAEAfANkBGQFhQIZAKADoQB9AWcAfQJxCXQEZAZ8A4MCggF8AqAFfAOhAQEAcQl8AXwCZgJWAAEAZAFTACkHYXMBAABTcGxpdCBhIHN0cmluZyBvciBpdGVyYWJsZSB0aGVyZW9mIGludG8gKHNlY3Rpb24sIGNvbnRlbnQpIHBhaXJzCgogICAgRWFjaCBgYHNlY3Rpb25gYCBpcyBhIHN0cmlwcGVkIHZlcnNpb24gb2YgdGhlIHNlY3Rpb24gaGVhZGVyICgiW3NlY3Rpb25dIikKICAgIGFuZCBlYWNoIGBgY29udGVudGBgIGlzIGEgbGlzdCBvZiBzdHJpcHBlZCBsaW5lcyBleGNsdWRpbmcgYmxhbmsgbGluZXMgYW5kCiAgICBjb21tZW50LW9ubHkgbGluZXMuICBJZiB0aGVyZSBhcmUgYW55IHN1Y2ggbGluZXMgYmVmb3JlIHRoZSBmaXJzdCBzZWN0aW9uCiAgICBoZWFkZXIsIHRoZXkncmUgcmV0dXJuZWQgaW4gYSBmaXJzdCBgYHNlY3Rpb25gYCBvZiBgYE5vbmVgYC4KICAgIE76AVv6AV1ypQAAAHK2AAAAehdJbnZhbGlkIHNlY3Rpb24gaGVhZGluZykGcnoAAABy3wAAAHJtAgAAcqECAAByUQAAAHLRAAAAKQRy7QIAANoHc2VjdGlvbtoHY29udGVudHKiAgAAchUAAAByFQAAAHIWAAAAcnsAAAB7DAAAcxoAAAACgAQIBAEMAQoBCgEIAQoBEAEGAQoCDAIOA3J7AAAAYwAAAAAAAAAAAAAAAAMAAAAIAAAATwAAAHMuAAAAdABqAX0Ceg90AnQAXwF0A2oEfABpAHwBpAGOAVcAfAJ0AF8BUwB8AnQAXwF3AHIhAAAAKQVyzAAAAHIHAAAA2gdvc19vcGVu2gh0ZW1wZmlsZdoHbWtzdGVtcCkDckMAAAByKAAAANoIb2xkX29wZW5yFQAAAHIVAAAAchYAAAByRQIAAJUMAABzCgAAAAYBAgEGAhABEANyRQIAAHKtAgAAKQLaCGNhdGVnb3J5ctEAAABjAQAAAAAAAAAAAAAAAwAAAAQAAABPAAAAcxIAAAB8AHwBaQB8AqQBjgEBAHwAUwByIQAAAHIVAAAAKQNyUAIAAHJDAAAAcu8CAAByFQAAAHIVAAAAchYAAADaC19jYWxsX2FzaWRlqAwAAHMEAAAADgEEAXJ8AwAAYwEAAAAAAAAAAAAAAAEAAAAFAAAAAwAAAHMuAAAAdACDAIkAiAB8AGQBPAB8AKABhwBmAWQCZAOECHQCiACDAUQAgwGhAQEAZARTACkFej1TZXQgdXAgZ2xvYmFsIHJlc291cmNlIG1hbmFnZXIgKGRlbGliZXJhdGVseSBub3Qgc3RhdGUtc2F2ZWQp2ghfbWFuYWdlcmMBAAAAAAAAAAAAAAACAAAABQAAADMAAABzKAAAAIEAfABdD30BfAGgAGQAoQFzAnwBdAGIAHwBgwJmAlYAAQBxAmQBUwByMgMAACkCct8AAABywwAAAHIYAgAAqQFyBwEAAHIVAAAAchYAAAByJwEAALIMAABzDgAAAAKABAACAggBAv0MAQr/eh5faW5pdGlhbGl6ZS48bG9jYWxzPi48Z2VuZXhwcj5OKQNybAAAAHIjAAAAckACAAApAXIuAAAAchUAAAByfgMAAHIWAAAA2gtfaW5pdGlhbGl6Za0MAABzCgAAAAYDCAEOAQYCDP5yfwMAAGMAAAAAAAAAAAAAAAAAAAAAAQAAAEAAAAByDgAAACkDch0AAAB6qwogICAgQmFzZSBjbGFzcyBmb3Igd2FybmluZyBhYm91dCBkZXByZWNhdGlvbnMgaW4gYGBwa2dfcmVzb3VyY2VzYGAKCiAgICBUaGlzIGNsYXNzIGlzIG5vdCBkZXJpdmVkIGZyb20gYGBEZXByZWNhdGlvbldhcm5pbmdgYCwgYW5kIGFzIHN1Y2ggaXMKICAgIHZpc2libGUgYnkgZGVmYXVsdC4KICAgIE5yEAAAAHIVAAAAchUAAAByFQAAAHIWAAAAch0AAAC5DAAAchcAAAByHQAAAGMAAAAAAAAAAAAAAAAGAAAABAAAAEMAAABzfAAAAHQAoAGhAH0AdAJkAXwAZAKNAgEAfABqA30BfABqBH0CfABqBX0DfABqBn0EfAR9BXQHZANkBIQAfABEAIMBgwEBAHwDZAVkBoQAZAdkCI0CAQBnAHwAXwh0CXQKfABqC3QMag2DAoMBAQB0DoMAoA90EIMAoQEBAGQJUwApCmFFAQAACiAgICBQcmVwYXJlIHRoZSBtYXN0ZXIgd29ya2luZyBzZXQgYW5kIG1ha2UgdGhlIGBgcmVxdWlyZSgpYGAKICAgIEFQSSBhdmFpbGFibGUuCgogICAgVGhpcyBmdW5jdGlvbiBoYXMgZXhwbGljaXQgZWZmZWN0cyBvbiB0aGUgZ2xvYmFsIHN0YXRlCiAgICBvZiBwa2dfcmVzb3VyY2VzLiBJdCBpcyBpbnRlbmRlZCB0byBiZSBpbnZva2VkIG9uY2UgYXQKICAgIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGlzIG1vZHVsZS4KCiAgICBJbnZvY2F0aW9uIGJ5IG90aGVyIHBhY2thZ2VzIGlzIHVuc3VwcG9ydGVkIGFuZCBkb25lCiAgICBhdCB0aGVpciBvd24gcmlzay4KICAgIHJpAwAAKQFyZAAAAGMBAAAAAAAAAAAAAAACAAAABAAAAHMAAABzHAAAAIEAfABdCX0BfAFqAGQAZAGNAVYAAQBxAmQCUwApA0ZyLQEAAE6pAXIwAwAAKQJyJQEAAHKiAAAAchUAAAByFQAAAHIWAAAAcicBAADcDAAAcwoAAAACgAQAAgIK/wr/ejFfaW5pdGlhbGl6ZV9tYXN0ZXJfd29ya2luZ19zZXQuPGxvY2Fscz4uPGdlbmV4cHI+YwEAAAAAAAAAAAAAAAEAAAADAAAAUwAAAHMMAAAAfABqAGQBZAKNAVMAKQNOVHItAQAAcoADAABy9gAAAHIVAAAAchUAAAByFgAAAHJEAAAA4QwAAHMCAAAADAB6MF9pbml0aWFsaXplX21hc3Rlcl93b3JraW5nX3NldC48bG9jYWxzPi48bGFtYmRhPkYpAXJYAQAATikRcmsAAAByGwEAAHIpAAAAclUAAAByXAAAAHJZAQAAclYAAABy6QIAAHIOAQAAcjUBAABySwEAAHISAQAAckwAAAByzQAAAHIiAAAAciMAAAByrAAAACkGcmQAAAByVQAAAHJcAAAAcmUAAAByVgAAAHKWAAAAchUAAAByFQAAAHIWAAAA2h5faW5pdGlhbGl6ZV9tYXN0ZXJfd29ya2luZ19zZXTCDAAAcyIAAAAIDQwBBgIGAQYBBgEEAggFAgII/gIEBgECAQb+BgQSAhIBcoEDAAByIQAAAHKuAQAAKdRyFAAAAHJMAAAAcswAAAByxAEAAHI6AgAAcrUBAABytAIAAHIbAgAAcnACAAByGwAAAHKfAQAAcvICAADaB3BrZ3V0aWxydAEAAHJNAAAAcjcBAABy0AAAANoMZW1haWwucGFyc2Vyck4DAABymwIAAHJ4AwAAcosBAAByfgIAAHJsAwAAcvYBAABy8wEAAHK3AgAAcgIAAAByzQIAAHIXAQAA2gNpbXBycgMAANoJTmFtZUVycm9ycpoCAAByAwAAAHIEAAAAcgUAAAByBgAAAHJCAgAAcgcAAABydwMAANoHb3MucGF0aHIIAAAAcgkAAADaE2ltcG9ydGxpYi5tYWNoaW5lcnnaCW1hY2hpbmVyeXIPAgAAchEAAADaFHBrZ19yZXNvdXJjZXMuZXh0ZXJucgoAAAByCwAAAHLCAAAA2gx2ZXJzaW9uX2luZm/aDFJ1bnRpbWVFcnJvcnJVAAAAcmQAAAByZQAAANoQcmVzb3VyY2VzX3N0cmVhbXJoAAAA2gxyZXNvdXJjZV9kaXJyXgAAAHJnAAAAcmIAAAByXQAAAHJcAAAAcmAAAAByXwAAAHJhAAAAcmQCAAByqgIAAHKrAgAA2g5SdW50aW1lV2FybmluZ3IPAAAAciAAAAByJAAAAHIpAAAAcjAAAAByMgAAAHI3AAAAcj0AAAByPgAAAHI/AAAA2gpfc2dldF9ub25l2gpfc3NldF9ub25lclQAAADaB19fYWxsX19ylQEAAHJwAAAAcnEAAAByrwAAAHJyAAAAcnMAAAByuAAAAHKrAAAAcoABAAByggAAAHKDAAAAcoQAAAByhQAAAHKGAAAAcpQAAAByVwAAAHJPAAAActoAAABySQAAAHLeAQAAckoAAABy5QAAAHJ4AAAAcnkAAAByVgAAAHKWAAAAclgAAAByWQAAAHJaAAAAclsAAAByhwAAAHKIAAAAcmsAAAByJQAAAHI2AQAAcmoAAABylwAAAHJ0AAAAcmwAAAByaQAAAHJ2AAAAcncAAAByfAAAAHJ9AAAAcn4AAAByfwAAAHKOAAAAcmkDAABy/AEAAHKPAAAAcpAAAAByEwIAAHKMAAAAco0AAAByFgIAAHIgAgAAcpEAAABycQIAAHKJAAAAcooAAAByiwAAAHKSAAAAcmYAAABybwIAAHJ2AgAAcoMCAAByjgIAAHKFAgAAcpECAAByiQIAAHKPAgAAcqMCAABykAIAANoLSW1wSW1wb3J0ZXJyzwAAAHKoAgAAcpMAAAByvAIAAHK5AgAAcmMAAABylQAAAHLTAgAActQCAABygQAAAHLXAgAAcocCAABy/wEAAHLcAgAAcogCAABytgIAAHLjAgAA2g5zaW5nbGVkaXNwYXRjaHJ6AAAA2ghyZWdpc3RlcnK/AAAAct0AAABySwAAAHLnAgAA2gdWRVJCT1NF2gpJR05PUkVDQVNFcg4DAABybwAAAHIHAwAAcm0AAABySQMAAHJLAwAAcg0DAAByQgMAAHJ1AAAAckABAADaEkludmFsaWRSZXF1aXJlbWVudHJgAwAAcm4AAAByawMAAHLEAAAAcoAAAABylAEAAHJ7AAAAckUCAADaDmZpbHRlcndhcm5pbmdzcnwDAAByIgAAAHJ/AwAA2gdXYXJuaW5nch0AAABygQMAAHIVAAAAchUAAAByFQAAAHIWAAAA2gg8bW9kdWxlPgEAAABz1gEAAAQACBAIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEMAQICDAEMAQwCAv4CBAgBDAEIAQL/DAQCARQBCAEMAQgCAv4MBBABAgIMAQoCDAEIAQL/DAMMAQgBCAEIAQgBCgIIAQQEBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEQAwgHBAwIAwgFCAgIBwgECAUIBAwECAMIGBAyEAcQIBANEBsEBAwCBAEEAQQBBAEEAQgDCAoMDQgQCAQKGAoBBAIIAwguBAoIAwgLCgUIBQ4FEBcOHAB/AH8AfxAGDhQAfwQUEAMOEAB/CDYIDAgICAwICQgICg4ODwB/CkAIAxALEBQIGxADBhEQAxAbEBQAfwwuEAMQKRAZDA8IAwoKCgcMGwoDCgQIAwojCCMOFAgPCBAIDwgLDA4MAgwBDAIMAQgDCBIIIwgiCiIIDAwNDAEMAgwBCAMKBAgDCAYMCwgICAcICAgKCAgEBAoBCAUKAQwEBAECAQoJAvYCCwL1Dg4AfwgFDg0AfwB/AH8QJBATAjMCAQIBBv0IBwgNFBYUBAg0CAoICAgGCA0IGhAPCAQCBRABEAsCCQ4B