tx · Ex7MCG9jFNn35Ly6TaGzRK9f6u5oSGT8h2Ud2UWJeXD8

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03200000 Waves

2022.10.07 10:51 [2261643] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "Ex7MCG9jFNn35Ly6TaGzRK9f6u5oSGT8h2Ud2UWJeXD8", "fee": 3200000, "feeAssetId": null, "timestamp": 1665129118713, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "4fBMd7X5cWEzZHe1tg1wjeQZELQuHdQdNP3q328ViirmdnLTKsahshV5uDdLN99mXoD5ZYc7G9NhK5g2qZavyKpi" ], "script": "base64:BgK/IAgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYzNTExNjY5NiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCIEZ2V0RCICeHAiAW4iA3hwMCIDeHAxIgphUHJlY2lzaW9uIgFhIgFzIgNhbm4iBGNhbGMiA2FjYyIDY3VyIg0kdDAyMTA5NjIxMTE2IgFkIgVmb3VuZCICZHAiBWROZXh0IgVkRGlmZiIDYXJyIg0kdDAyMTUzMjIxNTc4IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIyMDc4MjIwOTgiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjI0MDUyMjQ1MiINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMjk5NDIzMDM5Ig0kdDAyMzA0MzIzNTA0IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjM1MTAyMzY3NCIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIGY2hlY2tEIg9scEFzc2V0RW1pc3Npb24iCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNTk4NzI2MDk1IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI2MjgyMjYzNjkiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIgJtbSICcGsiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBW91dExwIgdnd3hDbnRyIgdwb29sQ2ZnIgVhZGRvbiIQcGF5bWVudEFtb3VudFJhdyINJHQwMzE3NTUzMTgwNyINJHQwMzE5NjczMjU4MyIMYW1CYWxhbmNlTm93IgxwckJhbGFuY2VOb3ciDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiBmVzdFB1dCIHZXN0aW1MUCIJbHBDYWxjUmVzIg0kdDAzNTQ4OTM1NjE0IgdtYXhTbHBnIglvdXRBbXRBbXQiCmV4Y2hSZXN1bHQiB25vdFVzZWQiCW91dEFtb3VudCIKZXN0aW1BbUFtdCIKZXN0aW1QckFtdCINJHQwMzkyNDUzOTcwNSILdG90YWxHZXRSYXciCGZpbmFsUmVzIg0kdDA0MDQ1MjQwNTU2Ig0kdDA0MTU4MTQxNzM2Ig1scEFzc2V0QW1vdW50IgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiDSR0MDQyNDIwNDI0NjkiDSR0MDQyODE0NDI5MjkiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDQ1MjM0NDU0MjIiDnBheW1lbnRBc3NldElkIg0kdDA0NTY4MTQ1Nzc4IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hcAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWkCAzEwMAABagIBMQABawICX18AAWwCAAABbQABAAFuAAIAAW8AAwABcAAEAAFxAAEAAXIAAgABcwADAAF0AAQAAXUABQABdgAGAAF3AAcAAXgACAABeQAJAAF6AAEAAUEABwABQgAKAAFDCQBrAwAFBQFhAJBOAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFjCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBYwEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAvwICBQFkBQFICQC+AgEFAUgFAUgBAU8BAUgDCQC/AgIFAWQFAUgJAL4CAQUBSAUBSAEBUAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVEAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUwACESVzJXNfX3ByaWNlX19sYXN0AQFUAgFVAVYJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFVCQDMCAIJAKQDAQUBVgUDbmlsBQFrAQFXAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFYAgJfXwUBWQEBWgIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWAICX18FAVkBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJhYgACDiVzX19wcmljZUFzc2V0AQJhYwACByVzX19hbXABAmFkAAINJXNfX2FkZG9uQWRkcgACYWUCByVzX19mZWUAAmFmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQFDAQJhZwACESVzX19mYWN0b3J5Q29uZmlnAQJhaAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWkCAmFqAmFrCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhagICX18FAmFrAghfX2NvbmZpZwECYWwBAmFtCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFtAQJhbgACDCVzX19zaHV0ZG93bgECYW8AAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXAAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXEDAmFyAmFzAmF0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFyAgsgc25kclZhbGlkPQkApQMBBQJhcwIMIG10Y2hyVmFsaWQ9CQClAwEFAmF0AQJhdQEBSAQCYXYFAUgDCQABAgUCYXYCBlN0cmluZwQCYXcFAmF2BQJhdwkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmF4AgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFBAgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgAAAmFCCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQR0aGlzCQEBUAAAAmFDCQECYXgCBQR0aGlzCQECYWMAAQJhRAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUIJAQJhbgAHAQJhRQAJANkEAQkBAmF4AgUCYUIJAQJhaAAAAmFGCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQJhQgkBAmFwAAECYUcABAJhSAkBAmF4AgUEdGhpcwkBAmFhAAQCYUkJAQJheAIFBHRoaXMJAQJhYgAEAmFKCQECYUECBQJhQgkBAmFsAQUCYUkEAmFqCQECYUECBQJhQgkBAmFsAQUCYUgJALUJAgkBAmF4AgUCYUIJAQJhaQIJAKQDAQUCYWoJAKQDAQUCYUoFAWsBAmFLAAkAtQkCCQECYXgCBQJhQgkBAmFnAAUBawACYUwJAQJhSwAAAmFNCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhTAUBegIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmFOCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhTAUBQQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmFPCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhTAUBQgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYVAKAmFRAmFSAmFTAmFUAmFVAmFWAmFXAmFYAmFZAmFaCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJhUQkAzAgCCQCkAwEFAmFSCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJhVAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYCQDMCAIJAKQDAQUCYVkJAMwIAgkApAMBBQJhWgUDbmlsBQFrAQJiYQYCYmICYmMCYmQCYVQCYVcCYVgJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiYgkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJhVAkAzAgCCQCkAwEFAmFXCQDMCAIJAKQDAQUCYVgFA25pbAUBawECYmUBAmJmAwkAAAIFAmJmAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiZgECYmcCAmJoAmJpCQC8AgMFAmJoBQFjBQJiaQECYmoDAmJrAmJsAmJtBAJibgkAvAIDCQC4AgIFAmJrBQJibAUBYgUCYmwEAmJvCQC/AgIJALgCAgUCYm0JAQFOAQUCYm4FAWQDCQEBIQEFAmJvCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJuCQCUCgIFAmJvCQCZAwEJAMwIAgUCYmsJAMwIAgUCYmwFA25pbAECYnADAmJxAmJyAmJzBAJibgkAvAIDBQJicgUBYgUCYnEEAmJ0CQC/AgIFAmJzBQJibgMDBQJidAYJAL8CAgUCYnIFAmJxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJicgIBIAkApgMBBQJicQIBIAkApgMBBQJibgIBIAkApgMBBQJicwUCYnQBAmJ1BAJidgJidwJieAJieQQCYnoJAQFEAgUCYngFAmJ2BAJiQQkBAUQCBQJieQUCYncJAQJiZwIFAmJBBQJiegECYkIDAmJ4AmJ5AmJDBAJiRAkBAmFHAAQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCYkcJAQJidQQFAmJFBQJiRgUCYngFAmJ5BAJiaQkBAUQCBQJieAUCYkUEAmJoCQEBRAIFAmJ5BQJiRgQCYkgJAQFEAgUCYkMFAWEEAmJJCQECYmcCBQJiaQUCYkgEAmJKCQECYmcCBQJiaAUCYkgJAMwIAgUCYkcJAMwIAgUCYkkJAMwIAgUCYkoFA25pbAECYksDAmJ4AmJ5AmJDBAJiTAkBAmJCAwUCYngFAmJ5BQJiQwkAzAgCCQEBRwIJAJEDAgUCYkwAAAUBYQkAzAgCCQEBRwIJAJEDAgUCYkwAAQUBYQkAzAgCCQEBRwIJAJEDAgUCYkwAAgUBYQUDbmlsAQJiTQECYk4EAmJPCQBrAwUCYk4FAmFmBQFhCQCUCgIJAGUCBQJiTgUCYk8FAmJPAQJiUAQCYlECYlICYlMCYlQEAmJECQECYUcABAJiVQkAkQMCBQJiRAUBcwQCYlYJAJEDAgUCYkQFAXQEAmJXCQCRAwIFAmJEBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCY2EICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVQILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJiVQUCYlIJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNiCQECYmUBBQJiVgQCY2MJAQFEAgUCY2IFAmJYBAJjZAkBAmJlAQUCYlcEAmNlCQEBRAIFAmNkBQJiWQQCY2YJAQJiZwIFAmNlBQJjYwQCY2cJAQFHAgUCY2YFAWEEAmNoCQEBRAIFAmJTBQFhBAJjaQkBAUQCBQJjYQUBYQQCY2oJALwCAwUCY2MFAmNoBQJjaQQCY2sJALwCAwUCY2UFAmNoBQJjaQQCY2wJAQFHAgUCY2oFAmJYBAJjbQkBAUcCBQJjawUCYlkEAmNuAwkAAAIFAmJRAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVAUCY2wDCQAAAgUCYlYCBVdBVkVTBQR1bml0CQDZBAEFAmJWCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJUBQJjbQMJAAACBQJiVwIFV0FWRVMFBHVuaXQJANkEAQUCYlcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAmJUBQJiUQkBAmJhBgUCY2wFAmNtBQJiUwUCY2cFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2cFA25pbAkAnAoKBQJjbAUCY20FAmJWBQJiVwUCY2IFAmNkBQJjYQUCY2YFAmJaBQJjbgECY28NAmJRAmJtAmNwAmNxAmNyAmNzAmJUAmN0AmN1AmN2AmN3AmN4AmN5BAJiRAkBAmFHAAQCYlUJANkEAQkAkQMCBQJiRAUBcwQCY3oJAJEDAgUCYkQFAXQEAmNBCQCRAwIFAmJEBQF1BAJjQgkAkQMCBQJiRAUBeAQCY0MJAJEDAgUCYkQFAXkEAmNECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmNFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJaCQCRAwIFAmJEBQFyBAJjRggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiVQIIV3IgbHAgYXMIcXVhbnRpdHkEAmNiAwUCY3QJAQJiZQEFAmN6AwMFAmN2CQAAAgUCY3kFAmN6BwkAZQIJAQJiZQEFAmN6BQJjeAMFAmN2CQECYmUBBQJjegkAZQIJAQJiZQEFAmN6BQJjcAQCY2QDBQJjdAkBAmJlAQUCY0EDAwUCY3YJAAACBQJjeQUCY0EHCQBlAgkBAmJlAQUCY0EFAmN4AwUCY3YJAQJiZQEFAmNBCQBlAgkBAmJlAQUCY0EFAmNyBAJjRwkBAUQCBQJjcAUCY0QEAmNICQEBRAIFAmNyBQJjRQQCY0kJAQJiZwIFAmNIBQJjRwQCY2MJAQFEAgUCY2IFAmNEBAJjZQkBAUQCBQJjZAUCY0UEAmNKAwkAAAIFAmNGAAAEAmNmBQFkBAJjSwUBZAQCYkgJAHYGCQC5AgIFAmNHBQJjSAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiSAUBYQkBAUcCBQJjRwUCY0QJAQFHAgUCY0gFAmNFCQECYmcCCQC3AgIFAmNlBQJjSAkAtwICBQJjYwUCY0cFAmNLBAJjZgkBAmJnAgUCY2UFAmNjBAJjTAkAvAIDCQEBTgEJALgCAgUCY2YFAmNJBQFjBQJjZgQCY0sJAQFEAgUCYm0FAWEDAwMFAmN3CQECIT0CBQJjZgUBZAcJAL8CAgUCY0wFAmNLBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjTAIDID4gCQCmAwEFAmNLBAJjTQkBAUQCBQJjRgUBYQQCY04JALwCAwUCY0cFAmNmBQFjBAJjTwkAvAIDBQJjSAUBYwUCY2YEAmNQAwkAvwICBQJjTgUCY0gJAJQKAgUCY08FAmNICQCUCgIFAmNHBQJjTgQCY1EIBQJjUAJfMQQCY1IIBQJjUAJfMgQCYkgJALwCAwUCY00FAmNSBQJjZQkAlwoFCQEBRwIFAmJIBQFhCQEBRwIFAmNRBQJjRAkBAUcCBQJjUgUCY0UFAmNmBQJjSwQCY1MIBQJjSgJfMQQCY1QIBQJjSgJfMgQCY1UIBQJjSgJfMwQCY2cJAQFHAggFAmNKAl80BQFhBAJjVgkBAUcCCAUCY0oCXzUFAWEDCQBnAgAABQJjUwkAAgECB0xQIDw9IDAEAmNXAwkBASEBBQJjdQAABQJjUwQCY1gJAGUCBQJjcAUCY1QEAmNZCQBlAgUCY3IFAmNVBAJjWgMDBQJjdgkAAAIFAmN5BQJjegcJAJQKAgUCY3gAAAMDBQJjdgkAAAIFAmN5BQJjQQcJAJQKAgAABQJjeAkAlAoCBQJjVAUCY1UEAmRhCAUCY1oCXzEEAmRiCAUCY1oCXzIEAmRjCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUCYlQFAmJRCQECYVAKBQJkYQUCZGIFAmNXBQJjZwUCYm0FAmNWBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjWAUCY1kFA25pbAkAnwoNBQJjUwUCY1cFAmNnBQJjYgUCY2QFAmNGBQJiVQUCYloFAmRjBQJjWAUCY1kFAmNxBQJjcwECZGQBAmRlBAJiRAkBAmFHAAQCZGYJAJEDAgUCYkQFAXQEAmRnCQCRAwIFAmJEBQF1BAJiWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFyBAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJkaAkBAmJlAQUCZGYEAmRpCQECYmUBBQJkZwQCY2YDCQAAAggFAmRlCW9yZGVyVHlwZQUDQnV5CQECYnUEBQJiRQUCYkYJAGQCBQJkaAgFAmRlBmFtb3VudAUCZGkJAQJidQQFAmJFBQJiRgkAZQIFAmRoCAUCZGUGYW1vdW50BQJkaQQCY2cJAQFHAgUCY2YFAWEDAwMJAQJhRAAGCQAAAgUCYloFAW8GCQAAAgUCYloFAXAJAAIBAg1BZG1pbiBibG9ja2VkBAJkaggIBQJkZQlhc3NldFBhaXILYW1vdW50QXNzZXQEAmRrAwkAAAIFAmRqBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkagQCZGwICAUCZGUJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRtAwkAAAIFAmRsBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkbAMDCQECIT0CBQJkawUCZGYGCQECIT0CBQJkbQUCZGcJAAIBAglXciBhc3NldHMEAmRuCAUCZGUFcHJpY2UEAmNFCQBrAwUBYQUCYkYFAmJFBAJkbwkBAUoDBQJkbgUBYQUCY0UEAmRwAwkAAAIIBQJkZQlvcmRlclR5cGUFA0J1eQkAZwIFAmNnBQJkbwkAZwIFAmRvBQJjZwYBAmRxAQJkcgMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCYlIJAQV2YWx1ZQEIBQJkcwdhc3NldElkBAJjeAgFAmRzBmFtb3VudAQCY0oJAQJiUAQJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJANgEAQUCYlIFAmN4CAUCZHIGY2FsbGVyBAJjbAgFAmNKAl8xBAJjbQgFAmNKAl8yBAJiWgkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNuCAUCY0oDXzEwAwMJAQJhRAAGCQAAAgUCYloFAXAJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJiWgkAlwoFBQJjbAUCY20FAmN4BQJiUgUCY24BAmR0CgJkdQFZAmR2AmR3AmJtAmN1AmN2AmN3AmN4AmN5BAJjSgkBAmNvDQUBWQUCYm0ICQEFdmFsdWUBBQJkdgZhbW91bnQICQEFdmFsdWUBBQJkdgdhc3NldElkCAkBBXZhbHVlAQUCZHcGYW1vdW50CAkBBXZhbHVlAQUCZHcHYXNzZXRJZAUCZHUJAAACBQFZAgAFAmN1BQJjdgUCY3cFAmN4BQJjeQQCYloJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl84AwMDCQECYUQABgkAAAIFAmJaBQFuBgkAAAIFAmJaBQFwCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJiWgUCY0oBAmR4AQJkeQQCZHoFAWcEAmRBCQCRAwIFAmR5AAAEAmRCCQCRAwIFAmR5AAEEAmRDCQCnAwEFAWkEAmRECQC5AgIJAKcDAQUCYUMFAmRDBAJkRQkAtwICBQJkQQUCZEIDCQAAAgUCZEUFAWUFAWUEAmRGCQC5AgIFAmREBQJkegoBAmRHAgJkSAJkSQQCZEoFAmRIBAJkSwgFAmRKAl8xBAJkTAgFAmRKAl8yAwkBAiE9AgUCZEwFBHVuaXQFAmRIBAJkTQkAugICCQC5AgIJALkCAgUCZEsFAmRLBQJkSwkAuQICCQC5AgIJALkCAgUCZEEFAmRCBQJkegUCZHoEAmROCQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUCZEYFAmRFBQJkQwkAuQICBQJkTQUCZHoFAmRLCQC3AgIJALoCAgkAuQICCQC4AgIFAmRGBQJkQwUCZEsFAmRDCQC5AgIJALcCAgUCZHoFAWYFAmRNBAJkTwkBAU8BCQC4AgIFAmROCQEFdmFsdWUBBQJkSwMJAMACAgUBZgUCZE8JAJQKAgUCZE4FAmRJCQCUCgIFAmROBQR1bml0BAJkUAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYFA25pbAQCZFEKAAJkUgUCZFAKAAJkUwkAkAMBBQJkUgoAAmRUCQCUCgIFAmRFBQR1bml0CgECZFUCAmRWAmRXAwkAZwIFAmRXBQJkUwUCZFYJAQJkRwIFAmRWCQCRAwIFAmRSBQJkVwoBAmRYAgJkVgJkVwMJAGcCBQJkVwUCZFMFAmRWCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNwkBAmRYAgkBAmRVAgkBAmRVAgkBAmRVAgkBAmRVAgkBAmRVAgkBAmRVAgkBAmRVAgUCZFQAAAABAAIAAwAEAAUABgAHBAJkSwgFAmRRAl8xBAJkTAgFAmRRAl8yAwkBAiE9AgUCZEwFBHVuaXQFAmRLCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRLAQJkWQMCZHkCZHICZFoEAmR6BQFnBAJlYQkAkQMCBQJkeQMJAAACBQJkcgAAAAEAAAQCZEMJAKcDAQUBaQQCZEQJALkCAgkApwMBBQJhQwUCZEMEAmRFBQJlYQQCZEYJALkCAgUCZEQFAmR6BAJlYgkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmRaBQJkWgkAuQICBQJlYQUCZHoFAmRaBQJkQwkAuQICBQJkRgUCZHoEAmVjCQC4AgIJALcCAgUCZEUJALoCAgkAuQICBQJkWgUCZEMFAmRGBQJkWgoBAmRHAgJkSAJkSQQCZWQFAmRIBAJlZQgFAmVkAl8xBAJkTAgFAmVkAl8yAwkBAiE9AgUCZEwFBHVuaXQFAmRIBAJlZgkAugICCQC3AgIJALkCAgUCZWUFAmVlBQJlYgkAtwICCQC5AgIFAWcFAmVlBQJlYwQCZWcJAQFPAQkAuAICBQJlZgkBBXZhbHVlAQUCZWUDCQDAAgIFAWYFAmVnCQCUCgIFAmVmBQJkSQkAlAoCBQJlZgUEdW5pdAQCZFAJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZWgKAAJkUgUCZFAKAAJkUwkAkAMBBQJkUgoAAmRUCQCUCgIFAmRaBQR1bml0CgECZFUCAmRWAmRXAwkAZwIFAmRXBQJkUwUCZFYJAQJkRwIFAmRWCQCRAwIFAmRSBQJkVwoBAmRYAgJkVgJkVwMJAGcCBQJkVwUCZFMFAmRWCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkWAIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIJAQJkVQIFAmRUAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVlCAUCZWgCXzEEAmRMCAUCZWgCXzIDCQECIT0CBQJkTAUEdW5pdAUCZWUJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZWUBAmVpBAJlagJiUgJiVAFZBAJlawkBAmFHAAQCYlYJAJEDAgUCZWsFAXQEAmJXCQCRAwIFAmVrBQF1BAJiVQkAkQMCBQJlawUBcwQCY0QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlawUBdgQCY0UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlawUBdwQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmVsCQECYk0BBQJlagQCY3gIBQJlbAJfMQQCYk8IBQJlbAJfMgQCZW0DCQAAAgUBWQIACQCUCgIFAmNiBQJjZAMJAAACBQJiUgUCYlYDCQBmAgUCZWoFAmNiCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY2IFAmVqBQJjZAMJAAACBQJiUgUCYlcDCQBmAgUCZWoFAmNkCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjYgkAZQIFAmNkBQJlagkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVuCAUCZW0CXzEEAmVvCAUCZW0CXzIEAmVwAwkAAAIFAmJSBQJiVgkAlAoCBQJjeAAAAwkAAAIFAmJSBQJiVwkAlAoCAAAFAmN4CQACAQIPaW52YWxpZCBwYXltZW50BAJlcQgFAmVwAl8xBAJlcggFAmVwAl8yBAJlcwkAZAIFAmVuBQJlcQQCZXQJAGQCBQJlbwUCZXIEAmJyCQECZHgBCQDMCAIJALYCAQUCZW4JAMwIAgkAtgIBBQJlbwUDbmlsBAJicQkBAmR4AQkAzAgCCQC2AgEFAmVzCQDMCAIJALYCAQUCZXQFA25pbAQCZXUDCQC/AgIFAmJxBQJicgYJAQV0aHJvdwADCQAAAgUCZXUFAmV1BAJldgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmV3AwkAvwICBQJldgUBZQkAvAIDBQJldgkAuAICBQJicQUCYnIFAmJyCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwQCY2cJAQFHAgkBAmJnAgkBAUQCBQJjZAUCY0UJAQFEAgUCY2IFAmNEBQFhBAJkYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAmJUBQFZCQECYVAKBQJlcQUCZXIJAKADAQUCZXcFAmNnAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZXgJAGsDBQJlbwUBYQUCZW4EAmV5CQBrAwUCY3gFAWEJAGQCBQJleAUBYQQCZXoJAGUCBQJjeAUCZXkEAmVBCQC8AgMFAmV2CQC2AgEFAmV6CQC2AgEFAmVvBAJlQgkAoAMBCQC8AgMJALgCAgUCZXcFAmVBBQFiBQJlQQkAlgoECQCgAwEFAmV3BQJkYwUCYk8FAmVCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlQwYCZUQCZUUCZUYCZHUCZUcCZUgDCQECIT0CCQCQAwEFAmVGAAEJAAIBAgsxIHBtbnQgZXhwZAQCZWsJAQJhRwAEAmJVCQCRAwIFAmVrBQFzBAJiVgkAkQMCBQJlawUBdAQCYlcJAJEDAgUCZWsFAXUEAmVJCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAXYEAmVKCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAXcEAmVLCQCRAwIFAmVrBQFyBAJiVAMJAAACBQJkdQUEdGhpcwUCZUcFAmR1BAJkcwkBBXZhbHVlAQkAkQMCBQJlRgAABAJiUgkBBXZhbHVlAQgFAmRzB2Fzc2V0SWQEAmN4CAUCZHMGYW1vdW50AwkAZgIAgJTr3AMFAmN4CQACAQINTWluIHBtdCAxMCBMUAQCYlEJANgEAQUCZUgDCQECIT0CBQJiVQkA2AQBBQJiUgkAAgECCFdyb25nIExQBAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZUwKAAJlTQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVECQDMCAIFAmN4BQNuaWwFA25pbAMJAAECBQJlTQIKKEludCwgSW50KQUCZU0JAAIBCQCsAgIJAAMBBQJlTQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZU4IBQJlTAJfMQQCYk8IBQJlTAJfMgQCZU8DAwkAZgIFAmVFAAAJAGYCBQJlRQUCZU4HCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlRQUDbmlsAgAFAmVOBAJlUAMJAAACBQJlRAUCYlYJAJQKAgUCZU8AAAkAlAoCAAAFAmVPBAJlUQgFAmVQAl8xBAJlUggFAmVQAl8yBAJlUwkBAmJnAgkBAUQCBQJjZAUCZUoJAQFEAgUCY2IFAmVJBAJlVAkBAUcCBQJlUwUBYQQCZVUDCQAAAgUCZUQCBVdBVkVTBQR1bml0CQDZBAEFAmVEBAJlVgMJAGYCBQJiTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFGBQJiTwUCZVUFA25pbAUDbmlsBAJjbgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJUBQJlTwUCZVUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAmJUBQJiUQkBAmJhBgUCZVEFAmVSBQJjeAUCZVQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZVQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZVQFA25pbAUCZVYDCQAAAgUCY24FAmNuBAJlVwkA/AcEBQJhQgIEYnVybgkAzAgCBQJjeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUgUCY3gFA25pbAMJAAACBQJlVwUCZVcJAJQKAgUCY24FAmVPCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlWAAEAmF2CQCiCAEJAQFRAAMJAAECBQJhdgIGU3RyaW5nBAJkRQUCYXYJANkEAQUCZEUDCQABAgUCYXYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVkABAJhdgkAoggBCQEBUgADCQABAgUCYXYCBlN0cmluZwQCZEUFAmF2CQDZBAEFAmRFAwkAAQIFAmF2AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmVaCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmZhAQJkcgQCYXYJAQJlWAADCQABAgUCYXYCCkJ5dGVWZWN0b3IEAmZiBQJhdgMJAAACCAUCZHIPY2FsbGVyUHVibGljS2V5BQJmYgYFAmVaAwkAAQIFAmF2AgRVbml0AwkAAAIIBQJkcgZjYWxsZXIFBHRoaXMGBQJlWgkAAgECC01hdGNoIGVycm9yHAJkcgELY29uc3RydWN0b3IBAVAEAmViCQECZmEBBQJkcgMJAAACBQJlYgUCZWIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVAABQFQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBCnNldE1hbmFnZXIBAmZjBAJlYgkBAmZhAQUCZHIDCQAAAgUCZWIFAmViBAJmZAkA2QQBBQJmYwMJAAACBQJmZAUCZmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQ5jb25maXJtTWFuYWdlcgAEAmJMCQECZVkABAJmZQMJAQlpc0RlZmluZWQBBQJiTAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmUFAmZlBAJmZgMJAAACCAUCZHIPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiTAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmYFAmZmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJiTAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEDcHV0AgJmZwJmaAQCZmkJAQJhSwAEAmZqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmaQUBegIKV3Igc3QgYWRkcgQCZmsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZpBQFBAgpXciBzbCBhZGRyAwkAZgIAAAUCZmcJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZsCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRyCHBheW1lbnRzAAEFAmZnBgcGAAACAAQCY1cIBQJmbAJfMgQCZm0IBQJmbAJfNwQCY24IBQJmbAJfOQQCY1gIBQJmbANfMTAEAmNZCAUCZmwDXzExBAJiVggFAmZsA18xMgQCYlcIBQJmbANfMTMEAmNKCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJjSgUCY0oEAmZuBAJhdgUCY0oDCQABAgUCYXYCB0FkZHJlc3MEAmZvBQJhdgkA/AcEBQJmbwIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZm4FAmZuBAJmcAMJAGYCBQJjWAAACQD8BwQFAmZrAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmNYBQNuaWwFA25pbAMJAAACBQJmcAUCZnAEAmZxAwkAZgIFAmNZAAAJAPwHBAUCZmsCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVwUCY1kFA25pbAUDbmlsAwkAAAIFAmZxBQJmcQQCZnIDBQJmaAQCZnMJAPwHBAUCZmoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZtBQJjVwUDbmlsAwkAAAIFAmZzBQJmcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcgZjYWxsZXIFAmNXBQJmbQUDbmlsCQDOCAIFAmNuBQJmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEJcHV0T25lVGtuBQJmdAJmdQJmdgJibQJmaAQCYkQJAQJhSwAEAmZqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRAUBegIKV3Igc3QgYWRkcgQCZmsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFBAgpXciBzbCBhZGRyBAJmdwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUICC1dyIGd3eCBhZGRyBAJmeAkBAmFHAAQCYlYJAJEDAgUCZngFAXQEAmJXCQCRAwIFAmZ4BQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZ4BQF2BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZ4BQF3BAJmeQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWQAAgAEAmJUAwkAAAIFAmZ5CQClCAEIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcgZjYWxsZXIDAwMDCQBnAgAABQJibQYJAGcCAAAFAmZ0BgkAZwIAAAUCZnUGCQBnAgAABQJmdgkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQDYBAEJAQV2YWx1ZQEIBQJkcwdhc3NldElkBAJmeggFAmRzBmFtb3VudAQCZkEJAQJiTQEFAmZ6BAJjeAgFAmZBAl8xBAJiTwgFAmZBAl8yAwkAZgIAgK3iBAUCZnoJAAIBAg1Xcm9uZyBwbXQgYW10BAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZkIDCQAAAgUCYlIFAmJWAwMJAGYCBQJmegUCY2IGCQBmAgUCZnQFAmN4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCY2IFAmZ6BQJjZAkAZQIFAmN4BQJmdAUCZnUAAAAAAwkAAAIFAmJSBQJiVwMDCQBmAgUCZnoFAmNkBgkAZgIFAmZ1BQJjeAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCY2IJAGUCBQJjZAUCZnoAAAAACQBlAgUCY3gFAmZ1BQJmdAkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZDCAUCZkICXzEEAmZECAUCZkICXzIEAmZFCAUCZkICXzMEAmZGCAUCZkICXzQEAmZHCAUCZkICXzUEAmZICAUCZkICXzYEAmJyCQD8BwQFAmZ3AgVjYWxjRAkAzAgCCQCkAwEFAmZDCQDMCAIJAKQDAQUCZkQJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCYnEJAPwHBAUCZncCBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmZDBQJmRQUCZkgJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZkQFAmZHBQJmRgkAzAgCBQJhQwkAzAgCBQFpCQDMCAIFAWoFA25pbAUDbmlsBAJmSQkBAmJwAwkApwMBCQECYXUBBQJicQkApwMBCQECYXUBBQJicgUBaAMJAAACBQJmSQUCZkkEAmZKCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJmdAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlcFAmZ1BQJibQYGBgUCY3gFAmJSBAJmSwgFAmZKAl8yBAJmbQgFAmZKAl83BAJjbggFAmZKAl85BAJjWAgFAmZKA18xMAQCY1kIBQJmSgNfMTEEAmZMCQECYmoDCQC2AgEFAmZLCQC2AgEFAmZ2CQC2AgEFAmJtBAJjVwkAoAMBCAUCZkwCXzIEAmZsCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJmbAUCZmwEAmZuBAJhdgUCZmwDCQABAgUCYXYCB0FkZHJlc3MEAmZvBQJhdgkA/AcEBQJmbwIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZm4FAmZuBAJmcAMJAGYCBQJjWAAACQD8BwQFAmZrAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZwBQJmcAQCZnEDCQBmAgUCY1kAAAkA/AcEBQJmawIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlcFAmNZBQNuaWwFA25pbAMJAAACBQJmcQUCZnEEAmZyAwUCZmgEAmZzCQD8BwQFAmZqAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmbQUCY1cFA25pbAMJAAACBQJmcwUCZnMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHIGY2FsbGVyBQJjVwUCZm0FA25pbAQCZVYDCQBmAgUCYk8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCYk8JANkEAQUCYlIFA25pbAUDbmlsCQDOCAIJAM4IAgUCY24FAmZyBQJlVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgELcHV0T25lVGtuVjICAmVFAmZoAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJlawkBAmFHAAQCYlYJAJEDAgUCZWsFAXQEAmJXCQCRAwIFAmVrBQF1BAJiVQkA2QQBCQCRAwIFAmVrBQFzBAJlSQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQF2BAJlSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQF3BAJiVAMJAAACCAUCZHIGY2FsbGVyBQR0aGlzCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHIGY2FsbGVyBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCYlIJANgEAQkBBXZhbHVlAQgFAmRzB2Fzc2V0SWQEAmN4CAUCZHMGYW1vdW50AwkAZgIAgK3iBAUCY3gJAAIBAg1Xcm9uZyBwbXQgYW10BAJmTQkBAmVpBAUCY3gFAmJSCQClCAEFAmJUCQDYBAEIBQJkcg10cmFuc2FjdGlvbklkBAJmSwgFAmZNAl8xBAJjbggFAmZNAl8yBAJiTwgFAmZNAl8zBAJjVwMDCQBmAgUCZUUAAAkAZgIFAmVFBQJmSwcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVFBQNuaWwCAAUCZksEAmZsCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJmbAUCZmwEAmZuBAJhdgUCZmwDCQABAgUCYXYCB0FkZHJlc3MEAmZvBQJhdgkA/AcEBQJmbwIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZm4FAmZuBAJmcgMFAmZoBAJmcwkA/AcEBQJhTQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlUFAmNXBQNuaWwDCQAAAgUCZnMFAmZzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRyBmNhbGxlcgUCY1cFAmJVBQNuaWwEAmVWAwkAZgIFAmJPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmJPCQDZBAEFAmJSBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY24FAmZyBQJlVgUCY1cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBCnB1dEZvckZyZWUBAmZOAwkAZgIAAAUCZk4JAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZkoJAQJkdAoJAKUIAQgFAmRyBmNhbGxlcgkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHIIcGF5bWVudHMAAQUCZk4HBwYAAAIACAUCZkoCXzkCZHIBA2dldAAEAmNKCQECZHEBBQJkcgQCZk8IBQJjSgJfMQQCY20IBQJjSgJfMgQCY3gIBQJjSgJfMwQCYlIIBQJjSgJfNAQCY24IBQJjSgJfNQQCZWMJAPwHBAUCYUICBGJ1cm4JAMwIAgUCY3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmN4BQNuaWwDCQAAAgUCZWMFAmVjBQJjbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEJZ2V0T25lVGtuBQJmUAJmUQJmUgJlRAJibQMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCYkQJAQJhRwAEAmJVCQCRAwIFAmJEBQFzBAJiVgkAkQMCBQJiRAUBdAQCYlcJAJEDAgUCYkQFAXUEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJaCQCRAwIFAmJEBQFyBAJmaQkBAmFLAAQCZncJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZpBQFCAgpXciBzbCBhZGRyBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCZnkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFkAAIABAJiVAMJAAACBQJmeQkApQgBCAUCZHIGY2FsbGVyCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHIGY2FsbGVyBAJiUQkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAQCYlIJAQV2YWx1ZQEIBQJkcwdhc3NldElkBAJjeAgFAmRzBmFtb3VudAMJAGYCAICU69wDBQJjeAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFAmJtBgkAZgIAAAUCZlAGCQBmAgAABQJmUgkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFAmJVCQDYBAEFAmJSCQACAQIIV3JvbmcgTFAEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJjeAgFAmRyBmNhbGxlcgQCZlMIBQJjSgJfMQQCZlQIBQJjSgJfMgQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmZVAwkAAAIFAmVEBQJiVgkAmQoHCQBlAgUCY2IFAmZTCQBlAgUCY2QFAmZUBQJmUAUCZlQAAAAACQBkAgUCZlMFAmZQAwkAAAIFAmVEBQJiVwkAmQoHCQBlAgUCY2IFAmZTCQBlAgUCY2QFAmZUAAAAAAUCZlAFAmZTCQBkAgUCZlQFAmZQCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZkMIBQJmVQJfMQQCZkQIBQJmVQJfMgQCZkUIBQJmVQJfMwQCZkYIBQJmVQJfNAQCZkcIBQJmVQJfNQQCZkgIBQJmVQJfNgQCZlYIBQJmVQJfNwMDCQBmAgAABQJmRQYJAGYCAAAFAmZHCQACAQIKV3JvbmcgY2FsYwQCYnIJAPwHBAUCZncCBWNhbGNECQDMCAIJAKQDAQUCZkMJAMwIAgkApAMBBQJmRAkAzAgCBQJhQwkAzAgCBQFpCQDMCAIFAWoFA25pbAUDbmlsBAJicQkA/AcEBQJmdwIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFAmZDBQJmRQUCZkgJAMwIAgkApAMBCQBlAgkAZAIFAmZEBQJmRgUCZkcJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCZkkJAQJicAMJAKcDAQkBAmF1AQUCYnEJAKcDAQkBAmF1AQUCYnIFAWgDCQAAAgUCZkkFAmZJBAJlTggJAQJiTQEFAmZWAl8xBAJmVwkBAmJqAwkAtgIBBQJlTgkAtgIBBQJmUgkAtgIBBQJibQMJAAACBQJmVwUCZlcEAmZYAwkAAAIFAmVEBQJiVgkAlAoCCQCgAwEIBQJmVwJfMgAACQCUCgIAAAkAoAMBCAUCZlcCXzIEAmVRCAUCZlgCXzEEAmVSCAUCZlgCXzIEAmVPCQBkAgUCZVEFAmVSBAJiTwkAZQIFAmZWBQJlTgQCZVUDCQAAAgUCZUQCBVdBVkVTBQR1bml0CQDZBAEFAmVEBAJlVgMJAGYCBQJiTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFGBQJiTwUCZVUFA25pbAUDbmlsBAJlUwkBAmJnAgkBAUQCBQJjZAUCYlkJAQFEAgUCY2IFAmJYBAJlVAkBAUcCBQJlUwUBYQQCY24JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmVPBQJlVQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUCYlQFAmJRCQECYmEGBQJlUQUCZVIFAmN4BQJlVAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJlVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlVAUDbmlsAwkAAAIFAmNuBQJjbgQCZVcJAPwHBAUCYUICBGJ1cm4JAMwIAgUCY3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmN4BQNuaWwDCQAAAgUCZVcFAmVXCQDOCAIFAmNuBQJlVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgELZ2V0T25lVGtuVjICAmVEAmVFBAJmWQkBAmVDBgUCZUQFAmVFCAUCZHIIcGF5bWVudHMIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcg10cmFuc2FjdGlvbklkBAJjbggFAmZZAl8xBAJlTwgFAmZZAl8yCQCUCgIFAmNuBQJlTwJkcgETZ2V0T25lVGtuVjJSRUFET05MWQICZUQCZloEAmVrCQECYUcABAJiVgkAkQMCBQJlawUBdAQCYlcJAJEDAgUCZWsFAXUEAmJVCQCRAwIFAmVrBQFzBAJkeQkAzAgCCQC2AgEJAQJiZQEFAmJWCQDMCAIJALYCAQkBAmJlAQUCYlcFA25pbAQCZ2EJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJVAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJicgkBAmR4AQUCZHkEAmJxCQC4AgIFAmJyCQC8AgMJALYCAQUCZloFAmJyBQJnYQQCZ2IDCQAAAgUCZUQFAmJWAAAAAQQCZ2MJAQJkWQMFAmR5BQJnYgUCYnEEAmdkCQC4AgIJAJEDAgUCZHkFAmdiBQJnYwQCZlYJAKADAQkAuAICBQJnZAUBZgQCZ2UJAQJiTQEFAmZWBAJlTggFAmdlAl8xBAJiTwgFAmdlAl8yCQCUCgIFA25pbAkAlAoCBQJlTgUCYk8CZHIBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmVEAmZaBAJlawkBAmFHAAQCYlYJAJEDAgUCZWsFAXQEAmJXCQCRAwIFAmVrBQF1BAJiVQkAkQMCBQJlawUBcwQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmdmCgACZU0JAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJlRAkAzAgCBQJmWgUDbmlsBQNuaWwDCQABAgUCZU0CCihJbnQsIEludCkFAmVNCQACAQkArAICCQADAQUCZU0CHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmVOCAUCZ2YCXzEEAmJPCAUCZ2YCXzIEAmNKCQECYlAEAgAFAmJVBQJmWgUEdGhpcwQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCZ2cJAGQCBQJjbAUCY20EAmVCCQBrAwkAZQIFAmVOBQJnZwUBYQUCZ2cJAJQKAgUDbmlsCQCVCgMFAmVOBQJiTwUCZUICZHIBCWdldE5vTGVzcwICZ2gCZ2kEAmNKCQECZHEBBQJkcgQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCY3gIBQJjSgJfMwQCYlIIBQJjSgJfNAQCY24IBQJjSgJfNQMJAGYCBQJnaAUCY2wJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY2wCAyA8IAkApAMBBQJnaAMJAGYCBQJnaQUCY20JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjbQIDIDwgCQCkAwEFAmdpBAJnagkA/AcEBQJhQgIEYnVybgkAzAgCBQJjeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUgUCY3gFA25pbAMJAAACBQJnagUCZ2oFAmNuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQ11bnN0YWtlQW5kR2V0AQJiTgQCZ2sDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ2sFAmdrBAJiRAkBAmFHAAQCZ2wJAQJhSwAEAmZtCQDZBAEJAJEDAgUCYkQFAXMEAmdtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnbAUBegIKV3Igc3QgYWRkcgQCZ24JAPwHBAUCZ20CB3Vuc3Rha2UJAMwIAgkA2AQBBQJmbQkAzAgCBQJiTgUDbmlsBQNuaWwDCQAAAgUCZ24FAmduBAJjSgkBAmJQBAkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkA2AQBBQJmbQUCYk4IBQJkcgZjYWxsZXIEAmJaCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY24IBQJjSgNfMTAEAmdvAwMJAQJhRAAGCQAAAgUCYloFAXAJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJiWgYDCQAAAgUCZ28FAmdvBAJncAkA/AcEBQJhQgIEYnVybgkAzAgCBQJiTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmbQUCYk4FA25pbAMJAAACBQJncAUCZ3AFAmNuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyARN1bnN0YWtlQW5kR2V0T25lVGtuAwJncQJlRAJlRQQCZ2sDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ2sFAmdrBAJiRAkBAmFHAAQCZ2wJAQJhSwAEAmZtCQDZBAEJAJEDAgUCYkQFAXMEAmdtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnbAUBegIKV3Igc3QgYWRkcgQCZ24JAPwHBAUCZ20CB3Vuc3Rha2UJAMwIAgkA2AQBBQJmbQkAzAgCBQJncQUDbmlsBQNuaWwDCQAAAgUCZ24FAmduBAJncgkBAmVDBgUCZUQFAmVFCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmbQUCZ3EFA25pbAgFAmRyBmNhbGxlcggFAmRyDG9yaWdpbkNhbGxlcggFAmRyDXRyYW5zYWN0aW9uSWQEAmNuCAUCZ3ICXzEEAmVPCAUCZ3ICXzIJAJQKAgUCY24FAmVPCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmegJncwQCZWsJAQJhRwAEAmJWCQCRAwIFAmVrBQF0BAJiVwkAkQMCBQJlawUBdQQCYlUJAJEDAgUCZWsFAXMEAmd0CQECZWkEBQJmegUCZ3MCAAIABAJldwgFAmd0Al8xBAJjbggFAmd0Al8yBAJiTwgFAmd0Al8zBAJlQggFAmd0Al80CQCUCgIFA25pbAkAlQoDBQJldwUCYk8FAmVCAmRyAQhhY3RpdmF0ZQICZ3UCZ3YDCQECIT0CCQClCAEIBQJkcgZjYWxsZXIJAKUIAQUCYUIJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJndQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJndgUDbmlsAgdzdWNjZXNzAmRyAQRzZXRTAgJndwJnbwMJAQIhPQIJAKUIAQgFAmRyBmNhbGxlcgkBAmF4AgUEdGhpcwkBAmFkAAUCZVoJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ3cFAmdvBQNuaWwCZHIBBHNldEkCAmd3AmdvAwkBAiE9AgkApQgBCAUCZHIGY2FsbGVyCQECYXgCBQR0aGlzCQECYWQABQJlWgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ3cFAmdvBQNuaWwCZHIBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFHAAJkcgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYmYJAJQKAgUDbmlsCQECYmUBBQJiZgJkcgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYngCYnkCYkMEAmd4CQECYkIDBQJieAUCYnkFAmJDCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ3gAAAkAzAgCCQCmAwEJAJEDAgUCZ3gAAQkAzAgCCQCmAwEJAJEDAgUCZ3gAAgUDbmlsAmRyARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAmd5CQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAmd5AmRyARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZHIBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYmgCYmkJAJQKAgUDbmlsCQCmAwEJAQJiZwIJAKcDAQUCYmgJAKcDAQUCYmkCZHIBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiUQJibQJjcAJjcQJjcgJjcwJnegJjdAJjdQkAlAoCBQNuaWwJAQJjbw0FAmJRBQJibQUCY3AFAmNxBQJjcgUCY3MFAmd6BQJjdAUCY3UGBwAAAgACZHIBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiUQJnQQJiUwJnegQCY0oJAQJiUAQFAmJRBQJnQQUCYlMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmd6CQCUCgIFA25pbAkAnAoKCAUCY0oCXzEIBQJjSgJfMggFAmNKAl8zCAUCY0oCXzQIBQJjSgJfNQgFAmNKAl82CAUCY0oCXzcJAKYDAQgFAmNKAl84CAUCY0oCXzkIBQJjSgNfMTACZHIBDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFmAQJnQgECZ0MABAJnRAQCYXYJAQJlWAADCQABAgUCYXYCCkJ5dGVWZWN0b3IEAmZiBQJhdgUCZmIDCQABAgUCYXYCBFVuaXQIBQJnQg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXYFAmdCAwkAAQIFAmF2AgVPcmRlcgQCZGUFAmF2BAJnRQkBAmFFAAQCZ0YJAQJkZAEFAmRlBAJnRwkA9AMDCAUCZGUJYm9keUJ5dGVzCQCRAwIIBQJkZQZwcm9vZnMAAAgFAmRlD3NlbmRlclB1YmxpY0tleQQCZ0gJAPQDAwgFAmRlCWJvZHlCeXRlcwkAkQMCCAUCZGUGcHJvb2ZzAAEFAmdFAwMDBQJnRgUCZ0cHBQJnSAcGCQECYXEDBQJnRgUCZ0cFAmdIAwkAAQIFAmF2AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZEUFAmF2BAJnSQkA9gMBCQEFdmFsdWUBCAUCZEUGc2NyaXB0BAJnSgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFCCQECYW8ABAJnSwkA8QcBBQR0aGlzAwMJAAACBQJnSgUCZ0kJAQIhPQIFAmdLBQJnSQcGCQD0AwMIBQJnQglib2R5Qnl0ZXMJAJEDAggFAmdCBnByb29mcwAABQJnRAkA9AMDCAUCZ0IJYm9keUJ5dGVzCQCRAwIIBQJnQgZwcm9vZnMAAAUCZ0TiRXBk", "chainId": 84, "height": 2261643, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gz64QcKwVrRVgTixQCLM99VYeRiAVDayozszDaiZtyQ5 Next: 6y6jQYoGQ1X4kXBpP31S8nbngmt2EP6Tc954naMZqP3D Diff:
OldNewDifferences
607607 let ew = if ((ev > e))
608608 then fraction(ev, (bq - br), br)
609609 else throw("initial deposit requires all coins")
610- let cg = {
611- let cc = D(cb, cD)
612- let ce = D(cd, cE)
613- G(bg(ce, cc), a)
614- }
610+ let cg = G(bg(D(cd, cE), D(cb, cD)), a)
615611 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, Y), aP(eq, er, toInt(ew), cg, 0, 0, height, lastBlock.timestamp, 0, 0))]
616612 let ex = fraction(eo, a, en)
617613 let ey = fraction(cx, a, (ex + a))
11631159
11641160
11651161 @Callable(dr)
1166-func getOneTknV2OldREADONLY (eD,fZ) = {
1167- let ek = aG()
1168- let bU = ek[s]
1169- let bV = ek[t]
1170- let bW = ek[u]
1171- let cJ = bP("", bU, fZ, this)
1172- let fS = cJ._1
1173- let fT = cJ._2
1174- let cb = be(bV)
1175- let cd = be(bW)
1176- let fC = (cb - fS)
1177- let fD = (cd - fT)
1178- let ga = if ((eD == bV))
1179- then $Tuple4(fD, fC, fT, fS)
1180- else if ((eD == bW))
1181- then $Tuple4(fC, fD, fS, fT)
1182- else throw("wrong outAssetId")
1183- let gb = ga._1
1184- let gc = ga._2
1185- let gd = ga._3
1186- let ge = ga._4
1187- let gf = 1
1188- let fP = {
1189- let eM = invoke(aO, "calcSwapXToY", [toString(gd), toString(gb), toString(gc), "", aC, i, toString(gf), j], nil)
1190- if ($isInstanceOf(eM, "Int"))
1191- then eM
1192- else throw(($getType(eM) + " couldn't be cast to Int"))
1193- }
1194- let fV = (fP + ge)
1195- let gg = bM(fV)
1196- let eN = gg._1
1197- let bO = gg._2
1198- $Tuple2(nil, $Tuple2(eN, bO))
1199- }
1200-
1201-
1202-
1203-@Callable(dr)
12041162 func getOneTknV2READONLY (eD,fZ) = {
12051163 let ek = aG()
12061164 let bV = ek[t]
12071165 let bW = ek[u]
12081166 let bU = ek[s]
12091167 let dy = [toBigInt(be(bV)), toBigInt(be(bW))]
1210- let gh = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1168+ let ga = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
12111169 let br = dx(dy)
1212- let bq = (br - fraction(toBigInt(fZ), br, gh))
1213- let gi = if ((eD == bV))
1170+ let bq = (br - fraction(toBigInt(fZ), br, ga))
1171+ let gb = if ((eD == bV))
12141172 then 0
12151173 else 1
1216- let gj = dY(dy, gi, bq)
1217- let gk = (dy[gi] - gj)
1218- let fV = toInt((gk - f))
1219- let gl = bM(fV)
1220- let eN = gl._1
1221- let bO = gl._2
1174+ let gc = dY(dy, gb, bq)
1175+ let gd = (dy[gb] - gc)
1176+ let fV = toInt((gd - f))
1177+ let ge = bM(fV)
1178+ let eN = ge._1
1179+ let bO = ge._2
12221180 $Tuple2(nil, $Tuple2(eN, bO))
12231181 }
12241182
12321190 let bU = ek[s]
12331191 let cb = be(bV)
12341192 let cd = be(bW)
1235- let gm = {
1193+ let gf = {
12361194 let eM = invoke(this, "getOneTknV2READONLY", [eD, fZ], nil)
12371195 if ($isInstanceOf(eM, "(Int, Int)"))
12381196 then eM
12391197 else throw(($getType(eM) + " couldn't be cast to (Int, Int)"))
12401198 }
1241- let eN = gm._1
1242- let bO = gm._2
1199+ let eN = gf._1
1200+ let bO = gf._2
12431201 let cJ = bP("", bU, fZ, this)
12441202 let cl = cJ._1
12451203 let cm = cJ._2
1246- let gn = (cl + cm)
1247- let eB = fraction((eN - gn), a, gn)
1204+ let gg = (cl + cm)
1205+ let eB = fraction((eN - gg), a, gg)
12481206 $Tuple2(nil, $Tuple3(eN, bO, eB))
12491207 }
12501208
12511209
12521210
12531211 @Callable(dr)
1254-func getNoLess (go,gp) = {
1212+func getNoLess (gh,gi) = {
12551213 let cJ = dq(dr)
12561214 let cl = cJ._1
12571215 let cm = cJ._2
12581216 let cx = cJ._3
12591217 let bR = cJ._4
12601218 let cn = cJ._5
1261- if ((go > cl))
1262- then throw(((("Failed: " + toString(cl)) + " < ") + toString(go)))
1263- else if ((gp > cm))
1264- then throw(((("Failed: " + toString(cm)) + " < ") + toString(gp)))
1219+ if ((gh > cl))
1220+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(gh)))
1221+ else if ((gi > cm))
1222+ then throw(((("Failed: " + toString(cm)) + " < ") + toString(gi)))
12651223 else {
1266- let gq = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1267- if ((gq == gq))
1224+ let gj = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1225+ if ((gj == gj))
12681226 then cn
12691227 else throw("Strict value is not equal to itself.")
12701228 }
12741232
12751233 @Callable(dr)
12761234 func unstakeAndGet (bN) = {
1277- let gr = if ((size(dr.payments) != 0))
1235+ let gk = if ((size(dr.payments) != 0))
12781236 then throw("No pmnts expd")
12791237 else true
1280- if ((gr == gr))
1238+ if ((gk == gk))
12811239 then {
12821240 let bD = aG()
1283- let gs = aK()
1241+ let gl = aK()
12841242 let fm = fromBase58String(bD[s])
1285- let gt = valueOrErrorMessage(addressFromString(gs[z]), "Wr st addr")
1286- let gu = invoke(gt, "unstake", [toBase58String(fm), bN], nil)
1287- if ((gu == gu))
1243+ let gm = valueOrErrorMessage(addressFromString(gl[z]), "Wr st addr")
1244+ let gn = invoke(gm, "unstake", [toBase58String(fm), bN], nil)
1245+ if ((gn == gn))
12881246 then {
12891247 let cJ = bP(toBase58String(dr.transactionId), toBase58String(fm), bN, dr.caller)
12901248 let bZ = parseIntValue(cJ._9)
12911249 let cn = cJ._10
1292- let gv = if (if (aD())
1250+ let go = if (if (aD())
12931251 then true
12941252 else (bZ == p))
12951253 then throw(("Blocked: " + toString(bZ)))
12961254 else true
1297- if ((gv == gv))
1255+ if ((go == go))
12981256 then {
1299- let gw = invoke(aB, "burn", [bN], [AttachedPayment(fm, bN)])
1300- if ((gw == gw))
1257+ let gp = invoke(aB, "burn", [bN], [AttachedPayment(fm, bN)])
1258+ if ((gp == gp))
13011259 then cn
13021260 else throw("Strict value is not equal to itself.")
13031261 }
13111269
13121270
13131271 @Callable(dr)
1314-func unstakeAndGetOneTkn (gx,eD,eE) = {
1315- let gr = if ((size(dr.payments) != 0))
1272+func unstakeAndGetOneTkn (gq,eD,eE) = {
1273+ let gk = if ((size(dr.payments) != 0))
13161274 then throw("No pmnts expd")
13171275 else true
1318- if ((gr == gr))
1276+ if ((gk == gk))
13191277 then {
13201278 let bD = aG()
1321- let gs = aK()
1279+ let gl = aK()
13221280 let fm = fromBase58String(bD[s])
1323- let gt = valueOrErrorMessage(addressFromString(gs[z]), "Wr st addr")
1324- let gu = invoke(gt, "unstake", [toBase58String(fm), gx], nil)
1325- if ((gu == gu))
1281+ let gm = valueOrErrorMessage(addressFromString(gl[z]), "Wr st addr")
1282+ let gn = invoke(gm, "unstake", [toBase58String(fm), gq], nil)
1283+ if ((gn == gn))
13261284 then {
1327- let gy = eC(eD, eE, [AttachedPayment(fm, gx)], dr.caller, dr.originCaller, dr.transactionId)
1328- let cn = gy._1
1329- let eO = gy._2
1285+ let gr = eC(eD, eE, [AttachedPayment(fm, gq)], dr.caller, dr.originCaller, dr.transactionId)
1286+ let cn = gr._1
1287+ let eO = gr._2
13301288 $Tuple2(cn, eO)
13311289 }
13321290 else throw("Strict value is not equal to itself.")
13371295
13381296
13391297 @Callable(dr)
1340-func putOneTknV2WithBonusREADONLY (fz,gz) = {
1298+func putOneTknV2WithBonusREADONLY (fz,gs) = {
13411299 let ek = aG()
13421300 let bV = ek[t]
13431301 let bW = ek[u]
13441302 let bU = ek[s]
1345- let gA = ei(fz, gz, "", "")
1346- let ew = gA._1
1347- let cn = gA._2
1348- let bO = gA._3
1349- let eB = gA._4
1303+ let gt = ei(fz, gs, "", "")
1304+ let ew = gt._1
1305+ let cn = gt._2
1306+ let bO = gt._3
1307+ let eB = gt._4
13501308 $Tuple2(nil, $Tuple3(ew, bO, eB))
13511309 }
13521310
13531311
13541312
13551313 @Callable(dr)
1356-func activate (gB,gC) = if ((toString(dr.caller) != toString(aB)))
1314+func activate (gu,gv) = if ((toString(dr.caller) != toString(aB)))
13571315 then throw("denied")
1358- else $Tuple2([StringEntry(aa(), gB), StringEntry(ab(), gC)], "success")
1316+ else $Tuple2([StringEntry(aa(), gu), StringEntry(ab(), gv)], "success")
13591317
13601318
13611319
13621320 @Callable(dr)
1363-func setS (gD,gv) = if ((toString(dr.caller) != ax(this, ad())))
1321+func setS (gw,go) = if ((toString(dr.caller) != ax(this, ad())))
13641322 then eZ
1365- else [StringEntry(gD, gv)]
1323+ else [StringEntry(gw, go)]
13661324
13671325
13681326
13691327 @Callable(dr)
1370-func setI (gD,gv) = if ((toString(dr.caller) != ax(this, ad())))
1328+func setI (gw,go) = if ((toString(dr.caller) != ax(this, ad())))
13711329 then eZ
1372- else [IntegerEntry(gD, gv)]
1330+ else [IntegerEntry(gw, go)]
13731331
13741332
13751333
13851343
13861344 @Callable(dr)
13871345 func calcPricesWrapperREADONLY (bx,by,bC) = {
1388- let gE = bB(bx, by, bC)
1389- $Tuple2(nil, [toString(gE[0]), toString(gE[1]), toString(gE[2])])
1346+ let gx = bB(bx, by, bC)
1347+ $Tuple2(nil, [toString(gx[0]), toString(gx[1]), toString(gx[2])])
13901348 }
13911349
13921350
13931351
13941352 @Callable(dr)
1395-func fromX18WrapperREADONLY (H,gF) = $Tuple2(nil, G(parseBigIntValue(H), gF))
1353+func fromX18WrapperREADONLY (H,gy) = $Tuple2(nil, G(parseBigIntValue(H), gy))
13961354
13971355
13981356
14071365
14081366
14091367 @Callable(dr)
1410-func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gG,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gG, ct, cu, true, false, 0, ""))
1368+func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gz,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gz, ct, cu, true, false, 0, ""))
14111369
14121370
14131371
14141372 @Callable(dr)
1415-func estimateGetOperationWrapperREADONLY (bQ,gH,bS,gG) = {
1416- let cJ = bP(bQ, gH, bS, addressFromStringValue(gG))
1373+func estimateGetOperationWrapperREADONLY (bQ,gA,bS,gz) = {
1374+ let cJ = bP(bQ, gA, bS, addressFromStringValue(gz))
14171375 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
14181376 }
14191377
14231381 func getFeeREADONLY () = $Tuple2(nil, af)
14241382
14251383
1426-@Verifier(gI)
1427-func gJ () = {
1428- let gK = {
1384+@Verifier(gB)
1385+func gC () = {
1386+ let gD = {
14291387 let av = eX()
14301388 if ($isInstanceOf(av, "ByteVector"))
14311389 then {
14331391 fb
14341392 }
14351393 else if ($isInstanceOf(av, "Unit"))
1436- then gI.senderPublicKey
1394+ then gB.senderPublicKey
14371395 else throw("Match error")
14381396 }
1439- let av = gI
1397+ let av = gB
14401398 if ($isInstanceOf(av, "Order"))
14411399 then {
14421400 let de = av
1443- let gL = aE()
1444- let gM = dd(de)
1445- let gN = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1446- let gO = sigVerify(de.bodyBytes, de.proofs[1], gL)
1447- if (if (if (gM)
1448- then gN
1401+ let gE = aE()
1402+ let gF = dd(de)
1403+ let gG = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1404+ let gH = sigVerify(de.bodyBytes, de.proofs[1], gE)
1405+ if (if (if (gF)
1406+ then gG
14491407 else false)
1450- then gO
1408+ then gH
14511409 else false)
14521410 then true
1453- else aq(gM, gN, gO)
1411+ else aq(gF, gG, gH)
14541412 }
14551413 else if ($isInstanceOf(av, "SetScriptTransaction"))
14561414 then {
14571415 let dE = av
1458- let gP = blake2b256(value(dE.script))
1459- let gQ = fromBase64String(value(getString(aB, ao())))
1460- let gR = scriptHash(this)
1461- if (if ((gQ == gP))
1462- then (gR != gP)
1416+ let gI = blake2b256(value(dE.script))
1417+ let gJ = fromBase64String(value(getString(aB, ao())))
1418+ let gK = scriptHash(this)
1419+ if (if ((gJ == gI))
1420+ then (gK != gI)
14631421 else false)
14641422 then true
1465- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1423+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14661424 }
1467- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1425+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14681426 }
14691427
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "100"
2121
2222 let j = "1"
2323
2424 let k = "__"
2525
2626 let l = ""
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 5
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 8
5151
5252 let y = 9
5353
5454 let z = 1
5555
5656 let A = 7
5757
5858 let B = 10
5959
6060 let C = fraction(5, a, 10000)
6161
6262 func D (E,F) = fraction(toBigInt(E), c, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), c))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((d > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((d > 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)], k)
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 func ac () = "%s__amp"
109109
110110
111111 func ad () = "%s__addonAddr"
112112
113113
114114 let ae = "%s__fee"
115115
116116 let af = valueOrElse(getInteger(this, ae), C)
117117
118118 func ag () = "%s__factoryConfig"
119119
120120
121121 func ah () = "%s%s__matcher__publicKey"
122122
123123
124124 func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
125125
126126
127127 func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
128128
129129
130130 func an () = "%s__shutdown"
131131
132132
133133 func ao () = "%s__allowedLpStableScriptHash"
134134
135135
136136 func ap () = "%s__feeCollectorAddress"
137137
138138
139139 func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
140140
141141
142142 func au (H) = {
143143 let av = H
144144 if ($isInstanceOf(av, "String"))
145145 then {
146146 let aw = av
147147 aw
148148 }
149149 else throw("fail cast to String")
150150 }
151151
152152
153153 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
154154
155155
156156 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
157157
158158
159159 let aB = addressFromStringValue(ax(this, P()))
160160
161161 let aC = ax(this, ac())
162162
163163 func aD () = valueOrElse(getBoolean(aB, an()), false)
164164
165165
166166 func aE () = fromBase58String(ax(aB, ah()))
167167
168168
169169 let aF = addressFromStringValue(ax(aB, ap()))
170170
171171 func aG () = {
172172 let aH = ax(this, aa())
173173 let aI = ax(this, ab())
174174 let aJ = aA(aB, al(aI))
175175 let aj = aA(aB, al(aH))
176176 split(ax(aB, ai(toString(aj), toString(aJ))), k)
177177 }
178178
179179
180180 func aK () = split(ax(aB, ag()), k)
181181
182182
183183 let aL = aK()
184184
185185 let aM = valueOrErrorMessage(addressFromString(aL[z]), "Invalid staking contract address")
186186
187187 let aN = valueOrErrorMessage(addressFromString(aL[A]), "Invalid slipage contract address")
188188
189189 let aO = valueOrErrorMessage(addressFromString(aL[B]), "Invalid gwx contract address")
190190
191191 func aP (aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ)], k)
192192
193193
194194 func ba (bb,bc,bd,aT,aW,aX) = makeString(["%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(aT), toString(aW), toString(aX)], k)
195195
196196
197197 func be (bf) = if ((bf == "WAVES"))
198198 then wavesBalance(this).available
199199 else assetBalance(this, fromBase58String(bf))
200200
201201
202202 func bg (bh,bi) = fraction(bh, c, bi)
203203
204204
205205 func bj (bk,bl,bm) = {
206206 let bn = fraction((bk - bl), b, bl)
207207 let bo = ((bm - N(bn)) > d)
208208 if (!(bo))
209209 then throw(("Big slpg: " + toString(bn)))
210210 else $Tuple2(bo, min([bk, bl]))
211211 }
212212
213213
214214 func bp (bq,br,bs) = {
215215 let bn = fraction(br, b, bq)
216216 let bt = (bs > bn)
217217 if (if (bt)
218218 then true
219219 else (br > bq))
220220 then throw(((((((toString(br) + " ") + toString(bq)) + " ") + toString(bn)) + " ") + toString(bs)))
221221 else bt
222222 }
223223
224224
225225 func bu (bv,bw,bx,by) = {
226226 let bz = D(bx, bv)
227227 let bA = D(by, bw)
228228 bg(bA, bz)
229229 }
230230
231231
232232 func bB (bx,by,bC) = {
233233 let bD = aG()
234234 let bE = parseIntValue(bD[v])
235235 let bF = parseIntValue(bD[w])
236236 let bG = bu(bE, bF, bx, by)
237237 let bi = D(bx, bE)
238238 let bh = D(by, bF)
239239 let bH = D(bC, a)
240240 let bI = bg(bi, bH)
241241 let bJ = bg(bh, bH)
242242 [bG, bI, bJ]
243243 }
244244
245245
246246 func bK (bx,by,bC) = {
247247 let bL = bB(bx, by, bC)
248248 [G(bL[0], a), G(bL[1], a), G(bL[2], a)]
249249 }
250250
251251
252252 func bM (bN) = {
253253 let bO = fraction(bN, af, a)
254254 $Tuple2((bN - bO), bO)
255255 }
256256
257257
258258 func bP (bQ,bR,bS,bT) = {
259259 let bD = aG()
260260 let bU = bD[s]
261261 let bV = bD[t]
262262 let bW = bD[u]
263263 let bX = parseIntValue(bD[v])
264264 let bY = parseIntValue(bD[w])
265265 let bZ = bD[r]
266266 let ca = valueOrErrorMessage(assetInfo(fromBase58String(bU)), "Wrong LP id").quantity
267267 if ((bU != bR))
268268 then throw("Wrong pmt asset")
269269 else {
270270 let cb = be(bV)
271271 let cc = D(cb, bX)
272272 let cd = be(bW)
273273 let ce = D(cd, bY)
274274 let cf = bg(ce, cc)
275275 let cg = G(cf, a)
276276 let ch = D(bS, a)
277277 let ci = D(ca, a)
278278 let cj = fraction(cc, ch, ci)
279279 let ck = fraction(ce, ch, ci)
280280 let cl = G(cj, bX)
281281 let cm = G(ck, bY)
282282 let cn = if ((bQ == ""))
283283 then nil
284284 else [ScriptTransfer(bT, cl, if ((bV == "WAVES"))
285285 then unit
286286 else fromBase58String(bV)), ScriptTransfer(bT, cm, if ((bW == "WAVES"))
287287 then unit
288288 else fromBase58String(bW)), StringEntry(Z(toString(bT), bQ), ba(cl, cm, bS, cg, height, lastBlock.timestamp)), IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg)]
289289 $Tuple10(cl, cm, bV, bW, cb, cd, ca, cf, bZ, cn)
290290 }
291291 }
292292
293293
294294 func co (bQ,bm,cp,cq,cr,cs,bT,ct,cu,cv,cw,cx,cy) = {
295295 let bD = aG()
296296 let bU = fromBase58String(bD[s])
297297 let cz = bD[t]
298298 let cA = bD[u]
299299 let cB = bD[x]
300300 let cC = bD[y]
301301 let cD = parseIntValue(bD[v])
302302 let cE = parseIntValue(bD[w])
303303 let bZ = bD[r]
304304 let cF = valueOrErrorMessage(assetInfo(bU), "Wr lp as").quantity
305305 let cb = if (ct)
306306 then be(cz)
307307 else if (if (cv)
308308 then (cy == cz)
309309 else false)
310310 then (be(cz) - cx)
311311 else if (cv)
312312 then be(cz)
313313 else (be(cz) - cp)
314314 let cd = if (ct)
315315 then be(cA)
316316 else if (if (cv)
317317 then (cy == cA)
318318 else false)
319319 then (be(cA) - cx)
320320 else if (cv)
321321 then be(cA)
322322 else (be(cA) - cr)
323323 let cG = D(cp, cD)
324324 let cH = D(cr, cE)
325325 let cI = bg(cH, cG)
326326 let cc = D(cb, cD)
327327 let ce = D(cd, cE)
328328 let cJ = if ((cF == 0))
329329 then {
330330 let cf = d
331331 let cK = d
332332 let bH = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bH, a), G(cG, cD), G(cH, cE), bg((ce + cH), (cc + cG)), cK)
334334 }
335335 else {
336336 let cf = bg(ce, cc)
337337 let cL = fraction(N((cf - cI)), c, cf)
338338 let cK = D(bm, a)
339339 if (if (if (cw)
340340 then (cf != d)
341341 else false)
342342 then (cL > cK)
343343 else false)
344344 then throw(((("Price slippage " + toString(cL)) + " > ") + toString(cK)))
345345 else {
346346 let cM = D(cF, a)
347347 let cN = fraction(cG, cf, c)
348348 let cO = fraction(cH, c, cf)
349349 let cP = if ((cN > cH))
350350 then $Tuple2(cO, cH)
351351 else $Tuple2(cG, cN)
352352 let cQ = cP._1
353353 let cR = cP._2
354354 let bH = fraction(cM, cR, ce)
355355 $Tuple5(G(bH, a), G(cQ, cD), G(cR, cE), cf, cK)
356356 }
357357 }
358358 let cS = cJ._1
359359 let cT = cJ._2
360360 let cU = cJ._3
361361 let cg = G(cJ._4, a)
362362 let cV = G(cJ._5, a)
363363 if ((0 >= cS))
364364 then throw("LP <= 0")
365365 else {
366366 let cW = if (!(cu))
367367 then 0
368368 else cS
369369 let cX = (cp - cT)
370370 let cY = (cr - cU)
371371 let cZ = if (if (cv)
372372 then (cy == cz)
373373 else false)
374374 then $Tuple2(cx, 0)
375375 else if (if (cv)
376376 then (cy == cA)
377377 else false)
378378 then $Tuple2(0, cx)
379379 else $Tuple2(cT, cU)
380380 let da = cZ._1
381381 let db = cZ._2
382382 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, bQ), aP(da, db, cW, cg, bm, cV, height, lastBlock.timestamp, cX, cY))]
383383 $Tuple13(cS, cW, cg, cb, cd, cF, bU, bZ, dc, cX, cY, cq, cs)
384384 }
385385 }
386386
387387
388388 func dd (de) = {
389389 let bD = aG()
390390 let df = bD[t]
391391 let dg = bD[u]
392392 let bZ = parseIntValue(bD[r])
393393 let bE = parseIntValue(bD[v])
394394 let bF = parseIntValue(bD[w])
395395 let dh = be(df)
396396 let di = be(dg)
397397 let cf = if ((de.orderType == Buy))
398398 then bu(bE, bF, (dh + de.amount), di)
399399 else bu(bE, bF, (dh - de.amount), di)
400400 let cg = G(cf, a)
401401 if (if (if (aD())
402402 then true
403403 else (bZ == o))
404404 then true
405405 else (bZ == p))
406406 then throw("Admin blocked")
407407 else {
408408 let dj = de.assetPair.amountAsset
409409 let dk = if ((dj == unit))
410410 then "WAVES"
411411 else toBase58String(value(dj))
412412 let dl = de.assetPair.priceAsset
413413 let dm = if ((dl == unit))
414414 then "WAVES"
415415 else toBase58String(value(dl))
416416 if (if ((dk != df))
417417 then true
418418 else (dm != dg))
419419 then throw("Wr assets")
420420 else {
421421 let dn = de.price
422422 let cE = fraction(a, bF, bE)
423423 let do = J(dn, a, cE)
424424 let dp = if ((de.orderType == Buy))
425425 then (cg >= do)
426426 else (do >= cg)
427427 true
428428 }
429429 }
430430 }
431431
432432
433433 func dq (dr) = if ((size(dr.payments) != 1))
434434 then throw("1 pmnt exp")
435435 else {
436436 let ds = value(dr.payments[0])
437437 let bR = value(ds.assetId)
438438 let cx = ds.amount
439439 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
440440 let cl = cJ._1
441441 let cm = cJ._2
442442 let bZ = parseIntValue(cJ._9)
443443 let cn = cJ._10
444444 if (if (aD())
445445 then true
446446 else (bZ == p))
447447 then throw(("Admin blocked: " + toString(bZ)))
448448 else $Tuple5(cl, cm, cx, bR, cn)
449449 }
450450
451451
452452 func dt (du,Y,dv,dw,bm,cu,cv,cw,cx,cy) = {
453453 let cJ = co(Y, bm, value(dv).amount, value(dv).assetId, value(dw).amount, value(dw).assetId, du, (Y == ""), cu, cv, cw, cx, cy)
454454 let bZ = parseIntValue(cJ._8)
455455 if (if (if (aD())
456456 then true
457457 else (bZ == n))
458458 then true
459459 else (bZ == p))
460460 then throw(("Blocked:" + toString(bZ)))
461461 else cJ
462462 }
463463
464464
465465 func dx (dy) = {
466466 let dz = g
467467 let dA = dy[0]
468468 let dB = dy[1]
469469 let dC = parseBigIntValue(i)
470470 let dD = (parseBigIntValue(aC) * dC)
471471 let dE = (dA + dB)
472472 if ((dE == e))
473473 then e
474474 else {
475475 let dF = (dD * dz)
476476 func dG (dH,dI) = {
477477 let dJ = dH
478478 let dK = dJ._1
479479 let dL = dJ._2
480480 if ((dL != unit))
481481 then dH
482482 else {
483483 let dM = (((dK * dK) * dK) / (((dA * dB) * dz) * dz))
484484 let dN = (((((dF * dE) / dC) + (dM * dz)) * dK) / ((((dF - dC) * dK) / dC) + ((dz + f) * dM)))
485485 let dO = O((dN - value(dK)))
486486 if ((f >= dO))
487487 then $Tuple2(dN, dI)
488488 else $Tuple2(dN, unit)
489489 }
490490 }
491491
492492 let dP = [0, 1, 2, 3, 4, 5, 6]
493493 let dQ = {
494494 let dR = dP
495495 let dS = size(dR)
496496 let dT = $Tuple2(dE, unit)
497497 func dU (dV,dW) = if ((dW >= dS))
498498 then dV
499499 else dG(dV, dR[dW])
500500
501501 func dX (dV,dW) = if ((dW >= dS))
502502 then dV
503503 else throw("List size exceeds 7")
504504
505505 dX(dU(dU(dU(dU(dU(dU(dU(dT, 0), 1), 2), 3), 4), 5), 6), 7)
506506 }
507507 let dK = dQ._1
508508 let dL = dQ._2
509509 if ((dL != unit))
510510 then dK
511511 else throw(("D calculation error, D = " + toString(dK)))
512512 }
513513 }
514514
515515
516516 func dY (dy,dr,dZ) = {
517517 let dz = g
518518 let ea = dy[if ((dr == 0))
519519 then 1
520520 else 0]
521521 let dC = parseBigIntValue(i)
522522 let dD = (parseBigIntValue(aC) * dC)
523523 let dE = ea
524524 let dF = (dD * dz)
525525 let eb = (((((dZ * dZ) / (ea * dz)) * dZ) * dC) / (dF * dz))
526526 let ec = ((dE + ((dZ * dC) / dF)) - dZ)
527527 func dG (dH,dI) = {
528528 let ed = dH
529529 let ee = ed._1
530530 let dL = ed._2
531531 if ((dL != unit))
532532 then dH
533533 else {
534534 let ef = (((ee * ee) + eb) / ((g * ee) + ec))
535535 let eg = O((ef - value(ee)))
536536 if ((f >= eg))
537537 then $Tuple2(ef, dI)
538538 else $Tuple2(ef, unit)
539539 }
540540 }
541541
542542 let dP = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
543543 let eh = {
544544 let dR = dP
545545 let dS = size(dR)
546546 let dT = $Tuple2(dZ, unit)
547547 func dU (dV,dW) = if ((dW >= dS))
548548 then dV
549549 else dG(dV, dR[dW])
550550
551551 func dX (dV,dW) = if ((dW >= dS))
552552 then dV
553553 else throw("List size exceeds 15")
554554
555555 dX(dU(dU(dU(dU(dU(dU(dU(dU(dU(dU(dU(dU(dU(dU(dU(dT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
556556 }
557557 let ee = eh._1
558558 let dL = eh._2
559559 if ((dL != unit))
560560 then ee
561561 else throw(("Y calculation error, Y = " + toString(ee)))
562562 }
563563
564564
565565 func ei (ej,bR,bT,Y) = {
566566 let ek = aG()
567567 let bV = ek[t]
568568 let bW = ek[u]
569569 let bU = ek[s]
570570 let cD = parseIntValue(ek[v])
571571 let cE = parseIntValue(ek[w])
572572 let cb = be(bV)
573573 let cd = be(bW)
574574 let el = bM(ej)
575575 let cx = el._1
576576 let bO = el._2
577577 let em = if ((Y == ""))
578578 then $Tuple2(cb, cd)
579579 else if ((bR == bV))
580580 then if ((ej > cb))
581581 then throw("invalid payment amount")
582582 else $Tuple2((cb - ej), cd)
583583 else if ((bR == bW))
584584 then if ((ej > cd))
585585 then throw("invalid payment amount")
586586 else $Tuple2(cb, (cd - ej))
587587 else throw("wrong pmtAssetId")
588588 let en = em._1
589589 let eo = em._2
590590 let ep = if ((bR == bV))
591591 then $Tuple2(cx, 0)
592592 else if ((bR == bW))
593593 then $Tuple2(0, cx)
594594 else throw("invalid payment")
595595 let eq = ep._1
596596 let er = ep._2
597597 let es = (en + eq)
598598 let et = (eo + er)
599599 let br = dx([toBigInt(en), toBigInt(eo)])
600600 let bq = dx([toBigInt(es), toBigInt(et)])
601601 let eu = if ((bq > br))
602602 then true
603603 else throw()
604604 if ((eu == eu))
605605 then {
606606 let ev = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
607607 let ew = if ((ev > e))
608608 then fraction(ev, (bq - br), br)
609609 else throw("initial deposit requires all coins")
610- let cg = {
611- let cc = D(cb, cD)
612- let ce = D(cd, cE)
613- G(bg(ce, cc), a)
614- }
610+ let cg = G(bg(D(cd, cE), D(cb, cD)), a)
615611 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, Y), aP(eq, er, toInt(ew), cg, 0, 0, height, lastBlock.timestamp, 0, 0))]
616612 let ex = fraction(eo, a, en)
617613 let ey = fraction(cx, a, (ex + a))
618614 let ez = (cx - ey)
619615 let eA = fraction(ev, toBigInt(ez), toBigInt(eo))
620616 let eB = toInt(fraction((ew - eA), b, eA))
621617 $Tuple4(toInt(ew), dc, bO, eB)
622618 }
623619 else throw("Strict value is not equal to itself.")
624620 }
625621
626622
627623 func eC (eD,eE,eF,du,eG,eH) = if ((size(eF) != 1))
628624 then throw("1 pmnt expd")
629625 else {
630626 let ek = aG()
631627 let bU = ek[s]
632628 let bV = ek[t]
633629 let bW = ek[u]
634630 let eI = parseIntValue(ek[v])
635631 let eJ = parseIntValue(ek[w])
636632 let eK = ek[r]
637633 let bT = if ((du == this))
638634 then eG
639635 else du
640636 let ds = value(eF[0])
641637 let bR = value(ds.assetId)
642638 let cx = ds.amount
643639 if ((1000000000 > cx))
644640 then throw("Min pmt 10 LP")
645641 else {
646642 let bQ = toBase58String(eH)
647643 if ((bU != toBase58String(bR)))
648644 then throw("Wrong LP")
649645 else {
650646 let cb = be(bV)
651647 let cd = be(bW)
652648 let eL = {
653649 let eM = invoke(this, "getOneTknV2READONLY", [eD, cx], nil)
654650 if ($isInstanceOf(eM, "(Int, Int)"))
655651 then eM
656652 else throw(($getType(eM) + " couldn't be cast to (Int, Int)"))
657653 }
658654 let eN = eL._1
659655 let bO = eL._2
660656 let eO = if (if ((eE > 0))
661657 then (eE > eN)
662658 else false)
663659 then throw(makeString(["amount to receive is less than ", toString(eE)], ""))
664660 else eN
665661 let eP = if ((eD == bV))
666662 then $Tuple2(eO, 0)
667663 else $Tuple2(0, eO)
668664 let eQ = eP._1
669665 let eR = eP._2
670666 let eS = bg(D(cd, eJ), D(cb, eI))
671667 let eT = G(eS, a)
672668 let eU = if ((eD == "WAVES"))
673669 then unit
674670 else fromBase58String(eD)
675671 let eV = if ((bO > 0))
676672 then [ScriptTransfer(aF, bO, eU)]
677673 else nil
678674 let cn = ([ScriptTransfer(bT, eO, eU), StringEntry(Z(toString(bT), bQ), ba(eQ, eR, cx, eT, height, lastBlock.timestamp)), IntegerEntry(S(), eT), IntegerEntry(T(height, lastBlock.timestamp), eT)] ++ eV)
679675 if ((cn == cn))
680676 then {
681677 let eW = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
682678 if ((eW == eW))
683679 then $Tuple2(cn, eO)
684680 else throw("Strict value is not equal to itself.")
685681 }
686682 else throw("Strict value is not equal to itself.")
687683 }
688684 }
689685 }
690686
691687
692688 func eX () = {
693689 let av = getString(Q())
694690 if ($isInstanceOf(av, "String"))
695691 then {
696692 let dE = av
697693 fromBase58String(dE)
698694 }
699695 else if ($isInstanceOf(av, "Unit"))
700696 then unit
701697 else throw("Match error")
702698 }
703699
704700
705701 func eY () = {
706702 let av = getString(R())
707703 if ($isInstanceOf(av, "String"))
708704 then {
709705 let dE = av
710706 fromBase58String(dE)
711707 }
712708 else if ($isInstanceOf(av, "Unit"))
713709 then unit
714710 else throw("Match error")
715711 }
716712
717713
718714 let eZ = throw("Permission denied")
719715
720716 func fa (dr) = {
721717 let av = eX()
722718 if ($isInstanceOf(av, "ByteVector"))
723719 then {
724720 let fb = av
725721 if ((dr.callerPublicKey == fb))
726722 then true
727723 else eZ
728724 }
729725 else if ($isInstanceOf(av, "Unit"))
730726 then if ((dr.caller == this))
731727 then true
732728 else eZ
733729 else throw("Match error")
734730 }
735731
736732
737733 @Callable(dr)
738734 func constructor (P) = {
739735 let eb = fa(dr)
740736 if ((eb == eb))
741737 then [StringEntry(P(), P)]
742738 else throw("Strict value is not equal to itself.")
743739 }
744740
745741
746742
747743 @Callable(dr)
748744 func setManager (fc) = {
749745 let eb = fa(dr)
750746 if ((eb == eb))
751747 then {
752748 let fd = fromBase58String(fc)
753749 if ((fd == fd))
754750 then [StringEntry(R(), fc)]
755751 else throw("Strict value is not equal to itself.")
756752 }
757753 else throw("Strict value is not equal to itself.")
758754 }
759755
760756
761757
762758 @Callable(dr)
763759 func confirmManager () = {
764760 let bL = eY()
765761 let fe = if (isDefined(bL))
766762 then true
767763 else throw("No pending manager")
768764 if ((fe == fe))
769765 then {
770766 let ff = if ((dr.callerPublicKey == value(bL)))
771767 then true
772768 else throw("You are not pending manager")
773769 if ((ff == ff))
774770 then [StringEntry(Q(), toBase58String(value(bL))), DeleteEntry(R())]
775771 else throw("Strict value is not equal to itself.")
776772 }
777773 else throw("Strict value is not equal to itself.")
778774 }
779775
780776
781777
782778 @Callable(dr)
783779 func put (fg,fh) = {
784780 let fi = aK()
785781 let fj = valueOrErrorMessage(addressFromString(fi[z]), "Wr st addr")
786782 let fk = valueOrErrorMessage(addressFromString(fi[A]), "Wr sl addr")
787783 if ((0 > fg))
788784 then throw("Wrong slippage")
789785 else if ((size(dr.payments) != 2))
790786 then throw("2 pmnts expd")
791787 else {
792788 let fl = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fg, true, false, true, 0, "")
793789 let cW = fl._2
794790 let fm = fl._7
795791 let cn = fl._9
796792 let cX = fl._10
797793 let cY = fl._11
798794 let bV = fl._12
799795 let bW = fl._13
800796 let cJ = invoke(aB, "emit", [cW], nil)
801797 if ((cJ == cJ))
802798 then {
803799 let fn = {
804800 let av = cJ
805801 if ($isInstanceOf(av, "Address"))
806802 then {
807803 let fo = av
808804 invoke(fo, "emit", [cW], nil)
809805 }
810806 else unit
811807 }
812808 if ((fn == fn))
813809 then {
814810 let fp = if ((cX > 0))
815811 then invoke(fk, "put", nil, [AttachedPayment(bV, cX)])
816812 else nil
817813 if ((fp == fp))
818814 then {
819815 let fq = if ((cY > 0))
820816 then invoke(fk, "put", nil, [AttachedPayment(bW, cY)])
821817 else nil
822818 if ((fq == fq))
823819 then {
824820 let fr = if (fh)
825821 then {
826822 let fs = invoke(fj, "stake", nil, [AttachedPayment(fm, cW)])
827823 if ((fs == fs))
828824 then nil
829825 else throw("Strict value is not equal to itself.")
830826 }
831827 else [ScriptTransfer(dr.caller, cW, fm)]
832828 (cn ++ fr)
833829 }
834830 else throw("Strict value is not equal to itself.")
835831 }
836832 else throw("Strict value is not equal to itself.")
837833 }
838834 else throw("Strict value is not equal to itself.")
839835 }
840836 else throw("Strict value is not equal to itself.")
841837 }
842838 }
843839
844840
845841
846842 @Callable(dr)
847843 func putOneTkn (ft,fu,fv,bm,fh) = {
848844 let bD = aK()
849845 let fj = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
850846 let fk = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
851847 let fw = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
852848 let fx = aG()
853849 let bV = fx[t]
854850 let bW = fx[u]
855851 let bX = parseIntValue(fx[v])
856852 let bY = parseIntValue(fx[w])
857853 let fy = valueOrElse(getString(this, ad()), "")
858854 let bT = if ((fy == toString(dr.caller)))
859855 then dr.originCaller
860856 else dr.caller
861857 if (if (if (if ((0 >= bm))
862858 then true
863859 else (0 >= ft))
864860 then true
865861 else (0 >= fu))
866862 then true
867863 else (0 >= fv))
868864 then throw("Wrong params")
869865 else if ((size(dr.payments) != 1))
870866 then throw("1 pmnt expd")
871867 else {
872868 let ds = value(dr.payments[0])
873869 let bR = toBase58String(value(ds.assetId))
874870 let fz = ds.amount
875871 let fA = bM(fz)
876872 let cx = fA._1
877873 let bO = fA._2
878874 if ((10000000 > fz))
879875 then throw("Wrong pmt amt")
880876 else {
881877 let cb = be(bV)
882878 let cd = be(bW)
883879 let fB = if ((bR == bV))
884880 then if (if ((fz > cb))
885881 then true
886882 else (ft > cx))
887883 then throw("invalid payment amount")
888884 else $Tuple6((cb - fz), cd, (cx - ft), fu, 0, 0)
889885 else if ((bR == bW))
890886 then if (if ((fz > cd))
891887 then true
892888 else (fu > cx))
893889 then throw("invalid payment amount")
894890 else $Tuple6(cb, (cd - fz), 0, 0, (cx - fu), ft)
895891 else throw("wrong pmtAssetId")
896892 let fC = fB._1
897893 let fD = fB._2
898894 let fE = fB._3
899895 let fF = fB._4
900896 let fG = fB._5
901897 let fH = fB._6
902898 let br = invoke(fw, "calcD", [toString(fC), toString(fD), aC, i, j], nil)
903899 let bq = invoke(fw, "calcD", [toString(toBigInt(((fC + fE) - fH))), toString(toBigInt(((fD + fG) - fF))), aC, i, j], nil)
904900 let fI = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
905901 if ((fI == fI))
906902 then {
907903 let fJ = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), ft), AttachedPayment(fromBase58String(bW), fu), bm, true, true, true, cx, bR)
908904 let fK = fJ._2
909905 let fm = fJ._7
910906 let cn = fJ._9
911907 let cX = fJ._10
912908 let cY = fJ._11
913909 let fL = bj(toBigInt(fK), toBigInt(fv), toBigInt(bm))
914910 let cW = toInt(fL._2)
915911 let fl = invoke(aB, "emit", [cW], nil)
916912 if ((fl == fl))
917913 then {
918914 let fn = {
919915 let av = fl
920916 if ($isInstanceOf(av, "Address"))
921917 then {
922918 let fo = av
923919 invoke(fo, "emit", [cW], nil)
924920 }
925921 else unit
926922 }
927923 if ((fn == fn))
928924 then {
929925 let fp = if ((cX > 0))
930926 then invoke(fk, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
931927 else nil
932928 if ((fp == fp))
933929 then {
934930 let fq = if ((cY > 0))
935931 then invoke(fk, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
936932 else nil
937933 if ((fq == fq))
938934 then {
939935 let fr = if (fh)
940936 then {
941937 let fs = invoke(fj, "stake", nil, [AttachedPayment(fm, cW)])
942938 if ((fs == fs))
943939 then nil
944940 else throw("Strict value is not equal to itself.")
945941 }
946942 else [ScriptTransfer(dr.caller, cW, fm)]
947943 let eV = if ((bO > 0))
948944 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
949945 else nil
950946 ((cn ++ fr) ++ eV)
951947 }
952948 else throw("Strict value is not equal to itself.")
953949 }
954950 else throw("Strict value is not equal to itself.")
955951 }
956952 else throw("Strict value is not equal to itself.")
957953 }
958954 else throw("Strict value is not equal to itself.")
959955 }
960956 else throw("Strict value is not equal to itself.")
961957 }
962958 }
963959 }
964960
965961
966962
967963 @Callable(dr)
968964 func putOneTknV2 (eE,fh) = if ((size(dr.payments) != 1))
969965 then throw("1 pmnt expd")
970966 else {
971967 let ek = aG()
972968 let bV = ek[t]
973969 let bW = ek[u]
974970 let bU = fromBase58String(ek[s])
975971 let eI = parseIntValue(ek[v])
976972 let eJ = parseIntValue(ek[w])
977973 let bT = if ((dr.caller == this))
978974 then dr.originCaller
979975 else dr.caller
980976 let ds = value(dr.payments[0])
981977 let bR = toBase58String(value(ds.assetId))
982978 let cx = ds.amount
983979 if ((10000000 > cx))
984980 then throw("Wrong pmt amt")
985981 else {
986982 let fM = ei(cx, bR, toString(bT), toBase58String(dr.transactionId))
987983 let fK = fM._1
988984 let cn = fM._2
989985 let bO = fM._3
990986 let cW = if (if ((eE > 0))
991987 then (eE > fK)
992988 else false)
993989 then throw(makeString(["amount to receive is less than ", toString(eE)], ""))
994990 else fK
995991 let fl = invoke(aB, "emit", [cW], nil)
996992 if ((fl == fl))
997993 then {
998994 let fn = {
999995 let av = fl
1000996 if ($isInstanceOf(av, "Address"))
1001997 then {
1002998 let fo = av
1003999 invoke(fo, "emit", [cW], nil)
10041000 }
10051001 else unit
10061002 }
10071003 if ((fn == fn))
10081004 then {
10091005 let fr = if (fh)
10101006 then {
10111007 let fs = invoke(aM, "stake", nil, [AttachedPayment(bU, cW)])
10121008 if ((fs == fs))
10131009 then nil
10141010 else throw("Strict value is not equal to itself.")
10151011 }
10161012 else [ScriptTransfer(dr.caller, cW, bU)]
10171013 let eV = if ((bO > 0))
10181014 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
10191015 else nil
10201016 $Tuple2(((cn ++ fr) ++ eV), cW)
10211017 }
10221018 else throw("Strict value is not equal to itself.")
10231019 }
10241020 else throw("Strict value is not equal to itself.")
10251021 }
10261022 }
10271023
10281024
10291025
10301026 @Callable(dr)
10311027 func putForFree (fN) = if ((0 > fN))
10321028 then throw("Wrong slpg")
10331029 else if ((size(dr.payments) != 2))
10341030 then throw("2 pmnts expd")
10351031 else {
10361032 let fJ = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fN, false, false, true, 0, "")
10371033 fJ._9
10381034 }
10391035
10401036
10411037
10421038 @Callable(dr)
10431039 func get () = {
10441040 let cJ = dq(dr)
10451041 let fO = cJ._1
10461042 let cm = cJ._2
10471043 let cx = cJ._3
10481044 let bR = cJ._4
10491045 let cn = cJ._5
10501046 let ec = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
10511047 if ((ec == ec))
10521048 then cn
10531049 else throw("Strict value is not equal to itself.")
10541050 }
10551051
10561052
10571053
10581054 @Callable(dr)
10591055 func getOneTkn (fP,fQ,fR,eD,bm) = if ((size(dr.payments) != 1))
10601056 then throw("1 pmnt expd")
10611057 else {
10621058 let bD = aG()
10631059 let bU = bD[s]
10641060 let bV = bD[t]
10651061 let bW = bD[u]
10661062 let bX = parseIntValue(bD[v])
10671063 let bY = parseIntValue(bD[w])
10681064 let bZ = bD[r]
10691065 let fi = aK()
10701066 let fw = valueOrErrorMessage(addressFromString(fi[B]), "Wr sl addr")
10711067 let ds = value(dr.payments[0])
10721068 let fy = valueOrElse(getString(this, ad()), "")
10731069 let bT = if ((fy == toString(dr.caller)))
10741070 then dr.originCaller
10751071 else dr.caller
10761072 let bQ = toBase58String(dr.transactionId)
10771073 let bR = value(ds.assetId)
10781074 let cx = ds.amount
10791075 if ((1000000000 > cx))
10801076 then throw("Min pmt 10 LP")
10811077 else if (if (if ((0 > bm))
10821078 then true
10831079 else (0 > fP))
10841080 then true
10851081 else (0 > fR))
10861082 then throw("Wrong params")
10871083 else if ((bU != toBase58String(bR)))
10881084 then throw("Wrong LP")
10891085 else {
10901086 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
10911087 let fS = cJ._1
10921088 let fT = cJ._2
10931089 let cb = be(bV)
10941090 let cd = be(bW)
10951091 let fU = if ((eD == bV))
10961092 then $Tuple7((cb - fS), (cd - fT), fP, fT, 0, 0, (fS + fP))
10971093 else if ((eD == bW))
10981094 then $Tuple7((cb - fS), (cd - fT), 0, 0, fP, fS, (fT + fP))
10991095 else throw("wrong outAssetId")
11001096 let fC = fU._1
11011097 let fD = fU._2
11021098 let fE = fU._3
11031099 let fF = fU._4
11041100 let fG = fU._5
11051101 let fH = fU._6
11061102 let fV = fU._7
11071103 if (if ((0 > fE))
11081104 then true
11091105 else (0 > fG))
11101106 then throw("Wrong calc")
11111107 else {
11121108 let br = invoke(fw, "calcD", [toString(fC), toString(fD), aC, i, j], nil)
11131109 let bq = invoke(fw, "calcD", [toString(((fC - fE) + fH)), toString(((fD + fF) - fG)), aC, i, j], nil)
11141110 let fI = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
11151111 if ((fI == fI))
11161112 then {
11171113 let eN = bM(fV)._1
11181114 let fW = bj(toBigInt(eN), toBigInt(fR), toBigInt(bm))
11191115 if ((fW == fW))
11201116 then {
11211117 let fX = if ((eD == bV))
11221118 then $Tuple2(toInt(fW._2), 0)
11231119 else $Tuple2(0, toInt(fW._2))
11241120 let eQ = fX._1
11251121 let eR = fX._2
11261122 let eO = (eQ + eR)
11271123 let bO = (fV - eN)
11281124 let eU = if ((eD == "WAVES"))
11291125 then unit
11301126 else fromBase58String(eD)
11311127 let eV = if ((bO > 0))
11321128 then [ScriptTransfer(aF, bO, eU)]
11331129 else nil
11341130 let eS = bg(D(cd, bY), D(cb, bX))
11351131 let eT = G(eS, a)
11361132 let cn = [ScriptTransfer(bT, eO, eU), StringEntry(Z(toString(bT), bQ), ba(eQ, eR, cx, eT, height, lastBlock.timestamp)), IntegerEntry(S(), eT), IntegerEntry(T(height, lastBlock.timestamp), eT)]
11371133 if ((cn == cn))
11381134 then {
11391135 let eW = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
11401136 if ((eW == eW))
11411137 then (cn ++ eV)
11421138 else throw("Strict value is not equal to itself.")
11431139 }
11441140 else throw("Strict value is not equal to itself.")
11451141 }
11461142 else throw("Strict value is not equal to itself.")
11471143 }
11481144 else throw("Strict value is not equal to itself.")
11491145 }
11501146 }
11511147 }
11521148
11531149
11541150
11551151 @Callable(dr)
11561152 func getOneTknV2 (eD,eE) = {
11571153 let fY = eC(eD, eE, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
11581154 let cn = fY._1
11591155 let eO = fY._2
11601156 $Tuple2(cn, eO)
11611157 }
11621158
11631159
11641160
11651161 @Callable(dr)
1166-func getOneTknV2OldREADONLY (eD,fZ) = {
1167- let ek = aG()
1168- let bU = ek[s]
1169- let bV = ek[t]
1170- let bW = ek[u]
1171- let cJ = bP("", bU, fZ, this)
1172- let fS = cJ._1
1173- let fT = cJ._2
1174- let cb = be(bV)
1175- let cd = be(bW)
1176- let fC = (cb - fS)
1177- let fD = (cd - fT)
1178- let ga = if ((eD == bV))
1179- then $Tuple4(fD, fC, fT, fS)
1180- else if ((eD == bW))
1181- then $Tuple4(fC, fD, fS, fT)
1182- else throw("wrong outAssetId")
1183- let gb = ga._1
1184- let gc = ga._2
1185- let gd = ga._3
1186- let ge = ga._4
1187- let gf = 1
1188- let fP = {
1189- let eM = invoke(aO, "calcSwapXToY", [toString(gd), toString(gb), toString(gc), "", aC, i, toString(gf), j], nil)
1190- if ($isInstanceOf(eM, "Int"))
1191- then eM
1192- else throw(($getType(eM) + " couldn't be cast to Int"))
1193- }
1194- let fV = (fP + ge)
1195- let gg = bM(fV)
1196- let eN = gg._1
1197- let bO = gg._2
1198- $Tuple2(nil, $Tuple2(eN, bO))
1199- }
1200-
1201-
1202-
1203-@Callable(dr)
12041162 func getOneTknV2READONLY (eD,fZ) = {
12051163 let ek = aG()
12061164 let bV = ek[t]
12071165 let bW = ek[u]
12081166 let bU = ek[s]
12091167 let dy = [toBigInt(be(bV)), toBigInt(be(bW))]
1210- let gh = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1168+ let ga = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
12111169 let br = dx(dy)
1212- let bq = (br - fraction(toBigInt(fZ), br, gh))
1213- let gi = if ((eD == bV))
1170+ let bq = (br - fraction(toBigInt(fZ), br, ga))
1171+ let gb = if ((eD == bV))
12141172 then 0
12151173 else 1
1216- let gj = dY(dy, gi, bq)
1217- let gk = (dy[gi] - gj)
1218- let fV = toInt((gk - f))
1219- let gl = bM(fV)
1220- let eN = gl._1
1221- let bO = gl._2
1174+ let gc = dY(dy, gb, bq)
1175+ let gd = (dy[gb] - gc)
1176+ let fV = toInt((gd - f))
1177+ let ge = bM(fV)
1178+ let eN = ge._1
1179+ let bO = ge._2
12221180 $Tuple2(nil, $Tuple2(eN, bO))
12231181 }
12241182
12251183
12261184
12271185 @Callable(dr)
12281186 func getOneTknV2WithBonusREADONLY (eD,fZ) = {
12291187 let ek = aG()
12301188 let bV = ek[t]
12311189 let bW = ek[u]
12321190 let bU = ek[s]
12331191 let cb = be(bV)
12341192 let cd = be(bW)
1235- let gm = {
1193+ let gf = {
12361194 let eM = invoke(this, "getOneTknV2READONLY", [eD, fZ], nil)
12371195 if ($isInstanceOf(eM, "(Int, Int)"))
12381196 then eM
12391197 else throw(($getType(eM) + " couldn't be cast to (Int, Int)"))
12401198 }
1241- let eN = gm._1
1242- let bO = gm._2
1199+ let eN = gf._1
1200+ let bO = gf._2
12431201 let cJ = bP("", bU, fZ, this)
12441202 let cl = cJ._1
12451203 let cm = cJ._2
1246- let gn = (cl + cm)
1247- let eB = fraction((eN - gn), a, gn)
1204+ let gg = (cl + cm)
1205+ let eB = fraction((eN - gg), a, gg)
12481206 $Tuple2(nil, $Tuple3(eN, bO, eB))
12491207 }
12501208
12511209
12521210
12531211 @Callable(dr)
1254-func getNoLess (go,gp) = {
1212+func getNoLess (gh,gi) = {
12551213 let cJ = dq(dr)
12561214 let cl = cJ._1
12571215 let cm = cJ._2
12581216 let cx = cJ._3
12591217 let bR = cJ._4
12601218 let cn = cJ._5
1261- if ((go > cl))
1262- then throw(((("Failed: " + toString(cl)) + " < ") + toString(go)))
1263- else if ((gp > cm))
1264- then throw(((("Failed: " + toString(cm)) + " < ") + toString(gp)))
1219+ if ((gh > cl))
1220+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(gh)))
1221+ else if ((gi > cm))
1222+ then throw(((("Failed: " + toString(cm)) + " < ") + toString(gi)))
12651223 else {
1266- let gq = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1267- if ((gq == gq))
1224+ let gj = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1225+ if ((gj == gj))
12681226 then cn
12691227 else throw("Strict value is not equal to itself.")
12701228 }
12711229 }
12721230
12731231
12741232
12751233 @Callable(dr)
12761234 func unstakeAndGet (bN) = {
1277- let gr = if ((size(dr.payments) != 0))
1235+ let gk = if ((size(dr.payments) != 0))
12781236 then throw("No pmnts expd")
12791237 else true
1280- if ((gr == gr))
1238+ if ((gk == gk))
12811239 then {
12821240 let bD = aG()
1283- let gs = aK()
1241+ let gl = aK()
12841242 let fm = fromBase58String(bD[s])
1285- let gt = valueOrErrorMessage(addressFromString(gs[z]), "Wr st addr")
1286- let gu = invoke(gt, "unstake", [toBase58String(fm), bN], nil)
1287- if ((gu == gu))
1243+ let gm = valueOrErrorMessage(addressFromString(gl[z]), "Wr st addr")
1244+ let gn = invoke(gm, "unstake", [toBase58String(fm), bN], nil)
1245+ if ((gn == gn))
12881246 then {
12891247 let cJ = bP(toBase58String(dr.transactionId), toBase58String(fm), bN, dr.caller)
12901248 let bZ = parseIntValue(cJ._9)
12911249 let cn = cJ._10
1292- let gv = if (if (aD())
1250+ let go = if (if (aD())
12931251 then true
12941252 else (bZ == p))
12951253 then throw(("Blocked: " + toString(bZ)))
12961254 else true
1297- if ((gv == gv))
1255+ if ((go == go))
12981256 then {
1299- let gw = invoke(aB, "burn", [bN], [AttachedPayment(fm, bN)])
1300- if ((gw == gw))
1257+ let gp = invoke(aB, "burn", [bN], [AttachedPayment(fm, bN)])
1258+ if ((gp == gp))
13011259 then cn
13021260 else throw("Strict value is not equal to itself.")
13031261 }
13041262 else throw("Strict value is not equal to itself.")
13051263 }
13061264 else throw("Strict value is not equal to itself.")
13071265 }
13081266 else throw("Strict value is not equal to itself.")
13091267 }
13101268
13111269
13121270
13131271 @Callable(dr)
1314-func unstakeAndGetOneTkn (gx,eD,eE) = {
1315- let gr = if ((size(dr.payments) != 0))
1272+func unstakeAndGetOneTkn (gq,eD,eE) = {
1273+ let gk = if ((size(dr.payments) != 0))
13161274 then throw("No pmnts expd")
13171275 else true
1318- if ((gr == gr))
1276+ if ((gk == gk))
13191277 then {
13201278 let bD = aG()
1321- let gs = aK()
1279+ let gl = aK()
13221280 let fm = fromBase58String(bD[s])
1323- let gt = valueOrErrorMessage(addressFromString(gs[z]), "Wr st addr")
1324- let gu = invoke(gt, "unstake", [toBase58String(fm), gx], nil)
1325- if ((gu == gu))
1281+ let gm = valueOrErrorMessage(addressFromString(gl[z]), "Wr st addr")
1282+ let gn = invoke(gm, "unstake", [toBase58String(fm), gq], nil)
1283+ if ((gn == gn))
13261284 then {
1327- let gy = eC(eD, eE, [AttachedPayment(fm, gx)], dr.caller, dr.originCaller, dr.transactionId)
1328- let cn = gy._1
1329- let eO = gy._2
1285+ let gr = eC(eD, eE, [AttachedPayment(fm, gq)], dr.caller, dr.originCaller, dr.transactionId)
1286+ let cn = gr._1
1287+ let eO = gr._2
13301288 $Tuple2(cn, eO)
13311289 }
13321290 else throw("Strict value is not equal to itself.")
13331291 }
13341292 else throw("Strict value is not equal to itself.")
13351293 }
13361294
13371295
13381296
13391297 @Callable(dr)
1340-func putOneTknV2WithBonusREADONLY (fz,gz) = {
1298+func putOneTknV2WithBonusREADONLY (fz,gs) = {
13411299 let ek = aG()
13421300 let bV = ek[t]
13431301 let bW = ek[u]
13441302 let bU = ek[s]
1345- let gA = ei(fz, gz, "", "")
1346- let ew = gA._1
1347- let cn = gA._2
1348- let bO = gA._3
1349- let eB = gA._4
1303+ let gt = ei(fz, gs, "", "")
1304+ let ew = gt._1
1305+ let cn = gt._2
1306+ let bO = gt._3
1307+ let eB = gt._4
13501308 $Tuple2(nil, $Tuple3(ew, bO, eB))
13511309 }
13521310
13531311
13541312
13551313 @Callable(dr)
1356-func activate (gB,gC) = if ((toString(dr.caller) != toString(aB)))
1314+func activate (gu,gv) = if ((toString(dr.caller) != toString(aB)))
13571315 then throw("denied")
1358- else $Tuple2([StringEntry(aa(), gB), StringEntry(ab(), gC)], "success")
1316+ else $Tuple2([StringEntry(aa(), gu), StringEntry(ab(), gv)], "success")
13591317
13601318
13611319
13621320 @Callable(dr)
1363-func setS (gD,gv) = if ((toString(dr.caller) != ax(this, ad())))
1321+func setS (gw,go) = if ((toString(dr.caller) != ax(this, ad())))
13641322 then eZ
1365- else [StringEntry(gD, gv)]
1323+ else [StringEntry(gw, go)]
13661324
13671325
13681326
13691327 @Callable(dr)
1370-func setI (gD,gv) = if ((toString(dr.caller) != ax(this, ad())))
1328+func setI (gw,go) = if ((toString(dr.caller) != ax(this, ad())))
13711329 then eZ
1372- else [IntegerEntry(gD, gv)]
1330+ else [IntegerEntry(gw, go)]
13731331
13741332
13751333
13761334 @Callable(dr)
13771335 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
13781336
13791337
13801338
13811339 @Callable(dr)
13821340 func getAccBalanceWrapperREADONLY (bf) = $Tuple2(nil, be(bf))
13831341
13841342
13851343
13861344 @Callable(dr)
13871345 func calcPricesWrapperREADONLY (bx,by,bC) = {
1388- let gE = bB(bx, by, bC)
1389- $Tuple2(nil, [toString(gE[0]), toString(gE[1]), toString(gE[2])])
1346+ let gx = bB(bx, by, bC)
1347+ $Tuple2(nil, [toString(gx[0]), toString(gx[1]), toString(gx[2])])
13901348 }
13911349
13921350
13931351
13941352 @Callable(dr)
1395-func fromX18WrapperREADONLY (H,gF) = $Tuple2(nil, G(parseBigIntValue(H), gF))
1353+func fromX18WrapperREADONLY (H,gy) = $Tuple2(nil, G(parseBigIntValue(H), gy))
13961354
13971355
13981356
13991357 @Callable(dr)
14001358 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14011359
14021360
14031361
14041362 @Callable(dr)
14051363 func calcPriceBigIntWrapperREADONLY (bh,bi) = $Tuple2(nil, toString(bg(parseBigIntValue(bh), parseBigIntValue(bi))))
14061364
14071365
14081366
14091367 @Callable(dr)
1410-func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gG,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gG, ct, cu, true, false, 0, ""))
1368+func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gz,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gz, ct, cu, true, false, 0, ""))
14111369
14121370
14131371
14141372 @Callable(dr)
1415-func estimateGetOperationWrapperREADONLY (bQ,gH,bS,gG) = {
1416- let cJ = bP(bQ, gH, bS, addressFromStringValue(gG))
1373+func estimateGetOperationWrapperREADONLY (bQ,gA,bS,gz) = {
1374+ let cJ = bP(bQ, gA, bS, addressFromStringValue(gz))
14171375 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
14181376 }
14191377
14201378
14211379
14221380 @Callable(dr)
14231381 func getFeeREADONLY () = $Tuple2(nil, af)
14241382
14251383
1426-@Verifier(gI)
1427-func gJ () = {
1428- let gK = {
1384+@Verifier(gB)
1385+func gC () = {
1386+ let gD = {
14291387 let av = eX()
14301388 if ($isInstanceOf(av, "ByteVector"))
14311389 then {
14321390 let fb = av
14331391 fb
14341392 }
14351393 else if ($isInstanceOf(av, "Unit"))
1436- then gI.senderPublicKey
1394+ then gB.senderPublicKey
14371395 else throw("Match error")
14381396 }
1439- let av = gI
1397+ let av = gB
14401398 if ($isInstanceOf(av, "Order"))
14411399 then {
14421400 let de = av
1443- let gL = aE()
1444- let gM = dd(de)
1445- let gN = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1446- let gO = sigVerify(de.bodyBytes, de.proofs[1], gL)
1447- if (if (if (gM)
1448- then gN
1401+ let gE = aE()
1402+ let gF = dd(de)
1403+ let gG = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1404+ let gH = sigVerify(de.bodyBytes, de.proofs[1], gE)
1405+ if (if (if (gF)
1406+ then gG
14491407 else false)
1450- then gO
1408+ then gH
14511409 else false)
14521410 then true
1453- else aq(gM, gN, gO)
1411+ else aq(gF, gG, gH)
14541412 }
14551413 else if ($isInstanceOf(av, "SetScriptTransaction"))
14561414 then {
14571415 let dE = av
1458- let gP = blake2b256(value(dE.script))
1459- let gQ = fromBase64String(value(getString(aB, ao())))
1460- let gR = scriptHash(this)
1461- if (if ((gQ == gP))
1462- then (gR != gP)
1416+ let gI = blake2b256(value(dE.script))
1417+ let gJ = fromBase64String(value(getString(aB, ao())))
1418+ let gK = scriptHash(this)
1419+ if (if ((gJ == gI))
1420+ then (gK != gI)
14631421 else false)
14641422 then true
1465- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1423+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14661424 }
1467- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1425+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14681426 }
14691427

github/deemru/w8io/c3f4982 
158.17 ms