tx · BUdmyBspgDvHaLPCkkdFP7kNRFPTxwQvkoSuDJpuRnmR

3N5n8D8HCwSdnb9XqZzcPyp7hnNPex3kKEy:  -0.02800000 Waves

2023.02.21 15:46 [2459428] smart account 3N5n8D8HCwSdnb9XqZzcPyp7hnNPex3kKEy > SELF 0.00000000 Waves

{ "type": 13, "id": "BUdmyBspgDvHaLPCkkdFP7kNRFPTxwQvkoSuDJpuRnmR", "fee": 2800000, "feeAssetId": null, "timestamp": 1676983623908, "version": 1, "sender": "3N5n8D8HCwSdnb9XqZzcPyp7hnNPex3kKEy", "senderPublicKey": "AZkFJt2vhEWWzfi1REZpXz7qVfLKdvzjLXt1BY3Y9uxi", "proofs": [ "NZ9YTY9uwmoHqnig4ygchCj7afKes6jdQ5XuSmck7EjQ858kUGXAsZaKix5SksMpFp7Jqgi1YC5LpWjNxj6skSj" ], "script": "base64:BgJcCAISAwoBCBIAEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSBAoCCAQSABIDCgEBEgASBAoCCAgSBAoCCAgSBAoCCAgyAAlzZXBhcmF0b3ICAl9fAA5wb29sV2VpZ2h0TXVsdACAwtcvAA9tYXhEZXB0aERlZmF1bHQACgAWZmluYWxpemF0aW9uU3RhZ2VUb3RhbAAAABdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcwABAA5rZXlFcG9jaExlbmd0aAkAuQkCCQDMCAICAiVzCQDMCAICC2Vwb2NoTGVuZ3RoBQNuaWwFCXNlcGFyYXRvcgAPa2V5Q3VycmVudEVwb2NoCQC5CQIJAMwIAgICJXMJAMwIAgIMY3VycmVudEVwb2NoBQNuaWwFCXNlcGFyYXRvcgALa2V5TWF4RGVwdGgJALkJAgkAzAgCAgIlcwkAzAgCAghtYXhEZXB0aAUDbmlsBQlzZXBhcmF0b3IAImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAh92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgASa2V5RmFjdG9yeUNvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgIPZmFjdG9yeUNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgATa2V5Qm9vc3RpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABJrZXlTdGFraW5nQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAg9zdGFraW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABRrZXlGaW5hbGl6YXRpb25TdGFnZQkAuQkCCQDMCAICAiVzCQDMCAICEWZpbmFsaXphdGlvblN0YWdlBQNuaWwFCXNlcGFyYXRvcgALa2V5TmV4dFBvb2wJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0UG9vbAUDbmlsBQlzZXBhcmF0b3IAC2tleU5leHRVc2VyCQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFVzZXIFA25pbAUJc2VwYXJhdG9yAA5rZXlTdGFydEhlaWdodAkAuQkCCQDMCAICAiVzCQDMCAICC3N0YXJ0SGVpZ2h0BQNuaWwFCXNlcGFyYXRvcgARa2V5Q3VycmVudEVwb2NoVWkJALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQlzZXBhcmF0b3IAEGtleVN0YXJ0SGVpZ2h0VWkJALkJAgkAzAgCAgIlcwkAzAgCAg1zdGFydEhlaWdodFVpBQNuaWwFCXNlcGFyYXRvcgAda2V5RmluYWxpemF0aW9uU2hvdWxkQmVGb3JjZWQJALkJAgkAzAgCAgIlcwkAzAgCAgVmb3JjZQUDbmlsBQlzZXBhcmF0b3IBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFZXBvY2gJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQxrZXlGaW5hbGl6ZWQBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAglmaW5hbGl6ZWQJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBCWtleUluTGlzdAEEcG9vbAQLJHQwMTU0MTE1ODEFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAxNTQxMTU4MQJfMQQMcHJpY2VBc3NldElkCAULJHQwMTU0MTE1ODECXzIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGaW5MaXN0CQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEHa2V5VXNlZAIHYWRkcmVzcwVlcG9jaAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgR1c2VkCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEHa2V5Vm90ZQMEcG9vbAdhZGRyZXNzBWVwb2NoBAskdDAxODYxMTkwMQUEcG9vbAQNYW1vdW50QXNzZXRJZAgFCyR0MDE4NjExOTAxAl8xBAxwcmljZUFzc2V0SWQIBQskdDAxODYxMTkwMQJfMgkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBD2tleVZvdGluZ1Jlc3VsdAIEcG9vbAVlcG9jaAQLJHQwMjA4OTIxMjkFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAyMDg5MjEyOQJfMQQMcHJpY2VBc3NldElkCAULJHQwMjA4OTIxMjkCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgx2b3RpbmdSZXN1bHQJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBDGtleVBvb2xTaGFyZQIEcG9vbAVlcG9jaAQLJHQwMjMwMDIzNDAFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAyMzAwMjM0MAJfMQQMcHJpY2VBc3NldElkCAULJHQwMjMwMDIzNDACXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAglwb29sU2hhcmUJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBDWtleVRvdGFsVm90ZXMBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgp0b3RhbFZvdGVzCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ5nZXRWYWx1ZU9yRmFpbAMHYWRkcmVzcwNrZXkEdHlwZQQFZXJyb3IJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIACQETdmFsdWVPckVycm9yTWVzc2FnZQIEByRtYXRjaDAFBHR5cGUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANzdHIFByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQkAAgECEmludmFsaWQgZW50cnkgdHlwZQUFZXJyb3IBDGdldFN0ck9yRmFpbAIHYWRkcmVzcwNrZXkKAAFACQEOZ2V0VmFsdWVPckZhaWwDBQdhZGRyZXNzBQNrZXkCAAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcBDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkKAAFACQEOZ2V0VmFsdWVPckZhaWwDBQdhZGRyZXNzBQNrZXkAAAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBDHBvb2xUb1N0cmluZwEEcG9vbAkArAICCQCsAgIIBQRwb29sAl8xBQlzZXBhcmF0b3IIBQRwb29sAl8yAQxzdHJpbmdUb1Bvb2wBA3N0cgQFcGFydHMJALUJAgUDc3RyBQlzZXBhcmF0b3IDCQAAAgkAkAMBBQVwYXJ0cwACCQCUCgIJAJEDAgUFcGFydHMAAAkAkQMCBQVwYXJ0cwABCQACAQITaW52YWxpZCBwb29sIHN0cmluZwEWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cwINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQKAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQxiYXNlQXNzZXRTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUMYmFzZUFzc2V0U3RyCgEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18JAKQDAQUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0CgEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAQPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5RmFjdG9yeUNvbnRyYWN0BBVhbW91bnRBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUNYW1vdW50QXNzZXRJZAQUcHJpY2VBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUMcHJpY2VBc3NldElkBBNwb29sQ29udHJhY3RBZGRyZXNzCQEMZ2V0U3RyT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRVhbW91bnRBc3NldEludGVybmFsSWQFFHByaWNlQXNzZXRJbnRlcm5hbElkBAlscEFzc2V0SWQJAQxnZXRTdHJPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwUJbHBBc3NldElkARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwBBHBvb2wECyR0MDQ2MzM0NjczBQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwNDYzMzQ2NzMCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDQ2MzM0NjczAl8yBA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgANcG9vbHNMaXN0TmFtZQIFcG9vbHMBEGdldFZvdGVzTGlzdE5hbWUBBHBvb2wECyR0MDQ5ODM1MDIzBQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwNDk4MzUwMjMCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDQ5ODM1MDIzAl8yCQC5CQIJAMwIAgIFdm90ZXMJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUJc2VwYXJhdG9yAQtrZXlMaXN0SGVhZAEIbGlzdE5hbWUEBG1ldGEDCQAAAgUIbGlzdE5hbWUFDXBvb2xzTGlzdE5hbWUCBCVzJXMCCCVzJXMlcyVzCQC5CQIJAMwIAgUEbWV0YQkAzAgCBQhsaXN0TmFtZQkAzAgCAgRoZWFkBQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdFNpemUBCGxpc3ROYW1lBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgIEc2l6ZQUDbmlsBQlzZXBhcmF0b3IBC2tleUxpc3RQcmV2AghsaXN0TmFtZQJpZAQEbWV0YQMJAAACBQhsaXN0TmFtZQUNcG9vbHNMaXN0TmFtZQIIJXMlcyVzJXMCCiVzJXMlcyVzJXMJALkJAgkAzAgCBQRtZXRhCQDMCAIFCGxpc3ROYW1lCQDMCAIFAmlkCQDMCAICBHByZXYFA25pbAUJc2VwYXJhdG9yAQtrZXlMaXN0TmV4dAIIbGlzdE5hbWUCaWQEBG1ldGEDCQAAAgUIbGlzdE5hbWUFDXBvb2xzTGlzdE5hbWUCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUEbWV0YQkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRuZXh0BQNuaWwFCXNlcGFyYXRvcgEMY29udGFpbnNOb2RlAghsaXN0TmFtZQJpZAQKaGVhZE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQKcHJldk9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQECm5leHRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUFAmlkAwMJAAACBQJpZAkBC3ZhbHVlT3JFbHNlAgUKaGVhZE9yVW5pdAIABgkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAYJAQIhPQIFCm5leHRPclVuaXQFBHVuaXQBEWluc2VydE5vZGVBY3Rpb25zAghsaXN0TmFtZQJpZAQKaGVhZE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQIbGlzdFNpemUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUAAAQJY2hlY2tOb2RlAwkBASEBCQEMY29udGFpbnNOb2RlAgUIbGlzdE5hbWUFAmlkBgkAAgECC05vZGUgZXhpc3RzAwkAAAIFCWNoZWNrTm9kZQUJY2hlY2tOb2RlCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGQCBQhsaXN0U2l6ZQABBQNuaWwDCQECIT0CBQpoZWFkT3JVbml0BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkBBXZhbHVlAQUKaGVhZE9yVW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKaGVhZE9yVW5pdAUCaWQFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBQJpZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFkZWxldGVOb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQkAZQIFCGxpc3RTaXplAAEFA25pbAMDCQECIT0CBQpwcmV2T3JVbml0BQR1bml0CQECIT0CBQpuZXh0T3JVbml0BQR1bml0BwkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQkBBXZhbHVlAQUKcHJldk9yVW5pdAkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkBBXZhbHVlAQUKcHJldk9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUFAmlkBQNuaWwDCQECIT0CBQpuZXh0T3JVbml0BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lCQEFdmFsdWUBBQpuZXh0T3JVbml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAUDbmlsAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQFA25pbAMJAAACBQJpZAkBC3ZhbHVlT3JFbHNlAgUKaGVhZE9yVW5pdAIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUIbGlzdE5hbWUCAS4FAmlkARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5ARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQhtdXN0VGhpcwEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0CQEIbXVzdFRoaXMBBQFpCQACAQILTWF0Y2ggZXJyb3IRAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAILdXNlckFkZHJlc3MMdGFyZ2V0SGVpZ2h0BBdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRNrZXlCb29zdGluZ0NvbnRyYWN0AiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAJQKAgUDbmlsCgABQAkA/AcEBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUMdGFyZ2V0SGVpZ2h0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBaQELY29uc3RydWN0b3IFD2ZhY3RvcnlDb250cmFjdB92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0EGJvb3N0aW5nQ29udHJhY3QPc3Rha2luZ0NvbnRyYWN0C2Vwb2NoTGVuZ3RoBAZjaGVja3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkBAiE9AgkApggBBQ9mYWN0b3J5Q29udHJhY3QFBHVuaXQGAiBpbnZhbGlkIGZhY3RvcnkgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBR92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQR1bml0BgIyaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY2FuZGlkYXRlIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUQYm9vc3RpbmdDb250cmFjdAUEdW5pdAYCIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQ9zdGFraW5nQ29udHJhY3QFBHVuaXQGAiBpbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkAZgIFC2Vwb2NoTGVuZ3RoAAAGCQACAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFEmtleUZhY3RvcnlDb250cmFjdAUPZmFjdG9yeUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUTa2V5Qm9vc3RpbmdDb250cmFjdAUQYm9vc3RpbmdDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBRJrZXlTdGFraW5nQ29udHJhY3QFD3N0YWtpbmdDb250cmFjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa2V5RXBvY2hMZW5ndGgFC2Vwb2NoTGVuZ3RoBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGY3JlYXRlAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQGY2hlY2tzCQDMCAIDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QCAAYJAQttdXN0TWFuYWdlcgEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQEcG9vbAkAlAoCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEDWluTGlzdEFjdGlvbnMJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleUluTGlzdAEFBHBvb2wGBQNuaWwJARFpbnNlcnROb2RlQWN0aW9ucwIFDXBvb2xzTGlzdE5hbWUJAQxwb29sVG9TdHJpbmcBBQRwb29sBBhjdXJyZW50RXBvY2hJc05vdERlZmluZWQJAAACCQCaCAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAUEdW5pdAQSc3RhcnRIZWlnaHRBY3Rpb25zAwUYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkBAVlcG9jaAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlDdXJyZW50RXBvY2gFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa2V5U3RhcnRIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5Q3VycmVudEVwb2NoVWkFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlTdGFydEhlaWdodFVpBQZoZWlnaHQFA25pbAUDbmlsCQCUCgIJAM4IAgUNaW5MaXN0QWN0aW9ucwUSc3RhcnRIZWlnaHRBY3Rpb25zBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBHZvdGUDDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBmFtb3VudAQEcG9vbAkAlAoCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEBWVwb2NoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAAABAtzdGFydEhlaWdodAkBDGdldEludE9yRmFpbAIFBHRoaXMJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQVlcG9jaAQLZXBvY2hMZW5ndGgJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ5rZXlFcG9jaExlbmd0aAQJZW5kSGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQFC2Vwb2NoTGVuZ3RoBBdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAkAmggCBQR0aGlzBRRrZXlGaW5hbGl6YXRpb25TdGFnZQQEdXNlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEHa2V5VXNlZAIIBQFpBmNhbGxlcgUFZXBvY2gAAAQEdm90ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEHa2V5Vm90ZQMFBHBvb2wIBQFpBmNhbGxlcgUFZXBvY2gAAAQKcG9vbFJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gAAAQKdG90YWxWb3RlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoAAAEE2d3eEFtb3VudEF0RW5kVG90YWwKAAFACQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgUJZW5kSGVpZ2h0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQECWF2YWlsYWJsZQkAZQIFE2d3eEFtb3VudEF0RW5kVG90YWwFBHVzZWQEB25ld1ZvdGUJAGQCBQR2b3RlBQZhbW91bnQECnd4RW1pc3Npb24JARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwBBQRwb29sBAZjaGVja3MJAMwIAgMJAQIhPQIJAKAIAQkBCWtleUluTGlzdAEFBHBvb2wFBHVuaXQGCQACAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQllbmRIZWlnaHQFBmhlaWdodAYJAAIBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0BgkAAgECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFE2d3eEFtb3VudEF0RW5kVG90YWwAAAYJAAIBAhN5b3UgZG8gbm90IGhhdmUgZ1dYCQDMCAIDAwkAZgIFBmFtb3VudAAACQBnAgUJYXZhaWxhYmxlBQZhbW91bnQHBgkAAgECDmludmFsaWQgYW1vdW50CQDMCAIDBQp3eEVtaXNzaW9uBgkAAgECHXBvb2wgaGFzbid0IFdYX0VNSVNTSU9OIGxhYmVsBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGVzTGlzdE5hbWUJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBBB2b3Rlc0xpc3RBY3Rpb25zAwkBDGNvbnRhaW5zTm9kZQIFDXZvdGVzTGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyBQNuaWwJARFpbnNlcnROb2RlQWN0aW9ucwIFDXZvdGVzTGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoCQBkAgUEdXNlZAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5Vm90ZQMFBHBvb2wIBQFpBmNhbGxlcgUFZXBvY2gFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAkAZAIFCnBvb2xSZXN1bHQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAkAZAIFCnRvdGFsVm90ZXMFBmFtb3VudAUDbmlsBRB2b3Rlc0xpc3RBY3Rpb25zBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNhbmNlbFZvdGUCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBARwb29sCQCUCgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAQFZXBvY2gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoAAAEC3N0YXJ0SGVpZ2h0CQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBAtlcG9jaExlbmd0aAkBDGdldEludE9yRmFpbAIFBHRoaXMFDmtleUVwb2NoTGVuZ3RoBAllbmRIZWlnaHQJAGQCBQtzdGFydEhlaWdodAULZXBvY2hMZW5ndGgEF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0CQCaCAIFBHRoaXMFFGtleUZpbmFsaXphdGlvblN0YWdlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAggFAWkGY2FsbGVyBQVlcG9jaAAABAR2b3RlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAAABApwb29sUmVzdWx0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQGY2hlY2tzCQDMCAIDCQECIT0CCQCgCAEJAQlrZXlJbkxpc3QBBQRwb29sBQR1bml0BgkAAgECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUJZW5kSGVpZ2h0BQZoZWlnaHQGCQACAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUEdW5pdAYJAAIBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQR2b3RlAAAGCQACAQIHbm8gdm90ZQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA12b3Rlc0xpc3ROYW1lCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wEDnVzZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlVc2VkAggFAWkGY2FsbGVyBQVlcG9jaAkAlgMBCQDMCAIJAGUCBQR1c2VkBQR2b3RlCQDMCAIAAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoCQBlAgUKcG9vbFJlc3VsdAUEdm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAkAZQIFCnRvdGFsVm90ZXMFBHZvdGUFA25pbAkBEWRlbGV0ZU5vZGVBY3Rpb25zAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOc2V0RXBvY2hMZW5ndGgBDm5ld0Vwb2NoTGVuZ3RoBAZjaGVja3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkAZgIFDm5ld0Vwb2NoTGVuZ3RoAAAGCQACAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlFcG9jaExlbmd0aAUObmV3RXBvY2hMZW5ndGgFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNYXhEZXB0aAELbmV3TWF4RGVwdGgEBmNoZWNrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQBmAgULbmV3TWF4RGVwdGgAAAYJAAIBAhFpbnZhbGlkIG1heCBkZXB0aAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tleU1heERlcHRoBQtuZXdNYXhEZXB0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3Byb2Nlc3NWb3RlSU5URVJOQUwCB3Bvb2xTdHIOdXNlckFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ51c2VyQWRkcmVzc1N0cgkArAICAipwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcyAFDnVzZXJBZGRyZXNzU3RyBAVlcG9jaAkBDGdldEludE9yRmFpbAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAQNZXBvY2hQcmV2aW91cwkAZQIFBWVwb2NoAAEEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgEC3N0YXJ0SGVpZ2h0CQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBAllbmRIZWlnaHQJAGQCBQtzdGFydEhlaWdodAULZXBvY2hMZW5ndGgEE3N0YXJ0SGVpZ2h0UHJldmlvdXMJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUNZXBvY2hQcmV2aW91cwQRZW5kSGVpZ2h0UHJldmlvdXMJAGQCBRNzdGFydEhlaWdodFByZXZpb3VzBQtlcG9jaExlbmd0aAQQY2hlY2tUYXJnZXRFcG9jaAMJAGcCBQ1lcG9jaFByZXZpb3VzAAAGCQACAQIrcHJvY2Vzc1ZvdGVJTlRFUk5BTDogaW52YWxpZCBwcmV2aW91cyBlcG9jaAMJAAACBRBjaGVja1RhcmdldEVwb2NoBRBjaGVja1RhcmdldEVwb2NoBARwb29sCQEMc3RyaW5nVG9Qb29sAQUHcG9vbFN0cgQNJHQwMTc3MTMxNzc1MwUEcG9vbAQNYW1vdW50QXNzZXRJZAgFDSR0MDE3NzEzMTc3NTMCXzEEDHByaWNlQXNzZXRJZAgFDSR0MDE3NzEzMTc3NTMCXzIECnd4RW1pc3Npb24JARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwBBQRwb29sBBNnd3hBbW91bnRBdEVuZFRvdGFsCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUJZW5kSGVpZ2h0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwoAAUAJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFEWVuZEhlaWdodFByZXZpb3VzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABAx2b3RpbmdSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAEDHZvdGVQcmV2aW91cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQdrZXlWb3RlAwUEcG9vbAULdXNlckFkZHJlc3MFDWVwb2NoUHJldmlvdXMJAKwCAgkArAICCQCsAgIJAKwCAgIUcHJvY2Vzc1ZvdGVJTlRFUk5BTCAFB3Bvb2xTdHICASAFDnVzZXJBZGRyZXNzU3RyAhI6IG5vIHByZXZpb3VzIHZvdGUEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCBQt1c2VyQWRkcmVzcwUFZXBvY2gAAAQHbmV3Vm90ZQMJAGYCBRtnd3hBbW91bnRBdEVuZFRvdGFsUHJldmlvdXMAAAkAawMFDHZvdGVQcmV2aW91cwUTZ3d4QW1vdW50QXRFbmRUb3RhbAUbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzAAAEB2FjdGlvbnMDAwkAZgIFB25ld1ZvdGUAAAUKd3hFbWlzc2lvbgcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlWb3RlAwUEcG9vbAULdXNlckFkZHJlc3MFBWVwb2NoBQduZXdWb3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBkAgUKdG90YWxWb3RlcwUHbmV3Vm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoCQBkAgUMdm90aW5nUmVzdWx0BQduZXdWb3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5VXNlZAIFC3VzZXJBZGRyZXNzBQVlcG9jaAkAZAIFBHVzZWQFB25ld1ZvdGUFA25pbAkBEWRlbGV0ZU5vZGVBY3Rpb25zAgkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sBQ51c2VyQWRkcmVzc1N0cgkAlAoCBQdhY3Rpb25zBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3Byb2Nlc3NQb29sSU5URVJOQUwCB3Bvb2xTdHIFZm9yY2UEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdGFyZ2V0RXBvY2gEDGN1cnJlbnRFcG9jaAkBDGdldEludE9yRmFpbAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAMFBWZvcmNlBQxjdXJyZW50RXBvY2gJAGUCBQxjdXJyZW50RXBvY2gAAQQQY2hlY2tUYXJnZXRFcG9jaAMJAGcCBQt0YXJnZXRFcG9jaAAABgkAAgECKXByb2Nlc3NQb29sSU5URVJOQUw6IGludmFsaWQgdGFyZ2V0IGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxOTUxNzE5NTU3BQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTk1MTcxOTU1NwJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTk1MTcxOTU1NwJfMgQPc3Rha2luZ0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5U3Rha2luZ0NvbnRyYWN0BA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QECWxwQXNzZXRJZAkBFmdldExwQXNzZXRCeVBvb2xBc3NldHMCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEAXIKAAFACQD8BwQFD3N0YWtpbmdDb250cmFjdAISdXNlcnNMaXN0VHJhdmVyc2FsCQDMCAIFCWxwQXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUBcgUBcgMFAXIJAJQKAgUDbmlsBgQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQt0YXJnZXRFcG9jaAAABAx2b3RpbmdSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFC3RhcmdldEVwb2NoAAAEBXNoYXJlAwMJAAACBQp0b3RhbFZvdGVzAAAGCQEBIQEFCnd4RW1pc3Npb24AAAkAawMFDHZvdGluZ1Jlc3VsdAUOcG9vbFdlaWdodE11bHQFCnRvdGFsVm90ZXMED21vZGlmeVdlaWdodEludgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCDG1vZGlmeVdlaWdodAkAzAgCBQlscEFzc2V0SWQJAMwIAgUFc2hhcmUFA25pbAUDbmlsAwkAAAIFD21vZGlmeVdlaWdodEludgUPbW9kaWZ5V2VpZ2h0SW52BBBwb29sc0xpc3RBY3Rpb25zAwMFCnd4RW1pc3Npb24GBQVmb3JjZQUDbmlsCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleUluTGlzdAEFBHBvb2wFA25pbAkBEWRlbGV0ZU5vZGVBY3Rpb25zAgUNcG9vbHNMaXN0TmFtZQUHcG9vbFN0cgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlQb29sU2hhcmUCBQRwb29sBQt0YXJnZXRFcG9jaAUFc2hhcmUFA25pbAUQcG9vbHNMaXN0QWN0aW9ucwcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOZmluYWxpemVIZWxwZXIABAVmb3JjZQkBC3ZhbHVlT3JFbHNlAgkAoAgBBR1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZAcEBWVwb2NoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAAABA1wcmV2aW91c0Vwb2NoCQBlAgUFZXBvY2gAAQQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UDAwMJAGcCBQZoZWlnaHQFCWVuZEhlaWdodAkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0BwkBASEBBQVmb3JjZQcECG5ld0Vwb2NoCQBkAgUFZXBvY2gAAQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUIbmV3RXBvY2gFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa2V5U3RhcnRIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5Q3VycmVudEVwb2NoBQhuZXdFcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFFmZpbmFsaXphdGlvblN0YWdlVG90YWwFA25pbAYDAwUFZm9yY2UJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUEdW5pdAcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzBQNuaWwGAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0CQCUCgIFA25pbAcDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFFmZpbmFsaXphdGlvblN0YWdlVG90YWwECnBvb2xPclVuaXQJAKIIAQULa2V5TmV4dFBvb2wECnVzZXJPclVuaXQJAKIIAQULa2V5TmV4dFVzZXIEByRtYXRjaDAFCnBvb2xPclVuaXQDCQABAgUHJG1hdGNoMAIEVW5pdAQHJG1hdGNoMQkAoggBCQELa2V5TGlzdEhlYWQBBQ1wb29sc0xpc3ROYW1lAwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRQb29sCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRVc2VyBQNuaWwGAwkAAQIFByRtYXRjaDECBlN0cmluZwQMcG9vbHNIZWFkU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFDHBvb2xzSGVhZFN0cgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBlN0cmluZwQHcG9vbFN0cgUHJG1hdGNoMAQEcG9vbAkBDHN0cmluZ1RvUG9vbAEFB3Bvb2xTdHIEDm5leHRVc2VyT3JVbml0BAckbWF0Y2gxBQp1c2VyT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQJAKIIAQkBC2tleUxpc3RIZWFkAQkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sAwkAAQIFByRtYXRjaDECBlN0cmluZwQEdXNlcgUHJG1hdGNoMQQEbmV4dAkAoggBCQELa2V5TGlzdE5leHQCCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wFBHVzZXIDCQAAAgUEbmV4dAUEbmV4dAQOcHJvY2Vzc1ZvdGVJbnYJAPwHBAUEdGhpcwITcHJvY2Vzc1ZvdGVJTlRFUk5BTAkAzAgCBQdwb29sU3RyCQDMCAIFBHVzZXIFA25pbAUDbmlsAwkAAAIFDnByb2Nlc3NWb3RlSW52BQ5wcm9jZXNzVm90ZUludgUEbmV4dAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gxBQ5uZXh0VXNlck9yVW5pdAMJAAECBQckbWF0Y2gxAgRVbml0BA5uZXh0UG9vbE9yVW5pdAkAoggBCQELa2V5TGlzdE5leHQCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyBAckbWF0Y2gyBQ5uZXh0UG9vbE9yVW5pdAMJAAECBQckbWF0Y2gyAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleUZpbmFsaXphdGlvblN0YWdlBRdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcwkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0UG9vbAkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0VXNlcgUDbmlsBgMJAAECBQckbWF0Y2gyAgZTdHJpbmcEAXMFByRtYXRjaDIJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAUBcwkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0VXNlcgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDECBlN0cmluZwQIbmV4dFVzZXIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0VXNlcgUIbmV4dFVzZXIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECC01hdGNoIGVycm9yAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BRdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcwQKcG9vbE9yVW5pdAkAoggBBQtrZXlOZXh0UG9vbAQHJG1hdGNoMAUKcG9vbE9yVW5pdAMJAAECBQckbWF0Y2gwAgRVbml0BAckbWF0Y2gxCQCiCAEJAQtrZXlMaXN0SGVhZAEFDXBvb2xzTGlzdE5hbWUDCQABAgUHJG1hdGNoMQIEVW5pdAQHYWN0aW9ucwMFBWZvcmNlCQDMCAIJAQtEZWxldGVFbnRyeQEFFGtleUZpbmFsaXphdGlvblN0YWdlCQDMCAIJAQtEZWxldGVFbnRyeQEFHWtleUZpbmFsaXphdGlvblNob3VsZEJlRm9yY2VkBQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUa2V5RmluYWxpemF0aW9uU3RhZ2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQxrZXlGaW5hbGl6ZWQBBQ1wcmV2aW91c0Vwb2NoBgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5Q3VycmVudEVwb2NoVWkFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlTdGFydEhlaWdodFVpBQtzdGFydEhlaWdodAUDbmlsCQCUCgIFB2FjdGlvbnMGAwkAAQIFByRtYXRjaDECBlN0cmluZwQLbmV4dFBvb2xTdHIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAULbmV4dFBvb2xTdHIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEB3Bvb2xTdHIFByRtYXRjaDAEDm5leHRQb29sT3JVbml0CQCiCAEJAQtrZXlMaXN0TmV4dAIFDXBvb2xzTGlzdE5hbWUFB3Bvb2xTdHIDCQAAAgUObmV4dFBvb2xPclVuaXQFDm5leHRQb29sT3JVbml0BAFyCgABQAkA/AcEBQR0aGlzAhNwcm9jZXNzUG9vbElOVEVSTkFMCQDMCAIFB3Bvb2xTdHIJAMwIAgUFZm9yY2UFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBBQFAAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAXIFAXIDBQFyCQCUCgIFA25pbAYEByRtYXRjaDEFDm5leHRQb29sT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQEB2FjdGlvbnMDBQVmb3JjZQkAzAgCCQELRGVsZXRlRW50cnkBBRRrZXlGaW5hbGl6YXRpb25TdGFnZQkAzAgCCQELRGVsZXRlRW50cnkBBR1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZAkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0UG9vbAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFFGtleUZpbmFsaXphdGlvblN0YWdlCQDMCAIJAQxCb29sZWFuRW50cnkCCQEMa2V5RmluYWxpemVkAQUNcHJldmlvdXNFcG9jaAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleUN1cnJlbnRFcG9jaFVpBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5U3RhcnRIZWlnaHRVaQULc3RhcnRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFBvb2wFA25pbAkAlAoCBQdhY3Rpb25zBgMJAAECBQckbWF0Y2gxAgZTdHJpbmcEC25leHRQb29sU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFC25leHRQb29sU3RyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECFmZpbmFsaXphdGlvbiBpcyBicm9rZW4BaQEPZmluYWxpemVXcmFwcGVyAQdjb3VudGVyBAZyZXN1bHQKAAFACQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQZyZXN1bHQFBnJlc3VsdAMJAQEhAQUGcmVzdWx0AwkAAAIFB2NvdW50ZXIAAAkAAgECHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAkAlAoCBQNuaWwFBHVuaXQECG1heERlcHRoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleU1heERlcHRoBQ9tYXhEZXB0aERlZmF1bHQDCQBmAgUIbWF4RGVwdGgFB2NvdW50ZXIEA2ludgkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZAIFB2NvdW50ZXIAAQUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQAEA2ludgkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUY29udGFpbnNOb2RlUkVBRE9OTFkCCGxpc3ROYW1lAmlkCQCUCgIFA25pbAkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQJpZAFpAQppbnNlcnROb2RlAghsaXN0TmFtZQJpZAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJARFpbnNlcnROb2RlQWN0aW9ucwIFCGxpc3ROYW1lBQJpZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpkZWxldGVOb2RlAghsaXN0TmFtZQJpZAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJARFkZWxldGVOb2RlQWN0aW9ucwIFCGxpc3ROYW1lBQJpZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleeRpCD0=", "chainId": 84, "height": 2459428, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EMY6LStcsmtcaFu2vhyTtiCnkm7Mdk2369dadTckJSf3 Next: 9V4HE7AMorfxcG2Wu8Ug1w19vpVcpoBtzuM7AvkjDcKC Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s", "currentEpoch"], a)
1717
1818 let h = makeString(["%s", "maxDepth"], a)
1919
2020 let i = makeString(["%s", "votingEmissionCandidateContract"], a)
2121
2222 let j = makeString(["%s", "factoryContract"], a)
2323
2424 let k = makeString(["%s", "boostingContract"], a)
2525
2626 let l = makeString(["%s", "stakingContract"], a)
2727
2828 let m = makeString(["%s", "finalizationStage"], a)
2929
3030 let n = makeString(["%s", "nextPool"], a)
3131
3232 let o = makeString(["%s", "nextUser"], a)
3333
3434 let p = makeString(["%s", "startHeight"], a)
3535
3636 let q = makeString(["%s", "currentEpochUi"], a)
3737
3838 let r = makeString(["%s", "startHeightUi"], a)
3939
4040 let s = makeString(["%s", "force"], a)
4141
4242 func t (u) = makeString(["%s%d", "startHeight", toString(u)], a)
4343
4444
4545 func v (u) = makeString(["%s%d", "finalized", toString(u)], a)
4646
4747
4848 func w (x) = {
4949 let y = x
5050 let z = y._1
5151 let A = y._2
5252 makeString(["%s%s%s", "inList", z, A], a)
5353 }
5454
5555
5656 func B (C,u) = makeString(["%s%s%d", "used", toString(C), toString(u)], a)
5757
5858
5959 func D (x,C,u) = {
6060 let E = x
6161 let z = E._1
6262 let A = E._2
6363 makeString(["%s%s%s%s%d", "vote", z, A, toString(C), toString(u)], a)
6464 }
6565
6666
6767 func F (x,u) = {
6868 let G = x
6969 let z = G._1
7070 let A = G._2
7171 makeString(["%s%s%s%d", "votingResult", z, A, toString(u)], a)
7272 }
7373
7474
7575 func H (x,u) = {
7676 let I = x
7777 let z = I._1
7878 let A = I._2
7979 makeString(["%s%s%s%d", "poolShare", z, A, toString(u)], a)
8080 }
8181
8282
8383 func J (u) = makeString(["%s%d", "totalVotes", toString(u)], a)
8484
8585
8686 func K (C,L,M) = {
8787 let N = makeString(["mandatory ", toString(C), ".", L, " is not defined"], "")
8888 valueOrErrorMessage({
8989 let O = M
9090 if ($isInstanceOf(O, "String"))
9191 then {
9292 let P = O
9393 getString(C, L)
9494 }
9595 else if ($isInstanceOf(O, "Int"))
9696 then {
9797 let Q = O
9898 getInteger(C, L)
9999 }
100100 else throw("invalid entry type")
101101 }, N)
102102 }
103103
104104
105105 func R (C,L) = {
106106 let S = K(C, L, "")
107107 if ($isInstanceOf(S, "String"))
108108 then S
109109 else throw(($getType(S) + " couldn't be cast to String"))
110110 }
111111
112112
113113 func T (C,L) = {
114114 let S = K(C, L, 0)
115115 if ($isInstanceOf(S, "Int"))
116116 then S
117117 else throw(($getType(S) + " couldn't be cast to Int"))
118118 }
119119
120120
121121 func U (x) = ((x._1 + a) + x._2)
122122
123123
124124 func V (P) = {
125125 let W = split(P, a)
126126 if ((size(W) == 2))
127127 then $Tuple2(W[0], W[1])
128128 else throw("invalid pool string")
129129 }
130130
131131
132132 func X (z,A) = {
133133 func Y (Z) = ("%s%s%s__mappings__baseAsset2internalId__" + Z)
134134
135135 func aa (ab,ac) = (((("%d%d%s%s__" + toString(ab)) + "__") + toString(ac)) + "__mappings__poolAssets2PoolContract")
136136
137137 func ad (ae) = (("%s%s%s__" + ae) + "__mappings__poolContract2LpAsset")
138138
139139 let af = addressFromStringValue(R(this, j))
140140 let ag = T(af, Y(z))
141141 let ah = T(af, Y(A))
142142 let ae = R(af, aa(ag, ah))
143143 let ai = R(af, ad(ae))
144144 ai
145145 }
146146
147147
148148 func aj (x) = {
149149 let ak = x
150150 let z = ak._1
151151 let A = ak._2
152152 let af = addressFromStringValue(R(this, j))
153153 let S = invoke(af, "checkWxEmissionPoolLabel", [z, A], nil)
154154 if ($isInstanceOf(S, "Boolean"))
155155 then S
156156 else throw(($getType(S) + " couldn't be cast to Boolean"))
157157 }
158158
159159
160160 let al = "pools"
161161
162162 func am (x) = {
163163 let an = x
164164 let z = an._1
165165 let A = an._2
166166 makeString(["votes", z, A], a)
167167 }
168168
169169
170170 func ao (ap) = {
171171 let aq = if ((ap == al))
172172 then "%s%s"
173173 else "%s%s%s%s"
174174 makeString([aq, ap, "head"], a)
175175 }
176176
177177
178178 func ar (ap) = {
179179 let aq = if ((ap == al))
180180 then "%s%s"
181181 else "%s%s%s%s"
182182 makeString([aq, ap, "size"], a)
183183 }
184184
185185
186186 func as (ap,at) = {
187187 let aq = if ((ap == al))
188188 then "%s%s%s%s"
189189 else "%s%s%s%s%s"
190190 makeString([aq, ap, at, "prev"], a)
191191 }
192192
193193
194194 func au (ap,at) = {
195195 let aq = if ((ap == al))
196196 then "%s%s%s%s"
197197 else "%s%s%s%s%s"
198198 makeString([aq, ap, at, "next"], a)
199199 }
200200
201201
202202 func av (ap,at) = {
203203 let aw = getString(this, ao(ap))
204204 let ax = getString(this, as(ap, at))
205205 let ay = getString(this, au(ap, at))
206206 if (if ((at == valueOrElse(aw, "")))
207207 then true
208208 else (ax != unit))
209209 then true
210210 else (ay != unit)
211211 }
212212
213213
214214 func az (ap,at) = {
215215 let aw = getString(this, ao(ap))
216216 let aA = valueOrElse(getInteger(this, ar(ap)), 0)
217217 let aB = if (!(av(ap, at)))
218218 then true
219219 else throw("Node exists")
220220 if ((aB == aB))
221221 then (([IntegerEntry(ar(ap), (aA + 1))] ++ (if ((aw != unit))
222222 then [StringEntry(au(ap, at), value(aw)), StringEntry(as(ap, value(aw)), at)]
223223 else nil)) ++ [StringEntry(ao(ap), at)])
224224 else throw("Strict value is not equal to itself.")
225225 }
226226
227227
228228 func aC (ap,at) = {
229229 let aw = getString(this, ao(ap))
230230 let aA = valueOrElse(getInteger(this, ar(ap)), 0)
231231 let ax = getString(this, as(ap, at))
232232 let ay = getString(this, au(ap, at))
233233 ([IntegerEntry(ar(ap), (aA - 1))] ++ (if (if ((ax != unit))
234234 then (ay != unit)
235235 else false)
236236 then [StringEntry(au(ap, value(ax)), value(ay)), StringEntry(as(ap, value(ay)), value(ax)), DeleteEntry(as(ap, at)), DeleteEntry(au(ap, at))]
237237 else if ((ay != unit))
238238 then [StringEntry(ao(ap), value(ay)), DeleteEntry(au(ap, at)), DeleteEntry(as(ap, value(ay)))]
239239 else if ((ax != unit))
240240 then [DeleteEntry(as(ap, at)), DeleteEntry(au(ap, value(ax)))]
241241 else if ((at == valueOrElse(aw, "")))
242242 then [DeleteEntry(ao(ap))]
243243 else throw(((("invalid node: " + ap) + ".") + at))))
244244 }
245245
246246
247247 func aD () = "%s__managerPublicKey"
248248
249249
250250 func aE () = "%s__pendingManagerPublicKey"
251251
252252
253253 func aF () = {
254254 let O = getString(aD())
255255 if ($isInstanceOf(O, "String"))
256256 then {
257257 let aG = O
258258 fromBase58String(aG)
259259 }
260260 else if ($isInstanceOf(O, "Unit"))
261261 then unit
262262 else throw("Match error")
263263 }
264264
265265
266266 func aH () = {
267267 let O = getString(aE())
268268 if ($isInstanceOf(O, "String"))
269269 then {
270270 let aG = O
271271 fromBase58String(aG)
272272 }
273273 else if ($isInstanceOf(O, "Unit"))
274274 then unit
275275 else throw("Match error")
276276 }
277277
278278
279279 let aI = throw("Permission denied")
280280
281281 func aJ (aK) = if ((aK.caller == this))
282282 then true
283283 else aI
284284
285285
286286 func aL (aK) = {
287287 let O = aF()
288288 if ($isInstanceOf(O, "ByteVector"))
289289 then {
290290 let aM = O
291291 if ((aK.callerPublicKey == aM))
292292 then true
293293 else aI
294294 }
295295 else if ($isInstanceOf(O, "Unit"))
296296 then aJ(aK)
297297 else throw("Match error")
298298 }
299299
300300
301301 @Callable(aK)
302302 func setManager (aN) = {
303303 let aO = aL(aK)
304304 if ((aO == aO))
305305 then {
306306 let aP = fromBase58String(aN)
307307 if ((aP == aP))
308308 then [StringEntry(aE(), aN)]
309309 else throw("Strict value is not equal to itself.")
310310 }
311311 else throw("Strict value is not equal to itself.")
312312 }
313313
314314
315315
316316 @Callable(aK)
317317 func confirmManager () = {
318318 let aQ = aH()
319319 let aR = if (isDefined(aQ))
320320 then true
321321 else throw("No pending manager")
322322 if ((aR == aR))
323323 then {
324324 let aS = if ((aK.callerPublicKey == value(aQ)))
325325 then true
326326 else throw("You are not pending manager")
327327 if ((aS == aS))
328328 then [StringEntry(aD(), toBase58String(value(aQ))), DeleteEntry(aE())]
329329 else throw("Strict value is not equal to itself.")
330330 }
331331 else throw("Strict value is not equal to itself.")
332332 }
333333
334334
335335
336336 @Callable(aK)
337337 func getUserGwxAmountAtHeight (aT,aU) = {
338338 let aV = valueOrErrorMessage(addressFromString(R(this, k)), "invalid boosting contract address")
339339 $Tuple2(nil, {
340340 let S = invoke(aV, "getUserGwxAmountAtHeightREADONLY", [aT, aU], nil)
341341 if ($isInstanceOf(S, "Int"))
342342 then S
343343 else throw(($getType(S) + " couldn't be cast to Int"))
344344 })
345345 }
346346
347347
348348
349349 @Callable(aK)
350350 func constructor (af,aW,aX,aY,aZ) = {
351351 let ba = [aL(aK), if ((addressFromString(af) != unit))
352352 then true
353353 else "invalid factory contract address", if ((addressFromString(aW) != unit))
354354 then true
355355 else "invalid voting emission candidate contract address", if ((addressFromString(aX) != unit))
356356 then true
357357 else "invalid boosting contract address", if ((addressFromString(aY) != unit))
358358 then true
359359 else "invalid staking contract address", if ((aZ > 0))
360360 then true
361361 else throw("invalid epoch length")]
362362 if ((ba == ba))
363363 then $Tuple2([StringEntry(j, af), StringEntry(i, aW), StringEntry(k, aX), StringEntry(l, aY), IntegerEntry(f, aZ)], unit)
364364 else throw("Strict value is not equal to itself.")
365365 }
366366
367367
368368
369369 @Callable(aK)
370370 func create (z,A) = {
371371 let ba = [if ((toBase58String(aK.caller.bytes) == valueOrElse(getString(this, i), "")))
372372 then true
373373 else aL(aK)]
374374 if ((ba == ba))
375375 then {
376376 let x = $Tuple2(z, A)
377377 let bb = ([BooleanEntry(w(x), true)] ++ az(al, U(x)))
378378 let bc = (getInteger(this, g) == unit)
379379 let bd = if (bc)
380380 then {
381381 let u = 0
382382 [IntegerEntry(g, u), IntegerEntry(t(u), height), IntegerEntry(p, height), IntegerEntry(q, u), IntegerEntry(r, height)]
383383 }
384384 else nil
385385 $Tuple2((bb ++ bd), unit)
386386 }
387387 else throw("Strict value is not equal to itself.")
388388 }
389389
390390
391391
392392 @Callable(aK)
393393 func vote (z,A,be) = {
394394 let x = $Tuple2(z, A)
395395 let u = valueOrElse(getInteger(this, g), 0)
396396 let bf = T(this, t(u))
397397 let aZ = T(this, f)
398398 let bg = (bf + aZ)
399399 let bh = getInteger(this, m)
400400 let bi = valueOrElse(getInteger(this, B(aK.caller, u)), 0)
401401 let bj = valueOrElse(getInteger(this, D(x, aK.caller, u)), 0)
402402 let bk = valueOrElse(getInteger(this, F(x, u)), 0)
403403 let bl = valueOrElse(getInteger(this, J(u)), 0)
404404 let bm = {
405405 let S = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aK.caller.bytes), bg], nil)
406406 if ($isInstanceOf(S, "Int"))
407407 then S
408408 else throw(($getType(S) + " couldn't be cast to Int"))
409409 }
410410 let bn = (bm - bi)
411411 let bo = (bj + be)
412412 let bp = aj(x)
413413 let ba = [if ((getBoolean(w(x)) != unit))
414414 then true
415415 else throw("invalid assets"), if ((bg > height))
416416 then true
417417 else throw("invalid height"), if ((bh == unit))
418418 then true
419419 else throw("finalization in progress"), if ((bm > 0))
420420 then true
421421 else throw("you do not have gWX"), if (if ((be > 0))
422422 then (bn >= be)
423423 else false)
424424 then true
425425 else throw("invalid amount"), if (bp)
426426 then true
427427 else throw("pool hasn't WX_EMISSION label")]
428428 if ((ba == ba))
429429 then {
430430 let bq = am(x)
431431 let br = toString(aK.caller)
432432 let bs = if (av(bq, br))
433433 then nil
434434 else az(bq, br)
435435 $Tuple2(([IntegerEntry(B(aK.caller, u), (bi + be)), IntegerEntry(D(x, aK.caller, u), bo), IntegerEntry(F(x, u), (bk + be)), IntegerEntry(J(u), (bl + be))] ++ bs), unit)
436436 }
437437 else throw("Strict value is not equal to itself.")
438438 }
439439
440440
441441
442442 @Callable(aK)
443443 func cancelVote (z,A) = {
444444 let x = $Tuple2(z, A)
445445 let u = valueOrElse(getInteger(this, g), 0)
446446 let bf = T(this, t(u))
447447 let aZ = T(this, f)
448448 let bg = (bf + aZ)
449449 let bh = getInteger(this, m)
450450 let bi = valueOrElse(getInteger(this, B(aK.caller, u)), 0)
451451 let bj = valueOrElse(getInteger(this, D(x, aK.caller, u)), 0)
452452 let bk = valueOrElse(getInteger(this, F(x, u)), 0)
453453 let bl = valueOrElse(getInteger(this, J(u)), 0)
454454 let ba = [if ((getBoolean(w(x)) != unit))
455455 then true
456456 else throw("invalid assets"), if ((bg > height))
457457 then true
458458 else throw("invalid height"), if ((bh == unit))
459459 then true
460460 else throw("finalization in progress"), if ((bj > 0))
461461 then true
462462 else throw("no vote")]
463463 if ((ba == ba))
464464 then {
465465 let bq = am(x)
466466 let br = toString(aK.caller)
467467 $Tuple2(([IntegerEntry(B(aK.caller, u), max([(bi - bj), 0])), DeleteEntry(D(x, aK.caller, u)), IntegerEntry(F(x, u), (bk - bj)), IntegerEntry(J(u), (bl - bj))] ++ aC(bq, br)), unit)
468468 }
469469 else throw("Strict value is not equal to itself.")
470470 }
471471
472472
473473
474474 @Callable(aK)
475475 func setEpochLength (bt) = {
476476 let ba = [aL(aK), if ((bt > 0))
477477 then true
478478 else throw("invalid epoch length")]
479479 if ((ba == ba))
480480 then $Tuple2([IntegerEntry(f, bt)], unit)
481481 else throw("Strict value is not equal to itself.")
482482 }
483483
484484
485485
486486 @Callable(aK)
487487 func setMaxDepth (bu) = {
488488 let ba = [aL(aK), if ((bu > 0))
489489 then true
490490 else throw("invalid max depth")]
491491 if ((ba == ba))
492492 then $Tuple2([IntegerEntry(h, bu)], unit)
493493 else throw("Strict value is not equal to itself.")
494494 }
495495
496496
497497
498498 @Callable(aK)
499499 func processVoteINTERNAL (bv,br) = {
500500 let aO = aJ(aK)
501501 if ((aO == aO))
502502 then {
503503 let aT = valueOrErrorMessage(addressFromString(br), ("processVoteINTERNAL: invalid user address " + br))
504504 let u = T(this, g)
505505 let bw = (u - 1)
506506 let aZ = T(this, f)
507507 let bf = T(this, t(u))
508508 let bg = (bf + aZ)
509509 let bx = T(this, t(bw))
510510 let by = (bx + aZ)
511511 let bz = if ((bw >= 0))
512512 then true
513513 else throw("processVoteINTERNAL: invalid previous epoch")
514514 if ((bz == bz))
515515 then {
516516 let x = V(bv)
517517 let bA = x
518518 let z = bA._1
519519 let A = bA._2
520520 let bp = aj(x)
521521 let bm = {
522522 let S = invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)
523523 if ($isInstanceOf(S, "Int"))
524524 then S
525525 else throw(($getType(S) + " couldn't be cast to Int"))
526526 }
527527 let bB = {
528528 let S = invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)
529529 if ($isInstanceOf(S, "Int"))
530530 then S
531531 else throw(($getType(S) + " couldn't be cast to Int"))
532532 }
533533 let bl = valueOrElse(getInteger(J(u)), 0)
534534 let bC = valueOrElse(getInteger(F(x, u)), 0)
535535 let bD = valueOrErrorMessage(getInteger(D(x, aT, bw)), (((("processVoteINTERNAL " + bv) + " ") + br) + ": no previous vote"))
536536 let bi = valueOrElse(getInteger(this, B(aT, u)), 0)
537537 let bo = if ((bB > 0))
538538 then fraction(bD, bm, bB)
539539 else 0
540540 let bE = if (if ((bo > 0))
541541 then bp
542542 else false)
543543 then [IntegerEntry(D(x, aT, u), bo), IntegerEntry(J(u), (bl + bo)), IntegerEntry(F(x, u), (bC + bo)), IntegerEntry(B(aT, u), (bi + bo))]
544544 else aC(am(x), br)
545545 $Tuple2(bE, unit)
546546 }
547547 else throw("Strict value is not equal to itself.")
548548 }
549549 else throw("Strict value is not equal to itself.")
550550 }
551551
552552
553553
554554 @Callable(aK)
555555 func processPoolINTERNAL (bv,bF) = {
556556 let aO = aJ(aK)
557557 if ((aO == aO))
558558 then {
559559 let bG = {
560560 let bH = T(this, g)
561561 if (bF)
562562 then bH
563563 else (bH - 1)
564564 }
565565 let bz = if ((bG >= 0))
566566 then true
567567 else throw("processPoolINTERNAL: invalid target epoch")
568568 if ((bz == bz))
569569 then {
570570 let x = V(bv)
571571 let bI = x
572572 let z = bI._1
573573 let A = bI._2
574574 let aY = addressFromStringValue(R(this, l))
575575 let af = addressFromStringValue(R(this, j))
576576 let ai = X(z, A)
577577 let bJ = {
578578 let S = invoke(aY, "usersListTraversal", [ai], nil)
579579 if ($isInstanceOf(S, "Boolean"))
580580 then S
581581 else throw(($getType(S) + " couldn't be cast to Boolean"))
582582 }
583583 if ((bJ == bJ))
584584 then if (bJ)
585585 then $Tuple2(nil, true)
586586 else {
587587 let bp = aj(x)
588588 let bl = valueOrElse(getInteger(this, J(bG)), 0)
589589 let bC = valueOrElse(getInteger(this, F(x, bG)), 0)
590590 let bK = if (if ((bl == 0))
591591 then true
592592 else !(bp))
593593 then 0
594594 else fraction(bC, b, bl)
595595 let bL = invoke(af, "modifyWeight", [ai, bK], nil)
596596 if ((bL == bL))
597597 then {
598598 let bM = if (if (bp)
599599 then true
600600 else bF)
601601 then nil
602602 else ([DeleteEntry(w(x))] ++ aC(al, bv))
603603 $Tuple2(([IntegerEntry(H(x, bG), bK)] ++ bM), false)
604604 }
605605 else throw("Strict value is not equal to itself.")
606606 }
607607 else throw("Strict value is not equal to itself.")
608608 }
609609 else throw("Strict value is not equal to itself.")
610610 }
611611 else throw("Strict value is not equal to itself.")
612612 }
613613
614614
615615
616616 @Callable(aK)
617617 func finalizeHelper () = {
618618 let bF = valueOrElse(getBoolean(s), false)
619619 let u = valueOrElse(getInteger(this, g), 0)
620620 let bN = (u - 1)
621621 let bf = T(this, t(u))
622622 let aZ = T(this, f)
623623 let bg = (bf + aZ)
624624 let bh = getInteger(this, m)
625625 if (if (if ((height >= bg))
626626 then (bh == unit)
627627 else false)
628628 then !(bF)
629629 else false)
630630 then {
631631 let bO = (u + 1)
632632 $Tuple2([IntegerEntry(t(bO), height), IntegerEntry(p, height), IntegerEntry(g, bO), IntegerEntry(m, d)], true)
633633 }
634634 else if (if (bF)
635635 then (bh == unit)
636636 else false)
637637 then $Tuple2([IntegerEntry(m, e)], true)
638638 else if ((bh == unit))
639639 then $Tuple2(nil, false)
640640 else if ((bh == d))
641641 then {
642642 let bP = getString(n)
643643 let bQ = getString(o)
644644 let O = bP
645645 if ($isInstanceOf(O, "Unit"))
646646 then {
647647 let bR = getString(ao(al))
648648 if ($isInstanceOf(bR, "Unit"))
649649 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
650650 else if ($isInstanceOf(bR, "String"))
651651 then {
652652 let bS = bR
653653 $Tuple2([StringEntry(n, bS)], true)
654654 }
655655 else throw("Match error")
656656 }
657657 else if ($isInstanceOf(O, "String"))
658658 then {
659659 let bv = O
660660 let x = V(bv)
661661 let bT = {
662662 let bR = bQ
663663 if ($isInstanceOf(bR, "Unit"))
664664 then getString(ao(am(x)))
665665 else if ($isInstanceOf(bR, "String"))
666666 then {
667667 let bU = bR
668668 let bV = getString(au(am(x), bU))
669669 if ((bV == bV))
670670 then {
671671 let bW = invoke(this, "processVoteINTERNAL", [bv, bU], nil)
672672 if ((bW == bW))
673673 then bV
674674 else throw("Strict value is not equal to itself.")
675675 }
676676 else throw("Strict value is not equal to itself.")
677677 }
678678 else throw("Match error")
679679 }
680680 let bR = bT
681681 if ($isInstanceOf(bR, "Unit"))
682682 then {
683683 let bX = getString(au(al, bv))
684684 let bY = bX
685685 if ($isInstanceOf(bY, "Unit"))
686686 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
687687 else if ($isInstanceOf(bY, "String"))
688688 then {
689689 let aG = bY
690690 $Tuple2([StringEntry(n, aG), DeleteEntry(o)], true)
691691 }
692692 else throw("Match error")
693693 }
694694 else if ($isInstanceOf(bR, "String"))
695695 then {
696696 let bZ = bR
697697 $Tuple2([StringEntry(o, bZ)], true)
698698 }
699699 else throw("Match error")
700700 }
701701 else throw("Match error")
702702 }
703703 else if ((bh == e))
704704 then {
705705 let bP = getString(n)
706706 let O = bP
707707 if ($isInstanceOf(O, "Unit"))
708708 then {
709709 let bR = getString(ao(al))
710710 if ($isInstanceOf(bR, "Unit"))
711711 then {
712712 let bE = if (bF)
713713 then [DeleteEntry(m), DeleteEntry(s)]
714714 else [DeleteEntry(m), BooleanEntry(v(bN), true), IntegerEntry(q, u), IntegerEntry(r, bf)]
715715 $Tuple2(bE, true)
716716 }
717717 else if ($isInstanceOf(bR, "String"))
718718 then {
719719 let ca = bR
720720 $Tuple2([StringEntry(n, ca)], true)
721721 }
722722 else throw("Match error")
723723 }
724724 else if ($isInstanceOf(O, "String"))
725725 then {
726726 let bv = O
727727 let bX = getString(au(al, bv))
728728 if ((bX == bX))
729729 then {
730730 let bJ = {
731731 let S = invoke(this, "processPoolINTERNAL", [bv, bF], nil)
732732 if ($isInstanceOf(S, "Boolean"))
733733 then S
734734 else throw(($getType(S) + " couldn't be cast to Boolean"))
735735 }
736736 if ((bJ == bJ))
737737 then if (bJ)
738738 then $Tuple2(nil, true)
739739 else {
740740 let bR = bX
741741 if ($isInstanceOf(bR, "Unit"))
742742 then {
743743 let bE = if (bF)
744744 then [DeleteEntry(m), DeleteEntry(s), DeleteEntry(n)]
745745 else [DeleteEntry(m), BooleanEntry(v(bN), true), IntegerEntry(q, u), IntegerEntry(r, bf), DeleteEntry(n)]
746746 $Tuple2(bE, true)
747747 }
748748 else if ($isInstanceOf(bR, "String"))
749749 then {
750750 let ca = bR
751751 $Tuple2([StringEntry(n, ca)], true)
752752 }
753753 else throw("Match error")
754754 }
755755 else throw("Strict value is not equal to itself.")
756756 }
757757 else throw("Strict value is not equal to itself.")
758758 }
759759 else throw("Match error")
760760 }
761761 else throw("finalization is broken")
762762 }
763763
764764
765765
766766 @Callable(aK)
767767 func finalizeWrapper (cb) = {
768768 let cc = {
769769 let S = invoke(this, "finalizeHelper", nil, nil)
770770 if ($isInstanceOf(S, "Boolean"))
771771 then S
772772 else throw(($getType(S) + " couldn't be cast to Boolean"))
773773 }
774774 if ((cc == cc))
775775 then if (!(cc))
776776 then if ((cb == 0))
777777 then throw("Current voting is not over yet")
778778 else $Tuple2(nil, unit)
779779 else {
780780 let cd = valueOrElse(getInteger(this, h), c)
781781 if ((cd > cb))
782782 then {
783783 let ce = invoke(this, "finalizeWrapper", [(cb + 1)], nil)
784784 if ((ce == ce))
785785 then $Tuple2(nil, unit)
786786 else throw("Strict value is not equal to itself.")
787787 }
788788 else $Tuple2(nil, unit)
789789 }
790790 else throw("Strict value is not equal to itself.")
791791 }
792792
793793
794794
795795 @Callable(aK)
796796 func finalize () = {
797797 let ce = invoke(this, "finalizeWrapper", [0], nil)
798798 if ((ce == ce))
799799 then $Tuple2(nil, unit)
800800 else throw("Strict value is not equal to itself.")
801801 }
802802
803803
804804
805805 @Callable(aK)
806806 func containsNodeREADONLY (ap,at) = $Tuple2(nil, av(ap, at))
807807
808808
809809
810810 @Callable(aK)
811811 func insertNode (ap,at) = {
812812 let aO = aL(aK)
813813 if ((aO == aO))
814814 then $Tuple2(az(ap, at), unit)
815815 else throw("Strict value is not equal to itself.")
816816 }
817817
818818
819819
820820 @Callable(aK)
821821 func deleteNode (ap,at) = {
822822 let aO = aL(aK)
823823 if ((aO == aO))
824824 then $Tuple2(aC(ap, at), unit)
825825 else throw("Strict value is not equal to itself.")
826826 }
827827
828828
829829 @Verifier(cf)
830830 func cg () = {
831831 let ch = {
832832 let O = aF()
833833 if ($isInstanceOf(O, "ByteVector"))
834834 then {
835835 let aM = O
836836 aM
837837 }
838838 else if ($isInstanceOf(O, "Unit"))
839839 then cf.senderPublicKey
840840 else throw("Match error")
841841 }
842842 sigVerify(cf.bodyBytes, cf.proofs[0], ch)
843843 }
844844

github/deemru/w8io/873ac7e 
70.25 ms