tx · H9r5g78FSzUN951pT817GMaXTJCs9xbXgwdArsjaM1c6

3P5muaLnF5EB3QEZTzkPYFDBdMeH8EnNkXs:  -0.03700000 Waves

2022.11.04 16:07 [3367789] smart account 3P5muaLnF5EB3QEZTzkPYFDBdMeH8EnNkXs > SELF 0.00000000 Waves

{ "type": 13, "id": "H9r5g78FSzUN951pT817GMaXTJCs9xbXgwdArsjaM1c6", "fee": 3700000, "feeAssetId": null, "timestamp": 1667566693107, "version": 1, "sender": "3P5muaLnF5EB3QEZTzkPYFDBdMeH8EnNkXs", "senderPublicKey": "4Ehd2yvuqp3EmRgQpRKmpb8D7FskicPp35nK7GCGZTuM", "proofs": [ "3eRrdDd9DEPmQNW2cNqSC2yECCfjyZ89gda38xGMWp7UARQL9yQbAagEJmjb7C8DhJCBBG2B8zUveGQzJNAbMeCo" ], "script": "base64:BgKaAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgBsAAZzY2FsZTgAgMLXLwAMc2NhbGU4QmlnSW50CQC2AgEAgMLXLwAHc2NhbGUxOAkAtgIBAICAkLu61q3wDQAKemVyb0JpZ0ludAkAtgIBAAAABGJpZzAJALYCAQAAAARiaWcxCQC2AgEAAQAEYmlnMgkAtgIBAAIACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAt3YXZlc1N0cmluZwIFV0FWRVMABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEmlkeEZhY3RvcnlSZXN0Q250cgAGABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoACmZlZURlZmF1bHQJAGsDAAoFBnNjYWxlOACQTgECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBCWFic0JpZ0ludAEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgAGa2V5RmVlAgclc19fZmVlAANmZWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUGa2V5RmVlBQpmZWVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBFmtleUZlZUNvbGxlY3RvckFkZHJlc3MAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwEDdG9lAwNvclYGc2VuZHJWBm1hdGNoVgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQNvclYCCyBzbmRyVmFsaWQ9CQClAwEFBnNlbmRyVgIMIG10Y2hyVmFsaWQ9CQClAwEFBm1hdGNoVgEDc3RyAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwEEc3RyZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQRpbnRmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABCHRocm93RXJyAQNtc2cJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawAAE2ZlZUNvbGxlY3RvckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUDZmNhCQEWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcwABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBD3BhcnNlUG9vbENvbmZpZwEKcG9vbENvbmZpZwkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCnBvb2xDb25maWcFDmlkeFBvb2xBZGRyZXNzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUJaWR4UG9vbFN0CQDZBAEJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkCQEMcGFyc2VBc3NldElkAQkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFC2lkeEFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUNaWR4UHJpY2VBc0RjbQAQcG9vbENvbmZpZ1BhcnNlZAkBD3BhcnNlUG9vbENvbmZpZwEJAQNncGMAAAskdDA2ODMwNzAxNgUQcG9vbENvbmZpZ1BhcnNlZAAOY2ZnUG9vbEFkZHJlc3MIBQskdDA2ODMwNzAxNgJfMQANY2ZnUG9vbFN0YXR1cwgFCyR0MDY4MzA3MDE2Al8yAAxjZmdMcEFzc2V0SWQIBQskdDA2ODMwNzAxNgJfMwAQY2ZnQW1vdW50QXNzZXRJZAgFCyR0MDY4MzA3MDE2Al80AA9jZmdQcmljZUFzc2V0SWQIBQskdDA2ODMwNzAxNgJfNQAWY2ZnQW1vdW50QXNzZXREZWNpbWFscwgFCyR0MDY4MzA3MDE2Al82ABVjZmdQcmljZUFzc2V0RGVjaW1hbHMIBQskdDA2ODMwNzAxNgJfNwEDZ2ZjAAkAtQkCCQEEc3RyZgIFA2ZjYQkBBGZjZmcABQNTRVAADWZhY3RvcnlDb25maWcJAQNnZmMAAA9zdGFraW5nQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFDWZhY3RvcnlDb25maWcFD2lkeEZhY3RTdGFrQ250cgIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAD3NsaXBhZ2VDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUNZmFjdG9yeUNvbmZpZwUQaWR4RmFjdFNsaXBwQ250cgIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAC2d3eENvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQ1mYWN0b3J5Q29uZmlnBRFpZHhGYWN0R3d4UmV3Q250cgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwAMcmVzdENvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQ1mYWN0b3J5Q29uZmlnBRJpZHhGYWN0b3J5UmVzdENudHICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBEWRhdGFQdXRBY3Rpb25JbmZvCg1pbkFtdEFzc2V0QW10D2luUHJpY2VBc3NldEFtdAhvdXRMcEFtdAVwcmljZQpzbGlwQnlVc2VyDHNsaXBwYWdlUmVhbAh0eEhlaWdodAt0eFRpbWVzdGFtcAxzbGlwYWdlQW1BbXQMc2xpcGFnZVByQW10CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ1pbkFtdEFzc2V0QW10CQDMCAIJAKQDAQUPaW5QcmljZUFzc2V0QW10CQDMCAIJAKQDAQUIb3V0THBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCnNsaXBCeVVzZXIJAMwIAgkApAMBBQxzbGlwcGFnZVJlYWwJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wCQDMCAIJAKQDAQUMc2xpcGFnZUFtQW10CQDMCAIJAKQDAQUMc2xpcGFnZVByQW10BQNuaWwFA1NFUAERZGF0YUdldEFjdGlvbkluZm8GDm91dEFtdEFzc2V0QW10EG91dFByaWNlQXNzZXRBbXQHaW5McEFtdAVwcmljZQh0eEhlaWdodAt0eFRpbWVzdGFtcAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDm91dEFtdEFzc2V0QW10CQDMCAIJAKQDAQUQb3V0UHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFB2luTHBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAFA25pbAUDU0VQAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQBBGNwYmkCCHByQW10WDE4CGFtQW10WDE4CQC8AgMFCHByQW10WDE4BQdzY2FsZTE4BQhhbUFtdFgxOAEDdmFkAwJBMQJBMghzbGlwcGFnZQQEZGlmZgkAvAIDCQC4AgIFAkExBQJBMgUMc2NhbGU4QmlnSW50BQJBMgQEcGFzcwkAvwICCQC4AgIFCHNsaXBwYWdlCQEDYWJzAQUEZGlmZgUKemVyb0JpZ0ludAMJAQEhAQUEcGFzcwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQRkaWZmCQCUCgIFBHBhc3MJAJkDAQkAzAgCBQJBMQkAzAgCBQJBMgUDbmlsAQJ2ZAMCRDECRDAEc2xwZwQEZGlmZgkAvAIDBQJEMAUMc2NhbGU4QmlnSW50BQJEMQQEZmFpbAkAvwICBQRzbHBnBQRkaWZmAwMFBGZhaWwGCQC/AgIFAkQwBQJEMQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCRDACASAJAKYDAQUCRDECASAJAKYDAQUEZGlmZgIBIAkApgMBBQRzbHBnBQRmYWlsAQNwY3AECmFtQXNzZXREY20KcHJBc3NldERjbQVhbUFtdAVwckFtdAQLYW10QXNBbXRYMTgJAQJ0MQIFBWFtQW10BQphbUFzc2V0RGNtBApwckFzQW10WDE4CQECdDECBQVwckFtdAUKcHJBc3NldERjbQkBBGNwYmkCBQpwckFzQW10WDE4BQthbXRBc0FtdFgxOAEKY2FsY1ByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEA2NmZwkBA2dwYwAECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQIcHJpY2VYMTgJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQUFYW1BbXQFBXByQW10BAhhbUFtdFgxOAkBAnQxAgUFYW1BbXQFCGFtdEFzRGNtBAhwckFtdFgxOAkBAnQxAgUFcHJBbXQFB3ByQXNEY20ECGxwQW10WDE4CQECdDECBQVscEFtdAUGc2NhbGU4BA1scFBySW5BbUFzWDE4CQEEY3BiaQIFCGFtQW10WDE4BQhscEFtdFgxOAQNbHBQckluUHJBc1gxOAkBBGNwYmkCBQhwckFtdFgxOAUIbHBBbXRYMTgJAMwIAgUIcHJpY2VYMTgJAMwIAgUNbHBQckluQW1Bc1gxOAkAzAgCBQ1scFBySW5QckFzWDE4BQNuaWwBD2NhbGN1bGF0ZVByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEAXAJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAzAgCCQECZjECCQCRAwIFAXAAAAUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAABBQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAIFBnNjYWxlOAUDbmlsAQd0YWtlRmVlAQZhbW91bnQECWZlZUFtb3VudAkAawMFBmFtb3VudAUDZmVlBQZzY2FsZTgJAJQKAgkAZQIFBmFtb3VudAUJZmVlQW1vdW50BQlmZWVBbW91bnQBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDQZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0EHZhbGlkYXRlU2xpcHBhZ2UGcG10QW10BXBtdElkBANjZmcJAQNncGMABARscElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB2FtSWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3BySWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQECWluQW1JZFN0cgkAkQMCBQNjZmcFC2lkeElBbXRBc0lkBAlpblBySWRTdHIJAJEDAgUDY2ZnBQ1pZHhJUHJpY2VBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAhwcmljZURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BARscEVtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBGxwSWQCCFdyIGxwIGFzCHF1YW50aXR5BAlhbUJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFB2luQW1BbXQECXByQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUHaW5QckFtdAQPaW5BbUFzc2V0QW10WDE4CQECdDECBQdpbkFtQW10BQZhbXREY20ED2luUHJBc3NldEFtdFgxOAkBAnQxAgUHaW5QckFtdAUIcHJpY2VEY20EDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBmFtdERjbQQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFCHByaWNlRGNtBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUGYW10RGNtCQECZjECBQ9pblByQXNzZXRBbXRYMTgFCHByaWNlRGNtCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDAwUQdmFsaWRhdGVTbGlwcGFnZQkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQHCQC/AgIFD3NsaXBwYWdlUmVhbFgxOAULc2xpcHBhZ2VYMTgHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFD3NsaXBwYWdlUmVhbFgxOAIDID4gCQCmAwEFC3NsaXBwYWdlWDE4BA1scEVtaXNzaW9uWDE4CQECdDECBQRscEVtBQZzY2FsZTgECnByVmlhQW1YMTgJALwCAwUPaW5BbUFzc2V0QW10WDE4BQtjdXJQcmljZVgxOAUHc2NhbGUxOAQKYW1WaWFQclgxOAkAvAIDBQ9pblByQXNzZXRBbXRYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAxleHBlY3RlZEFtdHMDCQC/AgIFCnByVmlhQW1YMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQphbVZpYVByWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUPaW5BbUFzc2V0QW10WDE4BQpwclZpYUFtWDE4BBFleHBBbXRBc3NldEFtdFgxOAgFDGV4cGVjdGVkQW10cwJfMQQTZXhwUHJpY2VBc3NldEFtdFgxOAgFDGV4cGVjdGVkQW10cwJfMgQIbHBBbXRYMTgJALwCAwUNbHBFbWlzc2lvblgxOAUTZXhwUHJpY2VBc3NldEFtdFgxOAUMcHJCYWxhbmNlWDE4CQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFEWV4cEFtdEFzc2V0QW10WDE4BQZhbXREY20JAQJmMQIFE2V4cFByaWNlQXNzZXRBbXRYMTgFCHByaWNlRGNtBQtjdXJQcmljZVgxOAULc2xpcHBhZ2VYMTgECWNhbGNMcEFtdAgFAXICXzEEDmNhbGNBbUFzc2V0UG10CAUBcgJfMgQOY2FsY1ByQXNzZXRQbXQIBQFyAl8zBAhjdXJQcmljZQkBAmYxAggFAXICXzQFBnNjYWxlOAQMc2xpcHBhZ2VDYWxjCQECZjECCAUBcgJfNQUGc2NhbGU4AwkAZwIAAAUJY2FsY0xwQW10CQACAQIHTFAgPD0gMAQJZW1pdExwQW10AwkBASEBBQZlbWl0THAAAAUJY2FsY0xwQW10BAZhbURpZmYJAGUCBQdpbkFtQW10BQ5jYWxjQW1Bc3NldFBtdAQGcHJEaWZmCQBlAgUHaW5QckFtdAUOY2FsY1ByQXNzZXRQbXQEDSR0MDE3NDQ3MTc3OTIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAlAoCBQZwbXRBbXQAAAMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQCUCgIAAAUGcG10QW10CQCUCgIFDmNhbGNBbUFzc2V0UG10BQ5jYWxjUHJBc3NldFBtdAQKd3JpdGVBbUFtdAgFDSR0MDE3NDQ3MTc3OTICXzEECndyaXRlUHJBbXQIBQ0kdDAxNzQ0NzE3NzkyAl8yBAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YVB1dEFjdGlvbkluZm8KBQp3cml0ZUFtQW10BQp3cml0ZVByQW10BQllbWl0THBBbXQFCGN1clByaWNlBQhzbGlwcGFnZQUMc2xpcHBhZ2VDYWxjBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQZhbURpZmYFBnByRGlmZgUDbmlsCQCfCg0FCWNhbGNMcEFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUJYW1CYWxhbmNlBQlwckJhbGFuY2UFBGxwRW0FBGxwSWQFA3N0cwULY29tbW9uU3RhdGUFBmFtRGlmZgUGcHJEaWZmBQZpbkFtSWQFBmluUHJJZAEDbW9hAQVvcmRlcgQDY2ZnCQEDZ3BjAAQHYW10QXNJZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQGcHJBc0lkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBANzdHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFCWlkeFBvb2xTdAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBA9hY2NBbXRBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHYW10QXNJZAQOYWNjUHJBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUGcHJBc0lkBAtjdXJQcmljZVgxOAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZAIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZQIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4AwMDCQEDaWdzAAYJAAACBQNzdHMFDlBvb2xNYXRjaGVyRGlzBgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQINQWRtaW4gYmxvY2tlZAQKb3JBbXRBc3NldAgIBQVvcmRlcglhc3NldFBhaXILYW1vdW50QXNzZXQECm9yQW10QXNTdHIDCQAAAgUKb3JBbXRBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUKb3JBbXRBc3NldAQJb3JQckFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgpwcmljZUFzc2V0BAlvclByQXNTdHIDCQAAAgUJb3JQckFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQlvclByQXNzZXQDAwkBAiE9AgUKb3JBbXRBc1N0cgUHYW10QXNJZAYJAQIhPQIFCW9yUHJBc1N0cgUGcHJBc0lkCQACAQIJV3IgYXNzZXRzBApvcmRlclByaWNlCAUFb3JkZXIFcHJpY2UECHByaWNlRGNtCQBrAwUGc2NhbGU4BQdwckFzRGNtBQhhbXRBc0RjbQQOY2FzdE9yZGVyUHJpY2UJAQJ0cwMFCm9yZGVyUHJpY2UFBnNjYWxlOAUIcHJpY2VEY20EEWlzT3JkZXJQcmljZVZhbGlkAwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkAZwIFCGN1clByaWNlBQ5jYXN0T3JkZXJQcmljZQkAZwIFDmNhc3RPcmRlclByaWNlBQhjdXJQcmljZQYBAmNnAQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFA3N0cwkAlwoFBQhvdXRBbUFtdAUIb3V0UHJBbXQFBnBtdEFtdAUKcG10QXNzZXRJZAUFc3RhdGUBAmNwCgZjYWxsZXIEdHhJZAdhbUFzUG10B3ByQXNQbXQIc2xpcHBhZ2UGZW1pdExwCmlzT25lQXNzZXQQdmFsaWRhdGVTbGlwcGFnZQZwbXRBbXQFcG10SWQEAXIJAQNlcG8NBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgkAAAIFBHR4SWQCAAUGZW1pdExwBQppc09uZUFzc2V0BRB2YWxpZGF0ZVNsaXBwYWdlBQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyAQRnZXREAQJ4cAQBbgUEYmlnMgQDeHAwCQCRAwIFAnhwAAAEA3hwMQkAkQMCBQJ4cAABBAphUHJlY2lzaW9uCQCnAwEFBUFtdWx0BAFhCQC5AgIJAKcDAQUBQQUKYVByZWNpc2lvbgQBcwkAtwICBQN4cDAFA3hwMQMJAAACBQFzBQRiaWcwBQRiaWcwBANhbm4JALkCAgUBYQUBbgQLeHAwX3hwMV9uX24JALkCAgkAuQICCQC5AgIFA3hwMAUDeHAxBQFuBQFuBBBhbm5fc19hUHJlY2lzaW9uCQC6AgIJALkCAgUDYW5uBQFzBQphUHJlY2lzaW9uBA5hbm5fYVByZWNpc2lvbgkAuAICBQNhbm4FCmFQcmVjaXNpb24EAm4xCQC3AgIFAW4FBGJpZzEKAQRjYWxjAgNhY2MDY3VyBA0kdDAyMjM0NDIyMzY0BQNhY2MEAWQIBQ0kdDAyMjM0NDIyMzY0Al8xBAVmb3VuZAgFDSR0MDIyMzQ0MjIzNjQCXzIDCQECIT0CBQVmb3VuZAUEdW5pdAUDYWNjBAJkcAkAugICCQC5AgIJALkCAgUBZAUBZAUBZAULeHAwX3hwMV9uX24EBWROZXh0CQC6AgIJALkCAgkAtwICBRBhbm5fc19hUHJlY2lzaW9uCQC5AgIFAmRwBQFuBQFkCQC3AgIJALoCAgkAuQICBQ5hbm5fYVByZWNpc2lvbgUBZAUKYVByZWNpc2lvbgkAuQICBQJuMQUCZHAEBWREaWZmCQEJYWJzQmlnSW50AQkAuAICBQVkTmV4dAkBBXZhbHVlAQUBZAMJAMACAgUEYmlnMQUFZERpZmYJAJQKAgUFZE5leHQFA2N1cgkAlAoCBQVkTmV4dAUEdW5pdAQDYXJyCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEDSR0MDIyNzg1MjI4MzIKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQFzBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQBZAgFDSR0MDIyNzg1MjI4MzICXzEEBWZvdW5kCAUNJHQwMjI3ODUyMjgzMgJfMgMJAQIhPQIFBWZvdW5kBQR1bml0BQFkCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAWQBBWdldFlEAwJ4cAFpAUQEAW4FBGJpZzIEAXgJAJEDAgUCeHADCQAAAgUBaQAAAAEAAAQKYVByZWNpc2lvbgkApwMBBQVBbXVsdAQBYQkAuQICCQCnAwEFAUEFCmFQcmVjaXNpb24EAXMFAXgEA2FubgkAuQICBQFhBQFuBAFjCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUBRAUBRAkAuQICBQF4BQFuBQFEBQphUHJlY2lzaW9uCQC5AgIFA2FubgUBbgQBYgkAuAICCQC3AgIFAXMJALoCAgkAuQICBQFEBQphUHJlY2lzaW9uBQNhbm4FAUQKAQRjYWxjAgNhY2MDY3VyBA0kdDAyMzMzMjIzMzUyBQNhY2MEAXkIBQ0kdDAyMzMzMjIzMzUyAl8xBAVmb3VuZAgFDSR0MDIzMzMyMjMzNTICXzIDCQECIT0CBQVmb3VuZAUEdW5pdAUDYWNjBAV5TmV4dAkAugICCQC3AgIJALkCAgUBeQUBeQUBYwkAtwICCQC5AgIFBGJpZzIFAXkFAWIEBXlEaWZmCQEJYWJzQmlnSW50AQkAuAICBQV5TmV4dAkBBXZhbHVlAQUBeQMJAMACAgUEYmlnMQUFeURpZmYJAJQKAgUFeU5leHQFA2N1cgkAlAoCBQV5TmV4dAUEdW5pdAQDYXJyCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEDSR0MDIzNjU5MjM3MDYKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQFEBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQBeQgFDSR0MDIzNjU5MjM3MDYCXzEEBWZvdW5kCAUNJHQwMjM2NTkyMzcwNgJfMgMJAQIhPQIFBWZvdW5kBQR1bml0BQF5CQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAXkBDWNhbGNQdXRPbmVUa24FCXBtdEFtdFJhdwpwbXRBc3NldElkC3VzZXJBZGRyZXNzBHR4SWQLd2l0aFRha2VGZWUECnBvb2xDb25maWcJAQNncGMABARhbUlkCQCRAwIFCnBvb2xDb25maWcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhQckFzSWQEBGxwSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBA9scEFzc2V0RW1pc3Npb24JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEDWNoZWNoRW1pc3Npb24DCQC/AgIFD2xwQXNzZXRFbWlzc2lvbgUEYmlnMAYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFDWNoZWNoRW1pc3Npb24FDWNoZWNoRW1pc3Npb24ECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ0ODkyNDk1MQMJAAACBQR0eElkAgAJAJQKAgUJYW1CYWxhbmNlBQlwckJhbGFuY2UDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMJAGYCBQlwbXRBbXRSYXcFCWFtQmFsYW5jZQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFCWFtQmFsYW5jZQUJcG10QW10UmF3BQlwckJhbGFuY2UDCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMJAGYCBQlwbXRBbXRSYXcFCXByQmFsYW5jZQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQlwbXRBbXRSYXcJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VPbGQIBQ0kdDAyNDQ4OTI0OTUxAl8xBAxwckJhbGFuY2VPbGQIBQ0kdDAyNDQ4OTI0OTUxAl8yBA0kdDAyNDk1NzI1MTMzAwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQJAJQKAgUJcG10QW10UmF3AAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAkAlAoCAAAFCXBtdEFtdFJhdwkAAgECD2ludmFsaWQgcGF5bWVudAQLYW1BbW91bnRSYXcIBQ0kdDAyNDk1NzI1MTMzAl8xBAtwckFtb3VudFJhdwgFDSR0MDI0OTU3MjUxMzMCXzIEDSR0MDI1MTM3MjUzNzYDBQt3aXRoVGFrZUZlZQkAlQoDCAkBB3Rha2VGZWUBBQthbUFtb3VudFJhdwJfMQgJAQd0YWtlRmVlAQULcHJBbW91bnRSYXcCXzEICQEHdGFrZUZlZQEFCXBtdEFtdFJhdwJfMgkAlQoDBQthbUFtb3VudFJhdwULcHJBbW91bnRSYXcAAAQIYW1BbW91bnQIBQ0kdDAyNTEzNzI1Mzc2Al8xBAhwckFtb3VudAgFDSR0MDI1MTM3MjUzNzYCXzIECWZlZUFtb3VudAgFDSR0MDI1MTM3MjUzNzYCXzMEDGFtQmFsYW5jZU5ldwkAZAIFDGFtQmFsYW5jZU9sZAUIYW1BbW91bnQEDHByQmFsYW5jZU5ldwkAZAIFDHByQmFsYW5jZU9sZAUIcHJBbW91bnQEAkQwCQEEZ2V0RAEJAMwIAgkAtgIBBQxhbUJhbGFuY2VPbGQJAMwIAgkAtgIBBQxwckJhbGFuY2VPbGQFA25pbAQCRDEJAQRnZXREAQkAzAgCCQC2AgEFDGFtQmFsYW5jZU5ldwkAzAgCCQC2AgEFDHByQmFsYW5jZU5ldwUDbmlsBAZjaGVja0QDCQC/AgIFAkQxBQJEMAYJAQV0aHJvdwADCQAAAgUGY2hlY2tEBQZjaGVja0QECGxwQW1vdW50CQC8AgMFD2xwQXNzZXRFbWlzc2lvbgkAuAICBQJEMQUCRDAFAkQwBAhjdXJQcmljZQkBAmYxAgkBBGNwYmkCCQECdDECBQxwckJhbGFuY2VOZXcFCHByaWNlRGNtCQECdDECBQxhbUJhbGFuY2VOZXcFBmFtdERjbQUGc2NhbGU4BAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCBQt1c2VyQWRkcmVzcwUEdHhJZAkBEWRhdGFQdXRBY3Rpb25JbmZvCgULYW1BbW91bnRSYXcFC3ByQW1vdW50UmF3CQCgAwEFCGxwQW1vdW50BQhjdXJQcmljZQAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEDnBvb2xQcm9wb3J0aW9uCQBrAwUMcHJCYWxhbmNlT2xkBQZzY2FsZTgFDGFtQmFsYW5jZU9sZAQPYW1vdW50QXNzZXRQYXJ0CQBrAwUJcG10QW10UmF3BQZzY2FsZTgJAGQCBQ5wb29sUHJvcG9ydGlvbgUGc2NhbGU4BA5wcmljZUFzc2V0UGFydAkAZQIFCXBtdEFtdFJhdwUPYW1vdW50QXNzZXRQYXJ0BAlscEFtdEJvdGgJALwCAwUPbHBBc3NldEVtaXNzaW9uCQC2AgEFDnByaWNlQXNzZXRQYXJ0CQC2AgEFDHByQmFsYW5jZU9sZAQFYm9udXMJAKADAQkAvAIDCQC4AgIFCGxwQW1vdW50BQlscEFtdEJvdGgFDHNjYWxlOEJpZ0ludAUJbHBBbXRCb3RoCQCWCgQJAKADAQUIbHBBbW91bnQFC2NvbW1vblN0YXRlBQlmZWVBbW91bnQFBWJvbnVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARNnZXRPbmVUa25WMkludGVybmFsBgpvdXRBc3NldElkDG1pbk91dEFtb3VudAhwYXltZW50cwZjYWxsZXIMb3JpZ2luQ2FsbGVyDXRyYW5zYWN0aW9uSWQECnBvb2xDb25maWcJAQNncGMABARscElkCQCRAwIFCnBvb2xDb25maWcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAphbURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwULaWR4QW10QXNEY20ECnByRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBApwb29sU3RhdHVzCQCRAwIFCnBvb2xDb25maWcFCWlkeFBvb2xTdAQLdXNlckFkZHJlc3MDCQAAAgUGY2FsbGVyBQxyZXN0Q29udHJhY3QFDG9yaWdpbkNhbGxlcgUGY2FsbGVyBANwbXQJAQV2YWx1ZQEJAJEDAgUIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAZ0eElkNTgJANgEAQUNdHJhbnNhY3Rpb25JZAMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI3Mzc4Mjc0ODYKAAFACQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQZwbXRBbXQFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAh0b3RhbEdldAgFDSR0MDI3Mzc4Mjc0ODYCXzEECWZlZUFtb3VudAgFDSR0MDI3Mzc4Mjc0ODYCXzIEC3RvdGFsQW1vdW50AwMJAGYCBQxtaW5PdXRBbW91bnQAAAkAZgIFDG1pbk91dEFtb3VudAUIdG90YWxHZXQHCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFDG1pbk91dEFtb3VudAUDbmlsAgAFCHRvdGFsR2V0BA0kdDAyNzY3NjI3OTgzAwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJYKBAULdG90YWxBbW91bnQAAAkAZQIJAGUCBQlhbUJhbGFuY2UFC3RvdGFsQW1vdW50BQlmZWVBbW91bnQFCXByQmFsYW5jZQMJAAACBQpvdXRBc3NldElkBQRwcklkCQCWCgQAAAULdG90YWxBbW91bnQFCWFtQmFsYW5jZQkAZQIJAGUCBQlwckJhbGFuY2UFC3RvdGFsQW1vdW50BQlmZWVBbW91bnQJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQFb3V0QW0IBQ0kdDAyNzY3NjI3OTgzAl8xBAVvdXRQcggFDSR0MDI3Njc2Mjc5ODMCXzIEDGFtQmFsYW5jZU5ldwgFDSR0MDI3Njc2Mjc5ODMCXzMEDHByQmFsYW5jZU5ldwgFDSR0MDI3Njc2Mjc5ODMCXzQECGN1clByWDE4CQEEY3BiaQIJAQJ0MQIFDHByQmFsYW5jZU5ldwUKcHJEZWNpbWFscwkBAnQxAgUMYW1CYWxhbmNlTmV3BQphbURlY2ltYWxzBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQRb3V0QXNzZXRJZE9yV2F2ZXMDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAQQc2VuZEZlZVRvTWF0Y2hlcgMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmZWVDb2xsZWN0b3JBZGRyZXNzBQlmZWVBbW91bnQFEW91dEFzc2V0SWRPcldhdmVzBQNuaWwFA25pbAQFc3RhdGUJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULdG90YWxBbW91bnQFEW91dEFzc2V0SWRPcldhdmVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFBW91dEFtBQVvdXRQcgUGcG10QW10BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUFY3VyUHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBWN1clByBQNuaWwFEHNlbmRGZWVUb01hdGNoZXIDCQAAAgUFc3RhdGUFBXN0YXRlBARidXJuCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUEYnVybgUEYnVybgkAlAoCBQVzdGF0ZQULdG90YWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAW0ABAckbWF0Y2gwCQCiCAEJAQNtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECcG0ABAckbWF0Y2gwCQCiCAEJAQRwbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAm1tAQFpBAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchsBaQELY29uc3RydWN0b3IBAmZjBAFjCQECbW0BBQFpAwkAAAIFAWMFAWMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmZjAAUCZmMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQBYwkBAm1tAQUBaQMJAAACBQFjBQFjBAJjbQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBQJjbQUCY20JAMwIAgkBC1N0cmluZ0VudHJ5AgkBBHBtcGsABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQBcAkBAnBtAAQDaHBtAwkBCWlzRGVmaW5lZAEFAXAGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2hwbQUDaHBtBANjcG0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQFwBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQNjcG0FA2NwbQkAzAgCCQELU3RyaW5nRW50cnkCCQEDbXBrAAkA2AQBCQEFdmFsdWUBBQFwCQDMCAIJAQtEZWxldGVFbnRyeQEJAQRwbXBrAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3B1dAIEc2xpcAlhdXRvU3Rha2UEB2ZhY3RDZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgMJAGYCAAAFBHNsaXAJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQBZQkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUEc2xpcAYHBgAAAgAECWVtaXRMcEFtdAgFAWUCXzIECWxwQXNzZXRJZAgFAWUCXzcEBXN0YXRlCAUBZQJfOQQGYW1EaWZmCAUBZQNfMTAEBnByRGlmZggFAWUDXzExBARhbUlkCAUBZQNfMTIEBHBySWQIBQFlA18xMwQBcgkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFyBQFyBAJlbAQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtwdXRPbmVUa25WMgIMbWluT3V0QW1vdW50CWF1dG9TdGFrZQQgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQKAAFACQD8BwQFA2ZjYQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBBQFAAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBA1pc1B1dERpc2FibGVkAwMDCQEDaWdzAAYJAAACBQ1jZmdQb29sU3RhdHVzBQpQb29sUHV0RGlzBgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgYFIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBAZjaGVja3MJAMwIAgMJAQEhAQUNaXNQdXREaXNhYmxlZAYJAQh0aHJvd0VycgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBARscElkCQDZBAEJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAphbURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwULaWR4QW10QXNEY20ECnByRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBAt1c2VyQWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFBHRoaXMIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEDSR0MDMzMTY5MzMzMjQJAQ1jYWxjUHV0T25lVGtuBQUGcG10QW10BQpwbXRBc3NldElkCQClCAEFC3VzZXJBZGRyZXNzCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQGBAdlc3RpbUxQCAUNJHQwMzMxNjkzMzMyNAJfMQQFc3RhdGUIBQ0kdDAzMzE2OTMzMzI0Al8yBAlmZWVBbW91bnQIBQ0kdDAzMzE2OTMzMzI0Al8zBAllbWl0THBBbXQDAwkAZgIFDG1pbk91dEFtb3VudAAACQBmAgUMbWluT3V0QW1vdW50BQdlc3RpbUxQBwkBCHRocm93RXJyAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABQdlc3RpbUxQBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQ9zdGFraW5nQ29udHJhY3QCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGxwSWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQRscElkBQNuaWwEEHNlbmRGZWVUb01hdGNoZXIDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmVlQ29sbGVjdG9yQWRkcmVzcwUJZmVlQW1vdW50CQDZBAEFCnBtdEFzc2V0SWQFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQVzdGF0ZQUIbHBUcm5zZnIFEHNlbmRGZWVUb01hdGNoZXIFCWVtaXRMcEFtdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQdtYXhTbHBnAwkAZgIAAAUHbWF4U2xwZwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEBmVzdFB1dAkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUHbWF4U2xwZwcHBgAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELZ2V0T25lVGtuVjICCm91dEFzc2V0SWQMbWluT3V0QW1vdW50BCBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAoAAUAJAPwHBAUDZmNhAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EDWlzR2V0RGlzYWJsZWQDAwkBA2lncwAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBgUgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQEBmNoZWNrcwkAzAgCAwkBASEBBQ1pc0dldERpc2FibGVkBgkBCHRocm93RXJyAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDM1OTEzMzYwNjgJARNnZXRPbmVUa25WMkludGVybmFsBgUKb3V0QXNzZXRJZAUMbWluT3V0QW1vdW50CAUBaQhwYXltZW50cwgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEBXN0YXRlCAUNJHQwMzU5MTMzNjA2OAJfMQQLdG90YWxBbW91bnQIBQ0kdDAzNTkxMzM2MDY4Al8yCQCUCgIFBXN0YXRlBQt0b3RhbEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNnZXRPbmVUa25WMlJFQURPTkxZAgpvdXRBc3NldElkDWxwQXNzZXRBbW91bnQECnBvb2xDb25maWcJAQNncGMABARhbUlkCQCRAwIFCnBvb2xDb25maWcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhQckFzSWQEBGxwSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAJ4cAkAzAgCCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAzAgCCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAUDbmlsBApscEVtaXNzaW9uCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQRscElkAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJEMAkBBGdldEQBBQJ4cAQCRDEJALgCAgUCRDAJALwCAwkAtgIBBQ1scEFzc2V0QW1vdW50BQJEMAUKbHBFbWlzc2lvbgQFaW5kZXgDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAAAAwkAAAIFCm91dEFzc2V0SWQFBHBySWQAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBARuZXdZCQEFZ2V0WUQDBQJ4cAUFaW5kZXgFAkQxBAJkeQkAuAICCQCRAwIFAnhwBQVpbmRleAUEbmV3WQQLdG90YWxHZXRSYXcJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmR5BQRiaWcxBQNuaWwEDSR0MDM2ODU4MzY5MDcJAQd0YWtlRmVlAQULdG90YWxHZXRSYXcECHRvdGFsR2V0CAUNJHQwMzY4NTgzNjkwNwJfMQQJZmVlQW1vdW50CAUNJHQwMzY4NTgzNjkwNwJfMgkAlAoCBQNuaWwJAJQKAgUIdG90YWxHZXQFCWZlZUFtb3VudAFpARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgpvdXRBc3NldElkDWxwQXNzZXRBbW91bnQECnBvb2xDb25maWcJAQNncGMABARhbUlkCQCRAwIFCnBvb2xDb25maWcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhQckFzSWQEBGxwSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDM3MjUyMzczNjcKAAFACQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQ1scEFzc2V0QW1vdW50BQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQIdG90YWxHZXQIBQ0kdDAzNzI1MjM3MzY3Al8xBAlmZWVBbW91bnQIBQ0kdDAzNzI1MjM3MzY3Al8yBAFyCQEDZWdvBAIABQRscElkBQ1scEFzc2V0QW1vdW50BQR0aGlzBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQOc3VtT2ZHZXRBc3NldHMJAGQCBQhvdXRBbUFtdAUIb3V0UHJBbXQEBWJvbnVzAwkAAAIFDnN1bU9mR2V0QXNzZXRzAAADCQAAAgUIdG90YWxHZXQAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUIdG90YWxHZXQFDnN1bU9mR2V0QXNzZXRzBQZzY2FsZTgFDnN1bU9mR2V0QXNzZXRzCQCUCgIFA25pbAkAlQoDBQh0b3RhbEdldAUJZmVlQW1vdW50BQVib251cwFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDDXVuc3Rha2VBbW91bnQKb3V0QXNzZXRJZAxtaW5PdXRBbW91bnQEIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQNmY2ECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQNaXNHZXREaXNhYmxlZAMDCQEDaWdzAAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24GBSBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAQGY2hlY2tzCQDMCAIDCQEBIQEFDWlzR2V0RGlzYWJsZWQGCQEIdGhyb3dFcnIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAGCQEIdGhyb3dFcnIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQ11bnN0YWtlQW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BA0kdDA0MDA5OTQwMjg3CQETZ2V0T25lVGtuVjJJbnRlcm5hbAYFCm91dEFzc2V0SWQFDG1pbk91dEFtb3VudAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQ11bnN0YWtlQW1vdW50BQNuaWwIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAVzdGF0ZQgFDSR0MDQwMDk5NDAyODcCXzEEC3RvdGFsQW1vdW50CAUNJHQwNDAwOTk0MDI4NwJfMgkAlAoCBQVzdGF0ZQULdG90YWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQIQcGF5bWVudEFtb3VudFJhdw5wYXltZW50QXNzZXRJZAQKcG9vbENvbmZpZwkBA2dwYwAEBGFtSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAQEbHBJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhMUEFzSWQEDSR0MDQwNTQ2NDA2NDkJAQ1jYWxjUHV0T25lVGtuBQUQcGF5bWVudEFtb3VudFJhdwUOcGF5bWVudEFzc2V0SWQCAAIABgQIbHBBbW91bnQIBQ0kdDA0MDU0NjQwNjQ5Al8xBAVzdGF0ZQgFDSR0MDQwNTQ2NDA2NDkCXzIECWZlZUFtb3VudAgFDSR0MDQwNTQ2NDA2NDkCXzMEBWJvbnVzCAUNJHQwNDA1NDY0MDY0OQJfNAkAlAoCBQNuaWwJAJUKAwUIbHBBbW91bnQFCWZlZUFtb3VudAUFYm9udXMBaQEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAhBwYXltZW50QW1vdW50UmF3DnBheW1lbnRBc3NldElkBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBARscElkCQCRAwIFCnBvb2xDb25maWcFCWlkeExQQXNJZAQNJHQwNDA5Mjg0MTAzMgkBDWNhbGNQdXRPbmVUa24FBRBwYXltZW50QW1vdW50UmF3BQ5wYXltZW50QXNzZXRJZAIAAgAHBAhscEFtb3VudAgFDSR0MDQwOTI4NDEwMzICXzEEBXN0YXRlCAUNJHQwNDA5Mjg0MTAzMgJfMgQJZmVlQW1vdW50CAUNJHQwNDA5Mjg0MTAzMgJfMwQFYm9udXMIBQ0kdDA0MDkyODQxMDMyAl80CQCUCgIFA25pbAkAlQoDBQhscEFtb3VudAUJZmVlQW1vdW50BQVib251cwFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8NBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAGBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAFpAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQNmZWUBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmRckC0", "chainId": 87, "height": 3367789, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4kbiYg35R8WTQUnd3ndYk8ff6LRX7Gv1wMYvKcjLjWEy Next: U1bV8Ju4LwXPtKyRzfCcfHfZso9t8JYUqpHvh96Bz6W Diff:
OldNewDifferences
6161
6262 let D = 10
6363
64-let E = fraction(50, a, 10000)
64+let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
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(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
64-let E = fraction(50, a, 10000)
64+let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118118 let ag = "%s__fee"
119119
120120 let ah = valueOrElse(getInteger(this, ag), E)
121121
122122 func ai () = "%s__factoryConfig"
123123
124124
125125 func aj () = "%s%s__matcher__publicKey"
126126
127127
128128 func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
129129
130130
131131 func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
132132
133133
134134 func ap () = "%s__shutdown"
135135
136136
137137 func aq () = "%s__allowedLpStableScriptHash"
138138
139139
140140 func ar () = "%s__feeCollectorAddress"
141141
142142
143143 func as (at,au,av) = throw(((((("Failed: ordValid=" + toString(at)) + " sndrValid=") + toString(au)) + " mtchrValid=") + toString(av)))
144144
145145
146146 func aw (J) = {
147147 let ax = J
148148 if ($isInstanceOf(ax, "String"))
149149 then {
150150 let ay = ax
151151 ay
152152 }
153153 else throw("fail cast to String")
154154 }
155155
156156
157157 func az (aA,aB) = valueOrErrorMessage(getString(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
158158
159159
160160 func aC (aA,aB) = valueOrErrorMessage(getInteger(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
161161
162162
163163 func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
164164
165165
166166 let aF = addressFromStringValue(az(this, R()))
167167
168168 let aG = az(this, ae())
169169
170170 func aH () = valueOrElse(getBoolean(aF, ap()), false)
171171
172172
173173 func aI () = fromBase58String(az(aF, aj()))
174174
175175
176176 let aJ = addressFromStringValue(az(aF, ar()))
177177
178178 func aK () = {
179179 let aL = az(this, ac())
180180 let aM = az(this, ad())
181181 let aN = aC(aF, an(aM))
182182 let al = aC(aF, an(aL))
183183 split(az(aF, ak(toString(al), toString(aN))), l)
184184 }
185185
186186
187187 func aO (aP) = if ((aP == i))
188188 then unit
189189 else fromBase58String(aP)
190190
191191
192192 func aQ (aP) = if ((aP == unit))
193193 then i
194194 else toBase58String(value(aP))
195195
196196
197197 func aR (aS) = $Tuple7(addressFromStringValue(aS[r]), parseIntValue(aS[s]), fromBase58String(aS[t]), aO(aS[u]), aO(aS[v]), parseIntValue(aS[w]), parseIntValue(aS[x]))
198198
199199
200200 let aT = aR(aK())
201201
202202 let aU = aT
203203
204204 let aV = aU._1
205205
206206 let aW = aU._2
207207
208208 let aX = aU._3
209209
210210 let aY = aU._4
211211
212212 let aZ = aU._5
213213
214214 let ba = aU._6
215215
216216 let bb = aU._7
217217
218218 func bc () = split(az(aF, ai()), l)
219219
220220
221221 let bd = bc()
222222
223223 let be = valueOrErrorMessage(addressFromString(bd[A]), "Invalid staking contract address")
224224
225225 let bf = valueOrErrorMessage(addressFromString(bd[C]), "Invalid slipage contract address")
226226
227227 let bg = valueOrErrorMessage(addressFromString(bd[D]), "Invalid gwx contract address")
228228
229229 let bh = valueOrErrorMessage(addressFromString(bd[B]), "Invalid gwx contract address")
230230
231231 func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs)], l)
232232
233233
234234 func bt (bu,bv,bw,bm,bp,bq) = makeString(["%d%d%d%d%d%d", toString(bu), toString(bv), toString(bw), toString(bm), toString(bp), toString(bq)], l)
235235
236236
237237 func bx (by) = if ((by == "WAVES"))
238238 then wavesBalance(this).available
239239 else assetBalance(this, fromBase58String(by))
240240
241241
242242 func bz (bA,bB) = fraction(bA, c, bB)
243243
244244
245245 func bC (bD,bE,bF) = {
246246 let bG = fraction((bD - bE), b, bE)
247247 let bH = ((bF - P(bG)) > d)
248248 if (!(bH))
249249 then throw(("Big slpg: " + toString(bG)))
250250 else $Tuple2(bH, min([bD, bE]))
251251 }
252252
253253
254254 func bI (bJ,bK,bL) = {
255255 let bG = fraction(bK, b, bJ)
256256 let bM = (bL > bG)
257257 if (if (bM)
258258 then true
259259 else (bK > bJ))
260260 then throw(((((((toString(bK) + " ") + toString(bJ)) + " ") + toString(bG)) + " ") + toString(bL)))
261261 else bM
262262 }
263263
264264
265265 func bN (bO,bP,bQ,bR) = {
266266 let bS = F(bQ, bO)
267267 let bT = F(bR, bP)
268268 bz(bT, bS)
269269 }
270270
271271
272272 func bU (bQ,bR,bV) = {
273273 let bW = aK()
274274 let bX = parseIntValue(bW[w])
275275 let bY = parseIntValue(bW[x])
276276 let bZ = bN(bX, bY, bQ, bR)
277277 let bB = F(bQ, bX)
278278 let bA = F(bR, bY)
279279 let ca = F(bV, a)
280280 let cb = bz(bB, ca)
281281 let cc = bz(bA, ca)
282282 [bZ, cb, cc]
283283 }
284284
285285
286286 func cd (bQ,bR,bV) = {
287287 let ce = bU(bQ, bR, bV)
288288 [I(ce[0], a), I(ce[1], a), I(ce[2], a)]
289289 }
290290
291291
292292 func cf (cg) = {
293293 let ch = fraction(cg, ah, a)
294294 $Tuple2((cg - ch), ch)
295295 }
296296
297297
298298 func ci (cj,ck,cl,cm) = {
299299 let bW = aK()
300300 let cn = bW[t]
301301 let co = bW[u]
302302 let cp = bW[v]
303303 let cq = parseIntValue(bW[w])
304304 let cr = parseIntValue(bW[x])
305305 let cs = bW[s]
306306 let ct = valueOrErrorMessage(assetInfo(fromBase58String(cn)), "Wrong LP id").quantity
307307 if ((cn != ck))
308308 then throw("Wrong pmt asset")
309309 else {
310310 let cu = bx(co)
311311 let cv = F(cu, cq)
312312 let cw = bx(cp)
313313 let cx = F(cw, cr)
314314 let cy = bz(cx, cv)
315315 let cz = I(cy, a)
316316 let cA = F(cl, a)
317317 let cB = F(ct, a)
318318 let cC = fraction(cv, cA, cB)
319319 let cD = fraction(cx, cA, cB)
320320 let cE = I(cC, cq)
321321 let cF = I(cD, cr)
322322 let cG = if ((cj == ""))
323323 then nil
324324 else [ScriptTransfer(cm, cE, if ((co == "WAVES"))
325325 then unit
326326 else fromBase58String(co)), ScriptTransfer(cm, cF, if ((cp == "WAVES"))
327327 then unit
328328 else fromBase58String(cp)), StringEntry(ab(toString(cm), cj), bt(cE, cF, cl, cz, height, lastBlock.timestamp)), IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz)]
329329 $Tuple10(cE, cF, co, cp, cu, cw, ct, cy, cs, cG)
330330 }
331331 }
332332
333333
334334 func cH (cj,bF,cI,cJ,cK,cL,cm,cM,cN,cO,cP,cQ,cR) = {
335335 let bW = aK()
336336 let cn = fromBase58String(bW[t])
337337 let cS = bW[u]
338338 let cT = bW[v]
339339 let cU = bW[y]
340340 let cV = bW[z]
341341 let cW = parseIntValue(bW[w])
342342 let cX = parseIntValue(bW[x])
343343 let cs = bW[s]
344344 let cY = valueOrErrorMessage(assetInfo(cn), "Wr lp as").quantity
345345 let cu = if (cM)
346346 then bx(cS)
347347 else if (if (cO)
348348 then (cR == cS)
349349 else false)
350350 then (bx(cS) - cQ)
351351 else if (cO)
352352 then bx(cS)
353353 else (bx(cS) - cI)
354354 let cw = if (cM)
355355 then bx(cT)
356356 else if (if (cO)
357357 then (cR == cT)
358358 else false)
359359 then (bx(cT) - cQ)
360360 else if (cO)
361361 then bx(cT)
362362 else (bx(cT) - cK)
363363 let cZ = F(cI, cW)
364364 let da = F(cK, cX)
365365 let db = bz(da, cZ)
366366 let cv = F(cu, cW)
367367 let cx = F(cw, cX)
368368 let dc = if ((cY == 0))
369369 then {
370370 let cy = d
371371 let dd = d
372372 let ca = pow((cZ * da), 0, toBigInt(5), 1, 0, DOWN)
373373 $Tuple5(I(ca, a), I(cZ, cW), I(da, cX), bz((cx + da), (cv + cZ)), dd)
374374 }
375375 else {
376376 let cy = bz(cx, cv)
377377 let de = fraction(P((cy - db)), c, cy)
378378 let dd = F(bF, a)
379379 if (if (if (cP)
380380 then (cy != d)
381381 else false)
382382 then (de > dd)
383383 else false)
384384 then throw(((("Price slippage " + toString(de)) + " > ") + toString(dd)))
385385 else {
386386 let df = F(cY, a)
387387 let dg = fraction(cZ, cy, c)
388388 let dh = fraction(da, c, cy)
389389 let di = if ((dg > da))
390390 then $Tuple2(dh, da)
391391 else $Tuple2(cZ, dg)
392392 let dj = di._1
393393 let dk = di._2
394394 let ca = fraction(df, dk, cx)
395395 $Tuple5(I(ca, a), I(dj, cW), I(dk, cX), cy, dd)
396396 }
397397 }
398398 let dl = dc._1
399399 let dm = dc._2
400400 let dn = dc._3
401401 let cz = I(dc._4, a)
402402 let do = I(dc._5, a)
403403 if ((0 >= dl))
404404 then throw("LP <= 0")
405405 else {
406406 let dp = if (!(cN))
407407 then 0
408408 else dl
409409 let dq = (cI - dm)
410410 let dr = (cK - dn)
411411 let ds = if (if (cO)
412412 then (cR == cS)
413413 else false)
414414 then $Tuple2(cQ, 0)
415415 else if (if (cO)
416416 then (cR == cT)
417417 else false)
418418 then $Tuple2(0, cQ)
419419 else $Tuple2(dm, dn)
420420 let dt = ds._1
421421 let du = ds._2
422422 let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, cj), bi(dt, du, dp, cz, bF, do, height, lastBlock.timestamp, dq, dr))]
423423 $Tuple13(dl, dp, cz, cu, cw, cY, cn, cs, dv, dq, dr, cJ, cL)
424424 }
425425 }
426426
427427
428428 func dw (dx) = {
429429 let bW = aK()
430430 let dy = bW[u]
431431 let dz = bW[v]
432432 let cs = parseIntValue(bW[s])
433433 let bX = parseIntValue(bW[w])
434434 let bY = parseIntValue(bW[x])
435435 let dA = bx(dy)
436436 let dB = bx(dz)
437437 let cy = if ((dx.orderType == Buy))
438438 then bN(bX, bY, (dA + dx.amount), dB)
439439 else bN(bX, bY, (dA - dx.amount), dB)
440440 let cz = I(cy, a)
441441 if (if (if (aH())
442442 then true
443443 else (cs == p))
444444 then true
445445 else (cs == q))
446446 then throw("Admin blocked")
447447 else {
448448 let dC = dx.assetPair.amountAsset
449449 let dD = if ((dC == unit))
450450 then "WAVES"
451451 else toBase58String(value(dC))
452452 let dE = dx.assetPair.priceAsset
453453 let dF = if ((dE == unit))
454454 then "WAVES"
455455 else toBase58String(value(dE))
456456 if (if ((dD != dy))
457457 then true
458458 else (dF != dz))
459459 then throw("Wr assets")
460460 else {
461461 let dG = dx.price
462462 let cX = fraction(a, bY, bX)
463463 let dH = L(dG, a, cX)
464464 let dI = if ((dx.orderType == Buy))
465465 then (cz >= dH)
466466 else (dH >= cz)
467467 true
468468 }
469469 }
470470 }
471471
472472
473473 func dJ (dK) = if ((size(dK.payments) != 1))
474474 then throw("1 pmnt exp")
475475 else {
476476 let dL = value(dK.payments[0])
477477 let ck = value(dL.assetId)
478478 let cQ = dL.amount
479479 let dc = ci(toBase58String(dK.transactionId), toBase58String(ck), cQ, dK.caller)
480480 let cE = dc._1
481481 let cF = dc._2
482482 let cs = parseIntValue(dc._9)
483483 let cG = dc._10
484484 if (if (aH())
485485 then true
486486 else (cs == q))
487487 then throw(("Admin blocked: " + toString(cs)))
488488 else $Tuple5(cE, cF, cQ, ck, cG)
489489 }
490490
491491
492492 func dM (dN,aa,dO,dP,bF,cN,cO,cP,cQ,cR) = {
493493 let dc = cH(aa, bF, value(dO).amount, value(dO).assetId, value(dP).amount, value(dP).assetId, dN, (aa == ""), cN, cO, cP, cQ, cR)
494494 let cs = parseIntValue(dc._8)
495495 if (if (if (aH())
496496 then true
497497 else (cs == o))
498498 then true
499499 else (cs == q))
500500 then throw(("Blocked:" + toString(cs)))
501501 else dc
502502 }
503503
504504
505505 func dQ (dR) = {
506506 let dS = g
507507 let dT = dR[0]
508508 let dU = dR[1]
509509 let dV = parseBigIntValue(j)
510510 let dW = (parseBigIntValue(aG) * dV)
511511 let dX = (dT + dU)
512512 if ((dX == e))
513513 then e
514514 else {
515515 let dY = (dW * dS)
516516 let dZ = (((dT * dU) * dS) * dS)
517517 let ea = ((dY * dX) / dV)
518518 let eb = (dY - dV)
519519 let ec = (dS + f)
520520 func ed (ee,ef) = {
521521 let eg = ee
522522 let eh = eg._1
523523 let ei = eg._2
524524 if ((ei != unit))
525525 then ee
526526 else {
527527 let ej = (((eh * eh) * eh) / dZ)
528528 let ek = (((ea + (ej * dS)) * eh) / (((eb * eh) / dV) + (ec * ej)))
529529 let el = Q((ek - value(eh)))
530530 if ((f >= el))
531531 then $Tuple2(ek, ef)
532532 else $Tuple2(ek, unit)
533533 }
534534 }
535535
536536 let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
537537 let en = {
538538 let eo = em
539539 let ep = size(eo)
540540 let eq = $Tuple2(dX, unit)
541541 func er (es,et) = if ((et >= ep))
542542 then es
543543 else ed(es, eo[et])
544544
545545 func eu (es,et) = if ((et >= ep))
546546 then es
547547 else throw("List size exceeds 15")
548548
549549 eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
550550 }
551551 let eh = en._1
552552 let ei = en._2
553553 if ((ei != unit))
554554 then eh
555555 else throw(("D calculation error, D = " + toString(eh)))
556556 }
557557 }
558558
559559
560560 func ev (dR,dK,ew) = {
561561 let dS = g
562562 let ex = dR[if ((dK == 0))
563563 then 1
564564 else 0]
565565 let dV = parseBigIntValue(j)
566566 let dW = (parseBigIntValue(aG) * dV)
567567 let dX = ex
568568 let dY = (dW * dS)
569569 let ey = (((((ew * ew) / (ex * dS)) * ew) * dV) / (dY * dS))
570570 let ez = ((dX + ((ew * dV) / dY)) - ew)
571571 func ed (ee,ef) = {
572572 let eA = ee
573573 let eB = eA._1
574574 let ei = eA._2
575575 if ((ei != unit))
576576 then ee
577577 else {
578578 let eC = (((eB * eB) + ey) / ((g * eB) + ez))
579579 let eD = Q((eC - value(eB)))
580580 if ((f >= eD))
581581 then $Tuple2(eC, ef)
582582 else $Tuple2(eC, unit)
583583 }
584584 }
585585
586586 let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
587587 let eE = {
588588 let eo = em
589589 let ep = size(eo)
590590 let eq = $Tuple2(ew, unit)
591591 func er (es,et) = if ((et >= ep))
592592 then es
593593 else ed(es, eo[et])
594594
595595 func eu (es,et) = if ((et >= ep))
596596 then es
597597 else throw("List size exceeds 15")
598598
599599 eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
600600 }
601601 let eB = eE._1
602602 let ei = eE._2
603603 if ((ei != unit))
604604 then eB
605605 else throw(("Y calculation error, Y = " + toString(eB)))
606606 }
607607
608608
609609 func eF (eG,ck,cm,aa,eH) = {
610610 let aS = aK()
611611 let co = aS[u]
612612 let cp = aS[v]
613613 let cn = aS[t]
614614 let cW = parseIntValue(aS[w])
615615 let cX = parseIntValue(aS[x])
616616 let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617617 let eJ = if ((eI > e))
618618 then true
619619 else throw("initial deposit requires all coins")
620620 if ((eJ == eJ))
621621 then {
622622 let cu = bx(co)
623623 let cw = bx(cp)
624624 let eK = if ((aa == ""))
625625 then $Tuple2(cu, cw)
626626 else if ((ck == co))
627627 then if ((eG > cu))
628628 then throw("invalid payment amount")
629629 else $Tuple2((cu - eG), cw)
630630 else if ((ck == cp))
631631 then if ((eG > cw))
632632 then throw("invalid payment amount")
633633 else $Tuple2(cu, (cw - eG))
634634 else throw("wrong pmtAssetId")
635635 let eL = eK._1
636636 let eM = eK._2
637637 let eN = if ((ck == co))
638638 then $Tuple2(eG, 0)
639639 else if ((ck == cp))
640640 then $Tuple2(0, eG)
641641 else throw("invalid payment")
642642 let eO = eN._1
643643 let eP = eN._2
644644 let eQ = if (eH)
645645 then $Tuple3(cf(eO)._1, cf(eP)._1, cf(eG)._2)
646646 else $Tuple3(eO, eP, 0)
647647 let eR = eQ._1
648648 let eS = eQ._2
649649 let ch = eQ._3
650650 let eT = (eL + eR)
651651 let eU = (eM + eS)
652652 let bK = dQ([toBigInt(eL), toBigInt(eM)])
653653 let bJ = dQ([toBigInt(eT), toBigInt(eU)])
654654 let eV = if ((bJ > bK))
655655 then true
656656 else throw()
657657 if ((eV == eV))
658658 then {
659659 let eW = fraction(eI, (bJ - bK), bK)
660660 let cz = I(bz(F(eU, cX), F(eT, cW)), a)
661661 let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eO, eP, toInt(eW), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
662662 let eX = fraction(eM, a, eL)
663663 let eY = fraction(eG, a, (eX + a))
664664 let eZ = (eG - eY)
665665 let fa = fraction(eI, toBigInt(eZ), toBigInt(eM))
666666 let fb = toInt(fraction((eW - fa), b, fa))
667667 $Tuple4(toInt(eW), dv, ch, fb)
668668 }
669669 else throw("Strict value is not equal to itself.")
670670 }
671671 else throw("Strict value is not equal to itself.")
672672 }
673673
674674
675675 func fc (fd,fe,ff,dN,fg,fh) = {
676676 let aS = aK()
677677 let cn = aS[t]
678678 let co = aS[u]
679679 let cp = aS[v]
680680 let fi = parseIntValue(aS[w])
681681 let fj = parseIntValue(aS[x])
682682 let fk = aS[s]
683683 let cm = if ((dN == bh))
684684 then fg
685685 else dN
686686 let dL = value(ff[0])
687687 let ck = value(dL.assetId)
688688 let cQ = dL.amount
689689 let cj = toBase58String(fh)
690690 if ((cn != toBase58String(ck)))
691691 then throw("Wrong LP")
692692 else {
693693 let cu = bx(co)
694694 let cw = bx(cp)
695695 let fl = {
696696 let fm = invoke(this, "getOneTknV2READONLY", [fd, cQ], nil)
697697 if ($isInstanceOf(fm, "(Int, Int)"))
698698 then fm
699699 else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
700700 }
701701 let fn = fl._1
702702 let ch = fl._2
703703 let fo = if (if ((fe > 0))
704704 then (fe > fn)
705705 else false)
706706 then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
707707 else fn
708708 let fp = if ((fd == co))
709709 then $Tuple4(fo, 0, ((cu - fo) - ch), cw)
710710 else if ((fd == cp))
711711 then $Tuple4(0, fo, cu, ((cw - fo) - ch))
712712 else throw("invalid out asset id")
713713 let fq = fp._1
714714 let fr = fp._2
715715 let eT = fp._3
716716 let eU = fp._4
717717 let fs = bz(F(eU, fj), F(eT, fi))
718718 let ft = I(fs, a)
719719 let fu = if ((fd == "WAVES"))
720720 then unit
721721 else fromBase58String(fd)
722722 let fv = if ((ch > 0))
723723 then [ScriptTransfer(aJ, ch, fu)]
724724 else nil
725725 let cG = ([ScriptTransfer(cm, fo, fu), StringEntry(ab(toString(cm), cj), bt(fq, fr, cQ, ft, height, lastBlock.timestamp)), IntegerEntry(U(), ft), IntegerEntry(V(height, lastBlock.timestamp), ft)] ++ fv)
726726 if ((cG == cG))
727727 then {
728728 let fw = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
729729 if ((fw == fw))
730730 then $Tuple2(cG, fo)
731731 else throw("Strict value is not equal to itself.")
732732 }
733733 else throw("Strict value is not equal to itself.")
734734 }
735735 }
736736
737737
738738 func fx () = {
739739 let ax = getString(S())
740740 if ($isInstanceOf(ax, "String"))
741741 then {
742742 let dX = ax
743743 fromBase58String(dX)
744744 }
745745 else if ($isInstanceOf(ax, "Unit"))
746746 then unit
747747 else throw("Match error")
748748 }
749749
750750
751751 func fy () = {
752752 let ax = getString(T())
753753 if ($isInstanceOf(ax, "String"))
754754 then {
755755 let dX = ax
756756 fromBase58String(dX)
757757 }
758758 else if ($isInstanceOf(ax, "Unit"))
759759 then unit
760760 else throw("Match error")
761761 }
762762
763763
764764 let fz = throw("Permission denied")
765765
766766 func fA (dK) = {
767767 let ax = fx()
768768 if ($isInstanceOf(ax, "ByteVector"))
769769 then {
770770 let fB = ax
771771 if ((dK.callerPublicKey == fB))
772772 then true
773773 else fz
774774 }
775775 else if ($isInstanceOf(ax, "Unit"))
776776 then if ((dK.caller == this))
777777 then true
778778 else fz
779779 else throw("Match error")
780780 }
781781
782782
783783 @Callable(dK)
784784 func constructor (R) = {
785785 let ey = fA(dK)
786786 if ((ey == ey))
787787 then [StringEntry(R(), R)]
788788 else throw("Strict value is not equal to itself.")
789789 }
790790
791791
792792
793793 @Callable(dK)
794794 func setManager (fC) = {
795795 let ey = fA(dK)
796796 if ((ey == ey))
797797 then {
798798 let fD = fromBase58String(fC)
799799 if ((fD == fD))
800800 then [StringEntry(T(), fC)]
801801 else throw("Strict value is not equal to itself.")
802802 }
803803 else throw("Strict value is not equal to itself.")
804804 }
805805
806806
807807
808808 @Callable(dK)
809809 func confirmManager () = {
810810 let ce = fy()
811811 let fE = if (isDefined(ce))
812812 then true
813813 else throw("No pending manager")
814814 if ((fE == fE))
815815 then {
816816 let fF = if ((dK.callerPublicKey == value(ce)))
817817 then true
818818 else throw("You are not pending manager")
819819 if ((fF == fF))
820820 then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
821821 else throw("Strict value is not equal to itself.")
822822 }
823823 else throw("Strict value is not equal to itself.")
824824 }
825825
826826
827827
828828 @Callable(dK)
829829 func put (fG,fH) = {
830830 let fI = bc()
831831 let fJ = valueOrErrorMessage(addressFromString(fI[A]), "Wr st addr")
832832 let fK = valueOrErrorMessage(addressFromString(fI[C]), "Wr sl addr")
833833 if ((0 > fG))
834834 then throw("Wrong slippage")
835835 else if ((size(dK.payments) != 2))
836836 then throw("2 pmnts expd")
837837 else {
838838 let fL = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fG, true, false, true, 0, "")
839839 let dp = fL._2
840840 let fM = fL._7
841841 let cG = fL._9
842842 let dq = fL._10
843843 let dr = fL._11
844844 let co = fL._12
845845 let cp = fL._13
846846 let dc = invoke(aF, "emit", [dp], nil)
847847 if ((dc == dc))
848848 then {
849849 let fN = {
850850 let ax = dc
851851 if ($isInstanceOf(ax, "Address"))
852852 then {
853853 let fO = ax
854854 invoke(fO, "emit", [dp], nil)
855855 }
856856 else unit
857857 }
858858 if ((fN == fN))
859859 then {
860860 let fP = if ((dq > 0))
861861 then invoke(fK, "put", nil, [AttachedPayment(co, dq)])
862862 else nil
863863 if ((fP == fP))
864864 then {
865865 let fQ = if ((dr > 0))
866866 then invoke(fK, "put", nil, [AttachedPayment(cp, dr)])
867867 else nil
868868 if ((fQ == fQ))
869869 then {
870870 let fR = if (fH)
871871 then {
872872 let fS = invoke(fJ, "stake", nil, [AttachedPayment(fM, dp)])
873873 if ((fS == fS))
874874 then nil
875875 else throw("Strict value is not equal to itself.")
876876 }
877877 else [ScriptTransfer(dK.caller, dp, fM)]
878878 (cG ++ fR)
879879 }
880880 else throw("Strict value is not equal to itself.")
881881 }
882882 else throw("Strict value is not equal to itself.")
883883 }
884884 else throw("Strict value is not equal to itself.")
885885 }
886886 else throw("Strict value is not equal to itself.")
887887 }
888888 }
889889
890890
891891
892892 @Callable(dK)
893893 func putOneTknV2 (fe,fH) = {
894894 let fT = {
895895 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
896896 if ($isInstanceOf(fm, "Boolean"))
897897 then fm
898898 else throw(($getType(fm) + " couldn't be cast to Boolean"))
899899 }
900900 let fU = if (if (if (aH())
901901 then true
902902 else (aW == o))
903903 then true
904904 else (aW == q))
905905 then true
906906 else fT
907907 let fV = [if (!(fU))
908908 then true
909909 else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
910910 then true
911911 else aD("exactly 1 payment are expected")]
912912 if ((fV == fV))
913913 then {
914914 let aS = aK()
915915 let co = aS[u]
916916 let cp = aS[v]
917917 let cn = fromBase58String(aS[t])
918918 let fi = parseIntValue(aS[w])
919919 let fj = parseIntValue(aS[x])
920920 let cm = if ((dK.caller == this))
921921 then dK.originCaller
922922 else dK.caller
923923 let dL = value(dK.payments[0])
924924 let ck = toBase58String(value(dL.assetId))
925925 let cQ = dL.amount
926926 let fW = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
927927 let fX = fW._1
928928 let cG = fW._2
929929 let ch = fW._3
930930 let dp = if (if ((fe > 0))
931931 then (fe > fX)
932932 else false)
933933 then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
934934 else fX
935935 let fL = invoke(aF, "emit", [dp], nil)
936936 if ((fL == fL))
937937 then {
938938 let fN = {
939939 let ax = fL
940940 if ($isInstanceOf(ax, "Address"))
941941 then {
942942 let fO = ax
943943 invoke(fO, "emit", [dp], nil)
944944 }
945945 else unit
946946 }
947947 if ((fN == fN))
948948 then {
949949 let fR = if (fH)
950950 then {
951951 let fS = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
952952 if ((fS == fS))
953953 then nil
954954 else throw("Strict value is not equal to itself.")
955955 }
956956 else [ScriptTransfer(dK.caller, dp, cn)]
957957 let fv = if ((ch > 0))
958958 then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
959959 else nil
960960 $Tuple2(((cG ++ fR) ++ fv), dp)
961961 }
962962 else throw("Strict value is not equal to itself.")
963963 }
964964 else throw("Strict value is not equal to itself.")
965965 }
966966 else throw("Strict value is not equal to itself.")
967967 }
968968
969969
970970
971971 @Callable(dK)
972972 func putForFree (fY) = if ((0 > fY))
973973 then throw("Wrong slpg")
974974 else if ((size(dK.payments) != 2))
975975 then throw("2 pmnts expd")
976976 else {
977977 let fZ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fY, false, false, true, 0, "")
978978 fZ._9
979979 }
980980
981981
982982
983983 @Callable(dK)
984984 func get () = {
985985 let dc = dJ(dK)
986986 let ga = dc._1
987987 let cF = dc._2
988988 let cQ = dc._3
989989 let ck = dc._4
990990 let cG = dc._5
991991 let ez = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
992992 if ((ez == ez))
993993 then cG
994994 else throw("Strict value is not equal to itself.")
995995 }
996996
997997
998998
999999 @Callable(dK)
10001000 func getOneTknV2 (fd,fe) = {
10011001 let fT = {
10021002 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10031003 if ($isInstanceOf(fm, "Boolean"))
10041004 then fm
10051005 else throw(($getType(fm) + " couldn't be cast to Boolean"))
10061006 }
10071007 let gb = if (if (aH())
10081008 then true
10091009 else (aW == q))
10101010 then true
10111011 else fT
10121012 let fV = [if (!(gb))
10131013 then true
10141014 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
10151015 then true
10161016 else aD("exactly 1 payment are expected")]
10171017 if ((fV == fV))
10181018 then {
10191019 let gc = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
10201020 let cG = gc._1
10211021 let fo = gc._2
10221022 $Tuple2(cG, fo)
10231023 }
10241024 else throw("Strict value is not equal to itself.")
10251025 }
10261026
10271027
10281028
10291029 @Callable(dK)
10301030 func getOneTknV2READONLY (fd,gd) = {
10311031 let aS = aK()
10321032 let co = aS[u]
10331033 let cp = aS[v]
10341034 let cn = aS[t]
10351035 let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
10361036 let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
10371037 let bK = dQ(dR)
10381038 let bJ = (bK - fraction(toBigInt(gd), bK, ge))
10391039 let gf = if ((fd == co))
10401040 then 0
10411041 else if ((fd == cp))
10421042 then 1
10431043 else throw("invalid out asset id")
10441044 let gg = ev(dR, gf, bJ)
10451045 let gh = (dR[gf] - gg)
10461046 let gi = max([0, toInt((gh - f))])
10471047 let gj = cf(gi)
10481048 let fn = gj._1
10491049 let ch = gj._2
10501050 $Tuple2(nil, $Tuple2(fn, ch))
10511051 }
10521052
10531053
10541054
10551055 @Callable(dK)
10561056 func getOneTknV2WithBonusREADONLY (fd,gd) = {
10571057 let aS = aK()
10581058 let co = aS[u]
10591059 let cp = aS[v]
10601060 let cn = aS[t]
10611061 let cu = bx(co)
10621062 let cw = bx(cp)
10631063 let gk = {
10641064 let fm = invoke(this, "getOneTknV2READONLY", [fd, gd], nil)
10651065 if ($isInstanceOf(fm, "(Int, Int)"))
10661066 then fm
10671067 else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
10681068 }
10691069 let fn = gk._1
10701070 let ch = gk._2
10711071 let dc = ci("", cn, gd, this)
10721072 let cE = dc._1
10731073 let cF = dc._2
10741074 let gl = (cE + cF)
10751075 let fb = if ((gl == 0))
10761076 then if ((fn == 0))
10771077 then 0
10781078 else throw("bonus calculation error")
10791079 else fraction((fn - gl), a, gl)
10801080 $Tuple2(nil, $Tuple3(fn, ch, fb))
10811081 }
10821082
10831083
10841084
10851085 @Callable(dK)
10861086 func getNoLess (gm,gn) = {
10871087 let dc = dJ(dK)
10881088 let cE = dc._1
10891089 let cF = dc._2
10901090 let cQ = dc._3
10911091 let ck = dc._4
10921092 let cG = dc._5
10931093 if ((gm > cE))
10941094 then throw(((("Failed: " + toString(cE)) + " < ") + toString(gm)))
10951095 else if ((gn > cF))
10961096 then throw(((("Failed: " + toString(cF)) + " < ") + toString(gn)))
10971097 else {
10981098 let go = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
10991099 if ((go == go))
11001100 then cG
11011101 else throw("Strict value is not equal to itself.")
11021102 }
11031103 }
11041104
11051105
11061106
11071107 @Callable(dK)
11081108 func unstakeAndGet (cg) = {
11091109 let gp = if ((size(dK.payments) != 0))
11101110 then throw("No pmnts expd")
11111111 else true
11121112 if ((gp == gp))
11131113 then {
11141114 let bW = aK()
11151115 let gq = bc()
11161116 let fM = fromBase58String(bW[t])
11171117 let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
11181118 let gs = invoke(gr, "unstake", [toBase58String(fM), cg], nil)
11191119 if ((gs == gs))
11201120 then {
11211121 let dc = ci(toBase58String(dK.transactionId), toBase58String(fM), cg, dK.caller)
11221122 let cs = parseIntValue(dc._9)
11231123 let cG = dc._10
11241124 let gt = if (if (aH())
11251125 then true
11261126 else (cs == q))
11271127 then throw(("Blocked: " + toString(cs)))
11281128 else true
11291129 if ((gt == gt))
11301130 then {
11311131 let gu = invoke(aF, "burn", [cg], [AttachedPayment(fM, cg)])
11321132 if ((gu == gu))
11331133 then cG
11341134 else throw("Strict value is not equal to itself.")
11351135 }
11361136 else throw("Strict value is not equal to itself.")
11371137 }
11381138 else throw("Strict value is not equal to itself.")
11391139 }
11401140 else throw("Strict value is not equal to itself.")
11411141 }
11421142
11431143
11441144
11451145 @Callable(dK)
11461146 func unstakeAndGetOneTknV2 (gv,fd,fe) = {
11471147 let fT = {
11481148 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11491149 if ($isInstanceOf(fm, "Boolean"))
11501150 then fm
11511151 else throw(($getType(fm) + " couldn't be cast to Boolean"))
11521152 }
11531153 let gb = if (if (aH())
11541154 then true
11551155 else (aW == q))
11561156 then true
11571157 else fT
11581158 let fV = [if (!(gb))
11591159 then true
11601160 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
11611161 then true
11621162 else aD("no payments are expected")]
11631163 if ((fV == fV))
11641164 then {
11651165 let bW = aK()
11661166 let gq = bc()
11671167 let fM = fromBase58String(bW[t])
11681168 let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
11691169 let gs = invoke(gr, "unstake", [toBase58String(fM), gv], nil)
11701170 if ((gs == gs))
11711171 then {
11721172 let gw = fc(fd, fe, [AttachedPayment(fM, gv)], dK.caller, dK.originCaller, dK.transactionId)
11731173 let cG = gw._1
11741174 let fo = gw._2
11751175 $Tuple2(cG, fo)
11761176 }
11771177 else throw("Strict value is not equal to itself.")
11781178 }
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181
11821182
11831183
11841184 @Callable(dK)
11851185 func putOneTknV2WithBonusREADONLY (gx,gy) = {
11861186 let aS = aK()
11871187 let co = aS[u]
11881188 let cp = aS[v]
11891189 let cn = aS[t]
11901190 let gz = eF(gx, gy, "", "", true)
11911191 let eW = gz._1
11921192 let cG = gz._2
11931193 let ch = gz._3
11941194 let fb = gz._4
11951195 $Tuple2(nil, $Tuple3(eW, ch, fb))
11961196 }
11971197
11981198
11991199
12001200 @Callable(dK)
12011201 func putOneTknV2WithoutTakeFeeREADONLY (gx,gy) = {
12021202 let aS = aK()
12031203 let co = aS[u]
12041204 let cp = aS[v]
12051205 let cn = aS[t]
12061206 let gA = eF(gx, gy, "", "", false)
12071207 let eW = gA._1
12081208 let cG = gA._2
12091209 let ch = gA._3
12101210 let fb = gA._4
12111211 $Tuple2(nil, $Tuple3(eW, ch, fb))
12121212 }
12131213
12141214
12151215
12161216 @Callable(dK)
12171217 func activate (gB,gC) = if ((toString(dK.caller) != toString(aF)))
12181218 then throw("denied")
12191219 else $Tuple2([StringEntry(ac(), gB), StringEntry(ad(), gC)], "success")
12201220
12211221
12221222
12231223 @Callable(dK)
12241224 func setS (gD,gt) = if ((toString(dK.caller) != az(this, af())))
12251225 then fz
12261226 else [StringEntry(gD, gt)]
12271227
12281228
12291229
12301230 @Callable(dK)
12311231 func setI (gD,gt) = if ((toString(dK.caller) != az(this, af())))
12321232 then fz
12331233 else [IntegerEntry(gD, gt)]
12341234
12351235
12361236
12371237 @Callable(dK)
12381238 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aK())
12391239
12401240
12411241
12421242 @Callable(dK)
12431243 func getAccBalanceWrapperREADONLY (by) = $Tuple2(nil, bx(by))
12441244
12451245
12461246
12471247 @Callable(dK)
12481248 func calcPricesWrapperREADONLY (bQ,bR,bV) = {
12491249 let gE = bU(bQ, bR, bV)
12501250 $Tuple2(nil, [toString(gE[0]), toString(gE[1]), toString(gE[2])])
12511251 }
12521252
12531253
12541254
12551255 @Callable(dK)
12561256 func fromX18WrapperREADONLY (J,gF) = $Tuple2(nil, I(parseBigIntValue(J), gF))
12571257
12581258
12591259
12601260 @Callable(dK)
12611261 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
12621262
12631263
12641264
12651265 @Callable(dK)
12661266 func calcPriceBigIntWrapperREADONLY (bA,bB) = $Tuple2(nil, toString(bz(parseBigIntValue(bA), parseBigIntValue(bB))))
12671267
12681268
12691269
12701270 @Callable(dK)
12711271 func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gG,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gG, cM, cN, true, false, 0, ""))
12721272
12731273
12741274
12751275 @Callable(dK)
12761276 func estimateGetOperationWrapperREADONLY (cj,gH,cl,gG) = {
12771277 let dc = ci(cj, gH, cl, addressFromStringValue(gG))
12781278 $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
12791279 }
12801280
12811281
12821282
12831283 @Callable(dK)
12841284 func getFeeREADONLY () = $Tuple2(nil, ah)
12851285
12861286
12871287 @Verifier(gI)
12881288 func gJ () = {
12891289 let gK = {
12901290 let ax = fx()
12911291 if ($isInstanceOf(ax, "ByteVector"))
12921292 then {
12931293 let fB = ax
12941294 fB
12951295 }
12961296 else if ($isInstanceOf(ax, "Unit"))
12971297 then gI.senderPublicKey
12981298 else throw("Match error")
12991299 }
13001300 let ax = gI
13011301 if ($isInstanceOf(ax, "Order"))
13021302 then {
13031303 let dx = ax
13041304 let gL = aI()
13051305 let gM = dw(dx)
13061306 let gN = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
13071307 let gO = sigVerify(dx.bodyBytes, dx.proofs[1], gL)
13081308 if (if (if (gM)
13091309 then gN
13101310 else false)
13111311 then gO
13121312 else false)
13131313 then true
13141314 else as(gM, gN, gO)
13151315 }
13161316 else if ($isInstanceOf(ax, "SetScriptTransaction"))
13171317 then {
13181318 let dX = ax
13191319 let gP = blake2b256(value(dX.script))
13201320 let gQ = fromBase64String(value(getString(aF, aq())))
13211321 let gR = scriptHash(this)
13221322 if (if ((gQ == gP))
13231323 then (gR != gP)
13241324 else false)
13251325 then true
13261326 else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
13271327 }
13281328 else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
13291329 }
13301330

github/deemru/w8io/3ef1775 
103.75 ms