tx · Hmt2U1HBWakXvid12118nvFqEyxFqneteFfGBCYMEsos

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03100000 Waves

2022.09.12 14:50 [2225842] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "Hmt2U1HBWakXvid12118nvFqEyxFqneteFfGBCYMEsos", "fee": 3100000, "feeAssetId": null, "timestamp": 1662983425017, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "4c4EsXFXhoX3BXkuPYZ2PqcamuJVfeZ33RkdM5qV23g4sCmWZ6x9eeTqVfCtPwiHvnJcrf1kWM9NVS33eStyGq98" ], "script": "base64:BgKGAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgUKAwEBBBIDCgEBEgASBwoFAQEBCAESBAoCAQESAwoBARIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEITgAGc2NhbGU4AIDC1y8ADHNjYWxlOEJpZ0ludAkAtgIBAIDC1y8AB3NjYWxlMTgJALYCAQCAgJC7utat8A0ACnplcm9CaWdJbnQJALYCAQAAAAlvbmVCaWdJbnQJALYCAQABAApzbGlwcGFnZTRECQC2AgEJAGUCBQZzY2FsZTgJAGkCCQBoAgUGc2NhbGU4AAEFBnNjYWxlOAAFQW11bHQCAzEwMAAFRGNvbnYCATEAA1NFUAICX18ABUVNUFRZAgAAClBvb2xBY3RpdmUAAQAKUG9vbFB1dERpcwACAA5Qb29sTWF0Y2hlckRpcwADAAxQb29sU2h1dGRvd24ABAAOaWR4UG9vbEFkZHJlc3MAAQAJaWR4UG9vbFN0AAIACWlkeExQQXNJZAADAAlpZHhBbUFzSWQABAAJaWR4UHJBc0lkAAUAC2lkeEFtdEFzRGNtAAYADWlkeFByaWNlQXNEY20ABwALaWR4SUFtdEFzSWQACAANaWR4SVByaWNlQXNJZAAJAA9pZHhGYWN0U3Rha0NudHIAAQAQaWR4RmFjdFNsaXBwQ250cgAHABFpZHhGYWN0R3d4UmV3Q250cgAKAAVkZWxheQIJJXNfX2RlbGF5AQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAQVsZ290YwEGY2FsbGVyCQC5CQIJAMwIAgIXJXMlc19fbGFzdEdldE9uZVRrbkNhbGwJAMwIAgUGY2FsbGVyBQNuaWwFA1NFUAEFbHNvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RQdXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBGZjZmcAAhElc19fZmFjdG9yeUNvbmZpZwEEbXRwawACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECcGMCBmlBbXRBcwVpUHJBcwkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUGaUFtdEFzAgJfXwUFaVByQXMCCF9fY29uZmlnAQNtYmEBBWJBU3RyCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FBWJBU3RyAQNhcHMAAgwlc19fc2h1dGRvd24BHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAEDdG9lAwNvclYGc2VuZHJWBm1hdGNoVgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQNvclYCCyBzbmRyVmFsaWQ9CQClAwEFBnNlbmRyVgIMIG10Y2hyVmFsaWQ9CQClAwEFBm1hdGNoVgEDc3RyAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwEEc3RyZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQRpbnRmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgAAA2ZjYQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBHN0cmYCBQR0aGlzCQECZmMAAAFBCQEEc3RyZgIFBHRoaXMJAQNhbXAAAQNpZ3MACQELdmFsdWVPckVsc2UCCQCbCAIFA2ZjYQkBA2FwcwAHAQJtcAAJANkEAQkBBHN0cmYCBQNmY2EJAQRtdHBrAAEDZ3BjAAQFYW10QXMJAQRzdHJmAgUEdGhpcwkBAmFhAAQHcHJpY2VBcwkBBHN0cmYCBQR0aGlzCQECcGEABAhpUHJpY2VBcwkBBGludGYCBQNmY2EJAQNtYmEBBQdwcmljZUFzBAZpQW10QXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUFYW10QXMJALUJAgkBBHN0cmYCBQNmY2EJAQJwYwIJAKQDAQUGaUFtdEFzCQCkAwEFCGlQcmljZUFzBQNTRVABA2dmYwAJALUJAgkBBHN0cmYCBQNmY2EJAQRmY2ZnAAUDU0VQARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQRjcGJpAghwckFtdFgxOAhhbUFtdFgxOAkAvAIDBQhwckFtdFgxOAUHc2NhbGUxOAUIYW1BbXRYMTgBA3ZhZAMCQTECQTIIc2xpcHBhZ2UEBGRpZmYJALwCAwkAuAICBQJBMQUCQTIFDHNjYWxlOEJpZ0ludAUCQTIEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUCQTEJAMwIAgUCQTIFA25pbAECdmQDAkQxAkQwBHNscGcEBGRpZmYJALwCAwUCRDAFDHNjYWxlOEJpZ0ludAUCRDEEBGZhaWwJAL8CAgUEc2xwZwUEZGlmZgMDBQRmYWlsBgkAvwICBQJEMAUCRDEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAkQwAgEgCQCmAwEFAkQxAgEgCQCmAwEFBGRpZmYCASAJAKYDAQUEc2xwZwUEZmFpbAEDcGNwBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQECdDECBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBAnQxAgUFcHJBbXQFCnByQXNzZXREY20JAQRjcGJpAgUKcHJBc0FtdFgxOAULYW10QXNBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQNncGMABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQJ0MQIFBWFtQW10BQhhbXRBc0RjbQQIcHJBbXRYMTgJAQJ0MQIFBXByQW10BQdwckFzRGNtBAhscEFtdFgxOAkBAnQxAgUFbHBBbXQFBnNjYWxlOAQNbHBQckluQW1Bc1gxOAkBBGNwYmkCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQRjcGJpAgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFDWxwUHJJbkFtQXNYMTgJAMwIAgUNbHBQckluUHJBc1gxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAFwCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBAmYxAgkAkQMCBQFwAAAFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAACBQZzY2FsZTgFA25pbAEDZWdvBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdscEVtaXNzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUEbHBJZAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQRscElkBQpwbXRBc3NldElkCQACAQIPV3JvbmcgcG10IGFzc2V0BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFBXByRGNtBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgECG91dEFtQW10CQECZjECBQtvdXRBbUFtdFgxOAUFYW1EY20ECG91dFByQW10CQECZjECBQtvdXRQckFtdFgxOAUFcHJEY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFBGFtSWQCBVdBVkVTBQR1bml0CQDZBAEFBGFtSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFBHBySWQCBVdBVkVTBQR1bml0CQDZBAEFBHBySWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUEYW1JZAUEcHJJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFB2xwRW1pc3MFC2N1clByaWNlWDE4BQNzdHMFBXN0YXRlAQNlcG8MBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAt1c2VyQWRkcmVzcwZpc0V2YWwGZW1pdExwCmlzT25lQXNzZXQGcG10QW10BXBtdElkBANjZmcJAQNncGMABARscElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB2FtSWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3BySWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQECWluQW1JZFN0cgkAkQMCBQNjZmcFC2lkeElBbXRBc0lkBAlpblBySWRTdHIJAJEDAgUDY2ZnBQ1pZHhJUHJpY2VBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAhwcmljZURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BARscEVtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBGxwSWQCCFdyIGxwIGFzCHF1YW50aXR5BAlhbUJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFB2luQW1BbXQECXByQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUHaW5QckFtdAQPaW5BbUFzc2V0QW10WDE4CQECdDECBQdpbkFtQW10BQZhbXREY20ED2luUHJBc3NldEFtdFgxOAkBAnQxAgUHaW5QckFtdAUIcHJpY2VEY20EDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBmFtdERjbQQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFCHByaWNlRGNtBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUGYW10RGNtCQECZjECBQ9pblByQXNzZXRBbXRYMTgFCHByaWNlRGNtCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQ9zbGlwcGFnZVJlYWxYMTgCAyA+IAkApgMBBQtzbGlwcGFnZVgxOAQNbHBFbWlzc2lvblgxOAkBAnQxAgUEbHBFbQUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgECmFtVmlhUHJYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBRFleHBBbXRBc3NldEFtdFgxOAUGYW10RGNtCQECZjECBRNleHBQcmljZUFzc2V0QW10WDE4BQhwcmljZURjbQULY3VyUHJpY2VYMTgFC3NsaXBwYWdlWDE4BAljYWxjTHBBbXQIBQFyAl8xBA5jYWxjQW1Bc3NldFBtdAgFAXICXzIEDmNhbGNQckFzc2V0UG10CAUBcgJfMwQIY3VyUHJpY2UJAQJmMQIIBQFyAl80BQZzY2FsZTgEDHNsaXBwYWdlQ2FsYwkBAmYxAggFAXICXzUFBnNjYWxlOAMJAGcCAAAFCWNhbGNMcEFtdAkAAgECB0xQIDw9IDAECWVtaXRMcEFtdAMJAQEhAQUGZW1pdExwAAAFCWNhbGNMcEFtdAQGYW1EaWZmCQBlAgUHaW5BbUFtdAUOY2FsY0FtQXNzZXRQbXQEBnByRGlmZgkAZQIFB2luUHJBbXQFDmNhbGNQckFzc2V0UG10BA0kdDAxNTYwMTE1OTQ2AwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAJQKAgUGcG10QW10AAADAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAlAoCAAAFBnBtdEFtdAkAlAoCBQ5jYWxjQW1Bc3NldFBtdAUOY2FsY1ByQXNzZXRQbXQECndyaXRlQW1BbXQIBQ0kdDAxNTYwMTE1OTQ2Al8xBAp3cml0ZVByQW10CAUNJHQwMTU2MDExNTk0NgJfMgQLY29tbW9uU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQEDcGF1AgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUKd3JpdGVBbUFtdAUKd3JpdGVQckFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUIc2xpcHBhZ2UFDHNsaXBwYWdlQ2FsYwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUGYW1EaWZmBQZwckRpZmYFA25pbAkAnwoNBQljYWxjTHBBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQRscEVtBQRscElkBQNzdHMFC2NvbW1vblN0YXRlBQZhbURpZmYFBnByRGlmZgUGaW5BbUlkBQZpblBySWQBA21vYQEFb3JkZXIEA2NmZwkBA2dwYwAEB2FtdEFzSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBnByQXNJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQlpZHhQb29sU3QECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQPYWNjQW10QXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB2FtdEFzSWQEDmFjY1ByQXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBnByQXNJZAQLY3VyUHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGQCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlCQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGUCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlBAhjdXJQcmljZQkBAmYxAgULY3VyUHJpY2VYMTgFBnNjYWxlOAMDAwkBA2lncwAGCQAAAgUDc3RzBQ5Qb29sTWF0Y2hlckRpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgECDUFkbWluIGJsb2NrZWQECm9yQW10QXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BApvckFtdEFzU3RyAwkAAAIFCm9yQW10QXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCm9yQW10QXNzZXQECW9yUHJBc3NldAgIBQVvcmRlcglhc3NldFBhaXIKcHJpY2VBc3NldAQJb3JQckFzU3RyAwkAAAIFCW9yUHJBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUJb3JQckFzc2V0AwMJAQIhPQIFCm9yQW10QXNTdHIFB2FtdEFzSWQGCQECIT0CBQlvclByQXNTdHIFBnByQXNJZAkAAgECCVdyIGFzc2V0cwQKb3JkZXJQcmljZQgFBW9yZGVyBXByaWNlBAhwcmljZURjbQkAawMFBnNjYWxlOAUHcHJBc0RjbQUIYW10QXNEY20EDmNhc3RPcmRlclByaWNlCQECdHMDBQpvcmRlclByaWNlBQZzY2FsZTgFCHByaWNlRGNtBBFpc09yZGVyUHJpY2VWYWxpZAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAGcCBQhjdXJQcmljZQUOY2FzdE9yZGVyUHJpY2UJAGcCBQ5jYXN0T3JkZXJQcmljZQUIY3VyUHJpY2UGAQJjZwEBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTADAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQNzdHMJAJcKBQUIb3V0QW1BbXQFCG91dFByQW10BQZwbXRBbXQFCnBtdEFzc2V0SWQFBXN0YXRlAQJjcAkGY2FsbGVyBHR4SWQHYW1Bc1BtdAdwckFzUG10CHNsaXBwYWdlBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQBcgkBA2VwbwwFBHR4SWQFCHNsaXBwYWdlCAkBBXZhbHVlAQUHYW1Bc1BtdAZhbW91bnQICQEFdmFsdWUBBQdhbUFzUG10B2Fzc2V0SWQICQEFdmFsdWUBBQdwckFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB3ByQXNQbXQHYXNzZXRJZAUGY2FsbGVyBwUGZW1pdExwBQppc09uZUFzc2V0BQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyAQFtAAQHJG1hdGNoMAkAoggBCQEDbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAnBtAAQHJG1hdGNoMAkAoggBCQEEcG1wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJtbQEBaQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IWAWkBC2NvbnN0cnVjdG9yAQJmYwQBYwkBAm1tAQUBaQMJAAACBQFjBQFjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJmYwAFAmZjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwQCY20JANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUCY20FAmNtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQRwbXBrAAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAXAJAQJwbQAEA2hwbQMJAQlpc0RlZmluZWQBBQFwBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQNocG0FA2hwbQQDY3BtAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUBcAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDY3BtBQNjcG0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBA21wawAJANgEAQkBBXZhbHVlAQUBcAkAzAgCCQELRGVsZXRlRW50cnkBCQEEcG1wawAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCBHNsaXAJYXV0b1N0YWtlBAdmYWN0Q2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIDCQBmAgAABQRzbGlwCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAWUJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFBHNsaXAGBwAAAgAECWVtaXRMcEFtdAgFAWUCXzIECWxwQXNzZXRJZAgFAWUCXzcEBXN0YXRlCAUBZQJfOQQGYW1EaWZmCAUBZQNfMTAEBnByRGlmZggFAWUDXzExBARhbUlkCAUBZQNfMTIEBHBySWQIBQFlA18xMwQBcgkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFyBQFyBAJlbAQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlwdXRPbmVUa24FC2FtQXNzZXRQYXJ0C3ByQXNzZXRQYXJ0BW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyBAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgtXciBnd3ggYWRkcgQHcG9vbENmZwkBA2dwYwAEBGFtSWQJAJEDAgUHcG9vbENmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFB3Bvb2xDZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBA1hZGRvbkNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQNhZGEAAglubyBhZGRvbnMCGmFkZG9uIGFkZHJlc3MgaW4gbm90IHZhbGlkBAVjaGVjawkA/QcEBQ1hZGRvbkNvbnRyYWN0AhJlbnN1cmVDYW5QdXRPbmVUa24JAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwMDAwkAZwIAAAUIc2xpcHBhZ2UGCQBnAgAABQthbUFzc2V0UGFydAYJAGcCAAAFC3ByQXNzZXRQYXJ0BgkAZwIAAAUFb3V0THAJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50AwkAZgIAgK3iBAUGcG10QW10CQACAQINV3JvbmcgcG10IGFtdAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBA0kdDAyNDg1OTI1NDM1AwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQDAwkAZgIFBnBtdEFtdAUJYW1CYWxhbmNlBgkAZgIFC2FtQXNzZXRQYXJ0BQZwbXRBbXQJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYJAGUCBQlhbUJhbGFuY2UFBnBtdEFtdAUJcHJCYWxhbmNlCQBlAgUGcG10QW10BQthbUFzc2V0UGFydAULcHJBc3NldFBhcnQAAAAAAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDAwkAZgIFBnBtdEFtdAUJcHJCYWxhbmNlBgkAZgIFC3ByQXNzZXRQYXJ0BQZwbXRBbXQJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYFCWFtQmFsYW5jZQkAZQIFCXByQmFsYW5jZQUGcG10QW10AAAAAAkAZQIFBnBtdEFtdAULcHJBc3NldFBhcnQFC2FtQXNzZXRQYXJ0CQACAQIQd3JvbmcgcG10QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMjQ4NTkyNTQzNQJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMjQ4NTkyNTQzNQJfMgQMdmlydFN3YXBJbkFtCAUNJHQwMjQ4NTkyNTQzNQJfMwQNdmlydFN3YXBPdXRQcggFDSR0MDI0ODU5MjU0MzUCXzQEDHZpcnRTd2FwSW5QcggFDSR0MDI0ODU5MjU0MzUCXzUEDXZpcnRTd2FwT3V0QW0IBQ0kdDAyNDg1OTI1NDM1Al82BAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUMcHJCYWxhbmNlTm93BQx2aXJ0U3dhcEluUHIFDXZpcnRTd2FwT3V0UHIJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEBkQwdnNEMQkBAnZkAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFC2FtQXNzZXRQYXJ0CQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQtwckFzc2V0UGFydAUIc2xpcHBhZ2UGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAlscENhbGNSZXMJAQN2YWQDCQC2AgEFB2VzdGltTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UECWVtaXRMcEFtdAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtwdXRPbmVUa25WMgMFb3V0THAIc2xpcHBhZ2UJYXV0b1N0YWtlBANjZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwURaWR4RmFjdEd3eFJld0NudHICC1dyIGd3eCBhZGRyBAdwb29sQ2ZnCQEDZ3BjAAQEYW1JZAkAkQMCBQdwb29sQ2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUHcG9vbENmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFDWlkeFByaWNlQXNEY20EBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEDWFkZG9uQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBA2FkYQACCW5vIGFkZG9ucwIaYWRkb24gYWRkcmVzcyBpbiBub3QgdmFsaWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50AwkAZgIAgK3iBAUGcG10QW10CQACAQINV3JvbmcgcG10IGFtdAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBA0kdDAyODc4NTI5MTczAwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQlhbUJhbGFuY2UFBnBtdEFtdAUJcHJCYWxhbmNlAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDCQBmAgUGcG10QW10BQlwckJhbGFuY2UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFCWFtQmFsYW5jZQkAZQIFCXByQmFsYW5jZQUGcG10QW10CQACAQIQd3JvbmcgcG10QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMjg3ODUyOTE3MwJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMjg3ODUyOTE3MwJfMgQNJHQwMjkxNzkyOTMxMwMJAAACBQpwbXRBc3NldElkBQRhbUlkCQCUCgIFDGFtQmFsYW5jZU5vdwUMcHJCYWxhbmNlTm93CQCUCgIFDHByQmFsYW5jZU5vdwUMYW1CYWxhbmNlTm93BBBhbUJhbGFuY2VGb3JDYWxjCAUNJHQwMjkxNzkyOTMxMwJfMQQQcHJCYWxhbmNlRm9yQ2FsYwgFDSR0MDI5MTc5MjkzMTMCXzIECnhQcmVjaXNpb24AAQQGcmVzdWx0CgABQAkA/AcEBQdnd3hDbnRyAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQZwbXRBbXQJAMwIAgkApAMBBRBhbUJhbGFuY2VGb3JDYWxjCQDMCAIJAKQDAQUQcHJCYWxhbmNlRm9yQ2FsYwkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnhQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBCQD8BwQFB2d3eENudHICDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFBnBtdEFtdAkAzAgCCQCkAwEFEGFtQmFsYW5jZUZvckNhbGMJAMwIAgkApAMBBRBwckJhbGFuY2VGb3JDYWxjCQDMCAICAAkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIJAKQDAQUKeFByZWNpc2lvbgkAzAgCBQVEY29udgUDbmlsBQNuaWwCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEDSR0MDI5ODI1Mjk5MjEDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAUGcmVzdWx0CQCUCgIIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzEEC2FtQXNzZXRQYXJ0CAUNJHQwMjk4MjUyOTkyMQJfMQQLcHJBc3NldFBhcnQIBQ0kdDAyOTgyNTI5OTIxAl8yBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFC2FtQXNzZXRQYXJ0CQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQtwckFzc2V0UGFydAUIc2xpcHBhZ2UGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAllbWl0THBBbXQDCQBmAgUFb3V0THAAAAQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlCQCgAwEIBQlscENhbGNSZXMCXzIFB2VzdGltTFAEAWUJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBZQUBZQQCZWwEByRtYXRjaDAFAWUDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnB1dEZvckZyZWUBB21heFNscGcDCQBmAgAABQdtYXhTbHBnCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQdtYXhTbHBnBwcAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQNYWRkb25Db250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEDYWRhAAIJbm8gYWRkb25zAhphZGRvbiBhZGRyZXNzIGluIG5vdCB2YWxpZAQFY2hlY2sJAP0HBAUNYWRkb25Db250cmFjdAISZW5zdXJlQ2FuR2V0T25lVGtuCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQhzbGlwcGFnZQYJAGYCAAAFCmV4Y2hSZXN1bHQGCQBmAgAABQlvdXRBbW91bnQJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDM0NDkwMzQ5NDcDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BQpleGNoUmVzdWx0BQplc3RpbVByQW10AAAAAAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAAIBAhB3cm9uZyBvdXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAzNDQ5MDM0OTQ3Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAzNDQ5MDM0OTQ3Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzNDQ5MDM0OTQ3Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzQ0OTAzNDk0NwJfNAQMdmlydFN3YXBJblByCAUNJHQwMzQ0OTAzNDk0NwJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDM0NDkwMzQ5NDcCXzYECHRvdGFsR2V0CAUNJHQwMzQ0OTAzNDk0NwJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAAIBAgpXcm9uZyBjYWxjBAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKQDAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDXZpcnRTd2FwT3V0UHIFDHZpcnRTd2FwSW5QcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEECGZpbmFsUmVzCQEDdmFkAwkAtgIBBQh0b3RhbEdldAkAtgIBBQlvdXRBbW91bnQJALYCAQUIc2xpcHBhZ2UDCQAAAgUIZmluYWxSZXMFCGZpbmFsUmVzBA0kdDAzNTY1MjM1NzU2AwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJQKAgkAoAMBCAUIZmluYWxSZXMCXzIAAAkAlAoCAAAJAKADAQgFCGZpbmFsUmVzAl8yBAVvdXRBbQgFDSR0MDM1NjUyMzU3NTYCXzEEBW91dFByCAUNJHQwMzU2NTIzNTc1NgJfMgQIY3VyUHJYMTgJAQRjcGJpAgkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQFY3VyUHIJAQJmMQIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzCQBkAgUFb3V0QW0FBW91dFByAwkAAAIFCm91dEFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCm91dEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQZwbXRBbXQFBWN1clByBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQVjdXJQcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQRidXJuBQRidXJuBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8MBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAHAAACAAFpASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQGdHhJZDU4B3BtdEFzSWQIcG10THBBbXQHdXNyQWRkcgQBcgkBA2VnbwQFBnR4SWQ1OAUHcG10QXNJZAUIcG10THBBbXQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3VzckFkZHIJAJQKAgUDbmlsCQCcCgoIBQFyAl8xCAUBcgJfMggFAXICXzMIBQFyAl80CAUBcgJfNQgFAXICXzYIBQFyAl83CQCmAwEIBQFyAl84CAUBcgJfOQgFAXIDXzEwAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIFT3JkZXIEBW9yZGVyBQckbWF0Y2gwBAptYXRjaGVyUHViCQECbXAABApvcmRlclZhbGlkCQEDbW9hAQUFb3JkZXIEC3NlbmRlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAxtYXRjaGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAEFCm1hdGNoZXJQdWIDAwMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBwUMbWF0Y2hlclZhbGlkBwYJAQN0b2UDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAUMbWF0Y2hlclZhbGlkAwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAFzBQckbWF0Y2gwBAduZXdIYXNoCQD2AwEJAQV2YWx1ZQEIBQFzBnNjcmlwdAQLYWxsb3dlZEhhc2gJANsEAQkBBXZhbHVlAQkAnQgCBQNmY2EJARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAQLY3VycmVudEhhc2gJAPEHAQUEdGhpcwMDCQAAAgULYWxsb3dlZEhhc2gFB25ld0hhc2gJAQIhPQIFC2N1cnJlbnRIYXNoBQduZXdIYXNoBwYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5WlGF6A==", "height": 2225842, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4kkL48qGqRChrqR39sjd8PtFshgRUS8qDd9o3MLWo1Me Next: J5Lh9MkQ91t9KECkv7tAdt17itVkLFbzdZMGejJ2G3RB Diff:
OldNewDifferences
723723 then df.originCaller
724724 else df.caller
725725 let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
726- let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
727- if ((dP == dP))
728- then if ((size(df.payments) != 1))
729- then throw("1 pmnt expd")
730- else {
731- let dg = value(df.payments[0])
732- let bG = toBase58String(value(dg.assetId))
733- let cl = dg.amount
734- if ((10000000 > cl))
735- then throw("Wrong pmt amt")
736- else {
737- let bQ = aW(bK)
738- let bS = aW(bL)
739- let eb = if ((bG == bK))
740- then if ((cl > bQ))
726+ if ((size(df.payments) != 1))
727+ then throw("1 pmnt expd")
728+ else {
729+ let dg = value(df.payments[0])
730+ let bG = toBase58String(value(dg.assetId))
731+ let cl = dg.amount
732+ if ((10000000 > cl))
733+ then throw("Wrong pmt amt")
734+ else {
735+ let bQ = aW(bK)
736+ let bS = aW(bL)
737+ let eb = if ((bG == bK))
738+ then if ((cl > bQ))
739+ then throw("invalid payment amount")
740+ else $Tuple2((bQ - cl), bS)
741+ else if ((bG == bL))
742+ then if ((cl > bS))
741743 then throw("invalid payment amount")
742- else $Tuple2((bQ - cl), bS)
743- else if ((bG == bL))
744- then if ((cl > bS))
745- then throw("invalid payment amount")
746- else $Tuple2(bQ, (bS - cl))
747- else throw("wrong pmtAssetId")
748- let dR = eb._1
749- let dS = eb._2
750- let ec = if ((bG == bK))
751- then $Tuple2(dR, dS)
752- else $Tuple2(dS, dR)
753- let ed = ec._1
754- let ee = ec._2
755- let ef = 1
756- let eg = {
757- let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
758- if ($isInstanceOf(eh, "(Int, Int)"))
759- then eh
760- else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
744+ else $Tuple2(bQ, (bS - cl))
745+ else throw("wrong pmtAssetId")
746+ let dR = eb._1
747+ let dS = eb._2
748+ let ec = if ((bG == bK))
749+ then $Tuple2(dR, dS)
750+ else $Tuple2(dS, dR)
751+ let ed = ec._1
752+ let ee = ec._2
753+ let ef = 1
754+ let eg = {
755+ let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
756+ if ($isInstanceOf(eh, "(Int, Int)"))
757+ then eh
758+ else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
759+ }
760+ let ei = if ((bG == bK))
761+ then eg
762+ else $Tuple2(eg._2, eg._1)
763+ let dI = ei._1
764+ let dJ = ei._2
765+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
766+ let dZ = dY._2
767+ let dB = dY._7
768+ let cc = dY._9
769+ let cL = dY._10
770+ let cM = dY._11
771+ let cK = if ((dK > 0))
772+ then {
773+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
774+ toInt(ea._2)
761775 }
762- let ei = if ((bG == bK))
763- then eg
764- else $Tuple2(eg._2, eg._1)
765- let dI = ei._1
766- let dJ = ei._2
767- let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
768- let dZ = dY._2
769- let dB = dY._7
770- let cc = dY._9
771- let cL = dY._10
772- let cM = dY._11
773- let cK = if ((dK > 0))
774- then {
775- let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
776- toInt(ea._2)
776+ else dZ
777+ let dA = invoke(ay, "emit", [cK], nil)
778+ if ((dA == dA))
779+ then {
780+ let dC = {
781+ let as = dA
782+ if ($isInstanceOf(as, "Address"))
783+ then {
784+ let dD = as
785+ invoke(dD, "emit", [cK], nil)
786+ }
787+ else unit
777788 }
778- else dZ
779- let dA = invoke(ay, "emit", [cK], nil)
780- if ((dA == dA))
781- then {
782- let dC = {
783- let as = dA
784- if ($isInstanceOf(as, "Address"))
789+ if ((dC == dC))
790+ then {
791+ let dE = if ((cL > 0))
792+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
793+ else nil
794+ if ((dE == dE))
785795 then {
786- let dD = as
787- invoke(dD, "emit", [cK], nil)
796+ let dF = if ((cM > 0))
797+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
798+ else nil
799+ if ((dF == dF))
800+ then {
801+ let dG = if (dw)
802+ then {
803+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
804+ if ((dH == dH))
805+ then nil
806+ else throw("Strict value is not equal to itself.")
807+ }
808+ else [ScriptTransfer(df.caller, cK, dB)]
809+ (cc ++ dG)
810+ }
811+ else throw("Strict value is not equal to itself.")
788812 }
789- else unit
813+ else throw("Strict value is not equal to itself.")
790814 }
791- if ((dC == dC))
792- then {
793- let dE = if ((cL > 0))
794- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
795- else nil
796- if ((dE == dE))
797- then {
798- let dF = if ((cM > 0))
799- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
800- else nil
801- if ((dF == dF))
802- then {
803- let dG = if (dw)
804- then {
805- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
806- if ((dH == dH))
807- then nil
808- else throw("Strict value is not equal to itself.")
809- }
810- else [ScriptTransfer(df.caller, cK, dB)]
811- (cc ++ dG)
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815- else throw("Strict value is not equal to itself.")
816- }
817- else throw("Strict value is not equal to itself.")
818- }
819- else throw("Strict value is not equal to itself.")
820- }
821- }
822- else throw("Strict value is not equal to itself.")
815+ else throw("Strict value is not equal to itself.")
816+ }
817+ else throw("Strict value is not equal to itself.")
818+ }
819+ }
823820 }
824821
825822
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 = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = "%s__delay"
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
106106
107107
108108 func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109109
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 (F) = {
133133 let as = F
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, M()))
150150
151151 let az = au(this, Z())
152152
153153 func aA () = valueOrElse(getBoolean(ay, al()), false)
154154
155155
156156 func aB () = fromBase58String(au(ay, af()))
157157
158158
159159 func aC () = {
160160 let aD = au(this, X())
161161 let aE = au(this, Y())
162162 let aF = ax(ay, aj(aE))
163163 let ah = ax(ay, aj(aD))
164164 split(au(ay, ag(toString(ah), toString(aF))), i)
165165 }
166166
167167
168168 func aG () = split(au(ay, ae()), i)
169169
170170
171171 func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
172172
173173
174174 func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
175175
176176
177177 func aW (aX) = if ((aX == "WAVES"))
178178 then wavesBalance(this).available
179179 else assetBalance(this, fromBase58String(aX))
180180
181181
182182 func aY (aZ,ba) = fraction(aZ, c, ba)
183183
184184
185185 func bb (bc,bd,be) = {
186186 let bf = fraction((bc - bd), b, bd)
187187 let bg = ((be - L(bf)) > d)
188188 if (!(bg))
189189 then throw(("Big slpg: " + toString(bf)))
190190 else $Tuple2(bg, min([bc, bd]))
191191 }
192192
193193
194194 func bh (bi,bj,bk) = {
195195 let bf = fraction(bj, b, bi)
196196 let bl = (bk > bf)
197197 if (if (bl)
198198 then true
199199 else (bj > bi))
200200 then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201201 else bl
202202 }
203203
204204
205205 func bm (bn,bo,bp,bq) = {
206206 let br = B(bp, bn)
207207 let bs = B(bq, bo)
208208 aY(bs, br)
209209 }
210210
211211
212212 func bt (bp,bq,bu) = {
213213 let bv = aC()
214214 let bw = parseIntValue(bv[t])
215215 let bx = parseIntValue(bv[u])
216216 let by = bm(bw, bx, bp, bq)
217217 let ba = B(bp, bw)
218218 let aZ = B(bq, bx)
219219 let bz = B(bu, a)
220220 let bA = aY(ba, bz)
221221 let bB = aY(aZ, bz)
222222 [by, bA, bB]
223223 }
224224
225225
226226 func bC (bp,bq,bu) = {
227227 let bD = bt(bp, bq, bu)
228228 [E(bD[0], a), E(bD[1], a), E(bD[2], a)]
229229 }
230230
231231
232232 func bE (bF,bG,bH,bI) = {
233233 let bv = aC()
234234 let bJ = bv[q]
235235 let bK = bv[r]
236236 let bL = bv[s]
237237 let bM = parseIntValue(bv[t])
238238 let bN = parseIntValue(bv[u])
239239 let bO = bv[p]
240240 let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241241 if ((bJ != bG))
242242 then throw("Wrong pmt asset")
243243 else {
244244 let bQ = aW(bK)
245245 let bR = B(bQ, bM)
246246 let bS = aW(bL)
247247 let bT = B(bS, bN)
248248 let bU = aY(bT, bR)
249249 let bV = E(bU, a)
250250 let bW = B(bH, a)
251251 let bX = B(bP, a)
252252 let bY = fraction(bR, bW, bX)
253253 let bZ = fraction(bT, bW, bX)
254254 let ca = E(bY, bM)
255255 let cb = E(bZ, bN)
256256 let cc = if ((bF == ""))
257257 then nil
258258 else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
259259 then unit
260260 else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
261261 then unit
262262 else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263263 $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
264264 }
265265 }
266266
267267
268268 func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269269 let bv = aC()
270270 let bJ = fromBase58String(bv[q])
271271 let cn = bv[r]
272272 let co = bv[s]
273273 let cp = bv[v]
274274 let cq = bv[w]
275275 let cr = parseIntValue(bv[t])
276276 let cs = parseIntValue(bv[u])
277277 let bO = bv[p]
278278 let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279279 let bQ = if (ci)
280280 then aW(cn)
281281 else if (if (ck)
282282 then (cm == cn)
283283 else false)
284284 then (aW(cn) - cl)
285285 else if (ck)
286286 then aW(cn)
287287 else (aW(cn) - ce)
288288 let bS = if (ci)
289289 then aW(co)
290290 else if (if (ck)
291291 then (cm == co)
292292 else false)
293293 then (aW(co) - cl)
294294 else if (ck)
295295 then aW(co)
296296 else (aW(co) - cg)
297297 let cu = B(ce, cr)
298298 let cv = B(cg, cs)
299299 let cw = aY(cv, cu)
300300 let bR = B(bQ, cr)
301301 let bT = B(bS, cs)
302302 let cx = if ((ct == 0))
303303 then {
304304 let bU = d
305305 let cy = d
306306 let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307307 $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
308308 }
309309 else {
310310 let bU = aY(bT, bR)
311311 let cz = fraction(L((bU - cw)), c, bU)
312312 let cy = B(be, a)
313313 if (if ((bU != d))
314314 then (cz > cy)
315315 else false)
316316 then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
317317 else {
318318 let cA = B(ct, a)
319319 let cB = fraction(cu, bU, c)
320320 let cC = fraction(cv, c, bU)
321321 let cD = if ((cB > cv))
322322 then $Tuple2(cC, cv)
323323 else $Tuple2(cu, cB)
324324 let cE = cD._1
325325 let cF = cD._2
326326 let bz = fraction(cA, cF, bT)
327327 $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
328328 }
329329 }
330330 let cG = cx._1
331331 let cH = cx._2
332332 let cI = cx._3
333333 let bV = E(cx._4, a)
334334 let cJ = E(cx._5, a)
335335 if ((0 >= cG))
336336 then throw("LP <= 0")
337337 else {
338338 let cK = if (!(cj))
339339 then 0
340340 else cG
341341 let cL = (ce - cH)
342342 let cM = (cg - cI)
343343 let cN = if (if (ck)
344344 then (cm == cn)
345345 else false)
346346 then $Tuple2(cl, 0)
347347 else if (if (ck)
348348 then (cm == co)
349349 else false)
350350 then $Tuple2(0, cl)
351351 else $Tuple2(cH, cI)
352352 let cO = cN._1
353353 let cP = cN._2
354354 let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355355 $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
356356 }
357357 }
358358
359359
360360 func cR (cS) = {
361361 let bv = aC()
362362 let cT = bv[r]
363363 let cU = bv[s]
364364 let bO = parseIntValue(bv[p])
365365 let bw = parseIntValue(bv[t])
366366 let bx = parseIntValue(bv[u])
367367 let cV = aW(cT)
368368 let cW = aW(cU)
369369 let bU = if ((cS.orderType == Buy))
370370 then bm(bw, bx, (cV + cS.amount), cW)
371371 else bm(bw, bx, (cV - cS.amount), cW)
372372 let bV = E(bU, a)
373373 if (if (if (aA())
374374 then true
375375 else (bO == m))
376376 then true
377377 else (bO == n))
378378 then throw("Admin blocked")
379379 else {
380380 let cX = cS.assetPair.amountAsset
381381 let cY = if ((cX == unit))
382382 then "WAVES"
383383 else toBase58String(value(cX))
384384 let cZ = cS.assetPair.priceAsset
385385 let da = if ((cZ == unit))
386386 then "WAVES"
387387 else toBase58String(value(cZ))
388388 if (if ((cY != cT))
389389 then true
390390 else (da != cU))
391391 then throw("Wr assets")
392392 else {
393393 let db = cS.price
394394 let cs = fraction(a, bx, bw)
395395 let dc = H(db, a, cs)
396396 let dd = if ((cS.orderType == Buy))
397397 then (bV >= dc)
398398 else (dc >= bV)
399399 true
400400 }
401401 }
402402 }
403403
404404
405405 func de (df) = if ((size(df.payments) != 1))
406406 then throw("1 pmnt exp")
407407 else {
408408 let dg = value(df.payments[0])
409409 let bG = value(dg.assetId)
410410 let cl = dg.amount
411411 let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412412 let ca = cx._1
413413 let cb = cx._2
414414 let bO = parseIntValue(cx._9)
415415 let cc = cx._10
416416 if (if (aA())
417417 then true
418418 else (bO == n))
419419 then throw(("Admin blocked: " + toString(bO)))
420420 else $Tuple5(ca, cb, cl, bG, cc)
421421 }
422422
423423
424424 func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425425 let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426426 let bO = parseIntValue(cx._8)
427427 if (if (if (aA())
428428 then true
429429 else (bO == l))
430430 then true
431431 else (bO == n))
432432 then throw(("Blocked:" + toString(bO)))
433433 else cx
434434 }
435435
436436
437437 func dk () = {
438438 let as = getString(N())
439439 if ($isInstanceOf(as, "String"))
440440 then {
441441 let dl = as
442442 fromBase58String(dl)
443443 }
444444 else if ($isInstanceOf(as, "Unit"))
445445 then unit
446446 else throw("Match error")
447447 }
448448
449449
450450 func dm () = {
451451 let as = getString(O())
452452 if ($isInstanceOf(as, "String"))
453453 then {
454454 let dl = as
455455 fromBase58String(dl)
456456 }
457457 else if ($isInstanceOf(as, "Unit"))
458458 then unit
459459 else throw("Match error")
460460 }
461461
462462
463463 let dn = throw("Permission denied")
464464
465465 func do (df) = {
466466 let as = dk()
467467 if ($isInstanceOf(as, "ByteVector"))
468468 then {
469469 let dp = as
470470 if ((df.callerPublicKey == dp))
471471 then true
472472 else dn
473473 }
474474 else if ($isInstanceOf(as, "Unit"))
475475 then if ((df.caller == this))
476476 then true
477477 else dn
478478 else throw("Match error")
479479 }
480480
481481
482482 @Callable(df)
483483 func constructor (M) = {
484484 let dq = do(df)
485485 if ((dq == dq))
486486 then [StringEntry(M(), M)]
487487 else throw("Strict value is not equal to itself.")
488488 }
489489
490490
491491
492492 @Callable(df)
493493 func setManager (dr) = {
494494 let dq = do(df)
495495 if ((dq == dq))
496496 then {
497497 let ds = fromBase58String(dr)
498498 if ((ds == ds))
499499 then [StringEntry(O(), dr)]
500500 else throw("Strict value is not equal to itself.")
501501 }
502502 else throw("Strict value is not equal to itself.")
503503 }
504504
505505
506506
507507 @Callable(df)
508508 func confirmManager () = {
509509 let bD = dm()
510510 let dt = if (isDefined(bD))
511511 then true
512512 else throw("No pending manager")
513513 if ((dt == dt))
514514 then {
515515 let du = if ((df.callerPublicKey == value(bD)))
516516 then true
517517 else throw("You are not pending manager")
518518 if ((du == du))
519519 then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
520520 else throw("Strict value is not equal to itself.")
521521 }
522522 else throw("Strict value is not equal to itself.")
523523 }
524524
525525
526526
527527 @Callable(df)
528528 func put (dv,dw) = {
529529 let dx = aG()
530530 let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531531 let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532532 if ((0 > dv))
533533 then throw("Wrong slippage")
534534 else if ((size(df.payments) != 2))
535535 then throw("2 pmnts expd")
536536 else {
537537 let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538538 let cK = dA._2
539539 let dB = dA._7
540540 let cc = dA._9
541541 let cL = dA._10
542542 let cM = dA._11
543543 let bK = dA._12
544544 let bL = dA._13
545545 let cx = invoke(ay, "emit", [cK], nil)
546546 if ((cx == cx))
547547 then {
548548 let dC = {
549549 let as = cx
550550 if ($isInstanceOf(as, "Address"))
551551 then {
552552 let dD = as
553553 invoke(dD, "emit", [cK], nil)
554554 }
555555 else unit
556556 }
557557 if ((dC == dC))
558558 then {
559559 let dE = if ((cL > 0))
560560 then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
561561 else nil
562562 if ((dE == dE))
563563 then {
564564 let dF = if ((cM > 0))
565565 then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
566566 else nil
567567 if ((dF == dF))
568568 then {
569569 let dG = if (dw)
570570 then {
571571 let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572572 if ((dH == dH))
573573 then nil
574574 else throw("Strict value is not equal to itself.")
575575 }
576576 else [ScriptTransfer(df.caller, cK, dB)]
577577 (cc ++ dG)
578578 }
579579 else throw("Strict value is not equal to itself.")
580580 }
581581 else throw("Strict value is not equal to itself.")
582582 }
583583 else throw("Strict value is not equal to itself.")
584584 }
585585 else throw("Strict value is not equal to itself.")
586586 }
587587 }
588588
589589
590590
591591 @Callable(df)
592592 func putOneTkn (dI,dJ,dK,be,dw) = {
593593 let bv = aG()
594594 let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595595 let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596596 let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597597 let dM = aC()
598598 let bK = dM[r]
599599 let bL = dM[s]
600600 let bM = parseIntValue(dM[t])
601601 let bN = parseIntValue(dM[u])
602602 let dN = valueOrElse(getString(this, aa()), "")
603603 let bI = if ((dN == toString(df.caller)))
604604 then df.originCaller
605605 else df.caller
606606 let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607607 let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608608 if ((dP == dP))
609609 then if (if (if (if ((0 >= be))
610610 then true
611611 else (0 >= dI))
612612 then true
613613 else (0 >= dJ))
614614 then true
615615 else (0 >= dK))
616616 then throw("Wrong params")
617617 else if ((size(df.payments) != 1))
618618 then throw("1 pmnt expd")
619619 else {
620620 let dg = value(df.payments[0])
621621 let bG = toBase58String(value(dg.assetId))
622622 let cl = dg.amount
623623 if ((10000000 > cl))
624624 then throw("Wrong pmt amt")
625625 else {
626626 let bQ = aW(bK)
627627 let bS = aW(bL)
628628 let dQ = if ((bG == bK))
629629 then if (if ((cl > bQ))
630630 then true
631631 else (dI > cl))
632632 then throw("invalid payment amount")
633633 else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634634 else if ((bG == bL))
635635 then if (if ((cl > bS))
636636 then true
637637 else (dJ > cl))
638638 then throw("invalid payment amount")
639639 else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640640 else throw("wrong pmtAssetId")
641641 let dR = dQ._1
642642 let dS = dQ._2
643643 let dT = dQ._3
644644 let dU = dQ._4
645645 let dV = dQ._5
646646 let dW = dQ._6
647647 let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648648 let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649649 let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650650 if ((dX == dX))
651651 then {
652652 let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653653 let dZ = dY._2
654654 let dB = dY._7
655655 let cc = dY._9
656656 let cL = dY._10
657657 let cM = dY._11
658658 let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659659 let cK = toInt(ea._2)
660660 let dA = invoke(ay, "emit", [cK], nil)
661661 if ((dA == dA))
662662 then {
663663 let dC = {
664664 let as = dA
665665 if ($isInstanceOf(as, "Address"))
666666 then {
667667 let dD = as
668668 invoke(dD, "emit", [cK], nil)
669669 }
670670 else unit
671671 }
672672 if ((dC == dC))
673673 then {
674674 let dE = if ((cL > 0))
675675 then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676676 else nil
677677 if ((dE == dE))
678678 then {
679679 let dF = if ((cM > 0))
680680 then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681681 else nil
682682 if ((dF == dF))
683683 then {
684684 let dG = if (dw)
685685 then {
686686 let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687687 if ((dH == dH))
688688 then nil
689689 else throw("Strict value is not equal to itself.")
690690 }
691691 else [ScriptTransfer(df.caller, cK, dB)]
692692 (cc ++ dG)
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 }
705705 else throw("Strict value is not equal to itself.")
706706 }
707707
708708
709709
710710 @Callable(df)
711711 func putOneTknV2 (dK,be,dw) = {
712712 let bv = aG()
713713 let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
714714 let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
715715 let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
716716 let dM = aC()
717717 let bK = dM[r]
718718 let bL = dM[s]
719719 let bM = parseIntValue(dM[t])
720720 let bN = parseIntValue(dM[u])
721721 let dN = valueOrElse(getString(this, aa()), "")
722722 let bI = if ((dN == toString(df.caller)))
723723 then df.originCaller
724724 else df.caller
725725 let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
726- let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
727- if ((dP == dP))
728- then if ((size(df.payments) != 1))
729- then throw("1 pmnt expd")
730- else {
731- let dg = value(df.payments[0])
732- let bG = toBase58String(value(dg.assetId))
733- let cl = dg.amount
734- if ((10000000 > cl))
735- then throw("Wrong pmt amt")
736- else {
737- let bQ = aW(bK)
738- let bS = aW(bL)
739- let eb = if ((bG == bK))
740- then if ((cl > bQ))
726+ if ((size(df.payments) != 1))
727+ then throw("1 pmnt expd")
728+ else {
729+ let dg = value(df.payments[0])
730+ let bG = toBase58String(value(dg.assetId))
731+ let cl = dg.amount
732+ if ((10000000 > cl))
733+ then throw("Wrong pmt amt")
734+ else {
735+ let bQ = aW(bK)
736+ let bS = aW(bL)
737+ let eb = if ((bG == bK))
738+ then if ((cl > bQ))
739+ then throw("invalid payment amount")
740+ else $Tuple2((bQ - cl), bS)
741+ else if ((bG == bL))
742+ then if ((cl > bS))
741743 then throw("invalid payment amount")
742- else $Tuple2((bQ - cl), bS)
743- else if ((bG == bL))
744- then if ((cl > bS))
745- then throw("invalid payment amount")
746- else $Tuple2(bQ, (bS - cl))
747- else throw("wrong pmtAssetId")
748- let dR = eb._1
749- let dS = eb._2
750- let ec = if ((bG == bK))
751- then $Tuple2(dR, dS)
752- else $Tuple2(dS, dR)
753- let ed = ec._1
754- let ee = ec._2
755- let ef = 1
756- let eg = {
757- let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
758- if ($isInstanceOf(eh, "(Int, Int)"))
759- then eh
760- else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
744+ else $Tuple2(bQ, (bS - cl))
745+ else throw("wrong pmtAssetId")
746+ let dR = eb._1
747+ let dS = eb._2
748+ let ec = if ((bG == bK))
749+ then $Tuple2(dR, dS)
750+ else $Tuple2(dS, dR)
751+ let ed = ec._1
752+ let ee = ec._2
753+ let ef = 1
754+ let eg = {
755+ let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
756+ if ($isInstanceOf(eh, "(Int, Int)"))
757+ then eh
758+ else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
759+ }
760+ let ei = if ((bG == bK))
761+ then eg
762+ else $Tuple2(eg._2, eg._1)
763+ let dI = ei._1
764+ let dJ = ei._2
765+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
766+ let dZ = dY._2
767+ let dB = dY._7
768+ let cc = dY._9
769+ let cL = dY._10
770+ let cM = dY._11
771+ let cK = if ((dK > 0))
772+ then {
773+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
774+ toInt(ea._2)
761775 }
762- let ei = if ((bG == bK))
763- then eg
764- else $Tuple2(eg._2, eg._1)
765- let dI = ei._1
766- let dJ = ei._2
767- let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
768- let dZ = dY._2
769- let dB = dY._7
770- let cc = dY._9
771- let cL = dY._10
772- let cM = dY._11
773- let cK = if ((dK > 0))
774- then {
775- let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
776- toInt(ea._2)
776+ else dZ
777+ let dA = invoke(ay, "emit", [cK], nil)
778+ if ((dA == dA))
779+ then {
780+ let dC = {
781+ let as = dA
782+ if ($isInstanceOf(as, "Address"))
783+ then {
784+ let dD = as
785+ invoke(dD, "emit", [cK], nil)
786+ }
787+ else unit
777788 }
778- else dZ
779- let dA = invoke(ay, "emit", [cK], nil)
780- if ((dA == dA))
781- then {
782- let dC = {
783- let as = dA
784- if ($isInstanceOf(as, "Address"))
789+ if ((dC == dC))
790+ then {
791+ let dE = if ((cL > 0))
792+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
793+ else nil
794+ if ((dE == dE))
785795 then {
786- let dD = as
787- invoke(dD, "emit", [cK], nil)
796+ let dF = if ((cM > 0))
797+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
798+ else nil
799+ if ((dF == dF))
800+ then {
801+ let dG = if (dw)
802+ then {
803+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
804+ if ((dH == dH))
805+ then nil
806+ else throw("Strict value is not equal to itself.")
807+ }
808+ else [ScriptTransfer(df.caller, cK, dB)]
809+ (cc ++ dG)
810+ }
811+ else throw("Strict value is not equal to itself.")
788812 }
789- else unit
813+ else throw("Strict value is not equal to itself.")
790814 }
791- if ((dC == dC))
792- then {
793- let dE = if ((cL > 0))
794- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
795- else nil
796- if ((dE == dE))
797- then {
798- let dF = if ((cM > 0))
799- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
800- else nil
801- if ((dF == dF))
802- then {
803- let dG = if (dw)
804- then {
805- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
806- if ((dH == dH))
807- then nil
808- else throw("Strict value is not equal to itself.")
809- }
810- else [ScriptTransfer(df.caller, cK, dB)]
811- (cc ++ dG)
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815- else throw("Strict value is not equal to itself.")
816- }
817- else throw("Strict value is not equal to itself.")
818- }
819- else throw("Strict value is not equal to itself.")
820- }
821- }
822- else throw("Strict value is not equal to itself.")
815+ else throw("Strict value is not equal to itself.")
816+ }
817+ else throw("Strict value is not equal to itself.")
818+ }
819+ }
823820 }
824821
825822
826823
827824 @Callable(df)
828825 func putForFree (ej) = if ((0 > ej))
829826 then throw("Wrong slpg")
830827 else if ((size(df.payments) != 2))
831828 then throw("2 pmnts expd")
832829 else {
833830 let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], ej, false, false, 0, "")
834831 dY._9
835832 }
836833
837834
838835
839836 @Callable(df)
840837 func get () = {
841838 let cx = de(df)
842839 let ek = cx._1
843840 let cb = cx._2
844841 let cl = cx._3
845842 let bG = cx._4
846843 let cc = cx._5
847844 let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
848845 if ((el == el))
849846 then cc
850847 else throw("Strict value is not equal to itself.")
851848 }
852849
853850
854851
855852 @Callable(df)
856853 func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
857854 then throw("1 pmnt expd")
858855 else {
859856 let bv = aC()
860857 let bJ = bv[q]
861858 let bK = bv[r]
862859 let bL = bv[s]
863860 let bM = parseIntValue(bv[t])
864861 let bN = parseIntValue(bv[u])
865862 let bO = bv[p]
866863 let dx = aG()
867864 let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
868865 let dg = value(df.payments[0])
869866 let dN = valueOrElse(getString(this, aa()), "")
870867 let bI = if ((dN == toString(df.caller)))
871868 then df.originCaller
872869 else df.caller
873870 let bF = toBase58String(df.transactionId)
874871 let bG = value(dg.assetId)
875872 let cl = dg.amount
876873 let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
877874 let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
878875 if ((dP == dP))
879876 then if ((1000000000 > cl))
880877 then throw("Min pmt 10 LP")
881878 else if (if (if ((0 > be))
882879 then true
883880 else (0 > em))
884881 then true
885882 else (0 > eo))
886883 then throw("Wrong params")
887884 else if ((bJ != toBase58String(bG)))
888885 then throw("Wrong LP")
889886 else {
890887 let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
891888 let eq = cx._1
892889 let er = cx._2
893890 let bQ = aW(bK)
894891 let bS = aW(bL)
895892 let es = if ((ep == bK))
896893 then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
897894 else if ((ep == bL))
898895 then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
899896 else throw("wrong outAssetId")
900897 let dR = es._1
901898 let dS = es._2
902899 let dT = es._3
903900 let dU = es._4
904901 let dV = es._5
905902 let dW = es._6
906903 let et = es._7
907904 if (if ((0 > dT))
908905 then true
909906 else (0 > dV))
910907 then throw("Wrong calc")
911908 else {
912909 let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
913910 let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
914911 let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
915912 if ((dX == dX))
916913 then {
917914 let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
918915 if ((eu == eu))
919916 then {
920917 let ev = if ((ep == bK))
921918 then $Tuple2(toInt(eu._2), 0)
922919 else $Tuple2(0, toInt(eu._2))
923920 let ew = ev._1
924921 let ex = ev._2
925922 let ey = aY(B(bS, bN), B(bQ, bM))
926923 let ez = E(ey, a)
927924 let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
928925 then unit
929926 else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
930927 if ((cc == cc))
931928 then {
932929 let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
933930 if ((eA == eA))
934931 then cc
935932 else throw("Strict value is not equal to itself.")
936933 }
937934 else throw("Strict value is not equal to itself.")
938935 }
939936 else throw("Strict value is not equal to itself.")
940937 }
941938 else throw("Strict value is not equal to itself.")
942939 }
943940 }
944941 else throw("Strict value is not equal to itself.")
945942 }
946943
947944
948945
949946 @Callable(df)
950947 func getNoLess (eB,eC) = {
951948 let cx = de(df)
952949 let ca = cx._1
953950 let cb = cx._2
954951 let cl = cx._3
955952 let bG = cx._4
956953 let cc = cx._5
957954 if ((eB > ca))
958955 then throw(((("Failed: " + toString(ca)) + " < ") + toString(eB)))
959956 else if ((eC > cb))
960957 then throw(((("Failed: " + toString(cb)) + " < ") + toString(eC)))
961958 else {
962959 let eD = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
963960 if ((eD == eD))
964961 then cc
965962 else throw("Strict value is not equal to itself.")
966963 }
967964 }
968965
969966
970967
971968 @Callable(df)
972969 func unstakeAndGet (eE) = {
973970 let eF = if ((size(df.payments) != 0))
974971 then throw("No pmnts expd")
975972 else true
976973 if ((eF == eF))
977974 then {
978975 let bv = aC()
979976 let eG = aG()
980977 let dB = fromBase58String(bv[q])
981978 let eH = valueOrErrorMessage(addressFromString(eG[x]), "Wr st addr")
982979 let eI = invoke(eH, "unstake", [toBase58String(dB), eE], nil)
983980 if ((eI == eI))
984981 then {
985982 let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eE, df.caller)
986983 let bO = parseIntValue(cx._9)
987984 let cc = cx._10
988985 let eJ = if (if (aA())
989986 then true
990987 else (bO == n))
991988 then throw(("Blocked: " + toString(bO)))
992989 else true
993990 if ((eJ == eJ))
994991 then {
995992 let eK = invoke(ay, "burn", [eE], [AttachedPayment(dB, eE)])
996993 if ((eK == eK))
997994 then cc
998995 else throw("Strict value is not equal to itself.")
999996 }
1000997 else throw("Strict value is not equal to itself.")
1001998 }
1002999 else throw("Strict value is not equal to itself.")
10031000 }
10041001 else throw("Strict value is not equal to itself.")
10051002 }
10061003
10071004
10081005
10091006 @Callable(df)
10101007 func activate (eL,eM) = if ((toString(df.caller) != toString(ay)))
10111008 then throw("denied")
10121009 else $Tuple2([StringEntry(X(), eL), StringEntry(Y(), eM)], "success")
10131010
10141011
10151012
10161013 @Callable(df)
10171014 func setS (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
10181015 then dn
10191016 else [StringEntry(eN, eJ)]
10201017
10211018
10221019
10231020 @Callable(df)
10241021 func setI (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
10251022 then dn
10261023 else [IntegerEntry(eN, eJ)]
10271024
10281025
10291026
10301027 @Callable(df)
10311028 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
10321029
10331030
10341031
10351032 @Callable(df)
10361033 func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
10371034
10381035
10391036
10401037 @Callable(df)
10411038 func calcPricesWrapperREADONLY (bp,bq,bu) = {
10421039 let eO = bt(bp, bq, bu)
10431040 $Tuple2(nil, [toString(eO[0]), toString(eO[1]), toString(eO[2])])
10441041 }
10451042
10461043
10471044
10481045 @Callable(df)
10491046 func fromX18WrapperREADONLY (F,eP) = $Tuple2(nil, E(parseBigIntValue(F), eP))
10501047
10511048
10521049
10531050 @Callable(df)
10541051 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
10551052
10561053
10571054
10581055 @Callable(df)
10591056 func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
10601057
10611058
10621059
10631060 @Callable(df)
10641061 func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eQ,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eQ, ci, cj, false, 0, ""))
10651062
10661063
10671064
10681065 @Callable(df)
10691066 func estimateGetOperationWrapperREADONLY (bF,eR,bH,eQ) = {
10701067 let cx = bE(bF, eR, bH, addressFromStringValue(eQ))
10711068 $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
10721069 }
10731070
10741071
10751072 @Verifier(eS)
10761073 func eT () = {
10771074 let eU = {
10781075 let as = dk()
10791076 if ($isInstanceOf(as, "ByteVector"))
10801077 then {
10811078 let dp = as
10821079 dp
10831080 }
10841081 else if ($isInstanceOf(as, "Unit"))
10851082 then eS.senderPublicKey
10861083 else throw("Match error")
10871084 }
10881085 let as = eS
10891086 if ($isInstanceOf(as, "Order"))
10901087 then {
10911088 let cS = as
10921089 let eV = aB()
10931090 let eW = cR(cS)
10941091 let eX = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
10951092 let eY = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
10961093 if (if (if (eW)
10971094 then eX
10981095 else false)
10991096 then eY
11001097 else false)
11011098 then true
11021099 else an(eW, eX, eY)
11031100 }
11041101 else if ($isInstanceOf(as, "SetScriptTransaction"))
11051102 then {
11061103 let dl = as
11071104 let eZ = blake2b256(value(dl.script))
11081105 let fa = fromBase64String(value(getString(ay, am())))
11091106 let fb = scriptHash(this)
11101107 if (if ((fa == eZ))
11111108 then (fb != eZ)
11121109 else false)
11131110 then true
11141111 else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
11151112 }
11161113 else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
11171114 }
11181115

github/deemru/w8io/169f3d6 
126.15 ms