tx · EfummeYHg8TcU545PfUTxcxpk6HYUwv3KbmjFftvdA8G

3MpaDTfGahKAdXB9PeznNThKz6Nw1G2gxJB:  -0.02900000 Waves

2022.10.26 12:56 [2289237] smart account 3MpaDTfGahKAdXB9PeznNThKz6Nw1G2gxJB > SELF 0.00000000 Waves

{ "type": 13, "id": "EfummeYHg8TcU545PfUTxcxpk6HYUwv3KbmjFftvdA8G", "fee": 2900000, "feeAssetId": null, "timestamp": 1666778209401, "version": 1, "sender": "3MpaDTfGahKAdXB9PeznNThKz6Nw1G2gxJB", "senderPublicKey": "8xq2GREVKUe7SKE2XzJzQnB97tmj2C3rmEhTseHdpgXM", "proofs": [ "4se8dJ6Q7G4yHGyikYrdaNRco23X3LbiGBpx4Hd8CYSeZRuxFk8Y8kks5pnzrp3J1NypPNnabvV2EKp87p7SmNvY" ], "script": "base64:BgLJJggCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBAoCCAgSABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzU0Mzc3MDkiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIg1vcmRlckFtdEFzc2V0IhBvcmRlckFtdEFzc2V0U3RyIg9vcmRlclByaWNlQXNzZXQiEm9yZGVyUHJpY2VBc3NldFN0ciIKb3JkZXJQcmljZSIIcHJpY2VEY20iEGNhc3RlZE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyMjU3MDIyODYzIhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDIyODY3MjMwMTYiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3IhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjMxMzgyMzE5NyINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCILcHJpY2VJbXBhY3QiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjYxMzUyNjE4NSILdG90YWxBbW91bnQiDSR0MDI2MTg5MjY0MTUiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciICcGQiAnBrIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiILbWF4U2xpcHBhZ2UiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzA5OTczMTEyNCITZW1pdEFtb3VudEVzdGltYXRlZCIFYm9udXMiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMTg1MzMxOTg4Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzMjc2MDMyODkyIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDMzNTI3MzM2NjUiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM0NDU3MzQ1ODciCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiDXBvb2xMUEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoYgABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFLAUwBTQkAawMFAUsFAUwFAU0BAU4BAUgDCQBmAgAABQFICQEBLQEFAUgFAUgBAU8BAUgDCQC/AgIFAWUFAUgJAL4CAQUBSAUBSAEBUAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVEAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUwACESVzJXNfX3ByaWNlX19sYXN0AQFUAgFVAVYJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFVCQDMCAIJAKQDAQUBVgUDbmlsBQFqAQFXAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFYAgJfXwUBWQEBWgIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWAICX18FAVkBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJhYgACDiVzX19wcmljZUFzc2V0AAJhYwIHJXNfX2ZlZQACYWQJAGsDAAUFAWIAkE4AAmFlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFjBQJhZAECYWYAAhElc19fZmFjdG9yeUNvbmZpZwECYWcAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFoAQJhaQkArAICCQCsAgICCCVzJXMlc19fBQJhaQIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFqAgJhawJhbAkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWsCAl9fBQJhbAIIX19jb25maWcBAmFtAQJhbgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbgECYW8AAgwlc19fc2h1dGRvd24BAmFwAQJhcQkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFxAQJhcgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhcwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmF0AwJhdQJhdgJhdwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYXUCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYXYCDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmF3AQJheAICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhQQICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhQgECYUMJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUMFA25pbAIBIAACYUQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheAIFBHRoaXMJAQFQAAACYUUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheAIFAmFEBQJhcwECYUYACQELdmFsdWVPckVsc2UCCQCbCAIFAmFECQECYW8ABwECYUcACQDZBAEJAQJheAIFAmFECQECYWcAAQJhSAAEAmFJCQECYXgCBQR0aGlzCQECYWEABAJhSgkBAmF4AgUEdGhpcwkBAmFiAAQCYWwJAQJhQQIFAmFECQECYW0BBQJhSgQCYWsJAQJhQQIFAmFECQECYW0BBQJhSQkAtQkCCQECYXgCBQJhRAkBAmFqAgkApAMBBQJhawkApAMBBQJhbAUBagECYUsBAmFMAwkAAAIFAmFMBQFpBQR1bml0CQDZBAEFAmFMAQJhTQECYUwDCQAAAgUCYUwFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYUwBAmFOAQJhTwkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFPBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXAJANkEAQkAkQMCBQJhTwUBcQkBAmFLAQkAkQMCBQJhTwUBcgkBAmFLAQkAkQMCBQJhTwUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXUAAmFQCQECYU4BCQECYUgAAAJhUQUCYVAAAmFSCAUCYVECXzEAAmFTCAUCYVECXzIAAmFUCAUCYVECXzMAAmFVCAUCYVECXzQAAmFWCAUCYVECXzUAAmFXCAUCYVECXzYAAmFYCAUCYVECXzcBAmFZAAkAtQkCCQECYXgCBQJhRAkBAmFmAAUBagACYVoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhWQAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYVkABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJiYgoCYmMCYmQCYmUCYmYCYmcCYmgCYmkCYmoCYmsCYmwJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBBQJiaAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsBQNuaWwFAWoBAmJtBgJibgJibwJicAJiZgJiaQJiagkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagUDbmlsBQFqAQJicQECYnIDCQAAAgUCYnICBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJyAQJicwICYnQCYnUJALwCAwUCYnQFAWQFAmJ1AQJidgQCYncCYngCYnkCYnoEAmJBCQEBRAIFAmJ5BQJidwQCYkIJAQFEAgUCYnoFAmJ4CQECYnMCBQJiQgUCYkEBAmJDAwJieQJiegJiRAQCYkUJAQJhSAAEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJICQECYnYEBQJiRgUCYkcFAmJ5BQJiegQCYnUJAQFEAgUCYnkFAmJGBAJidAkBAUQCBQJiegUCYkcEAmJJCQEBRAIFAmJEBQFiBAJiSgkBAmJzAgUCYnUFAmJJBAJiSwkBAmJzAgUCYnQFAmJJCQDMCAIFAmJICQDMCAIFAmJKCQDMCAIFAmJLBQNuaWwBAmJMAwJieQJiegJiRAQCYk0JAQJiQwMFAmJ5BQJiegUCYkQJAMwIAgkBAUcCCQCRAwIFAmJNAAAFAWIJAMwIAgkBAUcCCQCRAwIFAmJNAAEFAWIJAMwIAgkBAUcCCQCRAwIFAmJNAAIFAWIFA25pbAECYk4EAmJPAmJQAmJRAVgEAmJFCQECYUgABAJiUgkAkQMCBQJiRQUBcQQCYlMJAJEDAgUCYkUFAXIEAmJUCQCRAwIFAmJFBQFzBAJidwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJieAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCYlYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiUgkArAICCQCsAgICBkFzc2V0IAUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCYlIFAmJQCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJiVwkBAmJxAQUCYlMEAmJYCQEBRAIFAmJXBQJidwQCYlkJAQJicQEFAmJUBAJiWgkBAUQCBQJiWQUCYngEAmNhCQECYnMCBQJiWgUCYlgEAmNiCQEBRwIFAmNhBQFiBAJjYwkBAUQCBQJiUQUBYgQCY2QJAQFEAgUCYlYFAWIEAmNlCQC8AgMFAmJYBQJjYwUCY2QEAmNmCQC8AgMFAmJaBQJjYwUCY2QEAmNnCQEBRwIFAmNlBQJidwQCY2gJAQFHAgUCY2YFAmJ4BAJjaQMJAAACBQJiTwIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY2cDCQAAAgUCYlMCBVdBVkVTBQR1bml0CQDZBAEFAmJTCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNoAwkAAAIFAmJUAgVXQVZFUwUEdW5pdAkA2QQBBQJiVAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUBWAUCYk8JAQJibQYFAmNnBQJjaAUCYlEFAmNiBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNiBQNuaWwJAJwKCgUCY2cFAmNoBQJiUwUCYlQFAmJXBQJiWQUCYlYFAmNhBQJiVQUCY2kBAmNqCQJiTwJjawJjbAJjbQJjbgJjbwFYAmNwAmNxBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmNzCQCRAwIFAmJFBQFzBAJjdAkAkQMCBQJiRQUBdgQCY3UJAJEDAgUCYkUFAXcEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJiVggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmN2CQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNtCQDZBAECBVdBVkVTBAJjdwkA2AQBCQELdmFsdWVPckVsc2UCBQJjbwkA2QQBAgVXQVZFUwMDCQECIT0CBQJjcgUCY3YGCQECIT0CBQJjcwUCY3cJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJiVwMFAmNwCQECYnEBBQJjcgkAZQIJAQJicQEFAmNyBQJjbAQCYlkDBQJjcAkBAmJxAQUCY3MJAGUCCQECYnEBBQJjcwUCY24EAmN4CQEBRAIFAmNsBQJiRgQCY3kJAQFEAgUCY24FAmJHBAJjegkBAmJzAgUCY3kFAmN4BAJiWAkBAUQCBQJiVwUCYkYEAmJaCQEBRAIFAmJZBQJiRwQCY0EDCQAAAgUCYlYAAAQCY2EFAWUEAmNCBQFlBAJiSQkAdgYJALkCAgUCY3gFAmN5AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJJBQFiCQEBRwIFAmN4BQJiRgkBAUcCBQJjeQUCYkcJAQJicwIJALcCAgUCYloFAmN5CQC3AgIFAmJYBQJjeAUCY0IEAmNhCQECYnMCBQJiWgUCYlgEAmNCCQC8AgMJAQFPAQkAuAICBQJjYQUCY3oFAWQFAmNhBAJjQwkBAUQCBQJjawUBYgMDCQECIT0CBQJjYQUBZQkAvwICBQJjQgUCY0MHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNCAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0MEAmNkCQEBRAIFAmJWBQFiBAJjRAkAvAIDBQJjeAUCY2EFAWQEAmNFCQC8AgMFAmN5BQFkBQJjYQQCY0YDCQC/AgIFAmNEBQJjeQkAlAoCBQJjRQUCY3kJAJQKAgUCY3gFAmNEBAJjRwgFAmNGAl8xBAJjSAgFAmNGAl8yBAJiSQkAvAIDBQJjZAUCY0gFAmJaCQCXCgUJAQFHAgUCYkkFAWIJAQFHAgUCY0cFAmJGCQEBRwIFAmNIBQJiRwUCY2EFAmNCBAJjSQgFAmNBAl8xBAJjSggFAmNBAl8yBAJjSwgFAmNBAl8zBAJjYgkBAUcCCAUCY0ECXzQFAWIEAmNMCQEBRwIIBQJjQQJfNQUBYgMJAGcCAAAFAmNJCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjTQMJAQEhAQUCY3EAAAUCY0kEAmNOCQBlAgUCY2wFAmNKBAJjTwkAZQIFAmNuBQJjSwQCY1AJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFYBQJiTwkBAmJiCgUCY0oFAmNLBQJjTQUCY2IFAmNrBQJjTAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY04FAmNPBQNuaWwJAJ8KDQUCY0kFAmNNBQJjYgUCYlcFAmJZBQJiVgUCYlIFAmJVBQJjUAUCY04FAmNPBQJjbQUCY28BAmNRAQJjUgQCYkUJAQJhSAAEAmNTCQCRAwIFAmJFBQFyBAJjVAkAkQMCBQJiRQUBcwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBcAQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCY1UJAQJicQEFAmNTBAJjVgkBAmJxAQUCY1QEAmNhAwkAAAIIBQJjUglvcmRlclR5cGUFA0J1eQkBAmJ2BAUCYkYFAmJHCQBkAgUCY1UIBQJjUgZhbW91bnQFAmNWCQECYnYEBQJiRgUCYkcJAGUCBQJjVQgFAmNSBmFtb3VudAUCY1YEAmNiCQEBRwIFAmNhBQFiAwMDCQECYUYABgkAAAIFAmJVBQFtBgkAAAIFAmJVBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAQCY1cICAUCY1IJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJjWAMJAAACBQJjVwUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCY1cEAmNZCAgFAmNSCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJjWgMJAAACBQJjWQUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCY1kDAwkBAiE9AgUCY1gFAmNTBgkBAiE9AgUCY1oFAmNUCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZGEIBQJjUgVwcmljZQQCZGIJAGsDBQFiBQJiRwUCYkYEAmRjCQEBSgMFAmRhBQFiBQJkYgQCZGQDCQAAAggFAmNSCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2IFAmRjCQBnAgUCZGMFAmNiBgECZGUBAmRmAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkZwkBBXZhbHVlAQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCYlAJAQV2YWx1ZQEIBQJkZwdhc3NldElkBAJkaAgFAmRnBmFtb3VudAQCY0EJAQJiTgQJANgEAQgFAmRmDXRyYW5zYWN0aW9uSWQJANgEAQUCYlAFAmRoCAUCZGYGY2FsbGVyBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkEAmNpCAUCY0EDXzEwAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVCQCXCgUFAmNnBQJjaAUCZGgFAmJQBQJjaQECZGkDAmRmAmNrAmNxAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRqCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwAABAJkawkBBXZhbHVlAQkAkQMCCAUCZGYIcGF5bWVudHMAAQQCZGwJAQJjagkJANgEAQgFAmRmDXRyYW5zYWN0aW9uSWQFAmNrCAUCZGoGYW1vdW50CAUCZGoHYXNzZXRJZAgFAmRrBmFtb3VudAgFAmRrB2Fzc2V0SWQJAKUIAQgFAmRmBmNhbGxlcgcFAmNxBAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCZGwCXzgDAwMJAQJhRgAGCQAAAgUCYlUFAWwGCQAAAgUCYlUFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBQJkbAECZG0BAmRuBAJkbwkA/AcEBQJhRAIEZW1pdAkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZG8FAmRvBAJkcAQCZHEFAmRvAwkAAQIFAmRxAgdBZGRyZXNzBAJkcgUCZHEJAPwHBAUCZHICBGVtaXQJAMwIAgUCZG4FA25pbAUDbmlsBQR1bml0AwkAAAIFAmRwBQJkcAUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRzAQJkbgQCZHQJAGsDBQJkbgUCYWUFAWIJAJQKAgkAZQIFAmRuBQJkdAUCZHQBAmR1BAJkdgJkdwFYAVkEAmR4CQAAAgUBWQUEdW5pdAQCZHkJAQJicQEJAQJhTQEFAmFVBAJkegkBAmJxAQkBAmFNAQUCYVYEAmRBAwkAAAIFAmR3BQJhVQYDCQAAAgUCZHcFAmFWBwkBAmFCAQINaW52YWxpZCBhc3NldAQCZEIDBQJkeAkAlAoCBQJkeQUCZHoDBQJkQQkAlAoCCQBlAgUCZHkFAmR2BQJkegkAlAoCBQJkeQkAZQIFAmR6BQJkdgQCZEMIBQJkQgJfMQQCZEQIBQJkQgJfMgQCZEUDBQJkQQkAlAoCBQJkdgAACQCUCgIAAAUCZHYEAmRGCAUCZEUCXzEEAmRHCAUCZEUCXzIEAmRICAkBAmRzAQUCZEYCXzEEAmRJCAkBAmRzAQUCZEcCXzEEAmRKCQECZHMBBQJkdgQCZEsIBQJkSgJfMQQCZHQIBQJkSgJfMgQCZEwJAGQCBQJkQwUCZEgEAmRNCQBkAgUCZEQFAmRJBAJkTgkBAmJzAgkBAUQCBQJkTQUCYVgJAQFEAgUCZEwFAmFXBAJkTwkBAUcCBQJkTgUBYgQCZFADBQJkQQUCZEMFAmREBAJkUQkAtgIBBQJkUAQCZFIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRTAwkAvwICBQJkUgUBZgYJAQJhQgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZFMFAmRTBAJkVAkAtgIBBQJkSwQCZFUJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZFIJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJkVAUBZAUCZFEAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNQAwUCZHgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkTwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkTwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmIKBQJkRgUCZEcFAmRVBQJkTwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmRWCQECYnMCCQEBRAIFAmREBQJhWAkBAUQCBQJkQwUCYVcEAmRXCQEBRwIFAmRWBQFiBAJkWAkBAU4BCQBpAgkAaAIJAGUCBQJkTwUCZFcFAWIFAmRXCQCWCgQFAmRVBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkWQUCZFoCZEsCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmVhCQDMCAIDCQAAAgUCZHcFAmFUBgkBAmFCAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVhBQJlYQQCZWIDCQAAAgUCZFoFAmFVBgMJAAACBQJkWgUCYVYHCQECYUIBAg1pbnZhbGlkIGFzc2V0BAJlYwMFAmViCQC2AgEJAQJicQEJAQJhTQEFAmFVCQC2AgEJAQJicQEJAQJhTQEFAmFWBAJlZAkBAmJxAQkBAmFNAQUCYVUEAmVlCQECYnEBCQECYU0BBQJhVgQCZWYDBQJlYgUCZWQFAmVlBAJlZwkAtgIBBQJlZgQCZFIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVoCQC2AgEFAmRLBAJlaQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlYwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZWgFAWQFAmRSABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVqCQECZHMBBQJlaQQCZWsIBQJlagJfMQQCZHQIBQJlagJfMgQCZWwDBQJlYgkAlgoEBQJlawAACQBlAgUCZWQFAmVpBQJlZQkAlgoEAAAFAmVrBQJlZAkAZQIFAmVlBQJlaQQCZW0IBQJlbAJfMQQCZW4IBQJlbAJfMgQCZW8IBQJlbAJfMwQCZXAIBQJlbAJfNAQCZE4JAQJicwIJAQFEAgUCZXAFAmFYCQEBRAIFAmVvBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmNQAwUCZHgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlbQUCZW4FAmRLBQJkTwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkTwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkTwUDbmlsBAJkVgkBAmJzAgkBAUQCBQJlZQUCYVgJAQFEAgUCZWQFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgJAQFOAQkAaQIJAGgCCQBlAgUCZE8FAmRXBQFiBQJkVwkAlgoEBQJlawUCY1AFAmR0BQJkWAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXEABAJkcQkAoggBCQEBUQADCQABAgUCZHECBlN0cmluZwQCZXIFAmRxCQDZBAEFAmVyAwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVzAAQCZHEJAKIIAQkBAVIAAwkAAQIFAmRxAgZTdHJpbmcEAmVyBQJkcQkA2QQBBQJlcgMJAAECBQJkcQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJldAECZGYEAmV1CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXEAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJldgUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXYGBQJldQMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZXUJAAIBAgtNYXRjaCBlcnJvchkCZGYBCnNldE1hbmFnZXIBAmV3BAJleAkBAmV0AQUCZGYDCQAAAgUCZXgFAmV4BAJleQkA2QQBBQJldwMJAAACBQJleQUCZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJldwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmV6CQECZXMABAJlQQMJAQlpc0RlZmluZWQBBQJlegYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUEFAmVBBAJlQgMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlegYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUIFAmVCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlegkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlQwMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVECAUCZGwDXzEyBAJlRQgFAmRsA18xMwQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVGAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlRAUCY04FA25pbAUDbmlsAwkAAAIFAmVGBQJlRgQCZUcDCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVFBQJjTwUDbmlsBQNuaWwDCQAAAgUCZUcFAmVHBAJlSAMFAmVDBAJlSQkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZUkFAmVJBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVICQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlSgMJAGYCAAAFAmVKCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZUoHCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZUsCZUwEAmVNCgACZU4JAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlTgIHQm9vbGVhbgUCZU4JAAIBCQCsAgIJAAMBBQJlTgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZU8DAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlTQQCZWEJAMwIAgMJAQEhAQUCZU8GCQECYUIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWEFAmVhBAJlUAkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHcIBQJlUAdhc3NldElkBAJkdggFAmVQBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVRCQECZHUEBQJkdgUCZHcFAVgFAVkEAmVSCAUCZVECXzEEAmNQCAUCZVECXzIEAmR0CAUCZVECXzMEAmVTCAUCZVECXzQEAmVUAwMJAGYCBQJlSwAACQBmAgUCZUsFAmVSBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlSwUDbmlsAgAFAmVSBAJkbwkBAmRtAQUCZVQDCQAAAgUCZG8FAmRvBAJlSAMFAmVMBAJlVQkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmVUBQNuaWwDCQAAAgUCZVUFAmVVBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZVQFAmFUBQNuaWwEAmVWAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJkdwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJlSAUCZVYFAmVUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmARFwdXRPbmVUa25SRUFET05MWQICZHcCZHYEAmVXCQECZHUEBQJkdgkBAmFLAQUCZHcFBHVuaXQFBHVuaXQEAmVSCAUCZVcCXzEEAmNQCAUCZVcCXzIEAmR0CAUCZVcCXzMEAmVTCAUCZVcCXzQJAJQKAgUDbmlsCQCVCgMFAmVSBQJkdAUCZVMCZGYBCWdldE9uZVRrbgICZVgCZUsEAmVNCgACZU4JAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlTgIHQm9vbGVhbgUCZU4JAAIBCQCsAgIJAAMBBQJlTgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVkDAwkBAmFGAAYJAAACBQJhUwUBbgYFAmVNBAJlYQkAzAgCAwkBASEBBQJlWQYJAQJhQgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAEGCQECYUIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlYQUCZWEEAmRaCQECYUsBBQJlWAQCZVAJAJEDAggFAmRmCHBheW1lbnRzAAAEAmR3CAUCZVAHYXNzZXRJZAQCZEsIBQJlUAZhbW91bnQEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJlWgkBAmRZBQUCZFoFAmRLBQJkdwUBWAUBWQQCZmEIBQJlWgJfMQQCY1AIBQJlWgJfMgQCZHQIBQJlWgJfMwQCZVMIBQJlWgJfNAQCZG4DAwkAZgIFAmVLAAAJAGYCBQJlSwUCZmEHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVLBQNuaWwCAAUCZmEEAmZiCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR3BQJkSwUDbmlsAwkAAAIFAmZiBQJmYgQCZmMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCZG4FAmRaBQNuaWwEAmVWAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJkWgUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmYwUCZVYFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmARFnZXRPbmVUa25SRUFET05MWQICZFoCZEsEAmZkCQECZFkFCQECYUsBBQJkWgUCZEsFAmFUBQR1bml0BQR1bml0BAJmYQgFAmZkAl8xBAJjUAgFAmZkAl8yBAJkdAgFAmZkAl8zBAJlUwgFAmZkAl80CQCUCgIFA25pbAkAlQoDBQJmYQUCZHQFAmVTAmRmARN1bnN0YWtlQW5kR2V0T25lVGtuAwJmZQJlWAJlSwQCZU0KAAJlTgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmVOAgdCb29sZWFuBQJlTgkAAgEJAKwCAgkAAwEFAmVOAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJlWQMDCQECYUYABgkAAAIFAmFTBQFuBgUCZU0EAmVhCQDMCAIDCQEBIQEFAmVZBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGYIcGF5bWVudHMAAAYJAQJhQgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVhBQJlYQQCZFoJAQJhSwEFAmVYBAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmYJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhVAkAzAgCBQJmZQUDbmlsBQNuaWwDCQAAAgUCZmYFAmZmBAJmZwkBAmRZBQUCZFoFAmZlBQJhVAUBWAUBWQQCZmEIBQJmZwJfMQQCY1AIBQJmZwJfMgQCZHQIBQJmZwJfMwQCZVMIBQJmZwJfNAQCZG4DAwkAZgIFAmVLAAAJAGYCBQJlSwUCZmEHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVLBQNuaWwCAAUCZmEEAmZiCQD8BwQFAmFEAgRidXJuCQDMCAIFAmZlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJmZQUDbmlsAwkAAAIFAmZiBQJmYgQCZmMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZG4FAmRaBQNuaWwEAmVWAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJkWgUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmYwUCZVYFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNnZXQABAJjQQkBAmRlAQUCZGYEAmZoCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUEAmZpCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZpBQJmaQUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCWdldE5vTGVzcwICZmoCZmsEAmNBCQECZGUBBQJkZgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQMJAGYCBQJmagUCY2cJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNnAgMgPCAJAKQDAQUCZmoDCQBmAgUCZmsFAmNoCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY2gCAyA8IAkApAMBBQJmawQCZmkJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZmkFAmZpBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgENdW5zdGFrZUFuZEdldAECZG4EAmZsAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZmwFAmZsBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCZmYJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiUgkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZmYFAmZmBAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCZG4IBQJkZgZjYWxsZXIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTAEAmZtAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBgMJAAACBQJmbQUCZm0EAmZpCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJkbgUDbmlsAwkAAAIFAmZpBQJmaQUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCGFjdGl2YXRlAgJmbgJmbwMJAQIhPQIJAKUIAQgFAmRmBmNhbGxlcgkApQgBBQJhRAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmZuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmZvBQNuaWwCB3N1Y2Nlc3MCZGYBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFIAAJkZgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYnIJAJQKAgUDbmlsCQECYnEBBQJicgJkZgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYnkCYnoCYkQEAmJNCQECYkMDBQJieQUCYnoFAmJECQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCYk0AAAkAzAgCCQCmAwEJAJEDAgUCYk0AAQkAzAgCCQCmAwEJAJEDAgUCYk0AAgUDbmlsAmRmARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZGYBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgBSQkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQFJAmRmAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJ0AmJ1CQCUCgIFA25pbAkApgMBCQECYnMCCQCnAwEFAmJ0CQCnAwEFAmJ1AmRmASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYk8CY2sCY2wCY20CY24CY28BWAJjcAJjcQkAlAoCBQNuaWwJAQJjagkFAmJPBQJjawUCY2wFAmNtBQJjbgUCY28FAVgFAmNwBQJjcQJkZgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJPAmJQAmJRAVgEAmNBCQECYk4EBQJiTwUCYlAFAmJRCQERQGV4dHJOYXRpdmUoMTA2MikBBQFYCQCUCgIFA25pbAkAnAoKCAUCY0ECXzEIBQJjQQJfMggFAmNBAl8zCAUCY0ECXzQIBQJjQQJfNQgFAmNBAl82CAUCY0ECXzcJAKYDAQgFAmNBAl84CAUCY0ECXzkIBQJjQQNfMTACZGYBDXN0YXRzUkVBRE9OTFkABAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY1MJAJEDAgUCYkUFAXIEAmNUCQCRAwIFAmJFBQFzBAJjdAkAkQMCBQJiRQUBdgQCY3UJAJEDAgUCYkUFAXcEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmZwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY1UJAQJicQEFAmNTBAJjVgkBAmJxAQUCY1QEAmZxAwkAAAIFAmZwAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJDAwUCY1UFAmNWBQJmcAQCY2IAAAQCZnIJAQFHAgkAkQMCBQJmcQABBQFiBAJmcwkBAUcCCQCRAwIFAmZxAAIFAWIEAmZ0CQEFdmFsdWUBCQCaCAIFAmFECQECYXABCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjVQkAzAgCCQCkAwEFAmNWCQDMCAIJAKQDAQUCZnAJAMwIAgkApAMBBQJjYgkAzAgCCQCkAwEFAmZyCQDMCAIJAKQDAQUCZnMJAMwIAgkApAMBBQJmdAUDbmlsBQFqAmRmASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY2wEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCYlMJANkEAQUCY3IEAmNzCQCRAwIFAmJFBQFzBAJiVAkA2QQBBQJjcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmZwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY1UJAQJicQEFAmNyBAJjVgkBAmJxAQUCY3MEAmJBCQEBRAIFAmNVBQJiRgQCYkIJAQFEAgUCY1YFAmJHBAJjYQMJAAACBQJmcAAABQFlCQECYnMCBQJiQgUCYkEEAmN4CQEBRAIFAmNsBQJiRgQCY3kJALwCAwUCY3gFAmNhBQFkBAJjbgkBAUcCBQJjeQUCYkcEAmRsCQECY2oJAgAAoMIeBQJjbAUCYlMFAmNuBQJiVAIABgcEAmNJCAUCZGwCXzEEAmZ1CAUCZGwCXzMEAmJXCAUCZGwCXzQEAmJZCAUCZGwCXzUEAmJWCAUCZGwCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNJCQDMCAIJAKQDAQkBAUcCBQJjYQUBYgkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYlkJAMwIAgkApAMBBQJiVgkAzAgCBQJiVQkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY24FA25pbAUBagJkZgEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECY24EAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCYlMJANkEAQUCY3IEAmNzCQCRAwIFAmJFBQFzBAJiVAkA2QQBBQJjcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmZwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZnYJAQJicQEFAmNyBAJmdwkBAmJxAQUCY3MEAmZ4CQEBRAIFAmZ2BQJiRgQCZnkJAQFEAgUCZncFAmJHBAJjYQMJAAACBQJmcAAABQFlCQECYnMCBQJmeQUCZngEAmN5CQEBRAIFAmNuBQJiRwQCY3gJALwCAwUCY3kFAWQFAmNhBAJjbAkBAUcCBQJjeAUCYkYEAmRsCQECY2oJAgAAoMIeBQJjbAUCYlMFAmNuBQJiVAIABgcEAmNJCAUCZGwCXzEEAmZ1CAUCZGwCXzMEAmJXCAUCZGwCXzQEAmJZCAUCZGwCXzUEAmJWCAUCZGwCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNJCQDMCAIJAKQDAQkBAUcCBQJjYQUBYgkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYlkJAMwIAgkApAMBBQJiVgkAzAgCBQJiVQkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY24FA25pbAUBagJkZgETZXZhbHVhdGVHZXRSRUFET05MWQICZnoCZkEEAmNBCQECYk4EAgAFAmZ6BQJmQQUEdGhpcwQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCYlcIBQJjQQJfNQQCYlkIBQJjQQJfNgQCYlYIBQJjQQJfNwQCY2IIBQJjQQJfOAQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmNBAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY2cJAMwIAgkApAMBBQJjaAkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYlkJAMwIAgkApAMBBQJiVgkAzAgCCQCmAwEFAmNiCQDMCAIJAKQDAQUCYlUFA25pbAUBagECZkIBAmZDAAQCZkQEAmRxCQECZXEAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJldgUCZHEFAmV2AwkAAQIFAmRxAgRVbml0CAUCZkIPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmRxBQJmQgMJAAECBQJkcQIFT3JkZXIEAmNSBQJkcQQCZkUJAQJhRwAEAmF1CQECY1EBBQJjUgQCYXYJAPQDAwgFAmNSCWJvZHlCeXRlcwkAkQMCCAUCY1IGcHJvb2ZzAAAIBQJjUg9zZW5kZXJQdWJsaWNLZXkEAmF3CQD0AwMIBQJjUglib2R5Qnl0ZXMJAJEDAggFAmNSBnByb29mcwABBQJmRQMDAwUCYXUFAmF2BwUCYXcHBgkBAmF0AwUCYXUFAmF2BQJhdwMJAAECBQJkcQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVyBQJkcQQCZkYJAPYDAQkBBXZhbHVlAQgFAmVyBnNjcmlwdAQCZkcJANsEAQkBBXZhbHVlAQkAnQgCBQJhRAkBAmFyAAQCZkgJAPEHAQUEdGhpcwMDCQAAAgUCZkcFAmZGCQECIT0CBQJmSAUCZkYHBgkA9AMDCAUCZkIJYm9keUJ5dGVzCQCRAwIIBQJmQgZwcm9vZnMAAAUCZkQJAPQDAwgFAmZCCWJvZHlCeXRlcwkAkQMCCAUCZkIGcHJvb2ZzAAAFAmZE+JLASw==", "chainId": 84, "height": 2289237, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HYNWCNajvU8JwDBDtr8faVPTPQQaK2oGNjMa4mZ9riVS Next: CxKZutprB7hTvzwD9c2AGsg6nTPxT9gr3v4JaXkdb8ec Diff:
OldNewDifferences
470470
471471 func du (dv,dw,X,Y) = {
472472 let dx = (Y == unit)
473- let dy = aN(aH())
474- let dz = dy._1
475- let bU = dy._2
476- let bR = dy._3
477- let dA = dy._4
478- let cT = dy._5
479- let dB = dy._6
480- let dC = dy._7
481- let dD = bq(aM(dA))
482- let dE = bq(aM(cT))
483- let dF = if ((dw == dA))
473+ let dy = bq(aM(aU))
474+ let dz = bq(aM(aV))
475+ let dA = if ((dw == aU))
484476 then true
485- else if ((dw == cT))
477+ else if ((dw == aV))
486478 then false
487479 else aB("invalid asset")
488- let dG = if (dx)
489- then $Tuple2(dD, dE)
490- else if (dF)
491- then $Tuple2((dD - dv), dE)
492- else $Tuple2(dD, (dE - dv))
493- let dH = dG._1
494- let dI = dG._2
495- let dJ = if (dF)
480+ let dB = if (dx)
481+ then $Tuple2(dy, dz)
482+ else if (dA)
483+ then $Tuple2((dy - dv), dz)
484+ else $Tuple2(dy, (dz - dv))
485+ let dC = dB._1
486+ let dD = dB._2
487+ let dE = if (dA)
496488 then $Tuple2(dv, 0)
497489 else $Tuple2(0, dv)
490+ let dF = dE._1
491+ let dG = dE._2
492+ let dH = ds(dF)._1
493+ let dI = ds(dG)._1
494+ let dJ = ds(dv)
498495 let dK = dJ._1
499- let dL = dJ._2
500- let dM = ds(dK)._1
501- let dN = ds(dL)._1
502- let dO = ds(dv)
503- let dP = dO._1
504- let dt = dO._2
505- let dQ = (dH + dM)
506- let dR = (dI + dN)
507- let dS = bs(D(dR, dC), D(dQ, dB))
508- let dT = G(dS, b)
509- let dU = if (dF)
510- then dH
511- else dI
512- let dV = toBigInt(dU)
513- let dW = toBigInt(valueOrErrorMessage(assetInfo(bR), (("asset " + toBase58String(bR)) + " doesn't exist")).quantity)
514- let dX = if ((dW > f))
496+ let dt = dJ._2
497+ let dL = (dC + dH)
498+ let dM = (dD + dI)
499+ let dN = bs(D(dM, aX), D(dL, aW))
500+ let dO = G(dN, b)
501+ let dP = if (dA)
502+ then dC
503+ else dD
504+ let dQ = toBigInt(dP)
505+ let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506+ let dS = if ((dR > f))
515507 then true
516508 else aB("initial deposit requires all coins")
517- if ((dX == dX))
509+ if ((dS == dS))
518510 then {
519- let dY = toBigInt(dP)
520- let dZ = max([0, toInt(((dW * (sqrtBigInt((d + ((dY * d) / dV)), 18, 18, DOWN) - d)) / d))])
511+ let dT = toBigInt(dK)
512+ let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
521513 let cP = if (dx)
522514 then nil
523- else [IntegerEntry(S(), dT), IntegerEntry(T(height, lastBlock.timestamp), dT), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dK, dL, dZ, dT, 0, 0, height, lastBlock.timestamp, 0, 0))]
524- let ea = bs(D(dI, dC), D(dH, dB))
525- let eb = G(ea, b)
526- let ec = N((((dT - eb) * b) / eb))
527- $Tuple4(dZ, cP, dt, ec)
515+ else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516+ let dV = bs(D(dD, aX), D(dC, aW))
517+ let dW = G(dV, b)
518+ let dX = N((((dO - dW) * b) / dW))
519+ $Tuple4(dU, cP, dt, dX)
528520 }
529521 else throw("Strict value is not equal to itself.")
530522 }
531523
532524
533-func ed (ee,dP,dw,X,Y) = {
525+func dY (dZ,dK,dw,X,Y) = {
534526 let dx = (Y == unit)
535- let ef = aN(aH())
536- let dz = ef._1
537- let bU = ef._2
538- let bR = ef._3
539- let dA = ef._4
540- let cT = ef._5
541- let eg = ef._6
542- let eh = ef._7
543- let ei = [if ((dw == bR))
527+ let ea = [if ((dw == aT))
544528 then true
545529 else aB("invalid lp asset")]
546- if ((ei == ei))
530+ if ((ea == ea))
547531 then {
548- let ej = if ((ee == dA))
532+ let eb = if ((dZ == aU))
549533 then true
550- else if ((ee == cT))
534+ else if ((dZ == aV))
551535 then false
552536 else aB("invalid asset")
553- let ek = if (ej)
554- then toBigInt(bq(aM(dA)))
555- else toBigInt(bq(aM(cT)))
556- let el = bq(aM(dA))
557- let em = bq(aM(cT))
558- let en = if (ej)
559- then el
560- else em
561- let eo = toBigInt(en)
562- let dW = toBigInt(valueOrErrorMessage(assetInfo(bR), (("asset " + toBase58String(bR)) + " doesn't exist")).quantity)
563- let ep = toBigInt(dP)
564- let eq = max([0, toInt(((ek * (d - pow((d - ((ep * d) / dW)), 18, h, 0, 18, DOWN))) / d))])
565- let er = ds(eq)
566- let es = er._1
567- let dt = er._2
568- let et = if (ej)
569- then $Tuple4(es, 0, (el - eq), em)
570- else $Tuple4(0, es, el, (em - eq))
571- let eu = et._1
572- let ev = et._2
573- let ew = et._3
574- let ex = et._4
575- let dS = bs(D(ex, eh), D(ew, eg))
576- let dT = G(dS, b)
537+ let ec = if (eb)
538+ then toBigInt(bq(aM(aU)))
539+ else toBigInt(bq(aM(aV)))
540+ let ed = bq(aM(aU))
541+ let ee = bq(aM(aV))
542+ let ef = if (eb)
543+ then ed
544+ else ee
545+ let eg = toBigInt(ef)
546+ let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
547+ let eh = toBigInt(dK)
548+ let ei = max([0, toInt(((ec * (d - pow((d - ((eh * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
549+ let ej = ds(ei)
550+ let ek = ej._1
551+ let dt = ej._2
552+ let el = if (eb)
553+ then $Tuple4(ek, 0, (ed - ei), ee)
554+ else $Tuple4(0, ek, ed, (ee - ei))
555+ let em = el._1
556+ let en = el._2
557+ let eo = el._3
558+ let ep = el._4
559+ let dN = bs(D(ep, aX), D(eo, aW))
560+ let dO = G(dN, b)
577561 let cP = if (dx)
578562 then nil
579- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eu, ev, dP, dT, height, lastBlock.timestamp)), IntegerEntry(S(), dT), IntegerEntry(T(height, lastBlock.timestamp), dT)]
580- let ea = bs(D(em, eh), D(el, eg))
581- let eb = G(ea, b)
582- let ec = N((((dT - eb) * b) / eb))
583- $Tuple4(es, cP, dt, ec)
563+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(em, en, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
564+ let dV = bs(D(ee, aX), D(ed, aW))
565+ let dW = G(dV, b)
566+ let dX = N((((dO - dW) * b) / dW))
567+ $Tuple4(ek, cP, dt, dX)
584568 }
585569 else throw("Strict value is not equal to itself.")
586570 }
587571
588572
589-func ey () = {
573+func eq () = {
590574 let dq = getString(Q())
591575 if ($isInstanceOf(dq, "String"))
592576 then {
593- let ez = dq
594- fromBase58String(ez)
577+ let er = dq
578+ fromBase58String(er)
595579 }
596580 else if ($isInstanceOf(dq, "Unit"))
597581 then unit
599583 }
600584
601585
602-func eA () = {
586+func es () = {
603587 let dq = getString(R())
604588 if ($isInstanceOf(dq, "String"))
605589 then {
606- let ez = dq
607- fromBase58String(ez)
590+ let er = dq
591+ fromBase58String(er)
608592 }
609593 else if ($isInstanceOf(dq, "Unit"))
610594 then unit
612596 }
613597
614598
615-func eB (df) = {
616- let eC = throw("Permission denied")
617- let dq = ey()
599+func et (df) = {
600+ let eu = throw("Permission denied")
601+ let dq = eq()
618602 if ($isInstanceOf(dq, "ByteVector"))
619603 then {
620- let eD = dq
621- if ((df.callerPublicKey == eD))
604+ let ev = dq
605+ if ((df.callerPublicKey == ev))
622606 then true
623- else eC
607+ else eu
624608 }
625609 else if ($isInstanceOf(dq, "Unit"))
626610 then if ((df.caller == this))
627611 then true
628- else eC
612+ else eu
629613 else throw("Match error")
630614 }
631615
632616
633617 @Callable(df)
634-func setManager (eE) = {
635- let eF = eB(df)
636- if ((eF == eF))
618+func setManager (ew) = {
619+ let ex = et(df)
620+ if ((ex == ex))
637621 then {
638- let eG = fromBase58String(eE)
639- if ((eG == eG))
640- then [StringEntry(R(), eE)]
622+ let ey = fromBase58String(ew)
623+ if ((ey == ey))
624+ then [StringEntry(R(), ew)]
641625 else throw("Strict value is not equal to itself.")
642626 }
643627 else throw("Strict value is not equal to itself.")
647631
648632 @Callable(df)
649633 func confirmManager () = {
650- let eH = eA()
651- let eI = if (isDefined(eH))
634+ let ez = es()
635+ let eA = if (isDefined(ez))
652636 then true
653637 else throw("No pending manager")
654- if ((eI == eI))
638+ if ((eA == eA))
655639 then {
656- let eJ = if ((df.callerPublicKey == value(eH)))
640+ let eB = if ((df.callerPublicKey == value(ez)))
657641 then true
658642 else throw("You are not pending manager")
659- if ((eJ == eJ))
660- then [StringEntry(Q(), toBase58String(value(eH))), DeleteEntry(R())]
643+ if ((eB == eB))
644+ then [StringEntry(Q(), toBase58String(value(ez))), DeleteEntry(R())]
661645 else throw("Strict value is not equal to itself.")
662646 }
663647 else throw("Strict value is not equal to itself.")
666650
667651
668652 @Callable(df)
669-func put (ck,eK) = if ((0 > ck))
653+func put (ck,eC) = if ((0 > ck))
670654 then throw("Invalid slippageTolerance passed")
671655 else {
672656 let dl = di(df, ck, true)
675659 let ci = dl._9
676660 let cN = dl._10
677661 let cO = dl._11
678- let eL = dl._12
679- let eM = dl._13
662+ let eD = dl._12
663+ let eE = dl._13
680664 let do = invoke(aD, "emit", [cM], nil)
681665 if ((do == do))
682666 then {
691675 }
692676 if ((dp == dp))
693677 then {
694- let eN = if ((cN > 0))
695- then invoke(ba, "put", nil, [AttachedPayment(eL, cN)])
678+ let eF = if ((cN > 0))
679+ then invoke(ba, "put", nil, [AttachedPayment(eD, cN)])
696680 else nil
697- if ((eN == eN))
681+ if ((eF == eF))
698682 then {
699- let eO = if ((cO > 0))
700- then invoke(ba, "put", nil, [AttachedPayment(eM, cO)])
683+ let eG = if ((cO > 0))
684+ then invoke(ba, "put", nil, [AttachedPayment(eE, cO)])
701685 else nil
702- if ((eO == eO))
686+ if ((eG == eG))
703687 then {
704- let eP = if (eK)
688+ let eH = if (eC)
705689 then {
706- let eQ = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
707- if ((eQ == eQ))
690+ let eI = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
691+ if ((eI == eI))
708692 then nil
709693 else throw("Strict value is not equal to itself.")
710694 }
711695 else [ScriptTransfer(df.caller, cM, bR)]
712- (ci ++ eP)
696+ (ci ++ eH)
713697 }
714698 else throw("Strict value is not equal to itself.")
715699 }
723707
724708
725709 @Callable(df)
726-func putForFree (eR) = if ((0 > eR))
710+func putForFree (eJ) = if ((0 > eJ))
727711 then throw("Invalid value passed")
728712 else {
729- let dl = di(df, eR, false)
713+ let dl = di(df, eJ, false)
730714 dl._9
731715 }
732716
733717
734718
735719 @Callable(df)
736-func putOneTkn (eS,eT) = {
737- let eU = if (if (aF())
720+func putOneTkn (eK,eL) = {
721+ let eM = {
722+ let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
723+ if ($isInstanceOf(eN, "Boolean"))
724+ then eN
725+ else throw(($getType(eN) + " couldn't be cast to Boolean"))
726+ }
727+ let eO = if (if (if (aF())
738728 then true
739729 else (aS == l))
740730 then true
741- else (aS == n)
742- let ei = [if (!(eU))
731+ else (aS == n))
732+ then true
733+ else eM
734+ let ea = [if (!(eO))
743735 then true
744736 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
745737 then true
746738 else aB("exactly 1 payment are expected")]
747- if ((ei == ei))
739+ if ((ea == ea))
748740 then {
749- let eV = df.payments[0]
750- let dw = eV.assetId
751- let dv = eV.amount
741+ let eP = df.payments[0]
742+ let dw = eP.assetId
743+ let dv = eP.amount
752744 let X = df.caller
753745 let Y = df.transactionId
754- let eW = du(dv, dw, X, Y)
755- let eX = eW._1
756- let cP = eW._2
757- let dt = eW._3
758- let eY = eW._4
759- let eZ = if (if ((eS > 0))
760- then (eS > eX)
746+ let eQ = du(dv, dw, X, Y)
747+ let eR = eQ._1
748+ let cP = eQ._2
749+ let dt = eQ._3
750+ let eS = eQ._4
751+ let eT = if (if ((eK > 0))
752+ then (eK > eR)
761753 else false)
762- then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
763- else eX
764- let do = dm(eZ)
754+ then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
755+ else eR
756+ let do = dm(eT)
765757 if ((do == do))
766758 then {
767- let eP = if (eT)
759+ let eH = if (eL)
768760 then {
769- let fa = invoke(aZ, "stake", nil, [AttachedPayment(aT, eZ)])
770- if ((fa == fa))
761+ let eU = invoke(aZ, "stake", nil, [AttachedPayment(aT, eT)])
762+ if ((eU == eU))
771763 then nil
772764 else throw("Strict value is not equal to itself.")
773765 }
774- else [ScriptTransfer(df.caller, eZ, aT)]
775- let fb = if ((dt > 0))
766+ else [ScriptTransfer(df.caller, eT, aT)]
767+ let eV = if ((dt > 0))
776768 then [ScriptTransfer(aE, dt, dw)]
777769 else nil
778- $Tuple2(((cP ++ eP) ++ fb), eZ)
770+ $Tuple2(((cP ++ eH) ++ eV), eT)
779771 }
780772 else throw("Strict value is not equal to itself.")
781773 }
786778
787779 @Callable(df)
788780 func putOneTknREADONLY (dw,dv) = {
789- let fc = du(dv, aK(dw), unit, unit)
790- let eX = fc._1
791- let cP = fc._2
792- let dt = fc._3
793- let eY = fc._4
794- $Tuple2(nil, $Tuple3(eX, dt, eY))
781+ let eW = du(dv, aK(dw), unit, unit)
782+ let eR = eW._1
783+ let cP = eW._2
784+ let dt = eW._3
785+ let eS = eW._4
786+ $Tuple2(nil, $Tuple3(eR, dt, eS))
795787 }
796788
797789
798790
799791 @Callable(df)
800-func getOneTkn (fd,eS) = {
801- let fe = if (aF())
792+func getOneTkn (eX,eK) = {
793+ let eM = {
794+ let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
795+ if ($isInstanceOf(eN, "Boolean"))
796+ then eN
797+ else throw(($getType(eN) + " couldn't be cast to Boolean"))
798+ }
799+ let eY = if (if (aF())
802800 then true
803- else (aS == n)
804- let ei = [if (!(fe))
801+ else (aS == n))
802+ then true
803+ else eM
804+ let ea = [if (!(eY))
805805 then true
806806 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
807807 then true
808808 else aB("exactly 1 payment are expected")]
809- if ((ei == ei))
809+ if ((ea == ea))
810810 then {
811- let ee = aK(fd)
812- let eV = df.payments[0]
813- let dw = eV.assetId
814- let dP = eV.amount
811+ let dZ = aK(eX)
812+ let eP = df.payments[0]
813+ let dw = eP.assetId
814+ let dK = eP.amount
815815 let X = df.caller
816816 let Y = df.transactionId
817- let ff = ed(ee, dP, dw, X, Y)
818- let fg = ff._1
819- let cP = ff._2
820- let dt = ff._3
821- let eY = ff._4
822- let dn = if (if ((eS > 0))
823- then (eS > fg)
817+ let eZ = dY(dZ, dK, dw, X, Y)
818+ let fa = eZ._1
819+ let cP = eZ._2
820+ let dt = eZ._3
821+ let eS = eZ._4
822+ let dn = if (if ((eK > 0))
823+ then (eK > fa)
824824 else false)
825- then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
826- else fg
827- let fh = invoke(aD, "burn", [dP], [AttachedPayment(dw, dP)])
828- if ((fh == fh))
825+ then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
826+ else fa
827+ let fb = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
828+ if ((fb == fb))
829829 then {
830- let fi = [ScriptTransfer(X, dn, ee)]
831- let fb = if ((dt > 0))
832- then [ScriptTransfer(aE, dt, ee)]
830+ let fc = [ScriptTransfer(X, dn, dZ)]
831+ let eV = if ((dt > 0))
832+ then [ScriptTransfer(aE, dt, dZ)]
833833 else nil
834- $Tuple2(((cP ++ fi) ++ fb), dn)
834+ $Tuple2(((cP ++ fc) ++ eV), dn)
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
841841
842842
843843 @Callable(df)
844-func getOneTknREADONLY (ee,dP) = {
845- let fj = ed(aK(ee), dP, aT, unit, unit)
846- let fg = fj._1
847- let cP = fj._2
848- let dt = fj._3
849- let eY = fj._4
850- $Tuple2(nil, $Tuple3(fg, dt, eY))
844+func getOneTknREADONLY (dZ,dK) = {
845+ let fd = dY(aK(dZ), dK, aT, unit, unit)
846+ let fa = fd._1
847+ let cP = fd._2
848+ let dt = fd._3
849+ let eS = fd._4
850+ $Tuple2(nil, $Tuple3(fa, dt, eS))
851851 }
852852
853853
854854
855855 @Callable(df)
856-func unstakeAndGetOneTkn (fk,fd,eS) = {
857- let fe = if (aF())
856+func unstakeAndGetOneTkn (fe,eX,eK) = {
857+ let eM = {
858+ let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
859+ if ($isInstanceOf(eN, "Boolean"))
860+ then eN
861+ else throw(($getType(eN) + " couldn't be cast to Boolean"))
862+ }
863+ let eY = if (if (aF())
858864 then true
859- else (aS == n)
860- let ei = [if (!(fe))
865+ else (aS == n))
866+ then true
867+ else eM
868+ let ea = [if (!(eY))
861869 then true
862870 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
863871 then true
864872 else aB("no payments are expected")]
865- if ((ei == ei))
873+ if ((ea == ea))
866874 then {
867- let ee = aK(fd)
875+ let dZ = aK(eX)
868876 let X = df.caller
869877 let Y = df.transactionId
870- let fl = invoke(aZ, "unstake", [toBase58String(aT), fk], nil)
871- if ((fl == fl))
878+ let ff = invoke(aZ, "unstake", [toBase58String(aT), fe], nil)
879+ if ((ff == ff))
872880 then {
873- let fm = ed(ee, fk, aT, X, Y)
874- let fg = fm._1
875- let cP = fm._2
876- let dt = fm._3
877- let eY = fm._4
878- let dn = if (if ((eS > 0))
879- then (eS > fg)
881+ let fg = dY(dZ, fe, aT, X, Y)
882+ let fa = fg._1
883+ let cP = fg._2
884+ let dt = fg._3
885+ let eS = fg._4
886+ let dn = if (if ((eK > 0))
887+ then (eK > fa)
880888 else false)
881- then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
882- else fg
883- let fh = invoke(aD, "burn", [fk], [AttachedPayment(aT, fk)])
884- if ((fh == fh))
889+ then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
890+ else fa
891+ let fb = invoke(aD, "burn", [fe], [AttachedPayment(aT, fe)])
892+ if ((fb == fb))
885893 then {
886- let fi = [ScriptTransfer(df.caller, dn, ee)]
887- let fb = if ((dt > 0))
888- then [ScriptTransfer(aE, dt, ee)]
894+ let fc = [ScriptTransfer(df.caller, dn, dZ)]
895+ let eV = if ((dt > 0))
896+ then [ScriptTransfer(aE, dt, dZ)]
889897 else nil
890- $Tuple2(((cP ++ fi) ++ fb), dn)
898+ $Tuple2(((cP ++ fc) ++ eV), dn)
891899 }
892900 else throw("Strict value is not equal to itself.")
893901 }
901909 @Callable(df)
902910 func get () = {
903911 let cA = de(df)
904- let fn = cA._1
912+ let fh = cA._1
905913 let ch = cA._2
906914 let dh = cA._3
907915 let bP = cA._4
908916 let ci = cA._5
909- let fo = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
910- if ((fo == fo))
917+ let fi = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
918+ if ((fi == fi))
911919 then ci
912920 else throw("Strict value is not equal to itself.")
913921 }
915923
916924
917925 @Callable(df)
918-func getNoLess (fp,fq) = {
926+func getNoLess (fj,fk) = {
919927 let cA = de(df)
920928 let cg = cA._1
921929 let ch = cA._2
922930 let dh = cA._3
923931 let bP = cA._4
924932 let ci = cA._5
925- if ((fp > cg))
926- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fp)))
927- else if ((fq > ch))
928- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fq)))
933+ if ((fj > cg))
934+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fj)))
935+ else if ((fk > ch))
936+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fk)))
929937 else {
930- let fo = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
931- if ((fo == fo))
938+ let fi = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
939+ if ((fi == fi))
932940 then ci
933941 else throw("Strict value is not equal to itself.")
934942 }
938946
939947 @Callable(df)
940948 func unstakeAndGet (dn) = {
941- let fr = if ((size(df.payments) != 0))
949+ let fl = if ((size(df.payments) != 0))
942950 then throw("No payments are expected")
943951 else true
944- if ((fr == fr))
952+ if ((fl == fl))
945953 then {
946954 let bE = aH()
947955 let bR = fromBase58String(bE[q])
948- let fl = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
949- if ((fl == fl))
956+ let ff = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
957+ if ((ff == ff))
950958 then {
951959 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
952960 let bU = parseIntValue(cA._9)
953961 let ci = cA._10
954- let fs = if (if (aF())
962+ let fm = if (if (aF())
955963 then true
956964 else (bU == n))
957965 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
958966 else true
959- if ((fs == fs))
967+ if ((fm == fm))
960968 then {
961- let fo = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
962- if ((fo == fo))
969+ let fi = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
970+ if ((fi == fi))
963971 then ci
964972 else throw("Strict value is not equal to itself.")
965973 }
973981
974982
975983 @Callable(df)
976-func activate (ft,fu) = if ((toString(df.caller) != toString(aD)))
984+func activate (fn,fo) = if ((toString(df.caller) != toString(aD)))
977985 then throw("permissions denied")
978- else $Tuple2([StringEntry(aa(), ft), StringEntry(ab(), fu)], "success")
986+ else $Tuple2([StringEntry(aa(), fn), StringEntry(ab(), fo)], "success")
979987
980988
981989
10351043 let cu = bE[w]
10361044 let bF = parseIntValue(bE[t])
10371045 let bG = parseIntValue(bE[u])
1038- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1046+ let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10391047 let cU = bq(cS)
10401048 let cV = bq(cT)
1041- let fw = if ((fv == 0))
1049+ let fq = if ((fp == 0))
10421050 then [e, e, e]
1043- else bC(cU, cV, fv)
1051+ else bC(cU, cV, fp)
10441052 let cb = 0
1045- let fx = G(fw[1], b)
1046- let fy = G(fw[2], b)
1047- let fz = value(getInteger(aD, ap(toString(this))))
1048- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fv), toString(cb), toString(fx), toString(fy), toString(fz)], j))
1053+ let fr = G(fq[1], b)
1054+ let fs = G(fq[2], b)
1055+ let ft = value(getInteger(aD, ap(toString(this))))
1056+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fp), toString(cb), toString(fr), toString(fs), toString(ft)], j))
10491057 }
10501058
10511059
10611069 let bF = parseIntValue(bE[t])
10621070 let bG = parseIntValue(bE[u])
10631071 let bU = bE[p]
1064- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1072+ let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10651073 let cU = bq(cr)
10661074 let cV = bq(cs)
10671075 let bA = D(cU, bF)
10681076 let bB = D(cV, bG)
1069- let ca = if ((fv == 0))
1077+ let ca = if ((fp == 0))
10701078 then e
10711079 else bs(bB, bA)
10721080 let cx = D(cl, bF)
10741082 let cn = G(cy, bG)
10751083 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
10761084 let cI = dl._1
1077- let fA = dl._3
1085+ let fu = dl._3
10781086 let bW = dl._4
10791087 let bY = dl._5
10801088 let bV = dl._6
10941102 let bF = parseIntValue(bE[t])
10951103 let bG = parseIntValue(bE[u])
10961104 let bU = bE[p]
1097- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1098- let fB = bq(cr)
1099- let fC = bq(cs)
1100- let fD = D(fB, bF)
1101- let fE = D(fC, bG)
1102- let ca = if ((fv == 0))
1105+ let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1106+ let fv = bq(cr)
1107+ let fw = bq(cs)
1108+ let fx = D(fv, bF)
1109+ let fy = D(fw, bG)
1110+ let ca = if ((fp == 0))
11031111 then e
1104- else bs(fE, fD)
1112+ else bs(fy, fx)
11051113 let cy = D(cn, bG)
11061114 let cx = fraction(cy, d, ca)
11071115 let cl = G(cx, bF)
11081116 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11091117 let cI = dl._1
1110- let fA = dl._3
1118+ let fu = dl._3
11111119 let bW = dl._4
11121120 let bY = dl._5
11131121 let bV = dl._6
11171125
11181126
11191127 @Callable(df)
1120-func evaluateGetREADONLY (fF,fG) = {
1121- let cA = bN("", fF, fG, this)
1128+func evaluateGetREADONLY (fz,fA) = {
1129+ let cA = bN("", fz, fA, this)
11221130 let cg = cA._1
11231131 let ch = cA._2
11241132 let bW = cA._5
11301138 }
11311139
11321140
1133-@Verifier(fH)
1134-func fI () = {
1135- let fJ = {
1136- let dq = ey()
1141+@Verifier(fB)
1142+func fC () = {
1143+ let fD = {
1144+ let dq = eq()
11371145 if ($isInstanceOf(dq, "ByteVector"))
11381146 then {
1139- let eD = dq
1140- eD
1147+ let ev = dq
1148+ ev
11411149 }
11421150 else if ($isInstanceOf(dq, "Unit"))
1143- then fH.senderPublicKey
1151+ then fB.senderPublicKey
11441152 else throw("Match error")
11451153 }
1146- let dq = fH
1154+ let dq = fB
11471155 if ($isInstanceOf(dq, "Order"))
11481156 then {
11491157 let cR = dq
1150- let fK = aG()
1158+ let fE = aG()
11511159 let au = cQ(cR)
11521160 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1153- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fK)
1161+ let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fE)
11541162 if (if (if (au)
11551163 then av
11561164 else false)
11611169 }
11621170 else if ($isInstanceOf(dq, "SetScriptTransaction"))
11631171 then {
1164- let ez = dq
1165- let fL = blake2b256(value(ez.script))
1166- let fM = fromBase64String(value(getString(aD, ar())))
1167- let fN = scriptHash(this)
1168- if (if ((fM == fL))
1169- then (fN != fL)
1172+ let er = dq
1173+ let fF = blake2b256(value(er.script))
1174+ let fG = fromBase64String(value(getString(aD, ar())))
1175+ let fH = scriptHash(this)
1176+ if (if ((fG == fF))
1177+ then (fH != fF)
11701178 else false)
11711179 then true
1172- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1180+ else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
11731181 }
1174- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1182+ else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
11751183 }
11761184
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
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 = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(5, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 func af () = "%s__factoryConfig"
115115
116116
117117 func ag () = "%s%s__matcher__publicKey"
118118
119119
120120 func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
121121
122122
123123 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
124124
125125
126126 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
127127
128128
129129 func ao () = "%s__shutdown"
130130
131131
132132 func ap (aq) = ("%s%s__poolWeight__" + aq)
133133
134134
135135 func ar () = "%s__allowedLpScriptHash"
136136
137137
138138 let as = "%s__feeCollectorAddress"
139139
140140 func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
141141
142142
143143 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
144144
145145
146146 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
147147
148148
149149 func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
150150
151151
152152 let aD = addressFromStringValue(ax(this, P()))
153153
154154 let aE = addressFromStringValue(ax(aD, as))
155155
156156 func aF () = valueOrElse(getBoolean(aD, ao()), false)
157157
158158
159159 func aG () = fromBase58String(ax(aD, ag()))
160160
161161
162162 func aH () = {
163163 let aI = ax(this, aa())
164164 let aJ = ax(this, ab())
165165 let al = aA(aD, am(aJ))
166166 let ak = aA(aD, am(aI))
167167 split(ax(aD, aj(toString(ak), toString(al))), j)
168168 }
169169
170170
171171 func aK (aL) = if ((aL == i))
172172 then unit
173173 else fromBase58String(aL)
174174
175175
176176 func aM (aL) = if ((aL == unit))
177177 then i
178178 else toBase58String(value(aL))
179179
180180
181181 func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
182182
183183
184184 let aP = aN(aH())
185185
186186 let aQ = aP
187187
188188 let aR = aQ._1
189189
190190 let aS = aQ._2
191191
192192 let aT = aQ._3
193193
194194 let aU = aQ._4
195195
196196 let aV = aQ._5
197197
198198 let aW = aQ._6
199199
200200 let aX = aQ._7
201201
202202 func aY () = split(ax(aD, af()), j)
203203
204204
205205 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
206206
207207 let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
208208
209209 func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
210210
211211
212212 func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
213213
214214
215215 func bq (br) = if ((br == "WAVES"))
216216 then wavesBalance(this).available
217217 else assetBalance(this, fromBase58String(br))
218218
219219
220220 func bs (bt,bu) = fraction(bt, d, bu)
221221
222222
223223 func bv (bw,bx,by,bz) = {
224224 let bA = D(by, bw)
225225 let bB = D(bz, bx)
226226 bs(bB, bA)
227227 }
228228
229229
230230 func bC (by,bz,bD) = {
231231 let bE = aH()
232232 let bF = parseIntValue(bE[t])
233233 let bG = parseIntValue(bE[u])
234234 let bH = bv(bF, bG, by, bz)
235235 let bu = D(by, bF)
236236 let bt = D(bz, bG)
237237 let bI = D(bD, b)
238238 let bJ = bs(bu, bI)
239239 let bK = bs(bt, bI)
240240 [bH, bJ, bK]
241241 }
242242
243243
244244 func bL (by,bz,bD) = {
245245 let bM = bC(by, bz, bD)
246246 [G(bM[0], b), G(bM[1], b), G(bM[2], b)]
247247 }
248248
249249
250250 func bN (bO,bP,bQ,X) = {
251251 let bE = aH()
252252 let bR = bE[q]
253253 let bS = bE[r]
254254 let bT = bE[s]
255255 let bw = parseIntValue(bE[t])
256256 let bx = parseIntValue(bE[u])
257257 let bU = bE[p]
258258 let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
259259 if ((bR != bP))
260260 then throw("Invalid asset passed.")
261261 else {
262262 let bW = bq(bS)
263263 let bX = D(bW, bw)
264264 let bY = bq(bT)
265265 let bZ = D(bY, bx)
266266 let ca = bs(bZ, bX)
267267 let cb = G(ca, b)
268268 let cc = D(bQ, b)
269269 let cd = D(bV, b)
270270 let ce = fraction(bX, cc, cd)
271271 let cf = fraction(bZ, cc, cd)
272272 let cg = G(ce, bw)
273273 let ch = G(cf, bx)
274274 let ci = if ((bO == ""))
275275 then nil
276276 else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
277277 then unit
278278 else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
279279 then unit
280280 else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
281281 $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
282282 }
283283 }
284284
285285
286286 func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
287287 let bE = aH()
288288 let bR = fromBase58String(bE[q])
289289 let cr = bE[r]
290290 let cs = bE[s]
291291 let ct = bE[v]
292292 let cu = bE[w]
293293 let bF = parseIntValue(bE[t])
294294 let bG = parseIntValue(bE[u])
295295 let bU = bE[p]
296296 let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
297297 let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
298298 let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
299299 if (if ((cr != cv))
300300 then true
301301 else (cs != cw))
302302 then throw("Invalid amt or price asset passed.")
303303 else {
304304 let bW = if (cp)
305305 then bq(cr)
306306 else (bq(cr) - cl)
307307 let bY = if (cp)
308308 then bq(cs)
309309 else (bq(cs) - cn)
310310 let cx = D(cl, bF)
311311 let cy = D(cn, bG)
312312 let cz = bs(cy, cx)
313313 let bX = D(bW, bF)
314314 let bZ = D(bY, bG)
315315 let cA = if ((bV == 0))
316316 then {
317317 let ca = e
318318 let cB = e
319319 let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
320320 $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
321321 }
322322 else {
323323 let ca = bs(bZ, bX)
324324 let cB = fraction(O((ca - cz)), d, ca)
325325 let cC = D(ck, b)
326326 if (if ((ca != e))
327327 then (cB > cC)
328328 else false)
329329 then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
330330 else {
331331 let cd = D(bV, b)
332332 let cD = fraction(cx, ca, d)
333333 let cE = fraction(cy, d, ca)
334334 let cF = if ((cD > cy))
335335 then $Tuple2(cE, cy)
336336 else $Tuple2(cx, cD)
337337 let cG = cF._1
338338 let cH = cF._2
339339 let bI = fraction(cd, cH, bZ)
340340 $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
341341 }
342342 }
343343 let cI = cA._1
344344 let cJ = cA._2
345345 let cK = cA._3
346346 let cb = G(cA._4, b)
347347 let cL = G(cA._5, b)
348348 if ((0 >= cI))
349349 then throw("Invalid calculations. LP calculated is less than zero.")
350350 else {
351351 let cM = if (!(cq))
352352 then 0
353353 else cI
354354 let cN = (cl - cJ)
355355 let cO = (cn - cK)
356356 let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
357357 $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
358358 }
359359 }
360360 }
361361
362362
363363 func cQ (cR) = {
364364 let bE = aH()
365365 let cS = bE[r]
366366 let cT = bE[s]
367367 let bU = parseIntValue(bE[p])
368368 let bF = parseIntValue(bE[t])
369369 let bG = parseIntValue(bE[u])
370370 let cU = bq(cS)
371371 let cV = bq(cT)
372372 let ca = if ((cR.orderType == Buy))
373373 then bv(bF, bG, (cU + cR.amount), cV)
374374 else bv(bF, bG, (cU - cR.amount), cV)
375375 let cb = G(ca, b)
376376 if (if (if (aF())
377377 then true
378378 else (bU == m))
379379 then true
380380 else (bU == n))
381381 then throw("Exchange operations disabled")
382382 else {
383383 let cW = cR.assetPair.amountAsset
384384 let cX = if ((cW == unit))
385385 then "WAVES"
386386 else toBase58String(value(cW))
387387 let cY = cR.assetPair.priceAsset
388388 let cZ = if ((cY == unit))
389389 then "WAVES"
390390 else toBase58String(value(cY))
391391 if (if ((cX != cS))
392392 then true
393393 else (cZ != cT))
394394 then throw("Wrong order assets.")
395395 else {
396396 let da = cR.price
397397 let db = fraction(b, bG, bF)
398398 let dc = J(da, b, db)
399399 let dd = if ((cR.orderType == Buy))
400400 then (cb >= dc)
401401 else (dc >= cb)
402402 true
403403 }
404404 }
405405 }
406406
407407
408408 func de (df) = if ((size(df.payments) != 1))
409409 then throw("exactly 1 payment is expected")
410410 else {
411411 let dg = value(df.payments[0])
412412 let bP = value(dg.assetId)
413413 let dh = dg.amount
414414 let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
415415 let cg = cA._1
416416 let ch = cA._2
417417 let bU = parseIntValue(cA._9)
418418 let ci = cA._10
419419 if (if (aF())
420420 then true
421421 else (bU == n))
422422 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
423423 else $Tuple5(cg, ch, dh, bP, ci)
424424 }
425425
426426
427427 func di (df,ck,cq) = if ((size(df.payments) != 2))
428428 then throw("exactly 2 payments are expected")
429429 else {
430430 let dj = value(df.payments[0])
431431 let dk = value(df.payments[1])
432432 let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
433433 let bU = parseIntValue(dl._8)
434434 if (if (if (aF())
435435 then true
436436 else (bU == l))
437437 then true
438438 else (bU == n))
439439 then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
440440 else dl
441441 }
442442
443443
444444 func dm (dn) = {
445445 let do = invoke(aD, "emit", [dn], nil)
446446 if ((do == do))
447447 then {
448448 let dp = {
449449 let dq = do
450450 if ($isInstanceOf(dq, "Address"))
451451 then {
452452 let dr = dq
453453 invoke(dr, "emit", [dn], nil)
454454 }
455455 else unit
456456 }
457457 if ((dp == dp))
458458 then dn
459459 else throw("Strict value is not equal to itself.")
460460 }
461461 else throw("Strict value is not equal to itself.")
462462 }
463463
464464
465465 func ds (dn) = {
466466 let dt = fraction(dn, ae, b)
467467 $Tuple2((dn - dt), dt)
468468 }
469469
470470
471471 func du (dv,dw,X,Y) = {
472472 let dx = (Y == unit)
473- let dy = aN(aH())
474- let dz = dy._1
475- let bU = dy._2
476- let bR = dy._3
477- let dA = dy._4
478- let cT = dy._5
479- let dB = dy._6
480- let dC = dy._7
481- let dD = bq(aM(dA))
482- let dE = bq(aM(cT))
483- let dF = if ((dw == dA))
473+ let dy = bq(aM(aU))
474+ let dz = bq(aM(aV))
475+ let dA = if ((dw == aU))
484476 then true
485- else if ((dw == cT))
477+ else if ((dw == aV))
486478 then false
487479 else aB("invalid asset")
488- let dG = if (dx)
489- then $Tuple2(dD, dE)
490- else if (dF)
491- then $Tuple2((dD - dv), dE)
492- else $Tuple2(dD, (dE - dv))
493- let dH = dG._1
494- let dI = dG._2
495- let dJ = if (dF)
480+ let dB = if (dx)
481+ then $Tuple2(dy, dz)
482+ else if (dA)
483+ then $Tuple2((dy - dv), dz)
484+ else $Tuple2(dy, (dz - dv))
485+ let dC = dB._1
486+ let dD = dB._2
487+ let dE = if (dA)
496488 then $Tuple2(dv, 0)
497489 else $Tuple2(0, dv)
490+ let dF = dE._1
491+ let dG = dE._2
492+ let dH = ds(dF)._1
493+ let dI = ds(dG)._1
494+ let dJ = ds(dv)
498495 let dK = dJ._1
499- let dL = dJ._2
500- let dM = ds(dK)._1
501- let dN = ds(dL)._1
502- let dO = ds(dv)
503- let dP = dO._1
504- let dt = dO._2
505- let dQ = (dH + dM)
506- let dR = (dI + dN)
507- let dS = bs(D(dR, dC), D(dQ, dB))
508- let dT = G(dS, b)
509- let dU = if (dF)
510- then dH
511- else dI
512- let dV = toBigInt(dU)
513- let dW = toBigInt(valueOrErrorMessage(assetInfo(bR), (("asset " + toBase58String(bR)) + " doesn't exist")).quantity)
514- let dX = if ((dW > f))
496+ let dt = dJ._2
497+ let dL = (dC + dH)
498+ let dM = (dD + dI)
499+ let dN = bs(D(dM, aX), D(dL, aW))
500+ let dO = G(dN, b)
501+ let dP = if (dA)
502+ then dC
503+ else dD
504+ let dQ = toBigInt(dP)
505+ let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506+ let dS = if ((dR > f))
515507 then true
516508 else aB("initial deposit requires all coins")
517- if ((dX == dX))
509+ if ((dS == dS))
518510 then {
519- let dY = toBigInt(dP)
520- let dZ = max([0, toInt(((dW * (sqrtBigInt((d + ((dY * d) / dV)), 18, 18, DOWN) - d)) / d))])
511+ let dT = toBigInt(dK)
512+ let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
521513 let cP = if (dx)
522514 then nil
523- else [IntegerEntry(S(), dT), IntegerEntry(T(height, lastBlock.timestamp), dT), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dK, dL, dZ, dT, 0, 0, height, lastBlock.timestamp, 0, 0))]
524- let ea = bs(D(dI, dC), D(dH, dB))
525- let eb = G(ea, b)
526- let ec = N((((dT - eb) * b) / eb))
527- $Tuple4(dZ, cP, dt, ec)
515+ else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516+ let dV = bs(D(dD, aX), D(dC, aW))
517+ let dW = G(dV, b)
518+ let dX = N((((dO - dW) * b) / dW))
519+ $Tuple4(dU, cP, dt, dX)
528520 }
529521 else throw("Strict value is not equal to itself.")
530522 }
531523
532524
533-func ed (ee,dP,dw,X,Y) = {
525+func dY (dZ,dK,dw,X,Y) = {
534526 let dx = (Y == unit)
535- let ef = aN(aH())
536- let dz = ef._1
537- let bU = ef._2
538- let bR = ef._3
539- let dA = ef._4
540- let cT = ef._5
541- let eg = ef._6
542- let eh = ef._7
543- let ei = [if ((dw == bR))
527+ let ea = [if ((dw == aT))
544528 then true
545529 else aB("invalid lp asset")]
546- if ((ei == ei))
530+ if ((ea == ea))
547531 then {
548- let ej = if ((ee == dA))
532+ let eb = if ((dZ == aU))
549533 then true
550- else if ((ee == cT))
534+ else if ((dZ == aV))
551535 then false
552536 else aB("invalid asset")
553- let ek = if (ej)
554- then toBigInt(bq(aM(dA)))
555- else toBigInt(bq(aM(cT)))
556- let el = bq(aM(dA))
557- let em = bq(aM(cT))
558- let en = if (ej)
559- then el
560- else em
561- let eo = toBigInt(en)
562- let dW = toBigInt(valueOrErrorMessage(assetInfo(bR), (("asset " + toBase58String(bR)) + " doesn't exist")).quantity)
563- let ep = toBigInt(dP)
564- let eq = max([0, toInt(((ek * (d - pow((d - ((ep * d) / dW)), 18, h, 0, 18, DOWN))) / d))])
565- let er = ds(eq)
566- let es = er._1
567- let dt = er._2
568- let et = if (ej)
569- then $Tuple4(es, 0, (el - eq), em)
570- else $Tuple4(0, es, el, (em - eq))
571- let eu = et._1
572- let ev = et._2
573- let ew = et._3
574- let ex = et._4
575- let dS = bs(D(ex, eh), D(ew, eg))
576- let dT = G(dS, b)
537+ let ec = if (eb)
538+ then toBigInt(bq(aM(aU)))
539+ else toBigInt(bq(aM(aV)))
540+ let ed = bq(aM(aU))
541+ let ee = bq(aM(aV))
542+ let ef = if (eb)
543+ then ed
544+ else ee
545+ let eg = toBigInt(ef)
546+ let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
547+ let eh = toBigInt(dK)
548+ let ei = max([0, toInt(((ec * (d - pow((d - ((eh * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
549+ let ej = ds(ei)
550+ let ek = ej._1
551+ let dt = ej._2
552+ let el = if (eb)
553+ then $Tuple4(ek, 0, (ed - ei), ee)
554+ else $Tuple4(0, ek, ed, (ee - ei))
555+ let em = el._1
556+ let en = el._2
557+ let eo = el._3
558+ let ep = el._4
559+ let dN = bs(D(ep, aX), D(eo, aW))
560+ let dO = G(dN, b)
577561 let cP = if (dx)
578562 then nil
579- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eu, ev, dP, dT, height, lastBlock.timestamp)), IntegerEntry(S(), dT), IntegerEntry(T(height, lastBlock.timestamp), dT)]
580- let ea = bs(D(em, eh), D(el, eg))
581- let eb = G(ea, b)
582- let ec = N((((dT - eb) * b) / eb))
583- $Tuple4(es, cP, dt, ec)
563+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(em, en, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
564+ let dV = bs(D(ee, aX), D(ed, aW))
565+ let dW = G(dV, b)
566+ let dX = N((((dO - dW) * b) / dW))
567+ $Tuple4(ek, cP, dt, dX)
584568 }
585569 else throw("Strict value is not equal to itself.")
586570 }
587571
588572
589-func ey () = {
573+func eq () = {
590574 let dq = getString(Q())
591575 if ($isInstanceOf(dq, "String"))
592576 then {
593- let ez = dq
594- fromBase58String(ez)
577+ let er = dq
578+ fromBase58String(er)
595579 }
596580 else if ($isInstanceOf(dq, "Unit"))
597581 then unit
598582 else throw("Match error")
599583 }
600584
601585
602-func eA () = {
586+func es () = {
603587 let dq = getString(R())
604588 if ($isInstanceOf(dq, "String"))
605589 then {
606- let ez = dq
607- fromBase58String(ez)
590+ let er = dq
591+ fromBase58String(er)
608592 }
609593 else if ($isInstanceOf(dq, "Unit"))
610594 then unit
611595 else throw("Match error")
612596 }
613597
614598
615-func eB (df) = {
616- let eC = throw("Permission denied")
617- let dq = ey()
599+func et (df) = {
600+ let eu = throw("Permission denied")
601+ let dq = eq()
618602 if ($isInstanceOf(dq, "ByteVector"))
619603 then {
620- let eD = dq
621- if ((df.callerPublicKey == eD))
604+ let ev = dq
605+ if ((df.callerPublicKey == ev))
622606 then true
623- else eC
607+ else eu
624608 }
625609 else if ($isInstanceOf(dq, "Unit"))
626610 then if ((df.caller == this))
627611 then true
628- else eC
612+ else eu
629613 else throw("Match error")
630614 }
631615
632616
633617 @Callable(df)
634-func setManager (eE) = {
635- let eF = eB(df)
636- if ((eF == eF))
618+func setManager (ew) = {
619+ let ex = et(df)
620+ if ((ex == ex))
637621 then {
638- let eG = fromBase58String(eE)
639- if ((eG == eG))
640- then [StringEntry(R(), eE)]
622+ let ey = fromBase58String(ew)
623+ if ((ey == ey))
624+ then [StringEntry(R(), ew)]
641625 else throw("Strict value is not equal to itself.")
642626 }
643627 else throw("Strict value is not equal to itself.")
644628 }
645629
646630
647631
648632 @Callable(df)
649633 func confirmManager () = {
650- let eH = eA()
651- let eI = if (isDefined(eH))
634+ let ez = es()
635+ let eA = if (isDefined(ez))
652636 then true
653637 else throw("No pending manager")
654- if ((eI == eI))
638+ if ((eA == eA))
655639 then {
656- let eJ = if ((df.callerPublicKey == value(eH)))
640+ let eB = if ((df.callerPublicKey == value(ez)))
657641 then true
658642 else throw("You are not pending manager")
659- if ((eJ == eJ))
660- then [StringEntry(Q(), toBase58String(value(eH))), DeleteEntry(R())]
643+ if ((eB == eB))
644+ then [StringEntry(Q(), toBase58String(value(ez))), DeleteEntry(R())]
661645 else throw("Strict value is not equal to itself.")
662646 }
663647 else throw("Strict value is not equal to itself.")
664648 }
665649
666650
667651
668652 @Callable(df)
669-func put (ck,eK) = if ((0 > ck))
653+func put (ck,eC) = if ((0 > ck))
670654 then throw("Invalid slippageTolerance passed")
671655 else {
672656 let dl = di(df, ck, true)
673657 let cM = dl._2
674658 let bR = dl._7
675659 let ci = dl._9
676660 let cN = dl._10
677661 let cO = dl._11
678- let eL = dl._12
679- let eM = dl._13
662+ let eD = dl._12
663+ let eE = dl._13
680664 let do = invoke(aD, "emit", [cM], nil)
681665 if ((do == do))
682666 then {
683667 let dp = {
684668 let dq = do
685669 if ($isInstanceOf(dq, "Address"))
686670 then {
687671 let dr = dq
688672 invoke(dr, "emit", [cM], nil)
689673 }
690674 else unit
691675 }
692676 if ((dp == dp))
693677 then {
694- let eN = if ((cN > 0))
695- then invoke(ba, "put", nil, [AttachedPayment(eL, cN)])
678+ let eF = if ((cN > 0))
679+ then invoke(ba, "put", nil, [AttachedPayment(eD, cN)])
696680 else nil
697- if ((eN == eN))
681+ if ((eF == eF))
698682 then {
699- let eO = if ((cO > 0))
700- then invoke(ba, "put", nil, [AttachedPayment(eM, cO)])
683+ let eG = if ((cO > 0))
684+ then invoke(ba, "put", nil, [AttachedPayment(eE, cO)])
701685 else nil
702- if ((eO == eO))
686+ if ((eG == eG))
703687 then {
704- let eP = if (eK)
688+ let eH = if (eC)
705689 then {
706- let eQ = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
707- if ((eQ == eQ))
690+ let eI = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
691+ if ((eI == eI))
708692 then nil
709693 else throw("Strict value is not equal to itself.")
710694 }
711695 else [ScriptTransfer(df.caller, cM, bR)]
712- (ci ++ eP)
696+ (ci ++ eH)
713697 }
714698 else throw("Strict value is not equal to itself.")
715699 }
716700 else throw("Strict value is not equal to itself.")
717701 }
718702 else throw("Strict value is not equal to itself.")
719703 }
720704 else throw("Strict value is not equal to itself.")
721705 }
722706
723707
724708
725709 @Callable(df)
726-func putForFree (eR) = if ((0 > eR))
710+func putForFree (eJ) = if ((0 > eJ))
727711 then throw("Invalid value passed")
728712 else {
729- let dl = di(df, eR, false)
713+ let dl = di(df, eJ, false)
730714 dl._9
731715 }
732716
733717
734718
735719 @Callable(df)
736-func putOneTkn (eS,eT) = {
737- let eU = if (if (aF())
720+func putOneTkn (eK,eL) = {
721+ let eM = {
722+ let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
723+ if ($isInstanceOf(eN, "Boolean"))
724+ then eN
725+ else throw(($getType(eN) + " couldn't be cast to Boolean"))
726+ }
727+ let eO = if (if (if (aF())
738728 then true
739729 else (aS == l))
740730 then true
741- else (aS == n)
742- let ei = [if (!(eU))
731+ else (aS == n))
732+ then true
733+ else eM
734+ let ea = [if (!(eO))
743735 then true
744736 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
745737 then true
746738 else aB("exactly 1 payment are expected")]
747- if ((ei == ei))
739+ if ((ea == ea))
748740 then {
749- let eV = df.payments[0]
750- let dw = eV.assetId
751- let dv = eV.amount
741+ let eP = df.payments[0]
742+ let dw = eP.assetId
743+ let dv = eP.amount
752744 let X = df.caller
753745 let Y = df.transactionId
754- let eW = du(dv, dw, X, Y)
755- let eX = eW._1
756- let cP = eW._2
757- let dt = eW._3
758- let eY = eW._4
759- let eZ = if (if ((eS > 0))
760- then (eS > eX)
746+ let eQ = du(dv, dw, X, Y)
747+ let eR = eQ._1
748+ let cP = eQ._2
749+ let dt = eQ._3
750+ let eS = eQ._4
751+ let eT = if (if ((eK > 0))
752+ then (eK > eR)
761753 else false)
762- then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
763- else eX
764- let do = dm(eZ)
754+ then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
755+ else eR
756+ let do = dm(eT)
765757 if ((do == do))
766758 then {
767- let eP = if (eT)
759+ let eH = if (eL)
768760 then {
769- let fa = invoke(aZ, "stake", nil, [AttachedPayment(aT, eZ)])
770- if ((fa == fa))
761+ let eU = invoke(aZ, "stake", nil, [AttachedPayment(aT, eT)])
762+ if ((eU == eU))
771763 then nil
772764 else throw("Strict value is not equal to itself.")
773765 }
774- else [ScriptTransfer(df.caller, eZ, aT)]
775- let fb = if ((dt > 0))
766+ else [ScriptTransfer(df.caller, eT, aT)]
767+ let eV = if ((dt > 0))
776768 then [ScriptTransfer(aE, dt, dw)]
777769 else nil
778- $Tuple2(((cP ++ eP) ++ fb), eZ)
770+ $Tuple2(((cP ++ eH) ++ eV), eT)
779771 }
780772 else throw("Strict value is not equal to itself.")
781773 }
782774 else throw("Strict value is not equal to itself.")
783775 }
784776
785777
786778
787779 @Callable(df)
788780 func putOneTknREADONLY (dw,dv) = {
789- let fc = du(dv, aK(dw), unit, unit)
790- let eX = fc._1
791- let cP = fc._2
792- let dt = fc._3
793- let eY = fc._4
794- $Tuple2(nil, $Tuple3(eX, dt, eY))
781+ let eW = du(dv, aK(dw), unit, unit)
782+ let eR = eW._1
783+ let cP = eW._2
784+ let dt = eW._3
785+ let eS = eW._4
786+ $Tuple2(nil, $Tuple3(eR, dt, eS))
795787 }
796788
797789
798790
799791 @Callable(df)
800-func getOneTkn (fd,eS) = {
801- let fe = if (aF())
792+func getOneTkn (eX,eK) = {
793+ let eM = {
794+ let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
795+ if ($isInstanceOf(eN, "Boolean"))
796+ then eN
797+ else throw(($getType(eN) + " couldn't be cast to Boolean"))
798+ }
799+ let eY = if (if (aF())
802800 then true
803- else (aS == n)
804- let ei = [if (!(fe))
801+ else (aS == n))
802+ then true
803+ else eM
804+ let ea = [if (!(eY))
805805 then true
806806 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
807807 then true
808808 else aB("exactly 1 payment are expected")]
809- if ((ei == ei))
809+ if ((ea == ea))
810810 then {
811- let ee = aK(fd)
812- let eV = df.payments[0]
813- let dw = eV.assetId
814- let dP = eV.amount
811+ let dZ = aK(eX)
812+ let eP = df.payments[0]
813+ let dw = eP.assetId
814+ let dK = eP.amount
815815 let X = df.caller
816816 let Y = df.transactionId
817- let ff = ed(ee, dP, dw, X, Y)
818- let fg = ff._1
819- let cP = ff._2
820- let dt = ff._3
821- let eY = ff._4
822- let dn = if (if ((eS > 0))
823- then (eS > fg)
817+ let eZ = dY(dZ, dK, dw, X, Y)
818+ let fa = eZ._1
819+ let cP = eZ._2
820+ let dt = eZ._3
821+ let eS = eZ._4
822+ let dn = if (if ((eK > 0))
823+ then (eK > fa)
824824 else false)
825- then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
826- else fg
827- let fh = invoke(aD, "burn", [dP], [AttachedPayment(dw, dP)])
828- if ((fh == fh))
825+ then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
826+ else fa
827+ let fb = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
828+ if ((fb == fb))
829829 then {
830- let fi = [ScriptTransfer(X, dn, ee)]
831- let fb = if ((dt > 0))
832- then [ScriptTransfer(aE, dt, ee)]
830+ let fc = [ScriptTransfer(X, dn, dZ)]
831+ let eV = if ((dt > 0))
832+ then [ScriptTransfer(aE, dt, dZ)]
833833 else nil
834- $Tuple2(((cP ++ fi) ++ fb), dn)
834+ $Tuple2(((cP ++ fc) ++ eV), dn)
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840
841841
842842
843843 @Callable(df)
844-func getOneTknREADONLY (ee,dP) = {
845- let fj = ed(aK(ee), dP, aT, unit, unit)
846- let fg = fj._1
847- let cP = fj._2
848- let dt = fj._3
849- let eY = fj._4
850- $Tuple2(nil, $Tuple3(fg, dt, eY))
844+func getOneTknREADONLY (dZ,dK) = {
845+ let fd = dY(aK(dZ), dK, aT, unit, unit)
846+ let fa = fd._1
847+ let cP = fd._2
848+ let dt = fd._3
849+ let eS = fd._4
850+ $Tuple2(nil, $Tuple3(fa, dt, eS))
851851 }
852852
853853
854854
855855 @Callable(df)
856-func unstakeAndGetOneTkn (fk,fd,eS) = {
857- let fe = if (aF())
856+func unstakeAndGetOneTkn (fe,eX,eK) = {
857+ let eM = {
858+ let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
859+ if ($isInstanceOf(eN, "Boolean"))
860+ then eN
861+ else throw(($getType(eN) + " couldn't be cast to Boolean"))
862+ }
863+ let eY = if (if (aF())
858864 then true
859- else (aS == n)
860- let ei = [if (!(fe))
865+ else (aS == n))
866+ then true
867+ else eM
868+ let ea = [if (!(eY))
861869 then true
862870 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
863871 then true
864872 else aB("no payments are expected")]
865- if ((ei == ei))
873+ if ((ea == ea))
866874 then {
867- let ee = aK(fd)
875+ let dZ = aK(eX)
868876 let X = df.caller
869877 let Y = df.transactionId
870- let fl = invoke(aZ, "unstake", [toBase58String(aT), fk], nil)
871- if ((fl == fl))
878+ let ff = invoke(aZ, "unstake", [toBase58String(aT), fe], nil)
879+ if ((ff == ff))
872880 then {
873- let fm = ed(ee, fk, aT, X, Y)
874- let fg = fm._1
875- let cP = fm._2
876- let dt = fm._3
877- let eY = fm._4
878- let dn = if (if ((eS > 0))
879- then (eS > fg)
881+ let fg = dY(dZ, fe, aT, X, Y)
882+ let fa = fg._1
883+ let cP = fg._2
884+ let dt = fg._3
885+ let eS = fg._4
886+ let dn = if (if ((eK > 0))
887+ then (eK > fa)
880888 else false)
881- then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
882- else fg
883- let fh = invoke(aD, "burn", [fk], [AttachedPayment(aT, fk)])
884- if ((fh == fh))
889+ then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
890+ else fa
891+ let fb = invoke(aD, "burn", [fe], [AttachedPayment(aT, fe)])
892+ if ((fb == fb))
885893 then {
886- let fi = [ScriptTransfer(df.caller, dn, ee)]
887- let fb = if ((dt > 0))
888- then [ScriptTransfer(aE, dt, ee)]
894+ let fc = [ScriptTransfer(df.caller, dn, dZ)]
895+ let eV = if ((dt > 0))
896+ then [ScriptTransfer(aE, dt, dZ)]
889897 else nil
890- $Tuple2(((cP ++ fi) ++ fb), dn)
898+ $Tuple2(((cP ++ fc) ++ eV), dn)
891899 }
892900 else throw("Strict value is not equal to itself.")
893901 }
894902 else throw("Strict value is not equal to itself.")
895903 }
896904 else throw("Strict value is not equal to itself.")
897905 }
898906
899907
900908
901909 @Callable(df)
902910 func get () = {
903911 let cA = de(df)
904- let fn = cA._1
912+ let fh = cA._1
905913 let ch = cA._2
906914 let dh = cA._3
907915 let bP = cA._4
908916 let ci = cA._5
909- let fo = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
910- if ((fo == fo))
917+ let fi = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
918+ if ((fi == fi))
911919 then ci
912920 else throw("Strict value is not equal to itself.")
913921 }
914922
915923
916924
917925 @Callable(df)
918-func getNoLess (fp,fq) = {
926+func getNoLess (fj,fk) = {
919927 let cA = de(df)
920928 let cg = cA._1
921929 let ch = cA._2
922930 let dh = cA._3
923931 let bP = cA._4
924932 let ci = cA._5
925- if ((fp > cg))
926- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fp)))
927- else if ((fq > ch))
928- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fq)))
933+ if ((fj > cg))
934+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fj)))
935+ else if ((fk > ch))
936+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fk)))
929937 else {
930- let fo = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
931- if ((fo == fo))
938+ let fi = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
939+ if ((fi == fi))
932940 then ci
933941 else throw("Strict value is not equal to itself.")
934942 }
935943 }
936944
937945
938946
939947 @Callable(df)
940948 func unstakeAndGet (dn) = {
941- let fr = if ((size(df.payments) != 0))
949+ let fl = if ((size(df.payments) != 0))
942950 then throw("No payments are expected")
943951 else true
944- if ((fr == fr))
952+ if ((fl == fl))
945953 then {
946954 let bE = aH()
947955 let bR = fromBase58String(bE[q])
948- let fl = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
949- if ((fl == fl))
956+ let ff = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
957+ if ((ff == ff))
950958 then {
951959 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
952960 let bU = parseIntValue(cA._9)
953961 let ci = cA._10
954- let fs = if (if (aF())
962+ let fm = if (if (aF())
955963 then true
956964 else (bU == n))
957965 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
958966 else true
959- if ((fs == fs))
967+ if ((fm == fm))
960968 then {
961- let fo = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
962- if ((fo == fo))
969+ let fi = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
970+ if ((fi == fi))
963971 then ci
964972 else throw("Strict value is not equal to itself.")
965973 }
966974 else throw("Strict value is not equal to itself.")
967975 }
968976 else throw("Strict value is not equal to itself.")
969977 }
970978 else throw("Strict value is not equal to itself.")
971979 }
972980
973981
974982
975983 @Callable(df)
976-func activate (ft,fu) = if ((toString(df.caller) != toString(aD)))
984+func activate (fn,fo) = if ((toString(df.caller) != toString(aD)))
977985 then throw("permissions denied")
978- else $Tuple2([StringEntry(aa(), ft), StringEntry(ab(), fu)], "success")
986+ else $Tuple2([StringEntry(aa(), fn), StringEntry(ab(), fo)], "success")
979987
980988
981989
982990 @Callable(df)
983991 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
984992
985993
986994
987995 @Callable(df)
988996 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
989997
990998
991999
9921000 @Callable(df)
9931001 func calcPricesWrapperREADONLY (by,bz,bD) = {
9941002 let bM = bC(by, bz, bD)
9951003 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
9961004 }
9971005
9981006
9991007
10001008 @Callable(df)
10011009 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10021010
10031011
10041012
10051013 @Callable(df)
10061014 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10071015
10081016
10091017
10101018 @Callable(df)
10111019 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
10121020
10131021
10141022
10151023 @Callable(df)
10161024 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
10171025
10181026
10191027
10201028 @Callable(df)
10211029 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
10221030 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
10231031 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
10241032 }
10251033
10261034
10271035
10281036 @Callable(df)
10291037 func statsREADONLY () = {
10301038 let bE = aH()
10311039 let bR = fromBase58String(bE[q])
10321040 let cS = bE[r]
10331041 let cT = bE[s]
10341042 let ct = bE[v]
10351043 let cu = bE[w]
10361044 let bF = parseIntValue(bE[t])
10371045 let bG = parseIntValue(bE[u])
1038- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1046+ let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10391047 let cU = bq(cS)
10401048 let cV = bq(cT)
1041- let fw = if ((fv == 0))
1049+ let fq = if ((fp == 0))
10421050 then [e, e, e]
1043- else bC(cU, cV, fv)
1051+ else bC(cU, cV, fp)
10441052 let cb = 0
1045- let fx = G(fw[1], b)
1046- let fy = G(fw[2], b)
1047- let fz = value(getInteger(aD, ap(toString(this))))
1048- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fv), toString(cb), toString(fx), toString(fy), toString(fz)], j))
1053+ let fr = G(fq[1], b)
1054+ let fs = G(fq[2], b)
1055+ let ft = value(getInteger(aD, ap(toString(this))))
1056+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fp), toString(cb), toString(fr), toString(fs), toString(ft)], j))
10491057 }
10501058
10511059
10521060
10531061 @Callable(df)
10541062 func evaluatePutByAmountAssetREADONLY (cl) = {
10551063 let bE = aH()
10561064 let bR = fromBase58String(bE[q])
10571065 let cr = bE[r]
10581066 let bS = fromBase58String(cr)
10591067 let cs = bE[s]
10601068 let bT = fromBase58String(cs)
10611069 let bF = parseIntValue(bE[t])
10621070 let bG = parseIntValue(bE[u])
10631071 let bU = bE[p]
1064- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1072+ let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10651073 let cU = bq(cr)
10661074 let cV = bq(cs)
10671075 let bA = D(cU, bF)
10681076 let bB = D(cV, bG)
1069- let ca = if ((fv == 0))
1077+ let ca = if ((fp == 0))
10701078 then e
10711079 else bs(bB, bA)
10721080 let cx = D(cl, bF)
10731081 let cy = fraction(cx, ca, d)
10741082 let cn = G(cy, bG)
10751083 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
10761084 let cI = dl._1
1077- let fA = dl._3
1085+ let fu = dl._3
10781086 let bW = dl._4
10791087 let bY = dl._5
10801088 let bV = dl._6
10811089 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
10821090 }
10831091
10841092
10851093
10861094 @Callable(df)
10871095 func evaluatePutByPriceAssetREADONLY (cn) = {
10881096 let bE = aH()
10891097 let bR = fromBase58String(bE[q])
10901098 let cr = bE[r]
10911099 let bS = fromBase58String(cr)
10921100 let cs = bE[s]
10931101 let bT = fromBase58String(cs)
10941102 let bF = parseIntValue(bE[t])
10951103 let bG = parseIntValue(bE[u])
10961104 let bU = bE[p]
1097- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1098- let fB = bq(cr)
1099- let fC = bq(cs)
1100- let fD = D(fB, bF)
1101- let fE = D(fC, bG)
1102- let ca = if ((fv == 0))
1105+ let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1106+ let fv = bq(cr)
1107+ let fw = bq(cs)
1108+ let fx = D(fv, bF)
1109+ let fy = D(fw, bG)
1110+ let ca = if ((fp == 0))
11031111 then e
1104- else bs(fE, fD)
1112+ else bs(fy, fx)
11051113 let cy = D(cn, bG)
11061114 let cx = fraction(cy, d, ca)
11071115 let cl = G(cx, bF)
11081116 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11091117 let cI = dl._1
1110- let fA = dl._3
1118+ let fu = dl._3
11111119 let bW = dl._4
11121120 let bY = dl._5
11131121 let bV = dl._6
11141122 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11151123 }
11161124
11171125
11181126
11191127 @Callable(df)
1120-func evaluateGetREADONLY (fF,fG) = {
1121- let cA = bN("", fF, fG, this)
1128+func evaluateGetREADONLY (fz,fA) = {
1129+ let cA = bN("", fz, fA, this)
11221130 let cg = cA._1
11231131 let ch = cA._2
11241132 let bW = cA._5
11251133 let bY = cA._6
11261134 let bV = cA._7
11271135 let cb = cA._8
11281136 let bU = parseIntValue(cA._9)
11291137 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
11301138 }
11311139
11321140
1133-@Verifier(fH)
1134-func fI () = {
1135- let fJ = {
1136- let dq = ey()
1141+@Verifier(fB)
1142+func fC () = {
1143+ let fD = {
1144+ let dq = eq()
11371145 if ($isInstanceOf(dq, "ByteVector"))
11381146 then {
1139- let eD = dq
1140- eD
1147+ let ev = dq
1148+ ev
11411149 }
11421150 else if ($isInstanceOf(dq, "Unit"))
1143- then fH.senderPublicKey
1151+ then fB.senderPublicKey
11441152 else throw("Match error")
11451153 }
1146- let dq = fH
1154+ let dq = fB
11471155 if ($isInstanceOf(dq, "Order"))
11481156 then {
11491157 let cR = dq
1150- let fK = aG()
1158+ let fE = aG()
11511159 let au = cQ(cR)
11521160 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1153- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fK)
1161+ let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fE)
11541162 if (if (if (au)
11551163 then av
11561164 else false)
11571165 then aw
11581166 else false)
11591167 then true
11601168 else at(au, av, aw)
11611169 }
11621170 else if ($isInstanceOf(dq, "SetScriptTransaction"))
11631171 then {
1164- let ez = dq
1165- let fL = blake2b256(value(ez.script))
1166- let fM = fromBase64String(value(getString(aD, ar())))
1167- let fN = scriptHash(this)
1168- if (if ((fM == fL))
1169- then (fN != fL)
1172+ let er = dq
1173+ let fF = blake2b256(value(er.script))
1174+ let fG = fromBase64String(value(getString(aD, ar())))
1175+ let fH = scriptHash(this)
1176+ if (if ((fG == fF))
1177+ then (fH != fF)
11701178 else false)
11711179 then true
1172- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1180+ else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
11731181 }
1174- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1182+ else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
11751183 }
11761184

github/deemru/w8io/873ac7e 
202.88 ms