YQ0NCgAAAABDGnxjPacBAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABzAggAAGQAWgBkAWQCbAFtAloCAQBkAWQDbANaA2QBZANsBFoEZAFkA2wFWgVkAWQDbAZaBmQBZANsB1oHZAFkA2wIWghkAWQDbAlaCWQBZANsCloKZAFkA2wLWgtkAWQDbAxaDGQBZANsDVoNZAFkA2wOWg5kAWQDbA9aD2QBZANsEFoQZAFkA2wRWhFkAWQDbBJaEmQBZANsE1oUZAFkA2wVWhVkAWQDbBZaFmQBZANsF1oXZAFkA2wYWhhkAWQDbBlaGWQBZANsGloaZAFkA2wbWhtkAWQEbA5tHFocAQB6DGQBZANsHVodVwBuHAQAZR6QAXkEAQABAAEAZAFkA2wfWh1ZAG4CMAB6CGUgAQBXAG4YBABlIZABeSYBAAEAAQBlIlogWQBuAjAAZAFkBWwjbSRaJAEAZAFkBmwlbSZaJm0nWidtKFooAQBkAWQHbARtKVopAQB6HGQBZAhsBG0qWiptK1orbSxaLAEAZAlaLVcAbhgEAGUekAF5iAEAAQABAGQKWi1ZAG4CMABkAWQLbARtLlovAQBkAWQMbDBtMVoxbTJaMgEAehZkAWQDbDNtNFo1AQBlNWo2AQBXAG4YBABlHpABedQBAAEAAQBkA1o1WQBuAjAAZA1kDmw3bThaOAEAZAFkD2wjbTlaOQEAZAFkEGwjbTpaOgEAZTtkEYMBAQBlO2QSgwEBAGU7ZBODAQEAZTtkFIMBAQBlPFo9ZBVlA2o+BAADAGsAkAJyOGQWawCQAnJEbgQBAG4IZT9kF4MBggFlJGpAkAJyVGQDWkFkA1pCZANaQ2QDWkRkA1pFZANaRmQDWkdkA1pIZANaSWQDWkpkA1pLZANaTGQDWk1kA1pOZANaT2QDWlBkA1pRZANaUmQDWlNHAGQYZBmEAGQZZVSDA1pVZBpkG4QAWlZpAFpXZBxkHYQAWlhkHmQfhABaWWQgZCGEAFpaZCJkI4QAWltkJGQlhABaXGQmZCeEAFpdZChkKYQAWl5kKmQrhAAEAFpfWmBkLGQthABaYWcAZC6iAVpiRwBkL2QwhABkMGVjgwNaZEcAZDFkMoQAZDJlZIMDWmVHAGQzZDSEAGQ0ZWWDA1pmRwBkNWQ2hABkNmVkgwNaZ0cAZDdkOIQAZDhlZIMDWmhpAFppZDlqamUDaj6OAFprZDpabGQ7Wm1kDVpuZAFab2Q8WnBkPWQ+hABacWQ/ZECEAFpyZwBmAWRBZEKEAVpzZENkRIQAWnRkRWRGhABadWUHoHZkR6EBWndlB6B2ZEihAVp4ZXVaeWRJZEqEAFp6ZEtkTIQAWntle1p8ZE1kToQAWn1kT2RQhABafmTrZFFkUoQBWn9kU2RUhABagEcAZFVkVoQAZFaDAlqBRwBkV2RYhABkWGWBgwNagkcAZFlkWoQAZFqDAlqDRwBkW2RchABkXGWEgwNahUcAZF1kXoQAZF6DAlqGZYZah0cAZF9kYIQAZGBlP4MDWohHAGRhZGKEAGRigwJaiWRjZGSEAFqKZGVkZoQAWotkZ2RohABajGRpZGqEAFqNZGtkbIQAWo5kbWRuhABaj2TsZG9kcIQBWpBHAGRxZHKEAGRygwJakWVxZZJlkYMCAQBHAGRzZHSEAGR0ZZGDA1qTRwBkdWR2hABkdmWTgwNalGWUoJWhAAEARwBkd2R4hABkeGWRgwNalmWWgwBal0cAZHlkeoQAZHplhIMDWphHAGR7ZHyEAGR8ZZiDA1qZRwBkfWR+hABkfmWTgwNammVxZQpqm2WagwIBAEcAZH9kgIQAZIBlloMDWpxHAGSBZIKEAGSCZZSDA1qdRwBkg2SEhABkhGWagwNanmVYZIVpAGSGjQIBAGSHZIiEAFqfZO1kiWSKhAFaoGTuZItkjIQBWqFln2UKaptloYMCAQBk72SNZI6EAVqiZZ9lkmWigwIBAGSPZJCEAFqjZPBkkWSShAFapGSTZJSEAFqlRwBklWSWhABkloMCWqZkl2SYhABap2SZZJqEAFqoZJtknIQAWqlknWSehABaqmWfZQ5qq2WkgwIBAGWsZTVkn4MCkAZyEmWfZTVqrWWkgwIBAGVYZIVpAGSgjQIBAGVYZIVpAGShjQIBAGSiZKOEAFquZKRkpYQAWq9kpmSnhABasGSoZKmEAFqxZPFkqmSrhAFasmSsZK2EAFqzZa5lDmqrZbODAgEAZa5lCmqbZbODAgEAZaxlNWSfgwKQBnKMZa5lNWqtZbODAgEAZK5kr4QAWrRlrmWSZbSDAgEAZLBksYQAWrVksmSzhABatmkAZgFktGS1hAFat2S2ZLeEAFq4ZLhkuYQAWrlkumS7hABaumS8ZL2EAFq7ZQegdmS+oQFqvFq9ZQegdmS/ZQdqvmUHar9CAKECarxawEcAZMBkwYQAZMGDAlrBZMJkw4QAWsJkxGTFhABaw0cAZMZkx4QAZMeDAlrERwBkyGTJhABkyWXEgwNaxUcAZMpky4QAZMtlxIMDWsZlxGXFZcZkzJwDWsdkzWTOhABayEcAZM9k0IQAZNBlyYMDWspk0WTShABay0cAZNNk1IQAZNRlOmrMas2DA1rNZNVk1oQAWs5k12TYhABaz2TZZNqEAFrQZNtk3IQAWtFk3WTehABa0mTfZOCEAFrTZQtq1GThZVVkCWTijQMBAGTjZOSEAFrVZdVl1oMAZgFk5WTmhAGDAVrXZdVk52TohACDAVrYRwBk6WTqhABk6mXZgwNa2mQDUwAp8mFaAgAAClBhY2thZ2UgcmVzb3VyY2UgQVBJCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIHJlc291cmNlIGlzIGEgbG9naWNhbCBmaWxlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlLCBvciBhIGxvZ2ljYWwKc3ViZGlyZWN0b3J5IHRoZXJlb2YuICBUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgZXhwZWN0cyByZXNvdXJjZSBuYW1lcwp0byBoYXZlIHRoZWlyIHBhdGggcGFydHMgc2VwYXJhdGVkIHdpdGggYGAvYGAsICpub3QqIHdoYXRldmVyIHRoZSBsb2NhbApwYXRoIHNlcGFyYXRvciBpcy4gIERvIG5vdCB1c2Ugb3MucGF0aCBvcGVyYXRpb25zIHRvIG1hbmlwdWxhdGUgcmVzb3VyY2UKbmFtZXMgYmVpbmcgcGFzc2VkIGludG8gdGhlIEFQSS4KClRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggbm9ybWFsIGZpbGVzeXN0ZW0gcGFja2FnZXMsCi5lZ2cgZmlsZXMsIGFuZCB1bnBhY2tlZCAuZWdnIGZpbGVzLiAgSXQgY2FuIGFsc28gd29yayBpbiBhIGxpbWl0ZWQgd2F5IHdpdGgKLnppcCBmaWxlcyBhbmQgd2l0aCBjdXN0b20gUEVQIDMwMiBsb2FkZXJzIHRoYXQgc3VwcG9ydCB0aGUgYGBnZXRfZGF0YSgpYGAKbWV0aG9kLgrpAAAAACkB2g9hYnNvbHV0ZV9pbXBvcnROKQHaDGdldF9pbXBvcnRlcikB2gNzaXgpA9oGdXJsbGli2gNtYXDaBmZpbHRlcikB2gV1dGltZSkD2gVta2RpctoGcmVuYW1l2gZ1bmxpbmtURikB2gRvcGVuKQLaBWlzZGly2gVzcGxpdOkBAAAAKQHaCnB5MzFjb21wYXQpAdoHYXBwZGlycykB2glwYWNrYWdpbmd6JnBrZ19yZXNvdXJjZXMuZXh0ZXJuLnBhY2thZ2luZy52ZXJzaW9ueilwa2dfcmVzb3VyY2VzLmV4dGVybi5wYWNrYWdpbmcuc3BlY2lmaWVyc3orcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLnJlcXVpcmVtZW50c3omcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLm1hcmtlcnMpAukDAAAAcgEAAAApAnITAAAA6QUAAAB6H1B5dGhvbiAzLjUgb3IgbGF0ZXIgaXMgcmVxdWlyZWRjAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQPaDVBFUDQ0MFdhcm5pbmd6YQogICAgVXNlZCB3aGVuIHRoZXJlIGlzIGFuIGlzc3VlIHdpdGggYSB2ZXJzaW9uIG9yIHNwZWNpZmllciBub3QgY29tcGx5aW5nIHdpdGgKICAgIFBFUCA0NDAuCiAgICBOqQTaCF9fbmFtZV9f2gpfX21vZHVsZV9f2gxfX3F1YWxuYW1lX1/aB19fZG9jX1+pAHIbAAAAchsAAAD6Uy9ob21lL2huaS9Ub3BtZXRhbFNlLURQUy92ZW52L2xpYi9weXRob24zLjkvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19faW5pdF9fLnB5chUAAAB4AAAAcwIAAAAIAXIVAAAAYwEAAAAAAAAAAAAAAAEAAAAIAAAAQwAAAHM2AAAAeg50AGoBoAJ8AKEBVwBTAAQAdABqAWoDeTABAAEAAQB0AGoBoAR8AKEBBgBZAFMAMABkAFMAqQFOKQVyEgAAANoHdmVyc2lvbtoHVmVyc2lvbtoOSW52YWxpZFZlcnNpb27aDUxlZ2FjeVZlcnNpb24pAdoBdnIbAAAAchsAAAByHAAAANoNcGFyc2VfdmVyc2lvbn8AAABzCAAAAAABAgEOARABciMAAABjAQAAAAAAAAAAAAAAAgAAAAYAAABLAAAAcyIAAAB0AIMAoAF8AaEBAQB0AqABdAOgBHwBfAChAqEBAQBkAFMAch0AAAApBdoHZ2xvYmFsc9oGdXBkYXRl2gtfc3RhdGVfdmFyc9oEZGljdNoIZnJvbWtleXMpAtoHdmFydHlwZdoCa3dyGwAAAHIbAAAAchwAAADaDl9kZWNsYXJlX3N0YXRliQAAAHMEAAAAAAEMAXIrAAAAYwAAAAAAAAAAAAAAAAQAAAAEAAAAQwAAAHM4AAAAaQB9AHQAgwB9AXQBoAKhAEQAXSBcAn0CfQN8AWQBfAMXABkAfAF8AhkAgwF8AHwCPABxEnwAUwApAk7aBl9zZ2V0XykDciQAAAByJgAAANoFaXRlbXOpBNoFc3RhdGXaAWfaAWtyIgAAAHIbAAAAchsAAAByHAAAANoMX19nZXRzdGF0ZV9fjgAAAHMKAAAAAAEEAQYBEAEaAXIyAAAAYwEAAAAAAAAAAAAAAAQAAAAFAAAAQwAAAHM4AAAAdACDAH0BfACgAaEARABdJFwCfQJ9A3wBZAF0AnwCGQAXABkAfAJ8AXwCGQB8A4MDAQBxDnwAUwApAk7aBl9zc2V0XykDciQAAAByLQAAAHImAAAAci4AAAByGwAAAHIbAAAAchwAAADaDF9fc2V0c3RhdGVfX5YAAABzCAAAAAABBgEQAR4BcjQAAABjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcwgAAAB8AKAAoQBTAHIdAAAAKQHaBGNvcHmpAdoDdmFschsAAAByGwAAAHIcAAAA2gpfc2dldF9kaWN0nQAAAHMCAAAAAAFyOAAAAGMDAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzFgAAAHwBoAChAAEAfAGgAXwCoQEBAGQAUwByHQAAACkC2gVjbGVhcnIlAAAAqQPaA2tledoCb2JyLwAAAHIbAAAAchsAAAByHAAAANoKX3NzZXRfZGljdKEAAABzBAAAAAABCAFyPQAAAGMBAAAAAAAAAAAAAAABAAAAAgAAAEMAAABzCAAAAHwAoAChAFMAch0AAAApAXIyAAAAcjYAAAByGwAAAHIbAAAAchwAAADaDF9zZ2V0X29iamVjdKYAAABzAgAAAAABcj4AAABjAwAAAAAAAAAAAAAAAwAAAAMAAABDAAAAcw4AAAB8AaAAfAKhAQEAZABTAHIdAAAAKQFyNAAAAHI6AAAAchsAAAByGwAAAHIcAAAA2gxfc3NldF9vYmplY3SqAAAAcwIAAAAAAXI/AAAAYwAAAAAAAAAAAAAAAAEAAAABAAAARwAAAHMEAAAAZABTAHIdAAAAchsAAACpAdoEYXJnc3IbAAAAchsAAAByHAAAANoIPGxhbWJkYT6uAAAA8wAAAAByQgAAAGMAAAAAAAAAAAAAAAACAAAACAAAAEMAAABzYAAAAHQAgwB9AHQBoAJ8AKEBfQF8AWQBdQFyXHQDagRkAmsCclx6JmQDZASgBXQGgwBkAWQFhQIZAKEBfAGgB2QGoQFmAhYAfQBXAG4SBAB0CHlaAQABAAEAWQBuAjAAfABTACkHYVoCAABSZXR1cm4gdGhpcyBwbGF0Zm9ybSdzIG1heGltdW0gY29tcGF0aWJsZSB2ZXJzaW9uLgoKICAgIGRpc3R1dGlscy51dGlsLmdldF9wbGF0Zm9ybSgpIG5vcm1hbGx5IHJlcG9ydHMgdGhlIG1pbmltdW0gdmVyc2lvbgogICAgb2YgTWFjIE9TIFggdGhhdCB3b3VsZCBiZSByZXF1aXJlZCB0byAqdXNlKiBleHRlbnNpb25zIHByb2R1Y2VkIGJ5CiAgICBkaXN0dXRpbHMuICBCdXQgd2hhdCB3ZSB3YW50IHdoZW4gY2hlY2tpbmcgY29tcGF0aWJpbGl0eSBpcyB0byBrbm93IHRoZQogICAgdmVyc2lvbiBvZiBNYWMgT1MgWCB0aGF0IHdlIGFyZSAqcnVubmluZyouICBUbyBhbGxvdyB1c2FnZSBvZiBwYWNrYWdlcyB0aGF0CiAgICBleHBsaWNpdGx5IHJlcXVpcmUgYSBuZXdlciB2ZXJzaW9uIG9mIE1hYyBPUyBYLCB3ZSBtdXN0IGFsc28ga25vdyB0aGUKICAgIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgT1MuCgogICAgSWYgdGhpcyBjb25kaXRpb24gb2NjdXJzIGZvciBhbnkgb3RoZXIgcGxhdGZvcm0gd2l0aCBhIHZlcnNpb24gaW4gaXRzCiAgICBwbGF0Zm9ybSBzdHJpbmdzLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBleHRlbmRlZCBhY2NvcmRpbmdseS4KICAgIE7aBmRhcndpbnoMbWFjb3N4LSVzLSVz2gEu6QIAAAByEwAAACkJ2hJnZXRfYnVpbGRfcGxhdGZvcm3aEm1hY29zVmVyc2lvblN0cmluZ9oFbWF0Y2jaA3N5c9oIcGxhdGZvcm3aBGpvaW7aDF9tYWNvc3hfdmVyc9oFZ3JvdXDaClZhbHVlRXJyb3IpAtoEcGxhdNoBbXIbAAAAchsAAAByHAAAANoWZ2V0X3N1cHBvcnRlZF9wbGF0Zm9ybbEAAABzEAAAAAANBgEKARIBAgEmAQwCBgFyUgAAAClH2gdyZXF1aXJl2gpydW5fc2NyaXB02gxnZXRfcHJvdmlkZXLaEGdldF9kaXN0cmlidXRpb27aEGxvYWRfZW50cnlfcG9pbnTaDWdldF9lbnRyeV9tYXDaDmdldF9lbnRyeV9pbmZv2hFpdGVyX2VudHJ5X3BvaW50c9oPcmVzb3VyY2Vfc3RyaW5n2g9yZXNvdXJjZV9zdHJlYW3aEXJlc291cmNlX2ZpbGVuYW1l2hByZXNvdXJjZV9saXN0ZGly2g9yZXNvdXJjZV9leGlzdHPaDnJlc291cmNlX2lzZGly2hFkZWNsYXJlX25hbWVzcGFjZdoLd29ya2luZ19zZXTaF2FkZF9hY3RpdmF0aW9uX2xpc3RlbmVy2hJmaW5kX2Rpc3RyaWJ1dGlvbnPaE3NldF9leHRyYWN0aW9uX3BhdGjaEWNsZWFudXBfcmVzb3VyY2Vz2hFnZXRfZGVmYXVsdF9jYWNoZdoLRW52aXJvbm1lbnTaCldvcmtpbmdTZXTaD1Jlc291cmNlTWFuYWdlctoMRGlzdHJpYnV0aW9u2gtSZXF1aXJlbWVudNoKRW50cnlQb2ludNoPUmVzb2x1dGlvbkVycm9y2g9WZXJzaW9uQ29uZmxpY3TaFERpc3RyaWJ1dGlvbk5vdEZvdW5k2gxVbmtub3duRXh0cmHaD0V4dHJhY3Rpb25FcnJvcnIVAAAA2hJwYXJzZV9yZXF1aXJlbWVudHNyIwAAANoJc2FmZV9uYW1l2gxzYWZlX3ZlcnNpb27aDGdldF9wbGF0Zm9ybdoUY29tcGF0aWJsZV9wbGF0Zm9ybXPaC3lpZWxkX2xpbmVz2g5zcGxpdF9zZWN0aW9uc9oKc2FmZV9leHRyYdoLdG9fZmlsZW5hbWXaDmludmFsaWRfbWFya2Vy2g9ldmFsdWF0ZV9tYXJrZXLaEGVuc3VyZV9kaXJlY3RvcnnaDm5vcm1hbGl6ZV9wYXRo2ghFR0dfRElTVNoLQklOQVJZX0RJU1TaC1NPVVJDRV9ESVNU2g1DSEVDS09VVF9ESVNU2gxERVZFTE9QX0RJU1TaEUlNZXRhZGF0YVByb3ZpZGVy2hFJUmVzb3VyY2VQcm92aWRlctoMRmlsZU1ldGFkYXRh2gxQYXRoTWV0YWRhdGHaC0VnZ01ldGFkYXRh2g1FbXB0eVByb3ZpZGVy2g5lbXB0eV9wcm92aWRlctoMTnVsbFByb3ZpZGVy2gtFZ2dQcm92aWRlctoPRGVmYXVsdFByb3ZpZGVy2gtaaXBQcm92aWRlctoPcmVnaXN0ZXJfZmluZGVy2hpyZWdpc3Rlcl9uYW1lc3BhY2VfaGFuZGxlctoUcmVnaXN0ZXJfbG9hZGVyX3R5cGXaGGZpeHVwX25hbWVzcGFjZV9wYWNrYWdlc3IDAAAA2h5Qa2dSZXNvdXJjZXNEZXByZWNhdGlvbldhcm5pbmfaCHJ1bl9tYWlu2hZBdmFpbGFibGVEaXN0cmlidXRpb25zYwAAAAAAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQVybgAAAHouQWJzdHJhY3QgYmFzZSBmb3IgZGVwZW5kZW5jeSByZXNvbHV0aW9uIGVycm9yc2MBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzEgAAAHwAagBqAXQCfABqA4MBFwBTAHIdAAAAKQTaCV9fY2xhc3NfX3IXAAAA2gRyZXByckEAAACpAdoEc2VsZnIbAAAAchsAAAByHAAAANoIX19yZXByX1/+AAAAcwIAAAAAAXoYUmVzb2x1dGlvbkVycm9yLl9fcmVwcl9fTikFchcAAAByGAAAAHIZAAAAchoAAABymwAAAHIbAAAAchsAAAByGwAAAHIcAAAAcm4AAAD7AAAAcwQAAAAIAQQCcm4AAABjAAAAAAAAAAAAAAAAAAAAAAMAAABAAAAAczwAAABlAFoBZABaAmQBWgNkAloEZQVkA2QEhACDAVoGZQVkBWQGhACDAVoHZAdkCIQAWghkCWQKhABaCWQLUwApDHJvAAAAeqoKICAgIEFuIGFscmVhZHktaW5zdGFsbGVkIHZlcnNpb24gY29uZmxpY3RzIHdpdGggdGhlIHJlcXVlc3RlZCB2ZXJzaW9uLgoKICAgIFNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIHRoZSBpbnN0YWxsZWQgRGlzdHJpYnV0aW9uIGFuZCB0aGUgcmVxdWVzdGVkCiAgICBSZXF1aXJlbWVudC4KICAgIHoze3NlbGYuZGlzdH0gaXMgaW5zdGFsbGVkIGJ1dCB7c2VsZi5yZXF9IGlzIHJlcXVpcmVkYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAfABqAGQBGQBTAKkCTnIBAAAAckAAAABymQAAAHIbAAAAchsAAAByHAAAANoEZGlzdAwBAABzAgAAAAACehRWZXJzaW9uQ29uZmxpY3QuZGlzdGMBAAAAAAAAAAAAAAABAAAAAgAAAEMAAABzCgAAAHwAagBkARkAUwCpAk5yDwAAAHJAAAAAcpkAAAByGwAAAHIbAAAAchwAAADaA3JlcRABAABzAgAAAAACehNWZXJzaW9uQ29uZmxpY3QucmVxYwEAAAAAAAAAAAAAAAEAAAAEAAAAQwAAAHMUAAAAfABqAGoBZgBpAHQCgwCkAY4BUwByHQAAAKkD2glfdGVtcGxhdGXaBmZvcm1hdNoGbG9jYWxzcpkAAAByGwAAAHIbAAAAchwAAADaBnJlcG9ydBQBAABzAgAAAAABehZWZXJzaW9uQ29uZmxpY3QucmVwb3J0YwIAAAAAAAAAAAAAAAMAAAACAAAAQwAAAHMcAAAAfAFzCHwAUwB8AGoAfAFmARcAfQJ0AXwCjgBTACkBenQKICAgICAgICBJZiByZXF1aXJlZF9ieSBpcyBub24tZW1wdHksIHJldHVybiBhIHZlcnNpb24gb2Ygc2VsZiB0aGF0IGlzIGEKICAgICAgICBDb250ZXh0dWFsVmVyc2lvbkNvbmZsaWN0LgogICAgICAgICkCckEAAADaGUNvbnRleHR1YWxWZXJzaW9uQ29uZmxpY3QpA3KaAAAA2gtyZXF1aXJlZF9ieXJBAAAAchsAAAByGwAAAHIcAAAA2gx3aXRoX2NvbnRleHQXAQAAcwgAAAAABQQBBAEMAXocVmVyc2lvbkNvbmZsaWN0LndpdGhfY29udGV4dE4pCnIXAAAAchgAAAByGQAAAHIaAAAAcqEAAADaCHByb3BlcnR5cp0AAABynwAAAHKkAAAAcqcAAAByGwAAAHIbAAAAchsAAAByHAAAAHJvAAAAAgEAAHMQAAAACAEEBwQCAgEKAwIBCgMIA3JvAAAAYwAAAAAAAAAAAAAAAAAAAAADAAAAQAAAAHMmAAAAZQBaAWQAWgJkAVoDZQRqBWQCFwBaBWUGZANkBIQAgwFaB2QFUwApBnKlAAAAeoUKICAgIEEgVmVyc2lvbkNvbmZsaWN0IHRoYXQgYWNjZXB0cyBhIHRoaXJkIHBhcmFtZXRlciwgdGhlIHNldCBvZiB0aGUKICAgIHJlcXVpcmVtZW50cyB0aGF0IHJlcXVpcmVkIHRoZSBpbnN0YWxsZWQgRGlzdHJpYnV0aW9uLgogICAgehYgYnkge3NlbGYucmVxdWlyZWRfYnl9YwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAfABqAGQBGQBTACkCTnJGAAAAckAAAABymQAAAHIbAAAAchsAAAByHAAAAHKmAAAAKgEAAHMCAAAAAAJ6JUNvbnRleHR1YWxWZXJzaW9uQ29uZmxpY3QucmVxdWlyZWRfYnlOKQhyFwAAAHIYAAAAchkAAAByGgAAAHJvAAAAcqEAAAByqAAAAHKmAAAAchsAAAByGwAAAHIbAAAAchwAAABypQAAACIBAABzCAAAAAgBBAUKAgIBcqUAAABjAAAAAAAAAAAAAAAAAAAAAAMAAABAAAAAc0gAAABlAFoBZABaAmQBWgNkAloEZQVkA2QEhACDAVoGZQVkBWQGhACDAVoHZQVkB2QIhACDAVoIZAlkCoQAWglkC2QMhABaCmQNUwApDnJwAAAAeiZBIHJlcXVlc3RlZCBkaXN0cmlidXRpb24gd2FzIG5vdCBmb3VuZHpTVGhlICd7c2VsZi5yZXF9JyBkaXN0cmlidXRpb24gd2FzIG5vdCBmb3VuZCBhbmQgaXMgcmVxdWlyZWQgYnkge3NlbGYucmVxdWlyZXJzX3N0cn1jAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcwoAAAB8AGoAZAEZAFMAcpwAAAByQAAAAHKZAAAAchsAAAByGwAAAHIcAAAAcp8AAAA1AQAAcwIAAAAAAnoYRGlzdHJpYnV0aW9uTm90Rm91bmQucmVxYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAfABqAGQBGQBTAHKeAAAAckAAAABymQAAAHIbAAAAchsAAAByHAAAANoJcmVxdWlyZXJzOQEAAHMCAAAAAAJ6HkRpc3RyaWJ1dGlvbk5vdEZvdW5kLnJlcXVpcmVyc2MBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzFgAAAHwAagBzCmQBUwBkAqABfABqAKEBUwApA056D3RoZSBhcHBsaWNhdGlvbnoCLCApAnKpAAAAckwAAABymQAAAHIbAAAAchsAAAByHAAAANoNcmVxdWlyZXJzX3N0cj0BAABzBgAAAAACBgEEAXoiRGlzdHJpYnV0aW9uTm90Rm91bmQucmVxdWlyZXJzX3N0cmMBAAAAAAAAAAAAAAABAAAABAAAAEMAAABzFAAAAHwAagBqAWYAaQB0AoMApAGOAVMAch0AAAByoAAAAHKZAAAAchsAAAByGwAAAHIcAAAAcqQAAABDAQAAcwIAAAAAAXobRGlzdHJpYnV0aW9uTm90Rm91bmQucmVwb3J0YwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMIAAAAfACgAKEAUwByHQAAACkBcqQAAABymQAAAHIbAAAAchsAAAByHAAAANoHX19zdHJfX0YBAABzAgAAAAABehxEaXN0cmlidXRpb25Ob3RGb3VuZC5fX3N0cl9fTikLchcAAAByGAAAAHIZAAAAchoAAAByoQAAAHKoAAAAcp8AAAByqQAAAHKqAAAAcqQAAAByqwAAAHIbAAAAchsAAAByGwAAAHIcAAAAcnAAAAAvAQAAcxQAAAAIAQQCBAMCAQoDAgEKAwIBCgUIA3JwAAAAYwAAAAAAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkDcnEAAAB6PkRpc3RyaWJ1dGlvbiBkb2Vzbid0IGhhdmUgYW4gImV4dHJhIGZlYXR1cmUiIG9mIHRoZSBnaXZlbiBuYW1lTnIWAAAAchsAAAByGwAAAHIbAAAAchwAAABycQAAAEoBAABzAgAAAAgBcnEAAAB6BXt9Lnt9chMAAAByRgAAAOn/////YwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHMMAAAAfAF0AHwAPABkAVMAKQJhDwEAAFJlZ2lzdGVyIGBwcm92aWRlcl9mYWN0b3J5YCB0byBtYWtlIHByb3ZpZGVycyBmb3IgYGxvYWRlcl90eXBlYAoKICAgIGBsb2FkZXJfdHlwZWAgaXMgdGhlIHR5cGUgb3IgY2xhc3Mgb2YgYSBQRVAgMzAyIGBgbW9kdWxlLl9fbG9hZGVyX19gYCwKICAgIGFuZCBgcHJvdmlkZXJfZmFjdG9yeWAgaXMgYSBmdW5jdGlvbiB0aGF0LCBwYXNzZWQgYSAqbW9kdWxlKiBvYmplY3QsCiAgICByZXR1cm5zIGFuIGBgSVJlc291cmNlUHJvdmlkZXJgYCBmb3IgdGhhdCBtb2R1bGUuCiAgICBOKQHaE19wcm92aWRlcl9mYWN0b3JpZXMpAtoLbG9hZGVyX3R5cGXaEHByb3ZpZGVyX2ZhY3RvcnlyGwAAAHIbAAAAchwAAABykgAAAFgBAABzAgAAAAAHcpIAAABjAQAAAAAAAAAAAAAAAwAAAAgAAABDAAAAc3IAAAB0AHwAdAGDAnIkdAKgA3wAoQFwInQEdAV8AIMBgwFkARkAUwB6DnQGagd8ABkAfQFXAG4kBAB0CHlWAQABAAEAdAl8AIMBAQB0BmoHfAAZAH0BWQBuAjAAdAp8AWQCZAODA30CdAt0DHwCgwJ8AYMBUwApBHo/UmV0dXJuIGFuIElSZXNvdXJjZVByb3ZpZGVyIGZvciB0aGUgbmFtZWQgbW9kdWxlIG9yIHJlcXVpcmVtZW50cgEAAADaCl9fbG9hZGVyX19OKQ3aCmlzaW5zdGFuY2VybAAAAHJiAAAA2gRmaW5kclMAAADaA3N0cnJKAAAA2gdtb2R1bGVz2ghLZXlFcnJvctoKX19pbXBvcnRfX9oHZ2V0YXR0ctoNX2ZpbmRfYWRhcHRlcnKtAAAAKQPaC21vZHVsZU9yUmVx2gZtb2R1bGXaBmxvYWRlcnIbAAAAchsAAAByHAAAAHJVAAAAYgEAAHMSAAAAAAIKARoBAgEOAQwBCAEQAQwBclUAAABjAQAAAAAAAAAAAAAABAAAAAUAAABDAAAAc2QAAAB8AHNcdACgAaEAZAEZAH0BfAFkAmsCckxkA30CdAJqA6AEfAKhAXJMdAV0BmQEgwJyTHQGoAd8AqEBfQNkBXwDdgByTHwDZAUZAH0BfACgCHwBoAlkBqEBoQEBAHwAZAEZAFMAKQdOcgEAAADaAHowL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN02glyZWFkUGxpc3TaDlByb2R1Y3RWZXJzaW9uckUAAAApCnJLAAAA2gdtYWNfdmVy2gJvc9oEcGF0aNoGZXhpc3Rz2gdoYXNhdHRy2ghwbGlzdGxpYnK9AAAA2gZhcHBlbmRyDgAAACkE2gZfY2FjaGVyHgAAANoFcGxpc3TaDXBsaXN0X2NvbnRlbnRyGwAAAHIbAAAAchwAAAByTQAAAG8BAABzFgAAAAABBAEMAggBBAEMAQoBCgEIAQgCEAFyTQAAAGMBAAAAAAAAAAAAAAABAAAABAAAAEMAAABzEgAAAGQBZAFkApwCoAB8AHwAoQJTACkDTtoDcHBjKQLaB1Bvd2VyUEPaD1Bvd2VyX01hY2ludG9zaCkB2gNnZXQpAdoHbWFjaGluZXIbAAAAchsAAAByHAAAANoMX21hY29zeF9hcmNofwEAAHMCAAAAAAFyzgAAAGMAAAAAAAAAAAAAAAAEAAAACAAAAEMAAABzfAAAAGQBZAJsAG0BfQABAHwAgwB9AXQCagNkA2sCcnh8AaAEZAShAXN4ej50BYMAfQJ0BqAHoQBkBRkAoAhkBmQHoQJ9A2QIdAl8AmQBGQCDAXQJfAJkCRkAgwF0CnwDgwFmAxYAVwBTAAQAdAt5dgEAAQABAFkAbgIwAHwBUwApCnrEUmV0dXJuIHRoaXMgcGxhdGZvcm0ncyBzdHJpbmcgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGRpc3RyaWJ1dGlvbnMKCiAgICBYWFggQ3VycmVudGx5IHRoaXMgaXMgdGhlIHNhbWUgYXMgYGBkaXN0dXRpbHMudXRpbC5nZXRfcGxhdGZvcm0oKWBgLCBidXQgaXQKICAgIG5lZWRzIHNvbWUgaGFja3MgZm9yIExpbnV4IGFuZCBNYWMgT1MgWC4KICAgIHIBAAAAKQFydgAAAHJEAAAAegdtYWNvc3gt6QQAAAD6ASDaAV96D21hY29zeC0lZC4lZC0lc3IPAAAAKQzaCXN5c2NvbmZpZ3J2AAAAckoAAABySwAAANoKc3RhcnRzd2l0aHJNAAAAcsAAAADaBXVuYW1l2gdyZXBsYWNl2gNpbnRyzgAAAHJPAAAAKQRydgAAAHJQAAAAch4AAAByzQAAAHIbAAAAchsAAAByHAAAAHJHAAAAgwEAAHMaAAAAAAYMAgYBFAECAQYBFAECARQBBv4IBAwDBgFyRwAAAHoYbWFjb3N4LShcZCspXC4oXGQrKS0oLiopeh9kYXJ3aW4tKFxkKylcLihcZCspXC4oXGQrKS0oLiopYwIAAAAAAAAAAAAAAAcAAAAFAAAAQwAAAHPoAAAAfABkAXUAcxh8AWQBdQBzGHwAfAFrAnIcZAJTAHQAoAF8AaEBfQJ8AnLkdACgAXwAoQF9A3wDc5R0AqABfAChAX0EfARykHQDfASgBGQDoQGDAX0FZAR8AqAEZAOhAXwCoARkBaEBZgIWAH0GfAVkBmsCcnx8BmQHawVzjHwFZAhrAnKQfAZkCWsFcpBkAlMAZApTAHwDoARkA6EBfAKgBGQDoQFrA3O8fAOgBGQLoQF8AqAEZAuhAWsDcsBkClMAdAN8A6AEZAWhAYMBdAN8AqAEZAWhAYMBawRy4GQKUwBkAlMAZApTACkMettDYW4gY29kZSBmb3IgdGhlIGBwcm92aWRlZGAgcGxhdGZvcm0gcnVuIG9uIHRoZSBgcmVxdWlyZWRgIHBsYXRmb3JtPwoKICAgIFJldHVybnMgdHJ1ZSBpZiBlaXRoZXIgcGxhdGZvcm0gaXMgYGBOb25lYGAsIG9yIHRoZSBwbGF0Zm9ybXMgYXJlIGVxdWFsLgoKICAgIFhYWCBOZWVkcyBjb21wYXRpYmlsaXR5IGNoZWNrcyBmb3IgTGludXggYW5kIG90aGVyIHVuaXh5IE9TZXMuCiAgICBOVHIPAAAAegUlcy4lc3JGAAAA6QcAAAB6BDEwLjPpCAAAAHoEMTAuNEZyEwAAACkFckgAAABySQAAANoTZGFyd2luVmVyc2lvblN0cmluZ3LWAAAAck4AAAApB9oIcHJvdmlkZWTaCHJlcXVpcmVk2gZyZXFNYWPaB3Byb3ZNYWPaCnByb3ZEYXJ3aW7aCGR2ZXJzaW9u2gxtYWNvc3ZlcnNpb25yGwAAAHIbAAAAchwAAABydwAAAKEBAABzMgAAAAAHGAIEAwoBBAEKAwQECgEEAQ4BGAEQAQb/AgEG/wICBAIEAxQBEv8CAgQDHAEEAgQDcncAAABjAgAAAAAAAAAAAAAABAAAAAQAAABDAAAAczwAAAB0AKABZAGhAWoCfQJ8AmQCGQB9A3wCoAOhAAEAfAN8AmQCPAB0BHwAgwFkAxkAoAV8AXwCoQIBAGQEUwApBXpATG9jYXRlIGRpc3RyaWJ1dGlvbiBgZGlzdF9zcGVjYCBhbmQgcnVuIGl0cyBgc2NyaXB0X25hbWVgIHNjcmlwdHIPAAAAchcAAAByAQAAAE6pBnJKAAAA2glfZ2V0ZnJhbWXaCWZfZ2xvYmFsc3I5AAAAclMAAAByVAAAACkEWglkaXN0X3NwZWPaC3NjcmlwdF9uYW1l2gJuc9oEbmFtZXIbAAAAchsAAAByHAAAAHJUAAAAzwEAAHMKAAAAAAIMAQgBCAEIAXJUAAAAYwEAAAAAAAAAAAAAAAEAAAADAAAAQwAAAHNAAAAAdAB8AHQBagKDAnIWdAOgBHwAoQF9AHQAfAB0A4MCcih0BXwAgwF9AHQAfAB0BoMCczx0B2QBfACDAoIBfABTACkCekBSZXR1cm4gYSBjdXJyZW50IGRpc3RyaWJ1dGlvbiBvYmplY3QgZm9yIGEgUmVxdWlyZW1lbnQgb3Igc3RyaW5nei1FeHBlY3RlZCBzdHJpbmcsIFJlcXVpcmVtZW50LCBvciBEaXN0cmlidXRpb24pCHKxAAAAcgQAAADaDHN0cmluZ190eXBlc3JsAAAA2gVwYXJzZXJVAAAAcmsAAADaCVR5cGVFcnJvcqkBcp0AAAByGwAAAHIbAAAAchwAAAByVgAAANwBAABzDgAAAAACDAEKAQoBCAEKAQoBclYAAABjAwAAAAAAAAAAAAAAAwAAAAQAAABDAAAAcxAAAAB0AHwAgwGgAXwBfAKhAlMAKQF6RFJldHVybiBgbmFtZWAgZW50cnkgcG9pbnQgb2YgYGdyb3VwYCBmb3IgYGRpc3RgIG9yIHJhaXNlIEltcG9ydEVycm9yKQJyVgAAAHJXAAAAqQNynQAAAHJOAAAAcuYAAAByGwAAAHIbAAAAchwAAAByVwAAAOcBAABzAgAAAAACclcAAABjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcw4AAAB0AHwAgwGgAXwBoQFTACkB+j1SZXR1cm4gdGhlIGVudHJ5IHBvaW50IG1hcCBmb3IgYGdyb3VwYCwgb3IgdGhlIGZ1bGwgZW50cnkgbWFwKQJyVgAAAHJYAAAAKQJynQAAAHJOAAAAchsAAAByGwAAAHIcAAAAclgAAADsAQAAcwIAAAAAAnJYAAAAYwMAAAAAAAAAAAAAAAMAAAAEAAAAQwAAAHMQAAAAdAB8AIMBoAF8AXwCoQJTAKkBejxSZXR1cm4gdGhlIEVudHJ5UG9pbnQgb2JqZWN0IGZvciBgZ3JvdXBgK2BuYW1lYCwgb3IgYGBOb25lYGApAnJWAAAAclkAAABy6wAAAHIbAAAAchsAAAByHAAAAHJZAAAA8QEAAHMCAAAAAAJyWQAAAGMAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAABzPAAAAGUAWgFkAFoCZAFkAoQAWgNkA2QEhABaBGQFZAaEAFoFZAdkCIQAWgZkCWQKhABaB2QLZAyEAFoIZA1TACkOcoUAAABjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6O0RvZXMgdGhlIHBhY2thZ2UncyBkaXN0cmlidXRpb24gY29udGFpbiB0aGUgbmFtZWQgbWV0YWRhdGE/TnIbAAAAqQFy5gAAAHIbAAAAchsAAAByHAAAANoMaGFzX21ldGFkYXRh9wEAAHMCAAAAAAF6HklNZXRhZGF0YVByb3ZpZGVyLmhhc19tZXRhZGF0YWMBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAnonVGhlIG5hbWVkIG1ldGFkYXRhIHJlc291cmNlIGFzIGEgc3RyaW5nTnIbAAAAcu4AAAByGwAAAHIbAAAAchwAAADaDGdldF9tZXRhZGF0YfoBAABzAgAAAAABeh5JTWV0YWRhdGFQcm92aWRlci5nZXRfbWV0YWRhdGFjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ60llpZWxkIG5hbWVkIG1ldGFkYXRhIHJlc291cmNlIGFzIGxpc3Qgb2Ygbm9uLWJsYW5rIG5vbi1jb21tZW50IGxpbmVzCgogICAgICAgTGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZCBmcm9tIGVhY2ggbGluZSwgYW5kIGxpbmVzCiAgICAgICB3aXRoIGBgI2BgIGFzIHRoZSBmaXJzdCBub24tYmxhbmsgY2hhcmFjdGVyIGFyZSBvbWl0dGVkLk5yGwAAAHLuAAAAchsAAAByGwAAAHIcAAAA2hJnZXRfbWV0YWRhdGFfbGluZXP9AQAAcwIAAAAAAXokSU1ldGFkYXRhUHJvdmlkZXIuZ2V0X21ldGFkYXRhX2xpbmVzYwEAAAAAAAAAAAAAAAEAAAABAAAAQwAAAHMEAAAAZAFTACkCej5JcyB0aGUgbmFtZWQgbWV0YWRhdGEgYSBkaXJlY3Rvcnk/ICAobGlrZSBgYG9zLnBhdGguaXNkaXIoKWBgKU5yGwAAAHLuAAAAchsAAAByGwAAAHIcAAAA2g5tZXRhZGF0YV9pc2RpcgMCAABzAgAAAAABeiBJTWV0YWRhdGFQcm92aWRlci5tZXRhZGF0YV9pc2RpcmMBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno/TGlzdCBvZiBtZXRhZGF0YSBuYW1lcyBpbiB0aGUgZGlyZWN0b3J5IChsaWtlIGBgb3MubGlzdGRpcigpYGApTnIbAAAAcu4AAAByGwAAAHIbAAAAchwAAADaEG1ldGFkYXRhX2xpc3RkaXIGAgAAcwIAAAAAAXoiSU1ldGFkYXRhUHJvdmlkZXIubWV0YWRhdGFfbGlzdGRpcmMCAAAAAAAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAno9RXhlY3V0ZSB0aGUgbmFtZWQgc2NyaXB0IGluIHRoZSBzdXBwbGllZCBuYW1lc3BhY2UgZGljdGlvbmFyeU5yGwAAACkCcuQAAADaCW5hbWVzcGFjZXIbAAAAchsAAAByHAAAAHJUAAAACQIAAHMCAAAAAAF6HElNZXRhZGF0YVByb3ZpZGVyLnJ1bl9zY3JpcHROKQlyFwAAAHIYAAAAchkAAABy7wAAAHLwAAAAcvEAAABy8gAAAHLzAAAAclQAAAByGwAAAHIbAAAAchsAAAByHAAAAHKFAAAA9gEAAHMMAAAACAEIAwgDCAYIAwgDcoUAAABjAAAAAAAAAAAAAAAAAAAAAAIAAABAAAAAc0AAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZAZkB4QAWgZkCGQJhABaB2QKZAuEAFoIZAxkDYQAWglkDlMAKQ9yhgAAAHozQW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHBhY2thZ2UgcmVzb3VyY2VzYwIAAAAAAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCemRSZXR1cm4gYSB0cnVlIGZpbGVzeXN0ZW0gcGF0aCBmb3IgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIbAAAAqQLaB21hbmFnZXLaDXJlc291cmNlX25hbWVyGwAAAHIbAAAAchwAAADaFWdldF9yZXNvdXJjZV9maWxlbmFtZRACAABzAgAAAAABeidJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2VfZmlsZW5hbWVjAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6aVJldHVybiBhIHJlYWRhYmxlIGZpbGUtbGlrZSBvYmplY3QgZm9yIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yGwAAAHL1AAAAchsAAAByGwAAAHIcAAAA2hNnZXRfcmVzb3VyY2Vfc3RyZWFtFQIAAHMCAAAAAAF6JUlSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9zdHJlYW1jAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6bVJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBgcmVzb3VyY2VfbmFtZWAKCiAgICAgICAgYG1hbmFnZXJgIG11c3QgYmUgYW4gYGBJUmVzb3VyY2VNYW5hZ2VyYGBOchsAAABy9QAAAHIbAAAAchsAAAByHAAAANoTZ2V0X3Jlc291cmNlX3N0cmluZxoCAABzAgAAAAABeiVJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2Vfc3RyaW5nYwEAAAAAAAAAAAAAAAEAAAABAAAAQwAAAHMEAAAAZAFTACkCeixEb2VzIHRoZSBwYWNrYWdlIGNvbnRhaW4gdGhlIG5hbWVkIHJlc291cmNlP05yGwAAAKkBcvcAAAByGwAAAHIbAAAAchwAAADaDGhhc19yZXNvdXJjZR8CAABzAgAAAAABeh5JUmVzb3VyY2VQcm92aWRlci5oYXNfcmVzb3VyY2VjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6PklzIHRoZSBuYW1lZCByZXNvdXJjZSBhIGRpcmVjdG9yeT8gIChsaWtlIGBgb3MucGF0aC5pc2RpcigpYGApTnIbAAAAcvsAAAByGwAAAHIbAAAAchwAAAByYAAAACICAABzAgAAAAABeiBJUmVzb3VyY2VQcm92aWRlci5yZXNvdXJjZV9pc2RpcmMBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno/TGlzdCBvZiByZXNvdXJjZSBuYW1lcyBpbiB0aGUgZGlyZWN0b3J5IChsaWtlIGBgb3MubGlzdGRpcigpYGApTnIbAAAAcvsAAAByGwAAAHIbAAAAchwAAAByXgAAACUCAABzAgAAAAABeiJJUmVzb3VyY2VQcm92aWRlci5yZXNvdXJjZV9saXN0ZGlyTikKchcAAAByGAAAAHIZAAAAchoAAABy+AAAAHL5AAAAcvoAAABy/AAAAHJgAAAAcl4AAAByGwAAAHIbAAAAchsAAAByHAAAAHKGAAAADQIAAHMOAAAACAEEAggFCAUIBQgDCANyhgAAAGMAAAAAAAAAAAAAAAAAAAAABAAAAEAAAABzrAAAAGUAWgFkAFoCZAFaA2QnZANkBIQBWgRlBWQFZAaEAIMBWgZlBWQHZAiEAIMBWgdkCWQKhABaCGQLZAyEAFoJZA1kDoQAWgpkKGQPZBCEAVoLZBFkEoQAWgxkE2QUhABaDWQpZBdkGIQBWg5kKmQZZBqEAVoPZCtkG2QchAFaEGQdZB6EAFoRZCxkH2QghAFaEmQhZCKEAFoTZCNkJIQAWhRkJWQmhABaFWQCUwApLXJpAAAAekRBIGNvbGxlY3Rpb24gb2YgYWN0aXZlIGRpc3RyaWJ1dGlvbnMgb24gc3lzLnBhdGggKG9yIGEgc2ltaWxhciBsaXN0KU5jAgAAAAAAAAAAAAAAAwAAAAQAAABDAAAAcz4AAABnAHwAXwBpAHwAXwFpAHwAXwJnAHwAXwN8AWQBdQByJnQEagV9AXwBRABdDn0CfACgBnwCoQEBAHEqZAFTACkCej9DcmVhdGUgd29ya2luZyBzZXQgZnJvbSBsaXN0IG9mIHBhdGggZW50cmllcyAoZGVmYXVsdD1zeXMucGF0aClOKQfaB2VudHJpZXPaCmVudHJ5X2tleXPaBmJ5X2tledoJY2FsbGJhY2tzckoAAABywQAAANoJYWRkX2VudHJ5KQNymgAAAHL9AAAA2gVlbnRyeXIbAAAAchsAAAByHAAAANoIX19pbml0X18sAgAAcxAAAAAAAgYBBgEGAQYCCAEGAggBehNXb3JraW5nU2V0Ll9faW5pdF9fYwEAAAAAAAAAAAAAAAMAAAAIAAAAQwAAAHNeAAAAfACDAH0BehBkAWQCbABtAX0CAQBXAG4WBAB0AnksAQABAAEAfAEGAFkAUwAwAHoOfAGgA3wCoQEBAFcAbhwEAHQEeVgBAAEAAQB8AKAFfAKhAQYAWQBTADAAfAFTACkDejEKICAgICAgICBQcmVwYXJlIHRoZSBtYXN0ZXIgd29ya2luZyBzZXQuCiAgICAgICAgcgEAAAApAdoMX19yZXF1aXJlc19fKQbaCF9fbWFpbl9fcgQBAADaC0ltcG9ydEVycm9yclMAAABybwAAANoYX2J1aWxkX2Zyb21fcmVxdWlyZW1lbnRzKQPaA2Nsc9oCd3NyBAEAAHIbAAAAchsAAAByHAAAANoNX2J1aWxkX21hc3RlcjkCAABzFAAAAAAFBgECARABDAIKAwIBDgEMARACehhXb3JraW5nU2V0Ll9idWlsZF9tYXN0ZXJjAgAAAAAAAAAAAAAABwAAAAQAAABDAAAAc2YAAAB8AGcAgwF9AnQAfAGDAX0DfAKgAXwDdAKDAKECfQR8BEQAXQ59BXwCoAN8BaEBAQBxInQEagVEAF0YfQZ8BnwCagZ2AXI4fAKgB3wGoQEBAHE4fAJqBnQEagVkAWQBhQI8AHwCUwApAnpRCiAgICAgICAgQnVpbGQgYSB3b3JraW5nIHNldCBmcm9tIGEgcmVxdWlyZW1lbnQgc3BlYy4gUmV3cml0ZXMgc3lzLnBhdGguCiAgICAgICAgTikIcnMAAADaB3Jlc29sdmVyaAAAANoDYWRkckoAAABywQAAAHL9AAAAcgEBAAApB3IIAQAA2ghyZXFfc3BlY3IJAQAA2gRyZXFz2gVkaXN0c3KdAAAAcgIBAAByGwAAAHIbAAAAchwAAAByBwEAAE0CAABzFAAAAAAHCAEIAQ4BCAEMAwoBCgEMAxABeiNXb3JraW5nU2V0Ll9idWlsZF9mcm9tX3JlcXVpcmVtZW50c2MCAAAAAAAAAAAAAAADAAAABgAAAEMAAABzPAAAAHwAagCgAXwBZwChAgEAfABqAqADfAGhAQEAdAR8AWQBgwJEAF0SfQJ8AKAFfAJ8AWQCoQMBAHEkZANTACkEYd0BAABBZGQgYSBwYXRoIGl0ZW0gdG8gYGAuZW50cmllc2BgLCBmaW5kaW5nIGFueSBkaXN0cmlidXRpb25zIG9uIGl0CgogICAgICAgIGBgZmluZF9kaXN0cmlidXRpb25zKGVudHJ5LCBUcnVlKWBgIGlzIHVzZWQgdG8gZmluZCBkaXN0cmlidXRpb25zCiAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcGF0aCBlbnRyeSwgYW5kIHRoZXkgYXJlIGFkZGVkLiAgYGVudHJ5YCBpcwogICAgICAgIGFsd2F5cyBhcHBlbmRlZCB0byBgYC5lbnRyaWVzYGAsIGV2ZW4gaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50LgogICAgICAgIChUaGlzIGlzIGJlY2F1c2UgYGBzeXMucGF0aGBgIGNhbiBjb250YWluIHRoZSBzYW1lIHZhbHVlIG1vcmUgdGhhbgogICAgICAgIG9uY2UsIGFuZCB0aGUgYGAuZW50cmllc2BgIG9mIHRoZSBgYHN5cy5wYXRoYGAgV29ya2luZ1NldCBzaG91bGQgYWx3YXlzCiAgICAgICAgZXF1YWwgYGBzeXMucGF0aGBgLikKICAgICAgICBURk4pBnL+AAAA2gpzZXRkZWZhdWx0cv0AAAByxQAAAHJkAAAAcgwBAAApA3KaAAAAcgIBAABynQAAAHIbAAAAchsAAAByHAAAAHIBAQAAYwIAAHMIAAAAAAoOAQwBDgF6FFdvcmtpbmdTZXQuYWRkX2VudHJ5YwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHMSAAAAfABqAKABfAFqAqEBfAFrAlMAKQF6OVRydWUgaWYgYGRpc3RgIGlzIHRoZSBhY3RpdmUgZGlzdHJpYnV0aW9uIGZvciBpdHMgcHJvamVjdCkDcv8AAAByzAAAAHI7AAAAqQJymgAAAHKdAAAAchsAAAByGwAAAHIcAAAA2gxfX2NvbnRhaW5zX19yAgAAcwIAAAAAAnoXV29ya2luZ1NldC5fX2NvbnRhaW5zX19jAgAAAAAAAAAAAAAAAwAAAAMAAABDAAAAcywAAAB8AGoAoAF8AWoCoQF9AnwCZAF1AXIofAJ8AXYBcih0A3wCfAGDAoIBfAJTACkCYdABAABGaW5kIGEgZGlzdHJpYnV0aW9uIG1hdGNoaW5nIHJlcXVpcmVtZW50IGByZXFgCgogICAgICAgIElmIHRoZXJlIGlzIGFuIGFjdGl2ZSBkaXN0cmlidXRpb24gZm9yIHRoZSByZXF1ZXN0ZWQgcHJvamVjdCwgdGhpcwogICAgICAgIHJldHVybnMgaXQgYXMgbG9uZyBhcyBpdCBtZWV0cyB0aGUgdmVyc2lvbiByZXF1aXJlbWVudCBzcGVjaWZpZWQgYnkKICAgICAgICBgcmVxYC4gIEJ1dCwgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIHByb2plY3QgYW5kIGl0CiAgICAgICAgZG9lcyAqbm90KiBtZWV0IHRoZSBgcmVxYCByZXF1aXJlbWVudCwgYGBWZXJzaW9uQ29uZmxpY3RgYCBpcyByYWlzZWQuCiAgICAgICAgSWYgdGhlcmUgaXMgbm8gYWN0aXZlIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIHJlcXVlc3RlZCBwcm9qZWN0LCBgYE5vbmVgYAogICAgICAgIGlzIHJldHVybmVkLgogICAgICAgIE4pBHL/AAAAcswAAAByOwAAAHJvAAAAKQNymgAAAHKfAAAAcp0AAAByGwAAAHIbAAAAchwAAABysgAAAHYCAABzCAAAAAAKDgEQAgoBeg9Xb3JraW5nU2V0LmZpbmRjAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAcxQAAACHAIcBZgJkAWQChAh8AEQAgwFTACkDYRMBAABZaWVsZCBlbnRyeSBwb2ludCBvYmplY3RzIGZyb20gYGdyb3VwYCBtYXRjaGluZyBgbmFtZWAKCiAgICAgICAgSWYgYG5hbWVgIGlzIE5vbmUsIHlpZWxkcyBhbGwgZW50cnkgcG9pbnRzIGluIGBncm91cGAgZnJvbSBhbGwKICAgICAgICBkaXN0cmlidXRpb25zIGluIHRoZSB3b3JraW5nIHNldCwgb3RoZXJ3aXNlIG9ubHkgb25lcyBtYXRjaGluZwogICAgICAgIGJvdGggYGdyb3VwYCBhbmQgYG5hbWVgIGFyZSB5aWVsZGVkIChpbiBkaXN0cmlidXRpb24gb3JkZXIpLgogICAgICAgIGMBAAAAAAAAAAAAAAADAAAABAAAADMAAABzOAAAAHwAXTB9AXwBoACIAKEBoAGhAEQAXRx9AogBZAB1AHMqiAF8AmoCawJyFHwCVgABAHEUcQJkAFMAch0AAAApA3JYAAAA2gZ2YWx1ZXNy5gAAACkD2gIuMHKdAAAAcgIBAACpAnJOAAAAcuYAAAByGwAAAHIcAAAA2gk8Z2VuZXhwcj6NAgAAcwgAAAAEAgIBEgES/XovV29ya2luZ1NldC5pdGVyX2VudHJ5X3BvaW50cy48bG9jYWxzPi48Z2VuZXhwcj5yGwAAAKkDcpoAAAByTgAAAHLmAAAAchsAAAByFQEAAHIcAAAAcloAAACGAgAAcwYAAAAABwwCAv56HFdvcmtpbmdTZXQuaXRlcl9lbnRyeV9wb2ludHNjAwAAAAAAAAAAAAAABQAAAAQAAABDAAAAcz4AAAB0AKABZAGhAWoCfQN8A2QCGQB9BHwDoAOhAAEAfAR8A2QCPAB8AKAEfAGhAWQDGQCgBXwCfAOhAgEAZARTACkFej9Mb2NhdGUgZGlzdHJpYnV0aW9uIGZvciBgcmVxdWlyZXNgIGFuZCBydW4gYHNjcmlwdF9uYW1lYCBzY3JpcHRyDwAAAHIXAAAAcgEAAABOcuEAAAApBXKaAAAA2ghyZXF1aXJlc3LkAAAAcuUAAABy5gAAAHIbAAAAchsAAAByHAAAAHJUAAAAlAIAAHMKAAAAAAIMAQgBCAEIAXoVV29ya2luZ1NldC5ydW5fc2NyaXB0YwEAAAAAAAAAAAAAAAQAAAAFAAAAYwAAAHNMAAAAaQB9AXwAagBEAF08fQJ8AnwAagF2AXIacQp8AGoBfAIZAEQAXSB9A3wDfAF2AXIkZAF8AXwDPAB8AGoCfAMZAFYAAQBxJHEKZAJTACkDerhZaWVsZCBkaXN0cmlidXRpb25zIGZvciBub24tZHVwbGljYXRlIHByb2plY3RzIGluIHRoZSB3b3JraW5nIHNldAoKICAgICAgICBUaGUgeWllbGQgb3JkZXIgaXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBpdGVtcycgcGF0aCBlbnRyaWVzIHdlcmUKICAgICAgICBhZGRlZCB0byB0aGUgd29ya2luZyBzZXQuCiAgICAgICAgcg8AAABOKQNy/QAAAHL+AAAAcv8AAAApBHKaAAAA2gRzZWVu2gRpdGVtcjsAAAByGwAAAHIbAAAAchwAAADaCF9faXRlcl9fnAIAAHMQAAAAAAYEAQoBCgICAg4BCAEIAXoTV29ya2luZ1NldC5fX2l0ZXJfX1RGYwUAAAAAAAAAAAAAAAcAAAAFAAAAQwAAAHOcAAAAfANyFnwBagB8AGoBfAJ8BGQBjQMBAHwCZAJ1AHIkfAFqAn0CfABqA6AEfAJnAKECfQV8AGoDoAR8AWoCZwChAn0GfARzVnwBagV8AGoGdgByVmQCUwB8AXwAagZ8AWoFPAB8AWoFfAV2AXJ4fAWgB3wBagWhAQEAfAFqBXwGdgFyjnwGoAd8AWoFoQEBAHwAoAh8AaEBAQBkAlMAKQNhFwIAAEFkZCBgZGlzdGAgdG8gd29ya2luZyBzZXQsIGFzc29jaWF0ZWQgd2l0aCBgZW50cnlgCgogICAgICAgIElmIGBlbnRyeWAgaXMgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBgYC5sb2NhdGlvbmBgIG9mIGBkaXN0YC4KICAgICAgICBPbiBleGl0IGZyb20gdGhpcyByb3V0aW5lLCBgZW50cnlgIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtpbmcKICAgICAgICBzZXQncyBgYC5lbnRyaWVzYGAgKGlmIGl0IHdhc24ndCBhbHJlYWR5IHByZXNlbnQpLgoKICAgICAgICBgZGlzdGAgaXMgb25seSBhZGRlZCB0byB0aGUgd29ya2luZyBzZXQgaWYgaXQncyBmb3IgYSBwcm9qZWN0IHRoYXQKICAgICAgICBkb2Vzbid0IGFscmVhZHkgaGF2ZSBhIGRpc3RyaWJ1dGlvbiBpbiB0aGUgc2V0LCB1bmxlc3MgYHJlcGxhY2U9VHJ1ZWAuCiAgICAgICAgSWYgaXQncyBhZGRlZCwgYW55IGNhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGggdGhlIGBgc3Vic2NyaWJlKClgYCBtZXRob2QKICAgICAgICB3aWxsIGJlIGNhbGxlZC4KICAgICAgICCpAXLVAAAATikJ2glpbnNlcnRfb25y/QAAANoIbG9jYXRpb25y/gAAAHIQAQAAcjsAAABy/wAAAHLFAAAA2gpfYWRkZWRfbmV3KQdymgAAAHKdAAAAcgIBAADaBmluc2VydHLVAAAA2gRrZXlz2gVrZXlzMnIbAAAAchsAAAByHAAAAHIMAQAArQIAAHMcAAAAAAwEARICCAEGAQ4BEAEQAgQCDAEKAQwBCgEMAXoOV29ya2luZ1NldC5hZGRjBgAAAAAAAAAAAAAAEgAAAAYAAABDAAAAc3gBAAB0AHwBgwFkAWQBZAKFAxkAfQFpAH0GaQB9B2cAfQh0AYMAfQl0AqADdAShAX0KfAGQAXJ0fAGgBWQDoQF9C3wLfAZ2AHJIcS58CaAGfAt8BaECc1ZxLnwHoAd8C2oIoQF9DHwMZAF1AJABcgJ8AGoJoAd8C2oIoQF9DHwMZAF1AHOOfAx8C3YBcvh8BHL4fAB9DXwCZAF1AHK+fAxkAXUAcq50CnwAaguDAX0CbhB0CmcAgwF9AnQMZwCDAX0NfAJqDXwLfA18A3wEZASNBAQAfQx8B3wLagg8AHwMZAF1AHL4fAqgB3wLZAGhAn0OdA58C3wOgwKCAXwIoA98DKEBAQB8DHwLdgGQAXIkfAp8CxkAfQ90EHwMfAuDAqARfA+hAYIBfAygEnwLahOhAWQBZAFkAoUDGQB9EHwBoBR8EKEBAQB8EEQAXSB9EXwKfBEZAKAVfAtqFqEBAQB8C2oTfAl8ETwAkAFxSGQFfAZ8CzwAcS58CFMAKQZhzgQAAExpc3QgYWxsIGRpc3RyaWJ1dGlvbnMgbmVlZGVkIHRvIChyZWN1cnNpdmVseSkgbWVldCBgcmVxdWlyZW1lbnRzYAoKICAgICAgICBgcmVxdWlyZW1lbnRzYCBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgYGBSZXF1aXJlbWVudGBgIG9iamVjdHMuICBgZW52YCwKICAgICAgICBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZS4gIElmCiAgICAgICAgbm90IHN1cHBsaWVkLCBpdCBkZWZhdWx0cyB0byBhbGwgZGlzdHJpYnV0aW9ucyBhdmFpbGFibGUgd2l0aGluIGFueQogICAgICAgIGVudHJ5IG9yIGRpc3RyaWJ1dGlvbiBpbiB0aGUgd29ya2luZyBzZXQuICBgaW5zdGFsbGVyYCwgaWYgc3VwcGxpZWQsCiAgICAgICAgd2lsbCBiZSBpbnZva2VkIHdpdGggZWFjaCByZXF1aXJlbWVudCB0aGF0IGNhbm5vdCBiZSBtZXQgYnkgYW4KICAgICAgICBhbHJlYWR5LWluc3RhbGxlZCBkaXN0cmlidXRpb247IGl0IHNob3VsZCByZXR1cm4gYSBgYERpc3RyaWJ1dGlvbmBgIG9yCiAgICAgICAgYGBOb25lYGAuCgogICAgICAgIFVubGVzcyBgcmVwbGFjZV9jb25mbGljdGluZz1UcnVlYCwgcmFpc2VzIGEgVmVyc2lvbkNvbmZsaWN0IGV4Y2VwdGlvbgogICAgICAgIGlmCiAgICAgICAgYW55IHJlcXVpcmVtZW50cyBhcmUgZm91bmQgb24gdGhlIHBhdGggdGhhdCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUgYnV0CiAgICAgICAgdGhlIHdyb25nIHZlcnNpb24uICBPdGhlcndpc2UsIGlmIGFuIGBpbnN0YWxsZXJgIGlzIHN1cHBsaWVkIGl0IHdpbGwgYmUKICAgICAgICBpbnZva2VkIHRvIG9idGFpbiB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSByZXF1aXJlbWVudCBhbmQgYWN0aXZhdGUKICAgICAgICBpdC4KCiAgICAgICAgYGV4dHJhc2AgaXMgYSBsaXN0IG9mIHRoZSBleHRyYXMgdG8gYmUgdXNlZCB3aXRoIHRoZXNlIHJlcXVpcmVtZW50cy4KICAgICAgICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGV4dHJhIHJlcXVpcmVtZW50cyBtYXkgbG9vayBsaWtlIGBteV9yZXE7CiAgICAgICAgZXh0cmEgPSAibXlfZXh0cmEiYCwgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGJlIGludGVycHJldGVkIGFzIGEgcHVyZWx5CiAgICAgICAgb3B0aW9uYWwgcmVxdWlyZW1lbnQuICBJbnN0ZWFkLCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gYXNzZXJ0IHRoYXQgdGhlc2UKICAgICAgICByZXF1aXJlbWVudHMgYXJlIHRydWx5IHJlcXVpcmVkLgogICAgICAgIE5yrAAAAHIBAAAAKQHaE3JlcGxhY2VfY29uZmxpY3RpbmdUKRfaBGxpc3TaCl9SZXFFeHRyYXPaC2NvbGxlY3Rpb25z2gtkZWZhdWx0ZGljdNoDc2V02gNwb3DaDG1hcmtlcnNfcGFzc3LMAAAAcjsAAABy/wAAAHJoAAAAcv0AAAByaQAAANoKYmVzdF9tYXRjaHJwAAAAcsUAAABybwAAAHKnAAAAchgBAADaBmV4dHJhc9oGZXh0ZW5kcgwBAADaDHByb2plY3RfbmFtZSkScpoAAADaDHJlcXVpcmVtZW50c9oDZW522glpbnN0YWxsZXJyIwEAAHIsAQAA2glwcm9jZXNzZWTaBGJlc3TaC3RvX2FjdGl2YXRl2gpyZXFfZXh0cmFzcqYAAABynwAAAHKdAAAAcgkBAAByqQAAANoNZGVwZW5kZW50X3JlcdoQbmV3X3JlcXVpcmVtZW50c9oPbmV3X3JlcXVpcmVtZW50chsAAAByGwAAAHIcAAAAcgsBAADLAgAAc1AAAAAAGxICBAIEAQQCBgQKAgYCCgEIAgICDAECAgwBCgIOARQBBAEIAQgBDAUIAQgBBAEGAQL+EAQIAQwBCgEKAQoCCAEQAxYBCgMIARABDgIKA3oSV29ya2luZ1NldC5yZXNvbHZlYwUAAAAAAAAAAAAAAA8AAAAMAAAAQwAAAHMUAQAAdAB8AYMBfQV8BaABoQABAGkAfQZpAH0HfAJkAXUAcjR0AnwAagODAX0IfAh8ATcAfQhuCHwCfAEXAH0IfACgBGcAoQF9CXQAdAV8CWoGfACDAoMBAQB8BUQAXaB9CnwBfAoZAEQAXZJ9C3wLoAehAGcBfQx6EnwJoAh8DHwIfAOhA30NVwBuTAQAdAl50gEAfQ4BAHo0fA58BnwLPAB8BHKwVwBZAGQBfQ5+DnFmbg5XAFkAZAF9Dn4OAQBxWlcAWQBkAX0Ofg5xZmQBfQ5+DjAAMAB0AHQFfAlqBnwNgwKDAQEAfAegCnQLoAx8DaEBoQEBAAEAcVpxZnFadAB8B4MBfQd8B6ABoQABAHwHfAZmAlMAKQJhcwYAAEZpbmQgYWxsIGFjdGl2YXRhYmxlIGRpc3RyaWJ1dGlvbnMgaW4gYHBsdWdpbl9lbnZgCgogICAgICAgIEV4YW1wbGUgdXNhZ2U6OgoKICAgICAgICAgICAgZGlzdHJpYnV0aW9ucywgZXJyb3JzID0gd29ya2luZ19zZXQuZmluZF9wbHVnaW5zKAogICAgICAgICAgICAgICAgRW52aXJvbm1lbnQocGx1Z2luX2Rpcmxpc3QpCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBhZGQgcGx1Z2lucytsaWJzIHRvIHN5cy5wYXRoCiAgICAgICAgICAgIG1hcCh3b3JraW5nX3NldC5hZGQsIGRpc3RyaWJ1dGlvbnMpCiAgICAgICAgICAgICMgZGlzcGxheSBlcnJvcnMKICAgICAgICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBsb2FkJywgZXJyb3JzKQoKICAgICAgICBUaGUgYHBsdWdpbl9lbnZgIHNob3VsZCBiZSBhbiBgYEVudmlyb25tZW50YGAgaW5zdGFuY2UgdGhhdCBjb250YWlucwogICAgICAgIG9ubHkgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBpbiB0aGUgcHJvamVjdCdzICJwbHVnaW4gZGlyZWN0b3J5IiBvcgogICAgICAgIGRpcmVjdG9yaWVzLiBUaGUgYGZ1bGxfZW52YCwgaWYgc3VwcGxpZWQsIHNob3VsZCBiZSBhbiBgYEVudmlyb25tZW50YGAKICAgICAgICBjb250YWlucyBhbGwgY3VycmVudGx5LWF2YWlsYWJsZSBkaXN0cmlidXRpb25zLiAgSWYgYGZ1bGxfZW52YCBpcyBub3QKICAgICAgICBzdXBwbGllZCwgb25lIGlzIGNyZWF0ZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBgYFdvcmtpbmdTZXRgYCB0aGlzCiAgICAgICAgbWV0aG9kIGlzIGNhbGxlZCBvbiwgd2hpY2ggd2lsbCB0eXBpY2FsbHkgbWVhbiB0aGF0IGV2ZXJ5IGRpcmVjdG9yeSBvbgogICAgICAgIGBgc3lzLnBhdGhgYCB3aWxsIGJlIHNjYW5uZWQgZm9yIGRpc3RyaWJ1dGlvbnMuCgogICAgICAgIGBpbnN0YWxsZXJgIGlzIGEgc3RhbmRhcmQgaW5zdGFsbGVyIGNhbGxiYWNrIGFzIHVzZWQgYnkgdGhlCiAgICAgICAgYGByZXNvbHZlKClgYCBtZXRob2QuIFRoZSBgZmFsbGJhY2tgIGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgd2Ugc2hvdWxkCiAgICAgICAgYXR0ZW1wdCB0byByZXNvbHZlIG9sZGVyIHZlcnNpb25zIG9mIGEgcGx1Z2luIGlmIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgIGNhbm5vdCBiZSByZXNvbHZlZC4KCiAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIDItdHVwbGU6IChgZGlzdHJpYnV0aW9uc2AsIGBlcnJvcl9pbmZvYCksIHdoZXJlCiAgICAgICAgYGRpc3RyaWJ1dGlvbnNgIGlzIGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9ucyBmb3VuZCBpbiBgcGx1Z2luX2VudmAKICAgICAgICB0aGF0IHdlcmUgbG9hZGFibGUsIGFsb25nIHdpdGggYW55IG90aGVyIGRpc3RyaWJ1dGlvbnMgdGhhdCBhcmUgbmVlZGVkCiAgICAgICAgdG8gcmVzb2x2ZSB0aGVpciBkZXBlbmRlbmNpZXMuICBgZXJyb3JfaW5mb2AgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcKICAgICAgICB1bmxvYWRhYmxlIHBsdWdpbiBkaXN0cmlidXRpb25zIHRvIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZQogICAgICAgIGVycm9yIHRoYXQgb2NjdXJyZWQuIFVzdWFsbHkgdGhpcyB3aWxsIGJlIGEgYGBEaXN0cmlidXRpb25Ob3RGb3VuZGBgIG9yCiAgICAgICAgYGBWZXJzaW9uQ29uZmxpY3RgYCBpbnN0YW5jZS4KICAgICAgICBOKQ1yJAEAANoEc29ydHJoAAAAcv0AAABylwAAAHIGAAAAcgwBAADaDmFzX3JlcXVpcmVtZW50cgsBAABybgAAAHIlAAAAcicAAAByKAAAACkPcpoAAADaCnBsdWdpbl9lbnbaCGZ1bGxfZW52cjEBAADaCGZhbGxiYWNr2g9wbHVn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ICAgIHNlcXVlbmNlIG9mIHBhdGggbmFtZSBwYXJ0cyAidW5kZXIiIHRoZSBlZ2cncyBleHRyYWN0aW9uIGxvY2F0aW9uLgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgcmVzb3VyY2UgcHJvdmlkZXJzIHRoYXQgbmVlZCB0bwogICAgICAgIG9idGFpbiBhbiBleHRyYWN0aW9uIGxvY2F0aW9uLCBhbmQgb25seSBmb3IgbmFtZXMgdGhleSBpbnRlbmQgdG8KICAgICAgICBleHRyYWN0LCBhcyBpdCB0cmFja3MgdGhlIGdlbmVyYXRlZCBuYW1lcyBmb3IgcG9zc2libGUgY2xlYW51cCBsYXRlci4KICAgICAgICB6BC10bXByDwAAACkKcnABAAByZwAAAHLAAAAAcsEAAAByTAAAANoYX2J5cGFzc19lbnN1cmVfZGlyZWN0b3J52glFeGNlcHRpb25yeQEAANocX3dhcm5fdW5zYWZlX2V4dHJhY3Rpb25fcGF0aHJsAQAAKQVymgAAANoMYXJjaGl2ZV9uYW1l2gVuYW1lc9oMZXh0cmFjdF9wYXRo2gt0YXJnZXRfcGF0aHIbAAAAchsAAAByHAAAANoOZ2V0X2NhY2hlX3BhdGiqBAAAcxIAAAAADQwBGgECAQwBDAEOAgoCCgF6HlJlc291cmNlTWFuYWdlci5nZXRfY2FjaGVfcGF0aGMBAAAAAAAAAAAAAAADAAAABAAAAEMAAABzVgAAAHQAagFkAWsCch58AKACdABqA2QCGQChAXMeZANTAHQAoAR8AKEBagV9AXwBdARqBkAAcz58AXQEagdAAHJSZAR8ABYAfQJ0CKAJfAJ0CqECAQBkA1MAKQVhTgEAAAogICAgICAgIElmIHRoZSBkZWZhdWx0IGV4dHJhY3Rpb24gcGF0aCBpcyBvdmVycmlkZGVuIGFuZCBzZXQgdG8gYW4gaW5zZWN1cmUKICAgICAgICBsb2NhdGlvbiwgc3VjaCBhcyAvdG1wLCBpdCBvcGVucyB1cCBhbiBvcHBvcnR1bml0eSBmb3IgYW4gYXR0YWNrZXIgdG8KICAgICAgICByZXBsYWNlIGFuIGV4dHJhY3RlZCBmaWxlIHdpdGggYW4gdW5hdXRob3JpemVkIHBheWxvYWQuIFdhcm4gdGhlIHVzZXIKICAgICAgICBpZiBhIGtub3duIGluc2VjdXJlIGxvY2F0aW9uIGlzIHVzZWQuCgogICAgICAgIFNlZSBEaXN0cmlidXRlICMzNzUgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICDaAm502gZ3aW5kaXJOesslcyBpcyB3cml0YWJsZSBieSBncm91cC9vdGhlcnMgYW5kIHZ1bG5lcmFibGUgdG8gYXR0YWNrIHdoZW4gdXNlZCB3aXRoIGdldF9yZXNvdXJjZV9maWxlbmFtZS4gQ29uc2lkZXIgYSBtb3JlIHNlY3VyZSBsb2NhdGlvbiAoc2V0IHdpdGggLnNldF9leHRyYWN0aW9uX3BhdGggb3IgdGhlIFBZVEhPTl9FR0dfQ0FDSEUgZW52aXJvbm1lbnQgdmFyaWFibGUpLikLcsAAAABy5gAAAHLTAAAA2gdlbnZpcm9u2gRzdGF02gdzdF9tb2Rl2gdTX0lXT1RI2gdTX0lXR1JQ2gh3YXJuaW5nc9oEd2FybtoLVXNlcldhcm5pbmcpA3LBAAAA2gRtb2Rl2gNtc2dyGwAAAHIbAAAAchwAAAByfAEAAMMEAABzEgAAAAAKGgQEAQwBFAICBAL8Av8CB3osUmVzb3VyY2VNYW5hZ2VyLl93YXJuX3Vuc2FmZV9leHRyYWN0aW9uX3BhdGhjAwAAAAAAAAAAAAAABAAAAAQAAABDAAAAcy4AAAB0AGoBZAFrAnIqdACgAnwBoQFqA2QCQgBkA0AAfQN0AKAEfAF8A6ECAQBkBFMAKQVhNAIAAFBlcmZvcm0gYW55IHBsYXRmb3JtLXNwZWNpZmljIHBvc3Rwcm9jZXNzaW5nIG9mIGB0ZW1wbmFtZWAKCiAgICAgICAgVGhpcyBpcyB3aGVyZSBNYWMgaGVhZGVyIHJld3JpdGVzIHNob3VsZCBiZSBkb25lOyBvdGhlciBwbGF0Zm9ybXMgZG9uJ3QKICAgICAgICBoYXZlIGFueXRoaW5nIHNwZWNpYWwgdGhleSBzaG91bGQgZG8uCgogICAgICAgIFJlc291cmNlIHByb3ZpZGVycyBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBPTkxZIGFmdGVyIHN1Y2Nlc3NmdWxseQogICAgICAgIGV4dHJhY3RpbmcgYSBjb21wcmVzc2VkIHJlc291cmNlLiAgVGhleSBtdXN0IE5PVCBjYWxsIGl0IG9uIHJlc291cmNlcwogICAgICAgIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGZpbGVzeXN0ZW0uCgogICAgICAgIGB0ZW1wbmFtZWAgaXMgdGhlIGN1cnJlbnQgKHRlbXBvcmFyeSkgbmFtZSBvZiB0aGUgZmlsZSwgYW5kIGBmaWxlbmFtZWAKICAgICAgICBpcyB0aGUgbmFtZSBpdCB3aWxsIGJlIHJlbmFtZWQgdG8gYnkgdGhlIGNhbGxlciBhZnRlciB0aGlzIHJvdXRpbmUKICAgICAgICByZXR1cm5zLgogICAgICAgINoFcG9zaXhpbQEAAGn/DwAATikFcsAAAABy5gAAAHKFAQAAcoYBAADaBWNobW9kKQRymgAAANoIdGVtcG5hbWXaCGZpbGVuYW1lcowBAAByGwAAAHIbAAAAchwAAADaC3Bvc3Rwcm9jZXNz3QQAAHMGAAAAAA8KAhQBehtSZXNvdXJjZU1hbmFnZXIucG9zdHByb2Nlc3NjAgAAAAAAAAAAAAAAAgAAAAIAAABDAAAAcxgAAAB8AGoAcg50AWQBgwGCAXwBfABfAmQCUwApA2HSAwAAU2V0IHRoZSBiYXNlIHBhdGggd2hlcmUgcmVzb3VyY2VzIHdpbGwgYmUgZXh0cmFjdGVkIHRvLCBpZiBuZWVkZWQuCgogICAgICAgIElmIHlvdSBkbyBub3QgY2FsbCB0aGlzIHJvdXRpbmUgYmVmb3JlIGFueSBleHRyYWN0aW9ucyB0YWtlIHBsYWNlLCB0aGUKICAgICAgICBwYXRoIGRlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGBnZXRfZGVmYXVsdF9jYWNoZSgpYGAuICAoV2hpY2gKICAgICAgICBpcyBiYXNlZCBvbiB0aGUgYGBQWVRIT05fRUdHX0NBQ0hFYGAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHdpdGggdmFyaW91cwogICAgICAgIHBsYXRmb3JtLXNwZWNpZmljIGZhbGxiYWNrcy4gIFNlZSB0aGF0IHJvdXRpbmUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlCiAgICAgICAgZGV0YWlscy4pCgogICAgICAgIFJlc291cmNlcyBhcmUgZXh0cmFjdGVkIHRvIHN1YmRpcmVjdG9yaWVzIG9mIHRoaXMgcGF0aCBiYXNlZCB1cG9uCiAgICAgICAgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIGBgSVJlc291cmNlUHJvdmlkZXJgYC4gIFlvdSBtYXkgc2V0IHRoaXMgdG8gYQogICAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnksIGJ1dCB0aGVuIHlvdSBtdXN0IGNhbGwgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgdG8KICAgICAgICBkZWxldGUgdGhlIGV4dHJhY3RlZCBmaWxlcyB3aGVuIGRvbmUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgIHdpbGwgYmUgYWJsZSB0byByZW1vdmUgYWxsIGV4dHJhY3RlZCBmaWxlcy4KCiAgICAgICAgKE5vdGU6IHlvdSBtYXkgbm90IGNoYW5nZSB0aGUgZXh0cmFjdGlvbiBwYXRoIGZvciBhIGdpdmVuIHJlc291cmNlCiAgICAgICAgbWFuYWdlciBvbmNlIHJlc291cmNlcyBoYXZlIGJlZW4gZXh0cmFjdGVkLCB1bmxlc3MgeW91IGZpcnN0IGNhbGwKICAgICAgICBgYGNsZWFudXBfcmVzb3VyY2VzKClgYC4pCiAgICAgICAgejVDYW4ndCBjaGFuZ2UgZXh0cmFjdGlvbiBwYXRoLCBmaWxlcyBhbHJlYWR5IGV4dHJhY3RlZE4pA3JsAQAAck8AAABycAEAAKkCcpoAAABywQAAAHIbAAAAchsAAAByHAAAAHJlAAAA8QQAAHMKAAAAABMGAQIBAv8EBHojUmVzb3VyY2VNYW5hZ2VyLnNldF9leHRyYWN0aW9uX3BhdGhGYwIAAAAAAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCYUICAAAKICAgICAgICBEZWxldGUgYWxsIGV4dHJhY3RlZCByZXNvdXJjZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIHJldHVybmluZyBhIGxpc3QKICAgICAgICBvZiB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVz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IFRydWUKICAgICAgICA+Pj4gd2FybmVkLmNsZWFyKCkKICAgICAgICA+Pj4gdnJwKCcvZm9vL2Jhci50eHQnKQogICAgICAgID4+PiBib29sKHdhcm5lZCkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IHZycCgnZm9vLy4uLy4uL2Jhci50eHQnKQogICAgICAgID4+PiBib29sKHdhcm5lZCkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IHdhcm5lZC5jbGVhcigpCiAgICAgICAgPj4+IHZycCgnZm9vL2YuLi9iYXIudHh0JykKICAgICAgICA+Pj4gYm9vbCh3YXJuZWQpCiAgICAgICAgRmFsc2UKCiAgICAgICAgV2luZG93cyBwYXRoIHNlcGFyYXRvcnMgYXJlIHN0cmFpZ2h0LXVwIGRpc2FsbG93ZWQuCiAgICAgICAgPj4+IHZycChyJ1xmb28vYmFyLnR4dCcpCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIC4uLgogICAgICAgIFZhbHVlRXJyb3I6IFVzZSBvZiAuLiBvciBhYnNvbHV0ZSBwYXRoIGluIGEgcmVzb3VyY2UgcGF0aCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgPj4+IHZycChyJ0M6XGZvby9iYXIudHh0JykKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgLi4uCiAgICAgICAgVmFsdWVFcnJvcjogVXNlIG9mIC4uIG9yIGFic29sdXRlIHBhdGggaW4gYSByZXNvdXJjZSBwYXRoIGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICBCbGFuayB2YWx1ZXMgYXJlIGFsbG93ZWQKCiAgICAgICAgPj4+IHZycCgnJykKICAgICAgICA+Pj4gYm9vbCh3YXJuZWQpCiAgICAgICAgRmFsc2UKCiAgICAgICAgTm9uLXN0cmluZyB2YWx1ZXMgYXJlIG5vdC4KCiAgICAgICAgPj4+IHZycChOb25lKQogICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAuLi4KICAgICAgICBB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X3dhcm5fb25fcmVwbGFjZW1lbnRjAgAAAAAAAAAAAAAAAgAAAAQAAABDAAAAcw4AAAB0AHwAoAF8AaEBgwFTAHIdAAAAcroBAABysAEAAHIbAAAAchsAAAByHAAAAHLxAAAAdgcAAHMCAAAAAAF6H0ZpbGVNZXRhZGF0YS5nZXRfbWV0YWRhdGFfbGluZXNOKQpyFwAAAHIYAAAAchkAAAByGgAAAHIDAQAAcrEBAABy7wAAAHLwAAAAcjYCAABy8QAAAHIbAAAAchsAAAByGwAAAHIcAAAAcocAAABQBwAAcw4AAAAIAQQLCAMIAwgDCAkICHKHAAAAYwAAAAAAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQVyiAAAAGFzAgAATWV0YWRhdGEgcHJvdmlkZXIgZm9yIGVnZyBkaXJlY3RvcmllcwoKICAgIFVzYWdlOjoKCiAgICAgICAgIyBEZXZlbG9wbWVudCBlZ2dzOgoKICAgICAgICBlZ2dfaW5mbyA9ICIvcGF0aC90by9QYWNrYWdlTmFtZS5lZ2ctaW5mbyIKICAgICAgICBiYXNlX2RpciA9IG9zLnBhdGguZGlybmFtZShlZ2dfaW5mbykKICAgICAgICBtZXRhZGF0YSA9IFBhdGhNZXRhZGF0YShiYXNlX2RpciwgZWdnX2luZm8pCiAgICAgICAgZGlzdF9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGVnZ19pbmZvKSlbMF0KICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKGJhc2VkaXIsIHByb2plY3RfbmFtZT1kaXN0X25hbWUsIG1ldGFkYXRhPW1ldGFkYXRhKQoKICAgICAgICAjIFVucGFja2VkIGVnZyBkaXJlY3RvcmllczoKCiAgICAgICAgZWdnX3BhdGggPSAiL3BhdGgvdG8vUGFja2FnZU5hbWUtdmVyLXB5dmVyLWV0Yy5lZ2ciCiAgICAgICAgbWV0YWRhdGEgPSBQYXRoTWV0YWRhdGEoZWdnX3BhdGgsIG9zLnBhdGguam9pbihlZ2dfcGF0aCwnRUdHLUlORk8nKSkKICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uLmZyb21f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aWxlRmluZGVyqQHaE19uYW1lc3BhY2VfaGFuZGxlcnMpAdoTX25hbWVzcGFjZV9wYWNrYWdlc2MCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzDAAAAHwBdAB8ADwAZAFTACkCYZoCAABSZWdpc3RlciBgbmFtZXNwYWNlX2hhbmRsZXJgIHRvIGRlY2xhcmUgbmFtZXNwYWNlIHBhY2thZ2VzCgogICAgYGltcG9ydGVyX3R5cGVgIGlzIHRoZSB0eXBlIG9yIGNsYXNzIG9mIGEgUEVQIDMwMiAiSW1wb3J0ZXIiIChzeXMucGF0aCBpdGVtCiAgICBoYW5kbGVyKSwgYW5kIGBuYW1lc3BhY2VfaGFuZGxlcmAgaXMgYSBjYWxsYWJsZSBsaWtlIHRoaXM6OgoKICAgICAgICBkZWYgbmFtZXNwYWNlX2hhbmRsZXIoaW1wb3J0ZXIsIHBhdGhfZW50cnksIG1vZHVsZU5hbWUsIG1vZHVsZSk6CiAgICAgICAgICAgICMgcmV0dXJuIGEgcGF0aF9lbnRyeSB0byB1c2UgZm9yIGNoaWxkIHBhY2thZ2VzCgogICAgTmFtZXNwYWNlIGhhbmRsZXJzIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgaW1wb3J0ZXIgb2JqZWN0IGhhcyBhbHJlYWR5CiAgICBhZ3JlZWQgdGhhdCBpdCBjYW4gaGFuZGxlIHRoZSByZWxldmFudCBwYXRoIGl0ZW0sIGFuZCB0aGV5IHNob3VsZCBvbmx5CiAgICByZXR1cm4gYSBzdWJwYXRoIGlmIHRoZSBtb2R1bGUgX19wYXRoX18gZG9lcyBub3QgYWxyZWFkeSBjb250YWluIGFuCiAgICBlcXVpdmFsZW50IHN1YnBhdGguICBGb3IgYW4gZXhhbXBsZSBuYW1lc3BhY2UgaGFuZGxlciwgc2VlCiAgICBgYHBrZ19yZXNvdXJjZXMuZmlsZV9uc19oYW5kbGVyYGAuCiAgICBOcn8CAAApAnI+AgAA2hFuYW1lc3BhY2VfaGFuZGxlcnIbAAAAchsAAAByHAAAAHKRAAAAfQgAAHMCAAAAAA9ykQAAAGMCAAAAAAAAAAAAAAAIAAAACAAAAEMAAABz8gAAAHQAfAGDAX0CfAJkAXUAchRkAVMAdAGgAqEAjyQBAHQB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AAAEEAwCCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBDAICAQwBDgIOAgIBCAEOAQoCDAEUAwwBAgEUAQgBDgIKAgwBEAICAQwCCgEOAQoCDAEMAQwBCAEIAQgBCAMEAx4BCAIIAgQBBAQEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQDEAcIBwQDCAUICAgHCAQIBQgECAQMAwgYCDIQBxAgEA0QGxAEBAIMAQQBBAEEAQQBBAMICggNDBAIBAgYCgEKAgQDCC4ICgQDCAsIBQoFCAUOFxAcDn8AfwB/AAUQFA5/ABQEAxAQDn8ANQgMCAgIDAgJCAgIDgoPDn8AQQoDEBYQGwgDEBEGAxAbEBQQfwAtDAMQKhAZEA8MAwgKCgcKGwwDCgQKAwgaCiAIEQ4RCBUIDwgLCA4MAgwBDAIMAQwDCBIIHwgiCCIKDAgNDAEMAgwBDAMIBAoDCAUICwwICAcICggICA4MAQQBAgkK9gYODn8ABQgJCA0OfwB/AH8AJxATEDMCAQIBAv0GBwgNEAUIFhQ3CAoICAgGCA0IGggPEAQIBQIBEAsCAQom