tx · GNHraBT3fAmc8BmGJJZJa3zuKaj3gpsUb2HBAuH3Xwpp

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.02900000 Waves

2022.08.30 12:07 [2206984] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "GNHraBT3fAmc8BmGJJZJa3zuKaj3gpsUb2HBAuH3Xwpp", "fee": 2900000, "feeAssetId": null, "timestamp": 1661850447873, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "47MDmZs3Xkt5HvZfeVBjgBnitFkc3UnYCJ9w86kX3Y4VRrYcRX73uJdejG5hvBqUdYKWiMAqBf9RGZqQTD2PHZqa" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFEABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAA5rZXlGZWVQZXJtaWxsZQIPJXNfX2ZlZVBlcm1pbGxlAAtmZWVQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlGZWVQZXJtaWxsZQUSZmVlUGVybWlsbGVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawAADm1hdGNoZXJBZGRyZXNzCQCnCAEJAQJtcAABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUHaW5BbUFtdAUGYW10RGNtBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFB2luUHJBbXQFCHByaWNlRGNtBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQZhbXREY20EDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQhwcmljZURjbQQBcgMJAAACBQRscEVtAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBQ9pbkFtQXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUPaW5QckFzc2V0QW10WDE4BQhwcmljZURjbQkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTU1ODcxNTkzMgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTU1ODcxNTkzMgJfMQQKd3JpdGVQckFtdAgFDSR0MDE1NTg3MTU5MzICXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEHdGFrZUZlZQEGYW1vdW50BANmZWUJAGsDBQZhbW91bnQFC2ZlZVBlcm1pbGxlBQh0aG91c2FuZAkAlAoCCQBlAgUGYW1vdW50BQNmZWUFA2ZlZQEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFQFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQQcGF5bWVudEFtb3VudFJhdwgFA3BtdAZhbW91bnQEDSR0MDI0NTQ5MjQ2MDEJAQd0YWtlRmVlAQUQcGF5bWVudEFtb3VudFJhdwQGcG10QW10CAUNJHQwMjQ1NDkyNDYwMQJfMQQJZmVlQW1vdW50CAUNJHQwMjQ1NDkyNDYwMQJfMgMJAGYCAICt4gQFEHBheW1lbnRBbW91bnRSYXcJAAIBAg1Xcm9uZyBwbXQgYW10BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI0NzYxMjUzMzcDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUGcG10QW10BQlwckJhbGFuY2UJAGUCBQZwbXRBbXQFC2FtQXNzZXRQYXJ0BQtwckFzc2V0UGFydAAAAAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMDCQBmAgUGcG10QW10BQlwckJhbGFuY2UGCQBmAgULcHJBc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQZwbXRBbXQAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNDc2MTI1MzM3Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNDc2MTI1MzM3Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNDc2MTI1MzM3Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjQ3NjEyNTMzNwJfNAQMdmlydFN3YXBJblByCAUNJHQwMjQ3NjEyNTMzNwJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI0NzYxMjUzMzcCXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAMGCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFDGFtQmFsYW5jZU5vdwICLCAJAKQDAQUMcHJCYWxhbmNlTm93AgIsIAkBA3N0cgEFAkQwBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQthbUFzc2V0UGFydAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAULcHJBc3NldFBhcnQFCHNsaXBwYWdlBgYFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlBAllbWl0THBBbXQJAKADAQgFCWxwQ2FsY1JlcwJfMgQBZQkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFlBQFlBAJlbAQHJG1hdGNoMAUBZQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAQQc2VuZEZlZVRvTWF0Y2hlcgMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5tYXRjaGVyQWRkcmVzcwUJZmVlQW1vdW50CQDZBAEFCnBtdEFzc2V0SWQFA25pbAUDbmlsCQDOCAIJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyBRBzZW5kRmVlVG9NYXRjaGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnB1dEZvckZyZWUBB21heFNscGcDCQBmAgAABQdtYXhTbHBnCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQdtYXhTbHBnBwcAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQhzbGlwcGFnZQYJAGYCAAAFCmV4Y2hSZXN1bHQGCQBmAgAABQlvdXRBbW91bnQJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDMwMzgyMzA4NDIDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BQpleGNoUmVzdWx0BQplc3RpbVByQW10AAAAAAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAAIBAhB3cm9uZyBvdXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAzMDM4MjMwODQyAl8xBAxwckJhbGFuY2VOb3cIBQ0kdDAzMDM4MjMwODQyAl8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzMDM4MjMwODQyAl8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzAzODIzMDg0MgJfNAQMdmlydFN3YXBJblByCAUNJHQwMzAzODIzMDg0MgJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDMwMzgyMzA4NDICXzYEC3RvdGFsR2V0UmF3CAUNJHQwMzAzODIzMDg0MgJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAAIBAgpXcm9uZyBjYWxjBAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKQDAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDXZpcnRTd2FwT3V0UHIFDHZpcnRTd2FwSW5QcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEECHRvdGFsR2V0CAkBB3Rha2VGZWUBBQt0b3RhbEdldFJhdwJfMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMxNTg5MzE2OTMDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzE1ODkzMTY5MwJfMQQFb3V0UHIIBQ0kdDAzMTU4OTMxNjkzAl8yBAt0b3RhbEFtb3VudAkAZAIFBW91dEFtBQVvdXRQcgQJZmVlQW1vdW50CQBlAgULdG90YWxHZXRSYXcFCHRvdGFsR2V0BBFvdXRBc3NldElkT3JXYXZlcwMJAAACBQpvdXRBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQpvdXRBc3NldElkBBBzZW5kRmVlVG9NYXRjaGVyAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDm1hdGNoZXJBZGRyZXNzBQlmZWVBbW91bnQFEW91dEFzc2V0SWRPcldhdmVzBQNuaWwFA25pbAQIY3VyUHJYMTgJAQRjcGJpAgkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQFY3VyUHIJAQJmMQIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQt0b3RhbEFtb3VudAURb3V0QXNzZXRJZE9yV2F2ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQZwbXRBbXQFBWN1clByBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQVjdXJQcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQRidXJuBQRidXJuCQDOCAIFBXN0YXRlBRBzZW5kRmVlVG9NYXRjaGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BAFyCQECY2cBBQFpBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQMJAGYCBRJub0xlc3NUaGVuQW10QXNzZXQFCG91dEFtQW10CQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFCG91dEFtQW10AgMgPCAJAKQDAQUSbm9MZXNzVGhlbkFtdEFzc2V0AwkAZgIFFG5vTGVzc1RoZW5QcmljZUFzc2V0BQhvdXRQckFtdAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFCG91dFByQW10AgMgPCAJAKQDAQUUbm9MZXNzVGhlblByaWNlQXNzZXQEFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUUYnVybkxQQXNzZXRPbkZhY3RvcnkFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11bnN0YWtlQW5kR2V0AQZhbW91bnQEDWNoZWNrUGF5bWVudHMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQ1jaGVja1BheW1lbnRzBQ1jaGVja1BheW1lbnRzBANjZmcJAQNncGMABApmYWN0b3J5Q2ZnCQEDZ2ZjAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQKdW5zdGFrZUludgkA/AcEBQdzdGFraW5nAgd1bnN0YWtlCQDMCAIJANgEAQUJbHBBc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTAEAXYDAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQNzdHMGAwkAAAIFAXYFAXYEBWJ1cm5BCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBQVidXJuQQUFYnVybkEFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGFjdGl2YXRlAghhbXRBc1N0cgdwckFzU3RyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAKUIAQUDZmNhCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUIYW10QXNTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAnBhAAUHcHJBc1N0cgUDbmlsAgdzdWNjZXNzAWkBBHNldFMCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQELU3RyaW5nRW50cnkCBQFrBQF2BQNuaWwBaQEEc2V0SQIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQF2BQNuaWwBaQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQEDZ3BjAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAJwcgkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCcHIAAAkAzAgCCQCmAwEJAJEDAgUCcHIAAQkAzAgCCQCmAwEJAJEDAgUCcHIAAgUDbmlsAWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbAxyZXNTY2FsZU11bHQJAJQKAgUDbmlsCQECZjECCQCnAwEFA3ZhbAUMcmVzU2NhbGVNdWx0AWkBFHRvWDE4V3JhcHBlclJFQURPTkxZAgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJAJQKAgUDbmlsCQCmAwEJAQJ0MQIFB29yaWdWYWwFDW9yaWdTY2FsZU11bHQBaQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAghwckFtdFgxOAhhbUFtdFgxOAkAlAoCBQNuaWwJAKYDAQkBBGNwYmkCCQCnAwEFCHByQW10WDE4CQCnAwEFCGFtQW10WDE4AWkBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQHdXNyQWRkcgZpc0V2YWwGZW1pdExwCQCUCgIFA25pbAkBA2VwbwwFBnR4SWQ1OAUIc2xpcHBhZ2UFB2luQW1BbXQFBmluQW1JZAUHaW5QckFtdAUGaW5QcklkBQd1c3JBZGRyBQZpc0V2YWwFBmVtaXRMcAcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgHcG10QXNJZAhwbXRMcEFtdAd1c3JBZGRyBAFyCQEDZWdvBAUGdHhJZDU4BQdwbXRBc0lkBQhwbXRMcEFtdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmsFb49", "height": 2206984, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: tPf4ksgoCwRFPeNbEni32JhpqRVWJhpTG8KG5W8MtJu Next: 76B3JyPdR35s4XxTzgQNys4RzUZarvg8nshhFUsNQFpA Diff:
OldNewDifferences
655655 let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656656 let bj = invoke(dQ, "calcD", [toString(toBigInt(((dX + dZ) - ec))), toString(toBigInt(((dY + eb) - ea))), az, h, i], nil)
657657 if (true)
658- then throw(((toString(dX) + ", ") + toString(dY)))
658+ then throw(((((toString(dX) + ", ") + toString(dY)) + ", ") + ar(bk)))
659659 else {
660660 let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
661661 if ((ed == ed))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = 1000
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt((a - ((a * 1) / a)))
1717
1818 let h = "100"
1919
2020 let i = "1"
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 5
4343
4444 let u = 6
4545
4646 let v = 7
4747
4848 let w = 8
4949
5050 let x = 9
5151
5252 let y = 1
5353
5454 let z = 7
5555
5656 let A = 10
5757
5858 let B = 0
5959
6060 func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
6161
6262
6363 func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6464
6565
6666 func I (J,K,L) = fraction(J, K, L)
6767
6868
6969 func M (G) = if ((e > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N () = "%s__factoryContract"
7575
7676
7777 func O () = "%s__managerPublicKey"
7878
7979
8080 func P () = "%s__pendingManagerPublicKey"
8181
8282
8383 func Q () = "%s%s__price__last"
8484
8585
8686 func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8787
8888
8989 func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
9090
9191
9292 func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9393
9494
9595 func Y () = "%s__amountAsset"
9696
9797
9898 func Z () = "%s__priceAsset"
9999
100100
101101 func aa () = "%s__amp"
102102
103103
104104 func ab () = "%s__addonAddr"
105105
106106
107107 let ac = "%s__feePermille"
108108
109109 let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129129 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
132132 func ar (G) = {
133133 let as = G
134134 if ($isInstanceOf(as, "String"))
135135 then {
136136 let at = as
137137 at
138138 }
139139 else throw("fail cast to String")
140140 }
141141
142142
143143 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
144144
145145
146146 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147147
148148
149149 let ay = addressFromStringValue(au(this, N()))
150150
151151 let az = au(this, aa())
152152
153153 func aA () = valueOrElse(getBoolean(ay, al()), false)
154154
155155
156156 func aB () = fromBase58String(au(ay, af()))
157157
158158
159159 let aC = addressFromPublicKey(aB())
160160
161161 func aD () = {
162162 let aE = au(this, Y())
163163 let aF = au(this, Z())
164164 let aG = ax(ay, aj(aF))
165165 let ah = ax(ay, aj(aE))
166166 split(au(ay, ag(toString(ah), toString(aG))), j)
167167 }
168168
169169
170170 func aH () = split(au(ay, ae()), j)
171171
172172
173173 func aI (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS)], j)
174174
175175
176176 func aT (aU,aV,aW,aM,aP,aQ) = makeString(["%d%d%d%d%d%d", toString(aU), toString(aV), toString(aW), toString(aM), toString(aP), toString(aQ)], j)
177177
178178
179179 func aX (aY) = if ((aY == "WAVES"))
180180 then wavesBalance(this).available
181181 else assetBalance(this, fromBase58String(aY))
182182
183183
184184 func aZ (ba,bb) = fraction(ba, c, bb)
185185
186186
187187 func bc (bd,be,bf) = {
188188 let bg = fraction((bd - be), b, be)
189189 let bh = ((bf - M(bg)) > e)
190190 if (!(bh))
191191 then throw(("Big slpg: " + toString(bg)))
192192 else $Tuple2(bh, min([bd, be]))
193193 }
194194
195195
196196 func bi (bj,bk,bl) = {
197197 let bg = fraction(bk, b, bj)
198198 let bm = (bl > bg)
199199 if (if (bm)
200200 then true
201201 else (bk > bj))
202202 then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203203 else bm
204204 }
205205
206206
207207 func bn (bo,bp,bq,br) = {
208208 let bs = C(bq, bo)
209209 let bt = C(br, bp)
210210 aZ(bt, bs)
211211 }
212212
213213
214214 func bu (bq,br,bv) = {
215215 let bw = aD()
216216 let bx = parseIntValue(bw[u])
217217 let by = parseIntValue(bw[v])
218218 let bz = bn(bx, by, bq, br)
219219 let bb = C(bq, bx)
220220 let ba = C(br, by)
221221 let bA = C(bv, a)
222222 let bB = aZ(bb, bA)
223223 let bC = aZ(ba, bA)
224224 [bz, bB, bC]
225225 }
226226
227227
228228 func bD (bq,br,bv) = {
229229 let bE = bu(bq, br, bv)
230230 [F(bE[0], a), F(bE[1], a), F(bE[2], a)]
231231 }
232232
233233
234234 func bF (bG,bH,bI,bJ) = {
235235 let bw = aD()
236236 let bK = bw[r]
237237 let bL = bw[s]
238238 let bM = bw[t]
239239 let bN = parseIntValue(bw[u])
240240 let bO = parseIntValue(bw[v])
241241 let bP = bw[q]
242242 let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243243 if ((bK != bH))
244244 then throw("Wrong pmt asset")
245245 else {
246246 let bR = aX(bL)
247247 let bS = C(bR, bN)
248248 let bT = aX(bM)
249249 let bU = C(bT, bO)
250250 let bV = aZ(bU, bS)
251251 let bW = F(bV, a)
252252 let bX = C(bI, a)
253253 let bY = C(bQ, a)
254254 let bZ = fraction(bS, bX, bY)
255255 let ca = fraction(bU, bX, bY)
256256 let cb = F(bZ, bN)
257257 let cc = F(ca, bO)
258258 let cd = if ((bG == ""))
259259 then nil
260260 else [ScriptTransfer(bJ, cb, if ((bL == "WAVES"))
261261 then unit
262262 else fromBase58String(bL)), ScriptTransfer(bJ, cc, if ((bM == "WAVES"))
263263 then unit
264264 else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cb, cc, bI, bW, height, lastBlock.timestamp)), IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW)]
265265 $Tuple10(cb, cc, bL, bM, bR, bT, bQ, bV, bP, cd)
266266 }
267267 }
268268
269269
270270 func ce (bG,bf,cf,cg,ch,ci,bJ,cj,ck,cl,cm,cn) = {
271271 let bw = aD()
272272 let bK = fromBase58String(bw[r])
273273 let co = bw[s]
274274 let cp = bw[t]
275275 let cq = bw[w]
276276 let cr = bw[x]
277277 let cs = parseIntValue(bw[u])
278278 let ct = parseIntValue(bw[v])
279279 let bP = bw[q]
280280 let cu = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
281281 let bR = if (cj)
282282 then aX(co)
283283 else if (if (cl)
284284 then (cn == co)
285285 else false)
286286 then (aX(co) - cm)
287287 else if (cl)
288288 then aX(co)
289289 else (aX(co) - cf)
290290 let bT = if (cj)
291291 then aX(cp)
292292 else if (if (cl)
293293 then (cn == cp)
294294 else false)
295295 then (aX(cp) - cm)
296296 else if (cl)
297297 then aX(cp)
298298 else (aX(cp) - ch)
299299 let cv = C(cf, cs)
300300 let cw = C(ch, ct)
301301 let cx = aZ(cw, cv)
302302 let bS = C(bR, cs)
303303 let bU = C(bT, ct)
304304 let cy = if ((cu == 0))
305305 then {
306306 let bV = e
307307 let cz = e
308308 let bA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
309309 $Tuple5(F(bA, a), F(cv, cs), F(cw, ct), aZ((bU + cw), (bS + cv)), cz)
310310 }
311311 else {
312312 let bV = aZ(bU, bS)
313313 let cA = fraction(M((bV - cx)), c, bV)
314314 let cz = C(bf, a)
315315 if (if ((bV != e))
316316 then (cA > cz)
317317 else false)
318318 then throw(((("Price slippage " + toString(cA)) + " > ") + toString(cz)))
319319 else {
320320 let cB = C(cu, a)
321321 let cC = fraction(cv, bV, c)
322322 let cD = fraction(cw, c, bV)
323323 let cE = if ((cC > cw))
324324 then $Tuple2(cD, cw)
325325 else $Tuple2(cv, cC)
326326 let cF = cE._1
327327 let cG = cE._2
328328 let bA = fraction(cB, cG, bU)
329329 $Tuple5(F(bA, a), F(cF, cs), F(cG, ct), bV, cz)
330330 }
331331 }
332332 let cH = cy._1
333333 let cI = cy._2
334334 let cJ = cy._3
335335 let bW = F(cy._4, a)
336336 let cK = F(cy._5, a)
337337 if ((0 >= cH))
338338 then throw("LP <= 0")
339339 else {
340340 let cL = if (!(ck))
341341 then 0
342342 else cH
343343 let cM = (cf - cI)
344344 let cN = (ch - cJ)
345345 let cO = if (if (cl)
346346 then (cn == co)
347347 else false)
348348 then $Tuple2(cm, 0)
349349 else if (if (cl)
350350 then (cn == cp)
351351 else false)
352352 then $Tuple2(0, cm)
353353 else $Tuple2(cI, cJ)
354354 let cP = cO._1
355355 let cQ = cO._2
356356 let cR = [IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW), StringEntry(U(bJ, bG), aI(cP, cQ, cL, bW, bf, cK, height, lastBlock.timestamp, cM, cN))]
357357 $Tuple13(cH, cL, bW, bR, bT, cu, bK, bP, cR, cM, cN, cg, ci)
358358 }
359359 }
360360
361361
362362 func cS (cT) = {
363363 let bw = aD()
364364 let cU = bw[s]
365365 let cV = bw[t]
366366 let bP = parseIntValue(bw[q])
367367 let bx = parseIntValue(bw[u])
368368 let by = parseIntValue(bw[v])
369369 let cW = aX(cU)
370370 let cX = aX(cV)
371371 let bV = if ((cT.orderType == Buy))
372372 then bn(bx, by, (cW + cT.amount), cX)
373373 else bn(bx, by, (cW - cT.amount), cX)
374374 let bW = F(bV, a)
375375 if (if (if (aA())
376376 then true
377377 else (bP == n))
378378 then true
379379 else (bP == o))
380380 then throw("Admin blocked")
381381 else {
382382 let cY = cT.assetPair.amountAsset
383383 let cZ = if ((cY == unit))
384384 then "WAVES"
385385 else toBase58String(value(cY))
386386 let da = cT.assetPair.priceAsset
387387 let db = if ((da == unit))
388388 then "WAVES"
389389 else toBase58String(value(da))
390390 if (if ((cZ != cU))
391391 then true
392392 else (db != cV))
393393 then throw("Wr assets")
394394 else {
395395 let dc = cT.price
396396 let ct = fraction(a, by, bx)
397397 let dd = I(dc, a, ct)
398398 let de = if ((cT.orderType == Buy))
399399 then (bW >= dd)
400400 else (dd >= bW)
401401 true
402402 }
403403 }
404404 }
405405
406406
407407 func df (dg) = if ((size(dg.payments) != 1))
408408 then throw("1 pmnt exp")
409409 else {
410410 let dh = value(dg.payments[0])
411411 let bH = value(dh.assetId)
412412 let cm = dh.amount
413413 let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
414414 let cb = cy._1
415415 let cc = cy._2
416416 let bP = parseIntValue(cy._9)
417417 let cd = cy._10
418418 if (if (aA())
419419 then true
420420 else (bP == o))
421421 then throw(("Admin blocked: " + toString(bP)))
422422 else $Tuple5(cb, cc, cm, bH, cd)
423423 }
424424
425425
426426 func di (dj,W,dk,dl,bf,ck,cl,cm,cn) = {
427427 let cy = ce(W, bf, value(dk).amount, value(dk).assetId, value(dl).amount, value(dl).assetId, dj, false, ck, cl, cm, cn)
428428 let bP = parseIntValue(cy._8)
429429 if (if (if (aA())
430430 then true
431431 else (bP == m))
432432 then true
433433 else (bP == o))
434434 then throw(("Blocked:" + toString(bP)))
435435 else cy
436436 }
437437
438438
439439 func dm (dn) = {
440440 let do = fraction(dn, ad, d)
441441 $Tuple2((dn - do), do)
442442 }
443443
444444
445445 func dp () = {
446446 let as = getString(O())
447447 if ($isInstanceOf(as, "String"))
448448 then {
449449 let dq = as
450450 fromBase58String(dq)
451451 }
452452 else if ($isInstanceOf(as, "Unit"))
453453 then unit
454454 else throw("Match error")
455455 }
456456
457457
458458 func dr () = {
459459 let as = getString(P())
460460 if ($isInstanceOf(as, "String"))
461461 then {
462462 let dq = as
463463 fromBase58String(dq)
464464 }
465465 else if ($isInstanceOf(as, "Unit"))
466466 then unit
467467 else throw("Match error")
468468 }
469469
470470
471471 let ds = throw("Permission denied")
472472
473473 func dt (dg) = {
474474 let as = dp()
475475 if ($isInstanceOf(as, "ByteVector"))
476476 then {
477477 let du = as
478478 if ((dg.callerPublicKey == du))
479479 then true
480480 else ds
481481 }
482482 else if ($isInstanceOf(as, "Unit"))
483483 then if ((dg.caller == this))
484484 then true
485485 else ds
486486 else throw("Match error")
487487 }
488488
489489
490490 @Callable(dg)
491491 func constructor (N) = {
492492 let dv = dt(dg)
493493 if ((dv == dv))
494494 then [StringEntry(N(), N)]
495495 else throw("Strict value is not equal to itself.")
496496 }
497497
498498
499499
500500 @Callable(dg)
501501 func setManager (dw) = {
502502 let dv = dt(dg)
503503 if ((dv == dv))
504504 then {
505505 let dx = fromBase58String(dw)
506506 if ((dx == dx))
507507 then [StringEntry(P(), dw)]
508508 else throw("Strict value is not equal to itself.")
509509 }
510510 else throw("Strict value is not equal to itself.")
511511 }
512512
513513
514514
515515 @Callable(dg)
516516 func confirmManager () = {
517517 let bE = dr()
518518 let dy = if (isDefined(bE))
519519 then true
520520 else throw("No pending manager")
521521 if ((dy == dy))
522522 then {
523523 let dz = if ((dg.callerPublicKey == value(bE)))
524524 then true
525525 else throw("You are not pending manager")
526526 if ((dz == dz))
527527 then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
528528 else throw("Strict value is not equal to itself.")
529529 }
530530 else throw("Strict value is not equal to itself.")
531531 }
532532
533533
534534
535535 @Callable(dg)
536536 func put (dA,dB) = {
537537 let dC = aH()
538538 let dD = valueOrErrorMessage(addressFromString(dC[y]), "Wr st addr")
539539 let dE = valueOrErrorMessage(addressFromString(dC[z]), "Wr sl addr")
540540 if ((0 > dA))
541541 then throw("Wrong slippage")
542542 else if ((size(dg.payments) != 2))
543543 then throw("2 pmnts expd")
544544 else {
545545 let dF = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], dA, true, false, 0, "")
546546 let cL = dF._2
547547 let dG = dF._7
548548 let cd = dF._9
549549 let cM = dF._10
550550 let cN = dF._11
551551 let bL = dF._12
552552 let bM = dF._13
553553 let cy = invoke(ay, "emit", [cL], nil)
554554 if ((cy == cy))
555555 then {
556556 let dH = {
557557 let as = cy
558558 if ($isInstanceOf(as, "Address"))
559559 then {
560560 let dI = as
561561 invoke(dI, "emit", [cL], nil)
562562 }
563563 else unit
564564 }
565565 if ((dH == dH))
566566 then {
567567 let dJ = if ((cM > 0))
568568 then invoke(dE, "put", nil, [AttachedPayment(bL, cM)])
569569 else nil
570570 if ((dJ == dJ))
571571 then {
572572 let dK = if ((cN > 0))
573573 then invoke(dE, "put", nil, [AttachedPayment(bM, cN)])
574574 else nil
575575 if ((dK == dK))
576576 then {
577577 let dL = if (dB)
578578 then {
579579 let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
580580 if ((dM == dM))
581581 then nil
582582 else throw("Strict value is not equal to itself.")
583583 }
584584 else [ScriptTransfer(dg.caller, cL, dG)]
585585 (cd ++ dL)
586586 }
587587 else throw("Strict value is not equal to itself.")
588588 }
589589 else throw("Strict value is not equal to itself.")
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595 }
596596
597597
598598
599599 @Callable(dg)
600600 func putOneTkn (dN,dO,dP,bf,dB) = {
601601 let bw = aH()
602602 let dD = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
603603 let dE = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
604604 let dQ = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
605605 let dR = aD()
606606 let bL = dR[s]
607607 let bM = dR[t]
608608 let bN = parseIntValue(dR[u])
609609 let bO = parseIntValue(dR[v])
610610 let dS = valueOrElse(getString(this, ab()), "")
611611 let bJ = if ((dS == toString(dg.caller)))
612612 then dg.originCaller
613613 else dg.caller
614614 if (if (if (if ((0 >= bf))
615615 then true
616616 else (0 >= dN))
617617 then true
618618 else (0 >= dO))
619619 then true
620620 else (0 >= dP))
621621 then throw("Wrong params")
622622 else if ((size(dg.payments) != 1))
623623 then throw("1 pmnt expd")
624624 else {
625625 let dh = value(dg.payments[0])
626626 let bH = toBase58String(value(dh.assetId))
627627 let dT = dh.amount
628628 let dU = dm(dT)
629629 let cm = dU._1
630630 let dV = dU._2
631631 if ((10000000 > dT))
632632 then throw("Wrong pmt amt")
633633 else {
634634 let bR = aX(bL)
635635 let bT = aX(bM)
636636 let dW = if ((bH == bL))
637637 then if (if ((cm > bR))
638638 then true
639639 else (dN > cm))
640640 then throw("invalid payment amount")
641641 else $Tuple6((bR - cm), bT, (cm - dN), dO, 0, 0)
642642 else if ((bH == bM))
643643 then if (if ((cm > bT))
644644 then true
645645 else (dO > cm))
646646 then throw("invalid payment amount")
647647 else $Tuple6(bR, (bT - cm), 0, 0, (cm - dO), dN)
648648 else throw("wrong pmtAssetId")
649649 let dX = dW._1
650650 let dY = dW._2
651651 let dZ = dW._3
652652 let ea = dW._4
653653 let eb = dW._5
654654 let ec = dW._6
655655 let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656656 let bj = invoke(dQ, "calcD", [toString(toBigInt(((dX + dZ) - ec))), toString(toBigInt(((dY + eb) - ea))), az, h, i], nil)
657657 if (true)
658- then throw(((toString(dX) + ", ") + toString(dY)))
658+ then throw(((((toString(dX) + ", ") + toString(dY)) + ", ") + ar(bk)))
659659 else {
660660 let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
661661 if ((ed == ed))
662662 then {
663663 let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
664664 let ef = ee._2
665665 let dG = ee._7
666666 let cd = ee._9
667667 let cM = ee._10
668668 let cN = ee._11
669669 let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
670670 let cL = toInt(eg._2)
671671 let dF = invoke(ay, "emit", [cL], nil)
672672 if ((dF == dF))
673673 then {
674674 let dH = {
675675 let as = dF
676676 if ($isInstanceOf(as, "Address"))
677677 then {
678678 let dI = as
679679 invoke(dI, "emit", [cL], nil)
680680 }
681681 else unit
682682 }
683683 if ((dH == dH))
684684 then {
685685 let dJ = if ((cM > 0))
686686 then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
687687 else nil
688688 if ((dJ == dJ))
689689 then {
690690 let dK = if ((cN > 0))
691691 then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
692692 else nil
693693 if ((dK == dK))
694694 then {
695695 let dL = if (dB)
696696 then {
697697 let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
698698 if ((dM == dM))
699699 then nil
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else [ScriptTransfer(dg.caller, cL, dG)]
703703 let eh = if ((dV > 0))
704704 then [ScriptTransfer(aC, dV, fromBase58String(bH))]
705705 else nil
706706 ((cd ++ dL) ++ eh)
707707 }
708708 else throw("Strict value is not equal to itself.")
709709 }
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716 else throw("Strict value is not equal to itself.")
717717 }
718718 }
719719 }
720720 }
721721
722722
723723
724724 @Callable(dg)
725725 func putForFree (ei) = if ((0 > ei))
726726 then throw("Wrong slpg")
727727 else if ((size(dg.payments) != 2))
728728 then throw("2 pmnts expd")
729729 else {
730730 let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], ei, false, false, 0, "")
731731 ee._9
732732 }
733733
734734
735735
736736 @Callable(dg)
737737 func get () = {
738738 let cy = df(dg)
739739 let ej = cy._1
740740 let cc = cy._2
741741 let cm = cy._3
742742 let bH = cy._4
743743 let cd = cy._5
744744 let ek = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
745745 if ((ek == ek))
746746 then cd
747747 else throw("Strict value is not equal to itself.")
748748 }
749749
750750
751751
752752 @Callable(dg)
753753 func getOneTkn (el,em,en,eo,bf) = if ((size(dg.payments) != 1))
754754 then throw("1 pmnt expd")
755755 else {
756756 let bw = aD()
757757 let bK = bw[r]
758758 let bL = bw[s]
759759 let bM = bw[t]
760760 let bN = parseIntValue(bw[u])
761761 let bO = parseIntValue(bw[v])
762762 let bP = bw[q]
763763 let dC = aH()
764764 let dQ = valueOrErrorMessage(addressFromString(dC[A]), "Wr sl addr")
765765 let dh = value(dg.payments[0])
766766 let dS = valueOrElse(getString(this, ab()), "")
767767 let bJ = if ((dS == toString(dg.caller)))
768768 then dg.originCaller
769769 else dg.caller
770770 let bG = toBase58String(dg.transactionId)
771771 let bH = value(dh.assetId)
772772 let cm = dh.amount
773773 if ((1000000000 > cm))
774774 then throw("Min pmt 10 LP")
775775 else if (if (if ((0 > bf))
776776 then true
777777 else (0 > el))
778778 then true
779779 else (0 > en))
780780 then throw("Wrong params")
781781 else if ((bK != toBase58String(bH)))
782782 then throw("Wrong LP")
783783 else {
784784 let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
785785 let ep = cy._1
786786 let eq = cy._2
787787 let bR = aX(bL)
788788 let bT = aX(bM)
789789 let er = if ((eo == bL))
790790 then $Tuple7((bR - ep), (bT - eq), el, eq, 0, 0, (ep + el))
791791 else if ((eo == bM))
792792 then $Tuple7((bR - ep), (bT - eq), 0, 0, el, ep, (eq + el))
793793 else throw("wrong outAssetId")
794794 let dX = er._1
795795 let dY = er._2
796796 let dZ = er._3
797797 let ea = er._4
798798 let eb = er._5
799799 let ec = er._6
800800 let es = er._7
801801 if (if ((0 > dZ))
802802 then true
803803 else (0 > eb))
804804 then throw("Wrong calc")
805805 else {
806806 let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
807807 let bj = invoke(dQ, "calcD", [toString(((dX - dZ) + ec)), toString(((dY + ea) - eb)), az, h, i], nil)
808808 let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
809809 if ((ed == ed))
810810 then {
811811 let et = dm(es)._1
812812 let eu = bc(toBigInt(et), toBigInt(en), toBigInt(bf))
813813 if ((eu == eu))
814814 then {
815815 let ev = if ((eo == bL))
816816 then $Tuple2(toInt(eu._2), 0)
817817 else $Tuple2(0, toInt(eu._2))
818818 let ew = ev._1
819819 let ex = ev._2
820820 let ey = (ew + ex)
821821 let dV = (es - et)
822822 let ez = if ((eo == "WAVES"))
823823 then unit
824824 else fromBase58String(eo)
825825 let eh = if ((dV > 0))
826826 then [ScriptTransfer(aC, dV, ez)]
827827 else nil
828828 let eA = aZ(C(bT, bO), C(bR, bN))
829829 let eB = F(eA, a)
830830 let cd = [ScriptTransfer(bJ, ey, ez), StringEntry(X(toString(bJ), bG), aT(ew, ex, cm, eB, height, lastBlock.timestamp)), IntegerEntry(Q(), eB), IntegerEntry(R(height, lastBlock.timestamp), eB)]
831831 if ((cd == cd))
832832 then {
833833 let eC = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
834834 if ((eC == eC))
835835 then (cd ++ eh)
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840 else throw("Strict value is not equal to itself.")
841841 }
842842 else throw("Strict value is not equal to itself.")
843843 }
844844 }
845845 }
846846
847847
848848
849849 @Callable(dg)
850850 func getNoLess (eD,eE) = {
851851 let cy = df(dg)
852852 let cb = cy._1
853853 let cc = cy._2
854854 let cm = cy._3
855855 let bH = cy._4
856856 let cd = cy._5
857857 if ((eD > cb))
858858 then throw(((("Failed: " + toString(cb)) + " < ") + toString(eD)))
859859 else if ((eE > cc))
860860 then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
861861 else {
862862 let eF = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
863863 if ((eF == eF))
864864 then cd
865865 else throw("Strict value is not equal to itself.")
866866 }
867867 }
868868
869869
870870
871871 @Callable(dg)
872872 func unstakeAndGet (dn) = {
873873 let eG = if ((size(dg.payments) != 0))
874874 then throw("No pmnts expd")
875875 else true
876876 if ((eG == eG))
877877 then {
878878 let bw = aD()
879879 let eH = aH()
880880 let dG = fromBase58String(bw[r])
881881 let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
882882 let eJ = invoke(eI, "unstake", [toBase58String(dG), dn], nil)
883883 if ((eJ == eJ))
884884 then {
885885 let cy = bF(toBase58String(dg.transactionId), toBase58String(dG), dn, dg.caller)
886886 let bP = parseIntValue(cy._9)
887887 let cd = cy._10
888888 let eK = if (if (aA())
889889 then true
890890 else (bP == o))
891891 then throw(("Blocked: " + toString(bP)))
892892 else true
893893 if ((eK == eK))
894894 then {
895895 let eL = invoke(ay, "burn", [dn], [AttachedPayment(dG, dn)])
896896 if ((eL == eL))
897897 then cd
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else throw("Strict value is not equal to itself.")
901901 }
902902 else throw("Strict value is not equal to itself.")
903903 }
904904 else throw("Strict value is not equal to itself.")
905905 }
906906
907907
908908
909909 @Callable(dg)
910910 func activate (eM,eN) = if ((toString(dg.caller) != toString(ay)))
911911 then throw("denied")
912912 else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
913913
914914
915915
916916 @Callable(dg)
917917 func setS (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
918918 then ds
919919 else [StringEntry(eO, eK)]
920920
921921
922922
923923 @Callable(dg)
924924 func setI (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
925925 then ds
926926 else [IntegerEntry(eO, eK)]
927927
928928
929929
930930 @Callable(dg)
931931 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
932932
933933
934934
935935 @Callable(dg)
936936 func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
937937
938938
939939
940940 @Callable(dg)
941941 func calcPricesWrapperREADONLY (bq,br,bv) = {
942942 let eP = bu(bq, br, bv)
943943 $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
944944 }
945945
946946
947947
948948 @Callable(dg)
949949 func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
950950
951951
952952
953953 @Callable(dg)
954954 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
955955
956956
957957
958958 @Callable(dg)
959959 func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
960960
961961
962962
963963 @Callable(dg)
964964 func estimatePutOperationWrapperREADONLY (bG,bf,cf,cg,ch,ci,eR,cj,ck) = $Tuple2(nil, ce(bG, bf, cf, cg, ch, ci, eR, cj, ck, false, 0, ""))
965965
966966
967967
968968 @Callable(dg)
969969 func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
970970 let cy = bF(bG, eS, bI, addressFromStringValue(eR))
971971 $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
972972 }
973973
974974
975975 @Verifier(eT)
976976 func eU () = {
977977 let eV = {
978978 let as = dp()
979979 if ($isInstanceOf(as, "ByteVector"))
980980 then {
981981 let du = as
982982 du
983983 }
984984 else if ($isInstanceOf(as, "Unit"))
985985 then eT.senderPublicKey
986986 else throw("Match error")
987987 }
988988 let as = eT
989989 if ($isInstanceOf(as, "Order"))
990990 then {
991991 let cT = as
992992 let eW = aB()
993993 let eX = cS(cT)
994994 let eY = sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
995995 let eZ = sigVerify(cT.bodyBytes, cT.proofs[1], eW)
996996 if (if (if (eX)
997997 then eY
998998 else false)
999999 then eZ
10001000 else false)
10011001 then true
10021002 else an(eX, eY, eZ)
10031003 }
10041004 else if ($isInstanceOf(as, "SetScriptTransaction"))
10051005 then {
10061006 let dq = as
10071007 let fa = blake2b256(value(dq.script))
10081008 let fb = fromBase64String(value(getString(ay, am())))
10091009 let fc = scriptHash(this)
10101010 if (if ((fb == fa))
10111011 then (fc != fa)
10121012 else false)
10131013 then true
10141014 else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10151015 }
10161016 else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10171017 }
10181018

github/deemru/w8io/026f985 
97.63 ms