tx · CXxydS2qDgd9Z24Wc53E2YMQHKWz6dnqWCzU7X9yr9J2

3N98Ngyaszw66EakvWRCiZ771ja2RDgNaxV:  -0.02900000 Waves

2023.05.12 10:06 [2574391] smart account 3N98Ngyaszw66EakvWRCiZ771ja2RDgNaxV > SELF 0.00000000 Waves

{ "type": 13, "id": "CXxydS2qDgd9Z24Wc53E2YMQHKWz6dnqWCzU7X9yr9J2", "fee": 2900000, "feeAssetId": null, "timestamp": 1683875249791, "version": 2, "chainId": 84, "sender": "3N98Ngyaszw66EakvWRCiZ771ja2RDgNaxV", "senderPublicKey": "F4oaTkX67vt2MEsXLJJ8a7gaURGjW7x8fkvGfdEiH5oy", "proofs": [ "5gMoJCwS8Rnh4EERyJMaVkYhhEy4yYs8i8RBXboP48B62NFv8gbPETSixQkEW6zZS6BQeurBBB54eLj6c5DVjWf4" ], "script": "base64:BgIsCAISBAoCAgESBAoCAgESBwoFCAgICAgSABIECgIICBIAEgQKAggIEgMKAQhBAAlzZXBhcmF0b3ICAl9fABJzaGFyZUFzc2V0RGVjaW1hbHMACAALd2F2ZXNTdHJpbmcCBVdBVkVTAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4AQd3cmFwRXJyAQNtc2cJALkJAgkAzAgCAhZscF9zdGFraW5nX3Bvb2xzLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAQh0aHJvd0VycgEDbXNnCQACAQkBB3dyYXBFcnIBBQNtc2cBEmVycktleUlzTm90RGVmaW5lZAIHYWRkcmVzcwNrZXkJAQd3cmFwRXJyAQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldFN0ck9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJARJlcnJLZXlJc05vdERlZmluZWQCBQdhZGRyZXNzBQNrZXkBDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJARJlcnJLZXlJc05vdERlZmluZWQCBQdhZGRyZXNzBQNrZXkBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQFC3dhdmVzU3RyaW5nBQR1bml0CQDZBAEFBWlucHV0AQ9hc3NldElkVG9TdHJpbmcBBWlucHV0AwkAAAIFBWlucHV0BQR1bml0BQt3YXZlc1N0cmluZwkA2AQBCQEFdmFsdWUBBQVpbnB1dAEOZW5zdXJlUG9zaXRpdmUBAXYDCQBnAgUBdgAABQF2CQEIdGhyb3dFcnIBAhh2YWx1ZSBzaG91bGQgYmUgcG9zaXRpdmUBEmtleUZhY3RvcnlDb250cmFjdAAJALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUJc2VwYXJhdG9yARRrZXlMcFN0YWtpbmdDb250cmFjdAAJALkJAgkAzAgCAgIlcwkAzAgCAhFscFN0YWtpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IBEmtleVN0YWtpbmdDb250cmFjdAAJALkJAgkAzAgCAgIlcwkAzAgCAg9zdGFraW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yARNrZXlCb29zdGluZ0NvbnRyYWN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yAQ9rZXlTd2FwQ29udHJhY3QACQC5CQIJAMwIAgICJXMJAMwIAgIMc3dhcENvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAJALkJAgkAzAgCAgIlcwkAzAgCAhNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgEOa2V5VXNkdEFzc2V0SWQACQC5CQIJAMwIAgICJXMJAMwIAgILdXNkdEFzc2V0SWQFA25pbAUJc2VwYXJhdG9yAQxrZXlXeEFzc2V0SWQACQC5CQIJAMwIAgICJXMJAMwIAgIJd3hBc3NldElkBQNuaWwFCXNlcGFyYXRvcgELa2V5U2h1dGRvd24ACQC5CQIJAMwIAgICJXMJAMwIAgIIc2h1dGRvd24FA25pbAUJc2VwYXJhdG9yAQtrZXlNaW5EZWxheQAJALkJAgkAzAgCAgIlcwkAzAgCAghtaW5EZWxheQUDbmlsBQlzZXBhcmF0b3IBD2tleUxvY2tGcmFjdGlvbgAJALkJAgkAzAgCAgIlcwkAzAgCAgxsb2NrRnJhY3Rpb24FA25pbAUJc2VwYXJhdG9yAQ9rZXlTaGFyZUFzc2V0SWQBC2Jhc2VBc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIMc2hhcmVBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEOa2V5QmFzZUFzc2V0SWQBDHNoYXJlQXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDHNoYXJlQXNzZXRJZAkAzAgCAgtiYXNlQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBCWtleVBlcmlvZAELYmFzZUFzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAgZwZXJpb2QFA25pbAUJc2VwYXJhdG9yARRrZXlQZXJpb2RTdGFydEhlaWdodAILYmFzZUFzc2V0SWQGcGVyaW9kCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAhFwZXJpb2RTdGFydEhlaWdodAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQlzZXBhcmF0b3IBG2tleUJhc2VBc3NldEFtb3VudFRvQ29udmVydAELYmFzZUFzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAhhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQFA25pbAUJc2VwYXJhdG9yARxrZXlTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AQtiYXNlQXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQFA25pbAUJc2VwYXJhdG9yAR9rZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AgtiYXNlQXNzZXRJZAt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQFA25pbAUJc2VwYXJhdG9yASVrZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgtiYXNlQXNzZXRJZAt1c2VyQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICGGJhc2VBc3NldEFtb3VudFRvQ29udmVydAkAzAgCAgZwZXJpb2QFA25pbAUJc2VwYXJhdG9yASBrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAILYmFzZUFzc2V0SWQLdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIZc2hhcmVBc3NldEFtb3VudFRvQ29udmVydAUDbmlsBQlzZXBhcmF0b3IBJmtleVVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgtiYXNlQXNzZXRJZAt1c2VyQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQJAMwIAgIGcGVyaW9kBQNuaWwFCXNlcGFyYXRvcgEOa2V5UHJpY2VQZXJpb2QCC2Jhc2VBc3NldElkBnBlcmlvZAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIFcHJpY2UJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUJc2VwYXJhdG9yAQ9rZXlQcmljZUhpc3RvcnkBC2Jhc2VBc3NldElkCQC5CQIJAMwIAgIKJXMlcyVzJWQlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIFcHJpY2UJAMwIAgIHaGlzdG9yeQkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAFA25pbAUJc2VwYXJhdG9yARFrZXlQcmljZVBlcmlvZFB1dAILYmFzZUFzc2V0SWQGcGVyaW9kCQC5CQIJAMwIAgIIJXMlcyVkJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICBXByaWNlCQDMCAIJAKQDAQUGcGVyaW9kCQDMCAICA3B1dAUDbmlsBQlzZXBhcmF0b3IBEmtleVByaWNlUHV0SGlzdG9yeQELYmFzZUFzc2V0SWQJALkJAgkAzAgCAgwlcyVzJXMlcyVkJWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICBXByaWNlCQDMCAICB2hpc3RvcnkJAMwIAgIDcHV0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsBQlzZXBhcmF0b3IBEWtleVByaWNlUGVyaW9kR2V0AgtiYXNlQXNzZXRJZAZwZXJpb2QJALkJAgkAzAgCAgglcyVzJWQlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIFcHJpY2UJAMwIAgkApAMBBQZwZXJpb2QJAMwIAgIDZ2V0BQNuaWwFCXNlcGFyYXRvcgESa2V5UHJpY2VHZXRIaXN0b3J5AQtiYXNlQXNzZXRJZAkAuQkCCQDMCAICDCVzJXMlcyVzJWQlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIFcHJpY2UJAMwIAgIHaGlzdG9yeQkAzAgCAgNnZXQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwFCXNlcGFyYXRvcgEPa2V5SGlzdG9yeUVudHJ5BQtiYXNlQXNzZXRJZAlvcGVyYXRpb24GcGVyaW9kC3VzZXJBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgdoaXN0b3J5CQDMCAIJANgEAQkBBXZhbHVlAQULYmFzZUFzc2V0SWQJAMwIAgUJb3BlcmF0aW9uCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgkA2AQBBQR0eElkCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwFCXNlcGFyYXRvcgETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCiCAEJARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXMFBHRoaXMBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEByRtYXRjaDAJAJ0IAgUTbWFuYWdlclZhdWx0QWRkcmVzcwkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAVcGVybWlzc2lvbkRlbmllZEVycm9yCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBCG11c3RUaGlzAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgELbXVzdE1hbmFnZXIBAWkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQJAQhtdXN0VGhpcwEFAWkJAAIBAgtNYXRjaCBlcnJvcgAIc2h1dGRvd24JAQt2YWx1ZU9yRWxzZQIJAKAIAQkBC2tleVNodXRkb3duAAcBDXNodXRkb3duQ2hlY2sBAWkDAwkBASEBBQhzaHV0ZG93bgYJAQttdXN0TWFuYWdlcgEFAWkGCQACAQIVb3BlcmF0aW9uIGlzIGRpc2FibGVkAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQESa2V5RmFjdG9yeUNvbnRyYWN0AAARbHBTdGFraW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQEUa2V5THBTdGFraW5nQ29udHJhY3QAAA9zdGFraW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQESa2V5U3Rha2luZ0NvbnRyYWN0AAAQYm9vc3RpbmdDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRmFpbAIFBHRoaXMJARNrZXlCb29zdGluZ0NvbnRyYWN0AAAMc3dhcENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwkBD2tleVN3YXBDb250cmFjdAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAC3VzZHRBc3NldElkCQEMcGFyc2VBc3NldElkAQkBDGdldFN0ck9yRmFpbAIFBHRoaXMJAQ5rZXlVc2R0QXNzZXRJZAAACXd4QXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQEMa2V5V3hBc3NldElkAAAPbWluRGVsYXlEZWZhdWx0AKALAAhtaW5EZWxheQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELa2V5TWluRGVsYXkABQ9taW5EZWxheURlZmF1bHQAFmxvY2tGcmFjdGlvbk11bHRpcGxpZXIAgMLXLwATbG9ja0ZyYWN0aW9uRGVmYXVsdAkAawMAAQUWbG9ja0ZyYWN0aW9uTXVsdGlwbGllcgACAAxsb2NrRnJhY3Rpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleUxvY2tGcmFjdGlvbgAFE2xvY2tGcmFjdGlvbkRlZmF1bHQBC2dldFBvb2xJbmZvAQ1hbW91bnRBc3NldElkBBBhbW91bnRBc3NldElkU3RyCQEPYXNzZXRJZFRvU3RyaW5nAQUNYW1vdW50QXNzZXRJZAQPcHJpY2VBc3NldElkU3RyCQEPYXNzZXRJZFRvU3RyaW5nAQULdXNkdEFzc2V0SWQEDnBvb2xJbmZvT3B0aW9uCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCEHBvb2xJbmZvUkVBRE9OTFkJAMwIAgUQYW1vdW50QXNzZXRJZFN0cgkAzAgCBQ9wcmljZUFzc2V0SWRTdHIFA25pbAUDbmlsAwkAAQIFAUACFShBZGRyZXNzLCBCeXRlVmVjdG9yKQUBQAUEdW5pdAUOcG9vbEluZm9PcHRpb24BCWNhbGNQcmljZQIJbHBBc3NldElkDHNoYXJlQXNzZXRJZAQOc2hhcmVBc3NldEluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQxzaGFyZUFzc2V0SWQCHmZhaWxlZCB0byBnZXQgc2hhcmUgYXNzZXQgaW5mbwQSc2hhcmVBc3NldEVtaXNzaW9uCAUOc2hhcmVBc3NldEluZm8IcXVhbnRpdHkEDHN0YWtlZEFtb3VudAkBDmVuc3VyZVBvc2l0aXZlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFHN0YWtlZEJ5VXNlclJFQURPTkxZCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQlscEFzc2V0SWQJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAFBHVuaXQJAQd3cmFwRXJyAQIjaW52YWxpZCBzdGFrZWRCeVVzZXJSRUFET05MWSByZXN1bHQEBXByaWNlAwkAAAIFEnNoYXJlQXNzZXRFbWlzc2lvbgAABQ1zY2FsZTE4QmlnSW50CQC9AgQJALYCAQUMc3Rha2VkQW1vdW50BQ1zY2FsZTE4QmlnSW50CQC2AgEFEnNoYXJlQXNzZXRFbWlzc2lvbgUFRkxPT1IFBXByaWNlCAFpAQRlbWl0Agdhc3NldElkBmFtb3VudAQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAxpc1JlaXNzdWFibGUGCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQdhc3NldElkBQZhbW91bnQFDGlzUmVpc3N1YWJsZQUDbmlsBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEYnVybgIHYXNzZXRJZAZhbW91bnQEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAUGYW1vdW50BQNuaWwFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZjcmVhdGUFDmJhc2VBc3NldElkU3RyD3NoYXJlQXNzZXRJZFN0cg5zaGFyZUFzc2V0TmFtZRVzaGFyZUFzc2V0RGVzY3JpcHRpb24Oc2hhcmVBc3NldExvZ28ED3NoYXJlQXNzZXRMYWJlbAIKU1RBS0lOR19MUAQLYmFzZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ5iYXNlQXNzZXRJZFN0cgQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAQlpc0RlZmluZWQBCQELZ2V0UG9vbEluZm8BBQtiYXNlQXNzZXRJZAYJAQh0aHJvd0VycgECEmludmFsaWQgYmFzZSBhc3NldAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVBlcmlvZAEFC2Jhc2VBc3NldElkAAAFA25pbAMJAAACBQ9zaGFyZUFzc2V0SWRTdHICAAQVc2hhcmVBc3NldElzc3VlQW1vdW50AAEEFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgkAwggFBQ5zaGFyZUFzc2V0TmFtZQUVc2hhcmVBc3NldERlc2NyaXB0aW9uBRVzaGFyZUFzc2V0SXNzdWVBbW91bnQFEnNoYXJlQXNzZXREZWNpbWFscwYEFmNhbGN1bGF0ZWRTaGFyZUFzc2V0SWQJALgIAQUVc2hhcmVBc3NldElzc3VlQWN0aW9uBBRzaGFyZUFzc2V0QnVybkFjdGlvbgkBBEJ1cm4CBRZjYWxjdWxhdGVkU2hhcmVBc3NldElkBRVzaGFyZUFzc2V0SXNzdWVBbW91bnQEGWNhbGN1bGF0ZWRTaGFyZUFzc2V0SWRTdHIJANgEAQUWY2FsY3VsYXRlZFNoYXJlQXNzZXRJZAQOY3JlYXRlT3JVcGRhdGUJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIOY3JlYXRlT3JVcGRhdGUJAMwIAgUZY2FsY3VsYXRlZFNoYXJlQXNzZXRJZFN0cgkAzAgCBQ5zaGFyZUFzc2V0TG9nbwkAzAgCBwUDbmlsBQNuaWwDCQAAAgUOY3JlYXRlT3JVcGRhdGUFDmNyZWF0ZU9yVXBkYXRlBAhhZGRMYWJlbAkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AghhZGRMYWJlbAkAzAgCBRljYWxjdWxhdGVkU2hhcmVBc3NldElkU3RyCQDMCAIFD3NoYXJlQXNzZXRMYWJlbAUDbmlsBQNuaWwDCQAAAgUIYWRkTGFiZWwFCGFkZExhYmVsCQCUCgIJAM4IAgULY29tbW9uU3RhdGUJAMwIAgUVc2hhcmVBc3NldElzc3VlQWN0aW9uCQDMCAIFFHNoYXJlQXNzZXRCdXJuQWN0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlTaGFyZUFzc2V0SWQBBQtiYXNlQXNzZXRJZAUZY2FsY3VsYXRlZFNoYXJlQXNzZXRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QmFzZUFzc2V0SWQBBRZjYWxjdWxhdGVkU2hhcmVBc3NldElkBQ5iYXNlQXNzZXRJZFN0cgUDbmlsBRljYWxjdWxhdGVkU2hhcmVBc3NldElkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAxzaGFyZUFzc2V0SWQJANkEAQUPc2hhcmVBc3NldElkU3RyBA5zaGFyZUFzc2V0SW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFDHNoYXJlQXNzZXRJZAkBB3dyYXBFcnIBAhZpbnZhbGlkIHNoYXJlIGFzc2V0IGlkBAtjaGVja0lzc3VlcgMJAAACCAUOc2hhcmVBc3NldEluZm8GaXNzdWVyBRFscFN0YWtpbmdDb250cmFjdAYJAQh0aHJvd0VycgECHWludmFsaWQgc2hhcmUgYXNzZXQgaWQgaXNzdWVyAwkAAAIFC2NoZWNrSXNzdWVyBQtjaGVja0lzc3VlcgkAlAoCCQDOCAIFC2NvbW1vblN0YXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlTaGFyZUFzc2V0SWQBBQtiYXNlQXNzZXRJZAUPc2hhcmVBc3NldElkU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlCYXNlQXNzZXRJZAEFDHNoYXJlQXNzZXRJZAUOYmFzZUFzc2V0SWRTdHIFA25pbAUPc2hhcmVBc3NldElkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3B1dAAEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkBCHRocm93RXJyAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEC2Jhc2VBc3NldElkCAUDcG10B2Fzc2V0SWQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEBmNoZWNrcwkAzAgCCQENc2h1dGRvd25DaGVjawEFAWkJAMwIAgMJAQlpc0RlZmluZWQBCQCiCAEJAQ9rZXlTaGFyZUFzc2V0SWQBBQtiYXNlQXNzZXRJZAYJAQh0aHJvd0VycgECDWludmFsaWQgYXNzZXQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNJHQwMTExMjkxMTIzMgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQELZ2V0UG9vbEluZm8BBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAg1pbnZhbGlkIGFzc2V0BAtwb29sQWRkcmVzcwgFDSR0MDExMTI5MTEyMzICXzEECWxwQXNzZXRJZAgFDSR0MDExMTI5MTEyMzICXzIEBnBlcmlvZAkBBXZhbHVlAQkAnwgBCQEJa2V5UGVyaW9kAQULYmFzZUFzc2V0SWQEKHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2RPcHRpb24JAJ8IAQkBJWtleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MEGWNsYWltU2hhcmVBc3NldEludm9jYXRpb24DCQAAAgUodXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZE9wdGlvbgUEdW5pdAUEdW5pdAQidXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAkBBXZhbHVlAQUodXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZE9wdGlvbgMJAAACBSJ1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kBQZwZXJpb2QFBHVuaXQJAPwHBAUEdGhpcwIPY2xhaW1TaGFyZUFzc2V0CQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAMJAAACBRljbGFpbVNoYXJlQXNzZXRJbnZvY2F0aW9uBRljbGFpbVNoYXJlQXNzZXRJbnZvY2F0aW9uBBhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBG2tleUJhc2VBc3NldEFtb3VudFRvQ29udmVydAEFC2Jhc2VBc3NldElkAAAEHHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQV2YWx1ZQEJALYJAQkAkQMCCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBH2tleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MCDCVkJWQlZF9fMF9fMAUJc2VwYXJhdG9yAAEJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG2tleUJhc2VBc3NldEFtb3VudFRvQ29udmVydAEFC2Jhc2VBc3NldElkCQBkAgUYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0CAUDcG10BmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEfa2V5VXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEJAGQCBRx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0CAUDcG10BmFtb3VudAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFCXNlcGFyYXRvcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBJWtleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MFBnBlcmlvZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5SGlzdG9yeUVudHJ5BQULYmFzZUFzc2V0SWQCA3B1dAUGcGVyaW9kBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEIBQNwbXQGYW1vdW50CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBRx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFCXNlcGFyYXRvcgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD2NsYWltU2hhcmVBc3NldAIOYmFzZUFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIEBmNoZWNrcwkAzAgCCQENc2h1dGRvd25DaGVjawEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLdXNlckFkZHJlc3MDCQAAAgUOdXNlckFkZHJlc3NTdHICAAgFAWkGY2FsbGVyBAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ51c2VyQWRkcmVzc1N0cgkBB3dyYXBFcnIBAhRpbnZhbGlkIHVzZXIgYWRkcmVzcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQt1c2VyQWRkcmVzcwULdXNlckFkZHJlc3MEC2Jhc2VBc3NldElkCQEMcGFyc2VBc3NldElkAQUOYmFzZUFzc2V0SWRTdHIEDHNoYXJlQXNzZXRJZAkBBXZhbHVlAQkBDHBhcnNlQXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEPa2V5U2hhcmVBc3NldElkAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQIVaW52YWxpZCBiYXNlIGFzc2V0IGlkAwkAAAIFDHNoYXJlQXNzZXRJZAUMc2hhcmVBc3NldElkBAZwZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEJa2V5UGVyaW9kAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QDCQAAAgUGcGVyaW9kBQZwZXJpb2QEHHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQV2YWx1ZQEJALYJAQkAkQMCCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBH2tleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MCDCVkJWQlZF9fMF9fMAUJc2VwYXJhdG9yAAEEFGNoZWNrQW1vdW50VG9Db252ZXJ0AwkAZgIFHHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQAAAYJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0DCQAAAgUUY2hlY2tBbW91bnRUb0NvbnZlcnQFFGNoZWNrQW1vdW50VG9Db252ZXJ0BCJ1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBJWtleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJAQd3cmFwRXJyAQIUZmFpbGVkIHRvIGdldCBwZXJpb2QEC2NoZWNrUGVyaW9kAwkAZgIFBnBlcmlvZAUidXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAYJAQh0aHJvd0VycgECDmludmFsaWQgcGVyaW9kAwkAAAIFC2NoZWNrUGVyaW9kBQtjaGVja1BlcmlvZAQFcHJpY2UJAJ4DAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQChCAEJARFrZXlQcmljZVBlcmlvZFB1dAIFC2Jhc2VBc3NldElkBSJ1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kCQEHd3JhcEVycgECE2ZhaWxlZCB0byBnZXQgcHJpY2UEEHNoYXJlQXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFHHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQFDXNjYWxlMThCaWdJbnQFBXByaWNlCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBH2tleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBAAAJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQlzZXBhcmF0b3IJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBJWtleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFEHNoYXJlQXNzZXRBbW91bnQFDHNoYXJlQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5SGlzdG9yeUVudHJ5BQULYmFzZUFzc2V0SWQCD2NsYWltU2hhcmVBc3NldAUGcGVyaW9kBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUQc2hhcmVBc3NldEFtb3VudAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKYDAQUFcHJpY2UJAMwIAgkApAMBBRx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFCXNlcGFyYXRvcgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA2dldAAEBmNoZWNrcwkAzAgCCQENc2h1dGRvd25DaGVjawEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQMc2hhcmVBc3NldElkCAUDcG10B2Fzc2V0SWQEC2Jhc2VBc3NldElkCQEFdmFsdWUBCQEMcGFyc2VBc3NldElkAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ5rZXlCYXNlQXNzZXRJZAEFDHNoYXJlQXNzZXRJZAkBB3dyYXBFcnIBAhZpbnZhbGlkIHNoYXJlIGFzc2V0IGlkAwkAAAIFC2Jhc2VBc3NldElkBQtiYXNlQXNzZXRJZAQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQNJHQwMTU2NDIxNTgzMQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQELZ2V0UG9vbEluZm8BBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAg1pbnZhbGlkIGFzc2V0BAtwb29sQWRkcmVzcwgFDSR0MDE1NjQyMTU4MzECXzEECWxwQXNzZXRJZAgFDSR0MDE1NjQyMTU4MzECXzIEBnBlcmlvZAkBBXZhbHVlAQkAnwgBCQEJa2V5UGVyaW9kAQULYmFzZUFzc2V0SWQEKXVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kT3B0aW9uCQCfCAEJASZrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwQYY2xhaW1CYXNlQXNzZXRJbnZvY2F0aW9uAwkAAAIFKXVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kT3B0aW9uBQR1bml0BQR1bml0BCN1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAkBBXZhbHVlAQUpdXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2RPcHRpb24DCQAAAgUjdXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QFBnBlcmlvZAUEdW5pdAkA/AcEBQR0aGlzAg5jbGFpbUJhc2VBc3NldAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUYY2xhaW1CYXNlQXNzZXRJbnZvY2F0aW9uBRhjbGFpbUJhc2VBc3NldEludm9jYXRpb24EGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBHGtleVNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAAABB11c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAkBBXZhbHVlAQkAtgkBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEga2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MCDCVkJWQlZF9fMF9fMAUJc2VwYXJhdG9yAAEJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHGtleVNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAkAZAIFGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQIBQNwbXQGYW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJASBrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEJAGQCBR11c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAgFA3BtdAZhbW91bnQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQlzZXBhcmF0b3IJAMwIAgkBDEludGVnZXJFbnRyeQIJASZrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwUGcGVyaW9kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlIaXN0b3J5RW50cnkFBQtiYXNlQXNzZXRJZAIDZ2V0BQZwZXJpb2QFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQgFA3BtdAZhbW91bnQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFHXVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFCXNlcGFyYXRvcgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNsYWltQmFzZUFzc2V0Ag5iYXNlQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgQGY2hlY2tzCQDMCAIJAQ1zaHV0ZG93bkNoZWNrAQUBaQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAt1c2VyQWRkcmVzcwMJAAACBQ51c2VyQWRkcmVzc1N0cgIACAUBaQZjYWxsZXIEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDnVzZXJBZGRyZXNzU3RyCQEHd3JhcEVycgECFGludmFsaWQgdXNlciBhZGRyZXNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFC3VzZXJBZGRyZXNzBQt1c2VyQWRkcmVzcwQLYmFzZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ5iYXNlQXNzZXRJZFN0cgQMc2hhcmVBc3NldElkCQEFdmFsdWUBCQEMcGFyc2VBc3NldElkAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ9rZXlTaGFyZUFzc2V0SWQBBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAhVpbnZhbGlkIGJhc2UgYXNzZXQgaWQDCQAAAgUMc2hhcmVBc3NldElkBQxzaGFyZUFzc2V0SWQEBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQlrZXlQZXJpb2QBBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAMJAAACBQZwZXJpb2QFBnBlcmlvZAQddXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQV2YWx1ZQEJALYJAQkAkQMCCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBIGtleVVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzAgwlZCVkJWRfXzBfXzAFCXNlcGFyYXRvcgABBCN1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJASZrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwkBB3dyYXBFcnIBAhRmYWlsZWQgdG8gZ2V0IHBlcmlvZAQLY2hlY2tQZXJpb2QDCQBmAgUGcGVyaW9kBSN1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAYJAQh0aHJvd0VycgECDmludmFsaWQgcGVyaW9kAwkAAAIFC2NoZWNrUGVyaW9kBQtjaGVja1BlcmlvZAQFcHJpY2UJAJ4DAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQChCAEJARFrZXlQcmljZVBlcmlvZEdldAIFC2Jhc2VBc3NldElkBSN1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAkBB3dyYXBFcnIBAhNmYWlsZWQgdG8gZ2V0IHByaWNlBA9iYXNlQXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFHXVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0BQVwcmljZQUNc2NhbGUxOEJpZ0ludAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJASBrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFCXNlcGFyYXRvcgkAzAgCCQELRGVsZXRlRW50cnkBCQEma2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFD2Jhc2VBc3NldEFtb3VudAULYmFzZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUhpc3RvcnlFbnRyeQUFC2Jhc2VBc3NldElkAg5jbGFpbUJhc2VBc3NldAUGcGVyaW9kBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUPYmFzZUFzc2V0QW1vdW50CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApgMBBQVwcmljZQkAzAgCCQCkAwEFI3VzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kBQNuaWwFCXNlcGFyYXRvcgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGZpbmFsaXplAQ5iYXNlQXNzZXRJZFN0cgQGY2hlY2tzCQDMCAIJAQ1zaHV0ZG93bkNoZWNrAQUBaQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAtiYXNlQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEFDmJhc2VBc3NldElkU3RyBAxzaGFyZUFzc2V0SWQJAQV2YWx1ZQEJAQxwYXJzZUFzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBD2tleVNoYXJlQXNzZXRJZAEFC2Jhc2VBc3NldElkCQEHd3JhcEVycgECFWludmFsaWQgYmFzZSBhc3NldCBpZAMJAAACBQxzaGFyZUFzc2V0SWQFDHNoYXJlQXNzZXRJZAQOc2hhcmVBc3NldEluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQxzaGFyZUFzc2V0SWQJAQd3cmFwRXJyAQIWaW52YWxpZCBzaGFyZSBhc3NldCBpZAQGcGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBCWtleVBlcmlvZAEFC2Jhc2VBc3NldElkCQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kAwkAAAIFBnBlcmlvZAUGcGVyaW9kBBdwZXJpb2RTdGFydEhlaWdodE9wdGlvbgkAnwgBCQEUa2V5UGVyaW9kU3RhcnRIZWlnaHQCBQtiYXNlQXNzZXRJZAUGcGVyaW9kBApjaGVja0RlbGF5AwkAAAIFF3BlcmlvZFN0YXJ0SGVpZ2h0T3B0aW9uBQR1bml0BQR1bml0BAVkZWxheQkAZQIFBmhlaWdodAkBBXZhbHVlAQUXcGVyaW9kU3RhcnRIZWlnaHRPcHRpb24EDGJsb2Nrc1RvV2FpdAkAlgMBCQDMCAIAAAkAzAgCCQBlAgUIbWluRGVsYXkFBWRlbGF5BQNuaWwDCQAAAgUMYmxvY2tzVG9XYWl0AAAFBHVuaXQJAQh0aHJvd0VycgEJALkJAgkAzAgCAiFmaW5hbGl6YXRpb24gd2lsbCBiZSBwb3NzaWJsZSBpbiAJAMwIAgkApAMBBQxibG9ja3NUb1dhaXQJAMwIAgIHIGJsb2NrcwUDbmlsAgADCQAAAgUKY2hlY2tEZWxheQUKY2hlY2tEZWxheQQNJHQwMjEyNzIyMTQ1MwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQELZ2V0UG9vbEluZm8BBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAg1pbnZhbGlkIGFzc2V0BAtwb29sQWRkcmVzcwgFDSR0MDIxMjcyMjE0NTMCXzEECWxwQXNzZXRJZAgFDSR0MDIxMjcyMjE0NTMCXzIEDXN0YWtpbmdSZXdhcmQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhFjbGFpbVd4RG9Ob3RUaHJvdwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUJbHBBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAFBHVuaXQJAQd3cmFwRXJyAQIWaW52YWxpZCBjbGFpbVd4IHJlc3VsdAMJAAACBQ1zdGFraW5nUmV3YXJkBQ1zdGFraW5nUmV3YXJkBBhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBG2tleUJhc2VBc3NldEFtb3VudFRvQ29udmVydAEFC2Jhc2VBc3NldElkAAAEGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBHGtleVNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAAABBtjaGVja0ZpbmFsaXphdGlvbklzUmVxdWlyZWQEFmlzRmluYWxpemF0aW9uUmVxdWlyZWQDAwkAZgIFDXN0YWtpbmdSZXdhcmQAAAYJAGYCBRhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQAAAYJAGYCBRlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AAADBRZpc0ZpbmFsaXphdGlvblJlcXVpcmVkBgkBCHRocm93RXJyAQITbm90aGluZyB0byBmaW5hbGl6ZQMJAAACBRtjaGVja0ZpbmFsaXphdGlvbklzUmVxdWlyZWQFG2NoZWNrRmluYWxpemF0aW9uSXNSZXF1aXJlZAQQdXNlU3Rha2luZ1Jld2FyZAMJAGYCBQ1zdGFraW5nUmV3YXJkAAAECGxvY2tQYXJ0CQBrAwUNc3Rha2luZ1Jld2FyZAUMbG9ja0ZyYWN0aW9uBRZsb2NrRnJhY3Rpb25NdWx0aXBsaWVyBAtjb252ZXJ0UGFydAkAZQIFDXN0YWtpbmdSZXdhcmQFCGxvY2tQYXJ0BAFyCQD8BwQFEGJvb3N0aW5nQ29udHJhY3QCF3VzZXJNYXhEdXJhdGlvblJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwEBGxvY2sDCQBmAgUIbG9ja1BhcnQAAAQHJG1hdGNoMAUBcgMDAwkAAQIIBQckbWF0Y2gwAl8xAgZTdHJpbmcJAAECCAUHJG1hdGNoMAJfMgIDSW50BwkAAQIFByRtYXRjaDACDShTdHJpbmcsIEludCkHBAhmdW5jdGlvbggFByRtYXRjaDACXzEECGR1cmF0aW9uCAUHJG1hdGNoMAJfMgMJAGYCBQhsb2NrUGFydAAACQD8BwQFEGJvb3N0aW5nQ29udHJhY3QFCGZ1bmN0aW9uCQDMCAIFCGR1cmF0aW9uBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCXd4QXNzZXRJZAUIbG9ja1BhcnQFA25pbAUEdW5pdAkBCHRocm93RXJyAQITaW52YWxpZCBsb2NrIHBhcmFtcwUEdW5pdAMJAAACBQRsb2NrBQRsb2NrBA9jb252ZXJ0ZWRBbW91bnQDCQBmAgULY29udmVydFBhcnQAAAQJaW5Bc3NldElkBQl3eEFzc2V0SWQEEG1pbmltdW1Ub1JlY2VpdmUAAAQNb3V0QXNzZXRJZFN0cgkBD2Fzc2V0SWRUb1N0cmluZwEFC3VzZHRBc3NldElkBA10YXJnZXRBZGRyZXNzCQClCAEFBHRoaXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAPwHBAUMc3dhcENvbnRyYWN0AgRzd2FwCQDMCAIFEG1pbmltdW1Ub1JlY2VpdmUJAMwIAgUNb3V0QXNzZXRJZFN0cgkAzAgCBQ10YXJnZXRBZGRyZXNzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWluQXNzZXRJZAULY29udmVydFBhcnQFA25pbAMJAAECBQFAAgNJbnQFAUAFBHVuaXQJAQd3cmFwRXJyAQITaW52YWxpZCBzd2FwIHJlc3VsdAAAAwkAAAIFD2NvbnZlcnRlZEFtb3VudAUPY29udmVydGVkQW1vdW50BA1scEFzc2V0QW1vdW50AwkAZgIFD2NvbnZlcnRlZEFtb3VudAAABAxtaW5PdXRBbW91bnQAAAQJYXV0b1N0YWtlBgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkA/AcEBQtwb29sQWRkcmVzcwILcHV0T25lVGtuVjIJAMwIAgUMbWluT3V0QW1vdW50CQDMCAIFCWF1dG9TdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUPY29udmVydGVkQW1vdW50BQNuaWwDCQABAgUBQAIDSW50BQFABQR1bml0CQEHd3JhcEVycgECGmludmFsaWQgcHV0T25lVGtuVjIgcmVzdWx0AAADCQAAAgUNbHBBc3NldEFtb3VudAUNbHBBc3NldEFtb3VudAUNbHBBc3NldEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUEdW5pdAMJAAACBRB1c2VTdGFraW5nUmV3YXJkBRB1c2VTdGFraW5nUmV3YXJkBApnZXRBY3Rpb25zAwkAZgIFGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQAAAQFcHJpY2UJAQljYWxjUHJpY2UCBQlscEFzc2V0SWQFDHNoYXJlQXNzZXRJZAMJAAACBQVwcmljZQUFcHJpY2UEDXVuc3Rha2VBbW91bnQJAKADAQkAvQIECQC2AgEFGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQFBXByaWNlBQ1zY2FsZTE4QmlnSW50BQVGTE9PUgQPYmFzZUFzc2V0QW1vdW50BApvdXRBc3NldElkBQtiYXNlQXNzZXRJZAQMbWluT3V0QW1vdW50AAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAPwHBAULcG9vbEFkZHJlc3MCFXVuc3Rha2VBbmRHZXRPbmVUa25WMgkAzAgCBQ11bnN0YWtlQW1vdW50CQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQpvdXRBc3NldElkCQDMCAIFDG1pbk91dEFtb3VudAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFABQR1bml0CQEHd3JhcEVycgECJGludmFsaWQgdW5zdGFrZUFuZEdldE9uZVRrblYyIHJlc3VsdAMJAAACBQ9iYXNlQXNzZXRBbW91bnQFD2Jhc2VBc3NldEFtb3VudAQOc2hhcmVBc3NldEJ1cm4DCQAAAggFDnNoYXJlQXNzZXRJbmZvBmlzc3VlcgUEdGhpcwkA/AcEBQR0aGlzAgRidXJuCQDMCAIFDHNoYXJlQXNzZXRJZAkAzAgCBRlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFA25pbAkBCHRocm93RXJyAQIaaW52YWxpZCBzaGFyZSBhc3NldCBpc3N1ZXIDCQAAAgUOc2hhcmVBc3NldEJ1cm4FDnNoYXJlQXNzZXRCdXJuBAhwcmljZUdldAkAvQIECQC2AgEFD2Jhc2VBc3NldEFtb3VudAUNc2NhbGUxOEJpZ0ludAkAtgIBBRlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0BQVGTE9PUgQVcHJpY2VHZXRVcGRhdGVBY3Rpb25zCQDMCAIJAQtCaW5hcnlFbnRyeQIJARFrZXlQcmljZVBlcmlvZEdldAIFC2Jhc2VBc3NldElkBQZwZXJpb2QJAJ0DAQUIcHJpY2VHZXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleVByaWNlR2V0SGlzdG9yeQEFC2Jhc2VBc3NldElkCQCmAwEFCHByaWNlR2V0BQNuaWwFFXByaWNlR2V0VXBkYXRlQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFCmdldEFjdGlvbnMFCmdldEFjdGlvbnMECnB1dEFjdGlvbnMDCQBmAgUYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AAAEDWxwQXNzZXRBbW91bnQEDG1pbk91dEFtb3VudAAABAlhdXRvU3Rha2UGCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQD8BwQFC3Bvb2xBZGRyZXNzAgtwdXRPbmVUa25WMgkAzAgCBQxtaW5PdXRBbW91bnQJAMwIAgUJYXV0b1N0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC2Jhc2VBc3NldElkBRhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQFA25pbAMJAAECBQFAAgNJbnQFAUAFBHVuaXQJAQd3cmFwRXJyAQIaaW52YWxpZCBwdXRPbmVUa25WMiByZXN1bHQDCQAAAgUNbHBBc3NldEFtb3VudAUNbHBBc3NldEFtb3VudAQFcHJpY2UJAQljYWxjUHJpY2UCBQlscEFzc2V0SWQFDHNoYXJlQXNzZXRJZAMJAAACBQVwcmljZQUFcHJpY2UECmNoZWNrUHJpY2UDCQECIT0CCQEFdmFsdWUBCQCgAwEFBXByaWNlAAAGCQACAQINcHJpY2UgaXMgWkVSTwMJAAACBQpjaGVja1ByaWNlBQpjaGVja1ByaWNlBBBzaGFyZUFzc2V0QW1vdW50CQCgAwEJAL0CBAkAtgIBBQ1scEFzc2V0QW1vdW50BQ1zY2FsZTE4QmlnSW50BQVwcmljZQUFRkxPT1IEFWNoZWNrU2hhcmVBc3NldEFtb3VudAMJAQIhPQIJAQV2YWx1ZQEJAKADAQUFcHJpY2UAAAYJAAIBAhhzaGFyZUFzc2V0QW1vdW50IGlzIFpFUk8DCQAAAgUVY2hlY2tTaGFyZUFzc2V0QW1vdW50BRVjaGVja1NoYXJlQXNzZXRBbW91bnQEEXNoYXJlQXNzZXRSZWlzc3VlAwkAAAIIBQ5zaGFyZUFzc2V0SW5mbwZpc3N1ZXIFBHRoaXMJAPwHBAUEdGhpcwIEZW1pdAkAzAgCBQxzaGFyZUFzc2V0SWQJAMwIAgUQc2hhcmVBc3NldEFtb3VudAUDbmlsBQNuaWwJAQh0aHJvd0VycgECGmludmFsaWQgc2hhcmUgYXNzZXQgaXNzdWVyAwkAAAIFEXNoYXJlQXNzZXRSZWlzc3VlBRFzaGFyZUFzc2V0UmVpc3N1ZQQIcHJpY2VQdXQJALwCAwkAtgIBBRhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQFDXNjYWxlMThCaWdJbnQJALYCAQUQc2hhcmVBc3NldEFtb3VudAQVcHJpY2VQdXRVcGRhdGVBY3Rpb25zCQDMCAIJAQtCaW5hcnlFbnRyeQIJARFrZXlQcmljZVBlcmlvZFB1dAIFC2Jhc2VBc3NldElkBQZwZXJpb2QJAJ0DAQUIcHJpY2VQdXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleVByaWNlUHV0SGlzdG9yeQEFC2Jhc2VBc3NldElkCQCmAwEFCHByaWNlUHV0BQNuaWwFFXByaWNlUHV0VXBkYXRlQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFCnB1dEFjdGlvbnMFCnB1dEFjdGlvbnMECW5ld1BlcmlvZAkAZAIFBnBlcmlvZAABBAlsYXN0UHJpY2UJAQljYWxjUHJpY2UCBQlscEFzc2V0SWQFDHNoYXJlQXNzZXRJZAQHYWN0aW9ucwkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlQZXJpb2QBBQtiYXNlQXNzZXRJZAUJbmV3UGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5UGVyaW9kU3RhcnRIZWlnaHQCBQtiYXNlQXNzZXRJZAUJbmV3UGVyaW9kBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARxrZXlTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AQULYmFzZUFzc2V0SWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG2tleUJhc2VBc3NldEFtb3VudFRvQ29udmVydAEFC2Jhc2VBc3NldElkAAAJAMwIAgkBC0JpbmFyeUVudHJ5AgkBDmtleVByaWNlUGVyaW9kAgULYmFzZUFzc2V0SWQFBnBlcmlvZAkAnQMBBQlsYXN0UHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleVByaWNlSGlzdG9yeQEFC2Jhc2VBc3NldElkCQCmAwEFCWxhc3RQcmljZQUDbmlsBQpwdXRBY3Rpb25zBQpnZXRBY3Rpb25zCQCUCgIFB2FjdGlvbnMJAJ0DAQUJbGFzdFByaWNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5gLhUNg==", "height": 2574391, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EnuRAfmbkpQis4qRRLEvD8NgGJJso2JoB9EH2cfsfBVM Next: none Diff:
OldNewDifferences
122122 func W (E) = makeString(["%s%s%s%s%d%d", p(E), "price", "history", "get", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
123123
124124
125-func X (E,Y,J,N,Z) = makeString(["%s%s%s%s", "history", toUtf8String(value(E)), Y, toString(N), toBase58String(Z), toString(height)], a)
125+func X (E,Y,J,N,Z) = makeString(["%s%s%s%s", "history", toBase58String(value(E)), Y, toString(N), toBase58String(Z), toString(height)], a)
126126
127127
128128 func aa () = "%s__managerPublicKey"
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = "WAVES"
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 func f (g) = makeString(["lp_staking_pools.ride:", g], " ")
1515
1616
1717 func h (g) = throw(f(g))
1818
1919
2020 func i (j,k) = f(makeString(["mandatory ", toString(j), ".", k, " is not defined"], ""))
2121
2222
2323 func l (j,k) = valueOrErrorMessage(getString(j, k), i(j, k))
2424
2525
2626 func m (j,k) = valueOrErrorMessage(getInteger(j, k), i(j, k))
2727
2828
2929 func n (o) = if ((o == c))
3030 then unit
3131 else fromBase58String(o)
3232
3333
3434 func p (o) = if ((o == unit))
3535 then c
3636 else toBase58String(value(o))
3737
3838
3939 func q (r) = if ((r >= 0))
4040 then r
4141 else h("value should be positive")
4242
4343
4444 func s () = makeString(["%s", "factoryContract"], a)
4545
4646
4747 func t () = makeString(["%s", "lpStakingContract"], a)
4848
4949
5050 func u () = makeString(["%s", "stakingContract"], a)
5151
5252
5353 func v () = makeString(["%s", "boostingContract"], a)
5454
5555
5656 func w () = makeString(["%s", "swapContract"], a)
5757
5858
5959 func x () = makeString(["%s", "assetsStoreContract"], a)
6060
6161
6262 func y () = makeString(["%s", "usdtAssetId"], a)
6363
6464
6565 func z () = makeString(["%s", "wxAssetId"], a)
6666
6767
6868 func A () = makeString(["%s", "shutdown"], a)
6969
7070
7171 func B () = makeString(["%s", "minDelay"], a)
7272
7373
7474 func C () = makeString(["%s", "lockFraction"], a)
7575
7676
7777 func D (E) = makeString(["%s%s", p(E), "shareAssetId"], a)
7878
7979
8080 func F (G) = makeString(["%s%s", p(G), "baseAssetId"], a)
8181
8282
8383 func H (E) = makeString(["%s%s", p(E), "period"], a)
8484
8585
8686 func I (E,J) = makeString(["%s%s%d", p(E), "periodStartHeight", toString(J)], a)
8787
8888
8989 func K (E) = makeString(["%s%s", p(E), "baseAssetAmountToConvert"], a)
9090
9191
9292 func L (E) = makeString(["%s%s", p(E), "shareAssetAmountToConvert"], a)
9393
9494
9595 func M (E,N) = makeString(["%s%s%s", p(E), toString(N), "baseAssetAmountToConvert"], a)
9696
9797
9898 func O (E,N) = makeString(["%s%s%s%s", p(E), toString(N), "baseAssetAmountToConvert", "period"], a)
9999
100100
101101 func P (E,N) = makeString(["%s%s%s", p(E), toString(N), "shareAssetAmountToConvert"], a)
102102
103103
104104 func Q (E,N) = makeString(["%s%s%s%s", p(E), toString(N), "shareAssetAmountToConvert", "period"], a)
105105
106106
107107 func R (E,J) = makeString(["%s%s%d", p(E), "price", toString(J)], a)
108108
109109
110110 func S (E) = makeString(["%s%s%s%d%d", p(E), "price", "history", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
111111
112112
113113 func T (E,J) = makeString(["%s%s%d%s", p(E), "price", toString(J), "put"], a)
114114
115115
116116 func U (E) = makeString(["%s%s%s%s%d%d", p(E), "price", "history", "put", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
117117
118118
119119 func V (E,J) = makeString(["%s%s%d%s", p(E), "price", toString(J), "get"], a)
120120
121121
122122 func W (E) = makeString(["%s%s%s%s%d%d", p(E), "price", "history", "get", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
123123
124124
125-func X (E,Y,J,N,Z) = makeString(["%s%s%s%s", "history", toUtf8String(value(E)), Y, toString(N), toBase58String(Z), toString(height)], a)
125+func X (E,Y,J,N,Z) = makeString(["%s%s%s%s", "history", toBase58String(value(E)), Y, toString(N), toBase58String(Z), toString(height)], a)
126126
127127
128128 func aa () = "%s__managerPublicKey"
129129
130130
131131 func ab () = "%s__managerVaultAddress"
132132
133133
134134 func ac () = {
135135 let ad = getString(ab())
136136 if ($isInstanceOf(ad, "String"))
137137 then {
138138 let ae = ad
139139 addressFromStringValue(ae)
140140 }
141141 else this
142142 }
143143
144144
145145 func af () = {
146146 let ag = ac()
147147 let ad = getString(ag, aa())
148148 if ($isInstanceOf(ad, "String"))
149149 then {
150150 let ae = ad
151151 fromBase58String(ae)
152152 }
153153 else if ($isInstanceOf(ad, "Unit"))
154154 then unit
155155 else throw("Match error")
156156 }
157157
158158
159159 let ah = throw("Permission denied")
160160
161161 func ai (aj) = if ((aj.caller == this))
162162 then true
163163 else ah
164164
165165
166166 func ak (aj) = {
167167 let ad = af()
168168 if ($isInstanceOf(ad, "ByteVector"))
169169 then {
170170 let al = ad
171171 if ((aj.callerPublicKey == al))
172172 then true
173173 else ah
174174 }
175175 else if ($isInstanceOf(ad, "Unit"))
176176 then ai(aj)
177177 else throw("Match error")
178178 }
179179
180180
181181 let am = valueOrElse(getBoolean(A()), false)
182182
183183 func an (aj) = if (if (!(am))
184184 then true
185185 else ak(aj))
186186 then true
187187 else throw("operation is disabled")
188188
189189
190190 let ao = addressFromStringValue(l(this, s()))
191191
192192 let ap = addressFromStringValue(l(this, t()))
193193
194194 let aq = addressFromStringValue(l(this, u()))
195195
196196 let ar = addressFromStringValue(l(this, v()))
197197
198198 let as = addressFromStringValue(l(this, w()))
199199
200200 let at = addressFromStringValue(l(this, x()))
201201
202202 let au = n(l(this, y()))
203203
204204 let av = n(l(this, z()))
205205
206206 let aw = 1440
207207
208208 let ax = valueOrElse(getInteger(this, B()), aw)
209209
210210 let ay = 100000000
211211
212212 let az = fraction(1, ay, 2)
213213
214214 let aA = valueOrElse(getInteger(this, C()), az)
215215
216216 func aB (aC) = {
217217 let aD = p(aC)
218218 let aE = p(au)
219219 let aF = {
220220 let aG = invoke(ao, "poolInfoREADONLY", [aD, aE], nil)
221221 if ($isInstanceOf(aG, "(Address, ByteVector)"))
222222 then aG
223223 else unit
224224 }
225225 aF
226226 }
227227
228228
229229 func aH (aI,G) = {
230230 let aJ = valueOrErrorMessage(assetInfo(G), "failed to get share asset info")
231231 let aK = aJ.quantity
232232 let aL = q(valueOrErrorMessage({
233233 let aG = invoke(aq, "stakedByUserREADONLY", [p(aI), toString(this)], nil)
234234 if ($isInstanceOf(aG, "Int"))
235235 then aG
236236 else unit
237237 }, f("invalid stakedByUserREADONLY result")))
238238 let aM = if ((aK == 0))
239239 then e
240240 else fraction(toBigInt(aL), e, toBigInt(aK), FLOOR)
241241 aM
242242 }
243243
244244
245245 @Callable(aj)
246246 func emit (aN,aO) = {
247247 let aP = ai(aj)
248248 if ((aP == aP))
249249 then {
250250 let aQ = true
251251 $Tuple2([Reissue(aN, aO, aQ)], aO)
252252 }
253253 else throw("Strict value is not equal to itself.")
254254 }
255255
256256
257257
258258 @Callable(aj)
259259 func burn (aN,aO) = {
260260 let aP = ai(aj)
261261 if ((aP == aP))
262262 then $Tuple2([Burn(aN, aO)], aO)
263263 else throw("Strict value is not equal to itself.")
264264 }
265265
266266
267267
268268 @Callable(aj)
269269 func create (aR,aS,aT,aU,aV) = {
270270 let aW = "STAKING_LP"
271271 let E = n(aR)
272272 let aX = [ak(aj), if (isDefined(aB(E)))
273273 then true
274274 else h("invalid base asset")]
275275 if ((aX == aX))
276276 then {
277277 let aY = [IntegerEntry(H(E), 0)]
278278 if ((aS == ""))
279279 then {
280280 let aZ = 1
281281 let ba = Issue(aT, aU, aZ, b, true)
282282 let bb = calculateAssetId(ba)
283283 let bc = Burn(bb, aZ)
284284 let bd = toBase58String(bb)
285285 let be = invoke(at, "createOrUpdate", [bd, aV, false], nil)
286286 if ((be == be))
287287 then {
288288 let bf = invoke(at, "addLabel", [bd, aW], nil)
289289 if ((bf == bf))
290290 then $Tuple2((aY ++ [ba, bc, StringEntry(D(E), bd), StringEntry(F(bb), aR)]), bd)
291291 else throw("Strict value is not equal to itself.")
292292 }
293293 else throw("Strict value is not equal to itself.")
294294 }
295295 else {
296296 let G = fromBase58String(aS)
297297 let aJ = valueOrErrorMessage(assetInfo(G), f("invalid share asset id"))
298298 let bg = if ((aJ.issuer == ap))
299299 then true
300300 else h("invalid share asset id issuer")
301301 if ((bg == bg))
302302 then $Tuple2((aY ++ [StringEntry(D(E), aS), StringEntry(F(G), aR)]), aS)
303303 else throw("Strict value is not equal to itself.")
304304 }
305305 }
306306 else throw("Strict value is not equal to itself.")
307307 }
308308
309309
310310
311311 @Callable(aj)
312312 func put () = {
313313 let bh = if ((size(aj.payments) == 1))
314314 then aj.payments[0]
315315 else h("exactly 1 payment is expected")
316316 let E = bh.assetId
317317 let N = aj.caller
318318 let aX = [an(aj), if (isDefined(getString(D(E))))
319319 then true
320320 else h("invalid asset")]
321321 if ((aX == aX))
322322 then {
323323 let bi = valueOrErrorMessage(aB(E), f("invalid asset"))
324324 let bj = bi._1
325325 let aI = bi._2
326326 let J = value(getInteger(H(E)))
327327 let bk = getInteger(O(E, N))
328328 let bl = if ((bk == unit))
329329 then unit
330330 else {
331331 let bm = value(bk)
332332 if ((bm == J))
333333 then unit
334334 else invoke(this, "claimShareAsset", [p(E), toString(N)], nil)
335335 }
336336 if ((bl == bl))
337337 then {
338338 let bn = valueOrElse(getInteger(K(E)), 0)
339339 let bo = value(parseInt(split(valueOrElse(getString(M(E, N)), "%d%d%d__0__0"), a)[1]))
340340 $Tuple2([IntegerEntry(K(E), (bn + bh.amount)), StringEntry(M(E, N), makeString(["%d%d%d", toString((bo + bh.amount)), toString(lastBlock.timestamp), toString(J)], a)), IntegerEntry(O(E, N), J), StringEntry(X(E, "put", J, N, aj.transactionId), makeString(["%d%d%d", toString(bh.amount), toString(lastBlock.timestamp), toString(bo)], a))], unit)
341341 }
342342 else throw("Strict value is not equal to itself.")
343343 }
344344 else throw("Strict value is not equal to itself.")
345345 }
346346
347347
348348
349349 @Callable(aj)
350350 func claimShareAsset (aR,bp) = {
351351 let aX = [an(aj)]
352352 if ((aX == aX))
353353 then {
354354 let N = if ((bp == ""))
355355 then aj.caller
356356 else {
357357 let aP = ai(aj)
358358 if ((aP == aP))
359359 then valueOrErrorMessage(addressFromString(bp), f("invalid user address"))
360360 else throw("Strict value is not equal to itself.")
361361 }
362362 if ((N == N))
363363 then {
364364 let E = n(aR)
365365 let G = value(n(valueOrErrorMessage(getString(D(E)), f("invalid base asset id"))))
366366 if ((G == G))
367367 then {
368368 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
369369 if ((J == J))
370370 then {
371371 let bo = value(parseInt(split(valueOrElse(getString(M(E, N)), "%d%d%d__0__0"), a)[1]))
372372 let bq = if ((bo > 0))
373373 then true
374374 else h("nothing to claim")
375375 if ((bq == bq))
376376 then {
377377 let bm = valueOrErrorMessage(getInteger(O(E, N)), f("failed to get period"))
378378 let br = if ((J > bm))
379379 then true
380380 else h("invalid period")
381381 if ((br == br))
382382 then {
383383 let aM = toBigInt(valueOrErrorMessage(getBinary(T(E, bm)), f("failed to get price")))
384384 let bs = toInt(fraction(toBigInt(bo), e, aM))
385385 $Tuple2([StringEntry(M(E, N), makeString(["%d%d%d", toString(0), toString(lastBlock.timestamp), toString(J)], a)), DeleteEntry(O(E, N)), ScriptTransfer(N, bs, G), StringEntry(X(E, "claimShareAsset", J, N, aj.transactionId), makeString(["%d%d%d%d", toString(bs), toString(lastBlock.timestamp), toString(aM), toString(bo)], a))], unit)
386386 }
387387 else throw("Strict value is not equal to itself.")
388388 }
389389 else throw("Strict value is not equal to itself.")
390390 }
391391 else throw("Strict value is not equal to itself.")
392392 }
393393 else throw("Strict value is not equal to itself.")
394394 }
395395 else throw("Strict value is not equal to itself.")
396396 }
397397 else throw("Strict value is not equal to itself.")
398398 }
399399
400400
401401
402402 @Callable(aj)
403403 func get () = {
404404 let aX = [an(aj)]
405405 if ((aX == aX))
406406 then {
407407 let bh = if ((size(aj.payments) == 1))
408408 then aj.payments[0]
409409 else h("exactly 1 payment is expected")
410410 let G = bh.assetId
411411 let E = value(n(valueOrErrorMessage(getString(F(G)), f("invalid share asset id"))))
412412 if ((E == E))
413413 then {
414414 let N = aj.caller
415415 let bt = valueOrErrorMessage(aB(E), f("invalid asset"))
416416 let bj = bt._1
417417 let aI = bt._2
418418 let J = value(getInteger(H(E)))
419419 let bu = getInteger(Q(E, N))
420420 let bv = if ((bu == unit))
421421 then unit
422422 else {
423423 let bw = value(bu)
424424 if ((bw == J))
425425 then unit
426426 else invoke(this, "claimBaseAsset", [p(E), toString(N)], nil)
427427 }
428428 if ((bv == bv))
429429 then {
430430 let bx = valueOrElse(getInteger(L(E)), 0)
431431 let by = value(parseInt(split(valueOrElse(getString(P(E, N)), "%d%d%d__0__0"), a)[1]))
432432 $Tuple2([IntegerEntry(L(E), (bx + bh.amount)), StringEntry(P(E, N), makeString(["%d%d%d", toString((by + bh.amount)), toString(lastBlock.timestamp), toString(J)], a)), IntegerEntry(Q(E, N), J), StringEntry(X(E, "get", J, N, aj.transactionId), makeString(["%d%d%d", toString(bh.amount), toString(lastBlock.timestamp), toString(by)], a))], unit)
433433 }
434434 else throw("Strict value is not equal to itself.")
435435 }
436436 else throw("Strict value is not equal to itself.")
437437 }
438438 else throw("Strict value is not equal to itself.")
439439 }
440440
441441
442442
443443 @Callable(aj)
444444 func claimBaseAsset (aR,bp) = {
445445 let aX = [an(aj)]
446446 if ((aX == aX))
447447 then {
448448 let N = if ((bp == ""))
449449 then aj.caller
450450 else {
451451 let aP = ai(aj)
452452 if ((aP == aP))
453453 then valueOrErrorMessage(addressFromString(bp), f("invalid user address"))
454454 else throw("Strict value is not equal to itself.")
455455 }
456456 if ((N == N))
457457 then {
458458 let E = n(aR)
459459 let G = value(n(valueOrErrorMessage(getString(D(E)), f("invalid base asset id"))))
460460 if ((G == G))
461461 then {
462462 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
463463 if ((J == J))
464464 then {
465465 let by = value(parseInt(split(valueOrElse(getString(P(E, N)), "%d%d%d__0__0"), a)[1]))
466466 let bw = valueOrErrorMessage(getInteger(Q(E, N)), f("failed to get period"))
467467 let br = if ((J > bw))
468468 then true
469469 else h("invalid period")
470470 if ((br == br))
471471 then {
472472 let aM = toBigInt(valueOrErrorMessage(getBinary(V(E, bw)), f("failed to get price")))
473473 let bz = toInt(fraction(toBigInt(by), aM, e))
474474 $Tuple2([StringEntry(P(E, N), makeString(["%d%d%d", toString(0), toString(lastBlock.timestamp), toString(J)], a)), DeleteEntry(Q(E, N)), ScriptTransfer(N, bz, E), StringEntry(X(E, "claimBaseAsset", J, N, aj.transactionId), makeString(["%d%d%d%d", toString(bz), toString(lastBlock.timestamp), toString(aM), toString(bw)], a))], unit)
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
478478 else throw("Strict value is not equal to itself.")
479479 }
480480 else throw("Strict value is not equal to itself.")
481481 }
482482 else throw("Strict value is not equal to itself.")
483483 }
484484 else throw("Strict value is not equal to itself.")
485485 }
486486
487487
488488
489489 @Callable(aj)
490490 func finalize (aR) = {
491491 let aX = [an(aj)]
492492 if ((aX == aX))
493493 then {
494494 let E = n(aR)
495495 let G = value(n(valueOrErrorMessage(getString(D(E)), f("invalid base asset id"))))
496496 if ((G == G))
497497 then {
498498 let aJ = valueOrErrorMessage(assetInfo(G), f("invalid share asset id"))
499499 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
500500 if ((J == J))
501501 then {
502502 let bA = getInteger(I(E, J))
503503 let bB = if ((bA == unit))
504504 then unit
505505 else {
506506 let bC = (height - value(bA))
507507 let bD = max([0, (ax - bC)])
508508 if ((bD == 0))
509509 then unit
510510 else h(makeString(["finalization will be possible in ", toString(bD), " blocks"], ""))
511511 }
512512 if ((bB == bB))
513513 then {
514514 let bE = valueOrErrorMessage(aB(E), f("invalid asset"))
515515 let bj = bE._1
516516 let aI = bE._2
517517 let bF = valueOrErrorMessage({
518518 let aG = invoke(aq, "claimWxDoNotThrow", [p(aI)], nil)
519519 if ($isInstanceOf(aG, "Int"))
520520 then aG
521521 else unit
522522 }, f("invalid claimWx result"))
523523 if ((bF == bF))
524524 then {
525525 let bn = valueOrElse(getInteger(K(E)), 0)
526526 let bx = valueOrElse(getInteger(L(E)), 0)
527527 let bG = {
528528 let bH = if (if ((bF > 0))
529529 then true
530530 else (bn > 0))
531531 then true
532532 else (bx > 0)
533533 if (bH)
534534 then true
535535 else h("nothing to finalize")
536536 }
537537 if ((bG == bG))
538538 then {
539539 let bI = if ((bF > 0))
540540 then {
541541 let bJ = fraction(bF, aA, ay)
542542 let bK = (bF - bJ)
543543 let bL = invoke(ar, "userMaxDurationREADONLY", [toString(this)], nil)
544544 let bM = if ((bJ > 0))
545545 then {
546546 let ad = bL
547547 if (if (if ($isInstanceOf(ad._1, "String"))
548548 then $isInstanceOf(ad._2, "Int")
549549 else false)
550550 then $isInstanceOf(ad, "(String, Int)")
551551 else false)
552552 then {
553553 let bN = ad._1
554554 let bO = ad._2
555555 if ((bJ > 0))
556556 then invoke(ar, bN, [bO], [AttachedPayment(av, bJ)])
557557 else unit
558558 }
559559 else h("invalid lock params")
560560 }
561561 else unit
562562 if ((bM == bM))
563563 then {
564564 let bP = if ((bK > 0))
565565 then {
566566 let bQ = av
567567 let bR = 0
568568 let bS = p(au)
569569 let bT = toString(this)
570570 valueOrErrorMessage({
571571 let aG = invoke(as, "swap", [bR, bS, bT], [AttachedPayment(bQ, bK)])
572572 if ($isInstanceOf(aG, "Int"))
573573 then aG
574574 else unit
575575 }, f("invalid swap result"))
576576 }
577577 else 0
578578 if ((bP == bP))
579579 then {
580580 let bU = if ((bP > 0))
581581 then {
582582 let bV = 0
583583 let bW = true
584584 valueOrErrorMessage({
585585 let aG = invoke(bj, "putOneTknV2", [bV, bW], [AttachedPayment(au, bP)])
586586 if ($isInstanceOf(aG, "Int"))
587587 then aG
588588 else unit
589589 }, f("invalid putOneTknV2 result"))
590590 }
591591 else 0
592592 if ((bU == bU))
593593 then bU
594594 else throw("Strict value is not equal to itself.")
595595 }
596596 else throw("Strict value is not equal to itself.")
597597 }
598598 else throw("Strict value is not equal to itself.")
599599 }
600600 else unit
601601 if ((bI == bI))
602602 then {
603603 let bX = if ((bx > 0))
604604 then {
605605 let aM = aH(aI, G)
606606 if ((aM == aM))
607607 then {
608608 let bY = toInt(fraction(toBigInt(bx), aM, e, FLOOR))
609609 let bz = {
610610 let bZ = E
611611 let bV = 0
612612 valueOrErrorMessage({
613613 let aG = invoke(bj, "unstakeAndGetOneTknV2", [bY, p(bZ), bV], nil)
614614 if ($isInstanceOf(aG, "Int"))
615615 then aG
616616 else unit
617617 }, f("invalid unstakeAndGetOneTknV2 result"))
618618 }
619619 if ((bz == bz))
620620 then {
621621 let ca = if ((aJ.issuer == this))
622622 then invoke(this, "burn", [G, bx], nil)
623623 else h("invalid share asset issuer")
624624 if ((ca == ca))
625625 then {
626626 let cb = fraction(toBigInt(bz), e, toBigInt(bx), FLOOR)
627627 let cc = [BinaryEntry(V(E, J), toBytes(cb)), StringEntry(W(E), toString(cb))]
628628 cc
629629 }
630630 else throw("Strict value is not equal to itself.")
631631 }
632632 else throw("Strict value is not equal to itself.")
633633 }
634634 else throw("Strict value is not equal to itself.")
635635 }
636636 else nil
637637 if ((bX == bX))
638638 then {
639639 let cd = if ((bn > 0))
640640 then {
641641 let bU = {
642642 let bV = 0
643643 let bW = true
644644 valueOrErrorMessage({
645645 let aG = invoke(bj, "putOneTknV2", [bV, bW], [AttachedPayment(E, bn)])
646646 if ($isInstanceOf(aG, "Int"))
647647 then aG
648648 else unit
649649 }, f("invalid putOneTknV2 result"))
650650 }
651651 if ((bU == bU))
652652 then {
653653 let aM = aH(aI, G)
654654 if ((aM == aM))
655655 then {
656656 let ce = if ((value(toInt(aM)) != 0))
657657 then true
658658 else throw("price is ZERO")
659659 if ((ce == ce))
660660 then {
661661 let bs = toInt(fraction(toBigInt(bU), e, aM, FLOOR))
662662 let cf = if ((value(toInt(aM)) != 0))
663663 then true
664664 else throw("shareAssetAmount is ZERO")
665665 if ((cf == cf))
666666 then {
667667 let cg = if ((aJ.issuer == this))
668668 then invoke(this, "emit", [G, bs], nil)
669669 else h("invalid share asset issuer")
670670 if ((cg == cg))
671671 then {
672672 let ch = fraction(toBigInt(bn), e, toBigInt(bs))
673673 let ci = [BinaryEntry(T(E, J), toBytes(ch)), StringEntry(U(E), toString(ch))]
674674 ci
675675 }
676676 else throw("Strict value is not equal to itself.")
677677 }
678678 else throw("Strict value is not equal to itself.")
679679 }
680680 else throw("Strict value is not equal to itself.")
681681 }
682682 else throw("Strict value is not equal to itself.")
683683 }
684684 else throw("Strict value is not equal to itself.")
685685 }
686686 else nil
687687 if ((cd == cd))
688688 then {
689689 let cj = (J + 1)
690690 let ck = aH(aI, G)
691691 let cl = (([IntegerEntry(H(E), cj), IntegerEntry(I(E, cj), height), IntegerEntry(L(E), 0), IntegerEntry(K(E), 0), BinaryEntry(R(E, J), toBytes(ck)), StringEntry(S(E), toString(ck))] ++ cd) ++ bX)
692692 $Tuple2(cl, toBytes(ck))
693693 }
694694 else throw("Strict value is not equal to itself.")
695695 }
696696 else throw("Strict value is not equal to itself.")
697697 }
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else throw("Strict value is not equal to itself.")
703703 }
704704 else throw("Strict value is not equal to itself.")
705705 }
706706 else throw("Strict value is not equal to itself.")
707707 }
708708 else throw("Strict value is not equal to itself.")
709709 }
710710 else throw("Strict value is not equal to itself.")
711711 }
712712
713713
714714 @Verifier(cm)
715715 func cn () = {
716716 let co = {
717717 let ad = af()
718718 if ($isInstanceOf(ad, "ByteVector"))
719719 then {
720720 let al = ad
721721 al
722722 }
723723 else if ($isInstanceOf(ad, "Unit"))
724724 then cm.senderPublicKey
725725 else throw("Match error")
726726 }
727727 sigVerify(cm.bodyBytes, cm.proofs[0], co)
728728 }
729729

github/deemru/w8io/026f985 
67.56 ms