From 01ce2fd0f8a28a67a501c052e66cc8a608aa67ea Mon Sep 17 00:00:00 2001 From: skywardboundd Date: Mon, 26 May 2025 15:12:58 +0300 Subject: [PATCH] locate sharded functions --- src/stdlib/stdlib.ts | 875 ++++++++++--------- src/stdlib/stdlib/std/internal/address.tact | 21 + src/stdlib/stdlib/std/internal/cells.tact | 15 + src/stdlib/stdlib/std/internal/contract.tact | 6 + src/stdlib/stdlib/std/internal/math.tact | 8 + src/stdlib/stdlib/std/internal/send.tact | 50 ++ 6 files changed, 556 insertions(+), 419 deletions(-) diff --git a/src/stdlib/stdlib.ts b/src/stdlib/stdlib.ts index 0c63efd356..e73bd379a9 100644 --- a/src/stdlib/stdlib.ts +++ b/src/stdlib/stdlib.ts @@ -317,46 +317,53 @@ files["std/internal/address.tact"] = "aXQgPSBTdGF0ZUluaXQgeyBjb2RlLCBkYXRhIH07Ci8vLyAgICAgbGV0IGFkZHI6IEJhc2VjaGFpbkFkZHJlc3MgPSBjb250cmFjdEJhc2VjaGFpbkFkZHJlc3Moc3Rh" + "dGUpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZGRyZXNzZXMjY29udHJhY3RiYXNlY2hhaW5h" + "ZGRyZXNzCi8vLwppbmxpbmUgZnVuIGNvbnRyYWN0QmFzZWNoYWluQWRkcmVzcyhzOiBTdGF0ZUluaXQpOiBCYXNlY2hhaW5BZGRyZXNzIHsKICAgIGxldCBoYXNoID0g" + - "Y29udHJhY3RIYXNoKHMuY29kZSwgcy5kYXRhKTsKICAgIHJldHVybiBuZXdCYXNlY2hhaW5BZGRyZXNzKGhhc2gpOwp9CgovLy8gRXh0ZW5zaW9uIGZ1bmN0aW9uIGZv" + - "ciB0aGUgYEJ1aWxkZXJgIHR5cGUuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNi4wLgovLy8KLy8vIFN0b3JlcyB0aGUgYmFzZWNoYWluIGFkZHJlc3MgaW4gdGhlIGNv" + - "cHkgb2YgdGhlIEJ1aWxkZXIgYW5kIHJldHVybnMgdGhhdCBjb3B5LgovLy8KLy8vIElmIHRoZSBhZGRyZXNzIGhhcyBhIGBudWxsYCBoYXNoLCBzdG9yZXMgdHdvIHpl" + - "cm8gYml0cyBgMGIwMGAgKGBhZGRyX25vbmVgKS4gT3RoZXJ3aXNlLAovLy8gc3RvcmVzIHRoZSBmdWxsIGFkZHJlc3Mgd2l0aCB0aGUgdGhyZWUtYml0IHByZWZpeCBg" + - "MGIxMDBgLAovLy8gZm9sbG93ZWQgYnkgdGhlIDgtYml0IHdvcmtjaGFpbiBJRCBzZXQgdG8gMCBhbmQgdGhlIDI1Ni1iaXQgaGFzaC4KLy8vCi8vLyBgYGB0YWN0Ci8v" + - "LyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgYWRkcjogQmFzZWNoYWluQWRkcmVzcyA9IG5ld0Jhc2VjaGFpbkFkZHJlc3MoMHg4M2RmZDU1MmU2MzcyOWI0NzJm" + - "Y2JjYzhjNDVlYmNjNjY5MTcwMjU1OGI2OGVjNzUyN2UxYmE0MDNhMGYzMWE4KTsKLy8vICAgICBsZXQgYjogQnVpbGRlciA9IGJlZ2luQ2VsbCgpOwovLy8gICAgIGxl" + - "dCBiMjogQnVpbGRlciA9IGIuc3RvcmVCYXNlY2hhaW5BZGRyZXNzKGFkZHIpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA4" + - "OiBbQ2VsbCBvdmVyZmxvd10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gc3RvcmUgYW4gYGFkZHJlc3NgIGludG8gdGhlIGBCdWlsZGVyYCB3aGVuIGl0IGNh" + - "bm5vdCBmaXQgaXQuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNidWlsZGVyc3RvcmViYXNlY2hhaW5hZGRyZXNz" + - "Ci8vLwovLy8gW0NlbGwgb3ZlcmZsb3ddOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjOAovLy8KZXh0ZW5kcyBmdW4gc3RvcmVCYXNl" + - "Y2hhaW5BZGRyZXNzKHNlbGY6IEJ1aWxkZXIsIGFkZHJlc3M6IEJhc2VjaGFpbkFkZHJlc3MpOiBCdWlsZGVyIHsKICAgIGlmIChhZGRyZXNzLmhhc2ggPT0gbnVsbCkg" + - "ewogICAgICAgIHJldHVybiBzZWxmLnN0b3JlVWludCgwLCAyKTsgLy8gMGIwMAogICAgfQoKICAgIHJldHVybiBzZWxmCiAgICAgICAgLnN0b3JlVWludCgwYjEwXzBf" + - "MDAwMDAwMDAsIDMgKyA4KQogICAgICAgIC5zdG9yZVVpbnQoYWRkcmVzcy5oYXNoISEsIDI1Nik7Cn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5j" + - "ZSBUYWN0IDEuNi4zLgovLy8KLy8vIENoZWNrcyB3aGV0aGVyIHRoZSBgYWRkcmVzc2AgaXMgaW4gdGhlIGJhc2VjaGFpbiwgaS5lLiwgaXRzIGNoYWluIElEIGlzIDAu" + - "Ci8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGVzKCkgewovLy8gICAgIGxldCBzb21lQmFzZWNoYWluQWRkcmVzczogQWRkcmVzcyA9Ci8vLyAgICAgICAgIG5l" + - "d0FkZHJlc3MoMCwgMHg4M2RmZDU1MmU2MzcyOWI0NzJmY2JjYzhjNDVlYmNjNjY5MTcwMjU1OGI2OGVjNzUyN2UxYmE0MDNhMGYzMWE4KTsKLy8vCi8vLyAgICAgbGV0" + - "IHNvbWVNYXN0ZXJjaGFpbkFkZHJlc3M6IEFkZHJlc3MgPQovLy8gICAgICAgICBuZXdBZGRyZXNzKC0xLCAweDgzZGZkNTUyZTYzNzI5YjQ3MmZjYmNjOGM0NWViY2M2" + - "NjkxNzAyNTU4YjY4ZWM3NTI3ZTFiYTQwM2EwZjMxYTgpOwovLy8KLy8vICAgICAvLyBEb2VzIG5vdCB0aHJvdyBiZWNhdXNlIHRoZSBjaGFpbiBJRCBpcyAwCi8vLyAg" + - "ICAgZm9yY2VCYXNlY2hhaW4oc29tZUJhc2VjaGFpbkFkZHJlc3MpOwovLy8KLy8vICAgICB0cnkgewovLy8gICAgICAgICAvLyBUaHJvd3MgYmVjYXVzZSB0aGUgY2hh" + - "aW4gSUQgaXMgLTEgKG1hc3RlcmNoYWluKQovLy8gICAgICAgICBmb3JjZUJhc2VjaGFpbihzb21lTWFzdGVyY2hhaW5BZGRyZXNzKTsKLy8vICAgICB9IGNhdGNoIChl" + - "eGl0Q29kZSkgewovLy8gICAgICAgICAvLyBleGl0Q29kZSBpcyAxMzgKLy8vICAgICB9Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8v" + - "LyAqIDEzODogW05vdCBhIGJhc2VjaGFpbiBhZGRyZXNzXSDigJQgVGhyb3duIHdoZW4gdGhlIGdpdmVuIGBhZGRyZXNzYCBpcyBub3QgaW4gdGhlIGJhc2VjaGFpbiAo" + - "Y2hhaW4gSUQgaXMgbm90IDApLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWRkcmVzc2VzI2ZvcmNlYmFzZWNoYWluCi8v" + - "LwovLy8gW05vdCBhIGJhc2VjaGFpbiBhZGRyZXNzXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzEzOAovLy8KYXNtIGZ1biBmb3Jj" + - "ZUJhc2VjaGFpbihhZGRyZXNzOiBBZGRyZXNzKSB7IFJFV1JJVEVTVERBRERSIERST1AgMTM4IFRIUk9XSUYgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxl" + - "IHNpbmNlIFRhY3QgMS42LjQuCi8vLwovLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGBhZGRyZXNzYCBpcyBpbiB0aGUgYHdvcmtjaGFpbmAsIGkuZS4sIGl0cyBjaGFpbiBJ" + - "RCBpcyBlcXVhbCB0byBgd29ya2NoYWluYC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZXMoKSB7Ci8vLyAgICAgbGV0IHNvbWVCYXNlY2hhaW5BZGRyZXNz" + - "OiBBZGRyZXNzID0KLy8vICAgICAgICAgbmV3QWRkcmVzcygwLCAweDgzZGZkNTUyZTYzNzI5YjQ3MmZjYmNjOGM0NWViY2M2NjkxNzAyNTU4YjY4ZWM3NTI3ZTFiYTQw" + - "M2EwZjMxYTgpOwovLy8KLy8vICAgICBsZXQgc29tZU1hc3RlcmNoYWluQWRkcmVzczogQWRkcmVzcyA9Ci8vLyAgICAgICAgIG5ld0FkZHJlc3MoLTEsIDB4ODNkZmQ1" + - "NTJlNjM3MjliNDcyZmNiY2M4YzQ1ZWJjYzY2OTE3MDI1NThiNjhlYzc1MjdlMWJhNDAzYTBmMzFhOCk7Ci8vLwovLy8gICAgIC8vIERvZXMgbm90IHRocm93IGJlY2F1" + - "c2UgdGhlIGNoYWluIElEIG1hdGNoZXMgd29ya2NoYWluIHBhcmFtZXRlcgovLy8gICAgIGZvcmNlV29ya2NoYWluKHNvbWVCYXNlY2hhaW5BZGRyZXNzLCAwLCA1OTMp" + - "OwovLy8gICAgIGZvcmNlV29ya2NoYWluKHNvbWVNYXN0ZXJjaGFpbkFkZHJlc3MsIC0xLCA1OTMpOwovLy8KLy8vICAgICB0cnkgewovLy8gICAgICAgICAvLyBUaHJv" + - "d3MgYmVjYXVzZSB0aGUgY2hhaW4gSUQgaXMgMCB3aGljaCBkb2Vzbid0IG1hdGNoIHRoZSB3b3JrY2hhaW4gcGFyYW1ldGVyLCAtMQovLy8gICAgICAgICBmb3JjZVdv" + - "cmtjaGFpbihzb21lQmFzZWNoYWluQWRkcmVzcywgLTEsIDU5Myk7Ci8vLyAgICAgfSBjYXRjaCAoZXhpdENvZGUpIHsKLy8vICAgICAgICAgLy8gZXhpdENvZGUgaXMg" + - "NTkzCi8vLyAgICAgfQovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiBgZXJyb3JDb2RlYCDigJQgVGhyb3duIHdoZW4gdGhlIGdp" + - "dmVuIGBhZGRyZXNzYCBpcyBub3QgaW4gdGhlIHNwZWNpZmllZCBgd29ya2NoYWluYCAoY2hhaW4gSUQgaXMgbm90IGVxdWFsIHRvIGB3b3JrY2hhaW5gKS4KLy8vCi8v" + - "LyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkZHJlc3NlcyNmb3JjZXdvcmtjaGFpbgovLy8KYXNtKGVycm9yQ29kZSB3b3JrY2hhaW4g" + - "YWRkcmVzcykgZnVuIGZvcmNlV29ya2NoYWluKGFkZHJlc3M6IEFkZHJlc3MsIHdvcmtjaGFpbjogSW50LCBlcnJvckNvZGU6IEludCkgewogICAgUkVXUklURVNUREFE" + - "RFIKICAgIERST1AKICAgIENNUAogICAgVEhST1dBTllJRgp9Cg=="; + "Y29udHJhY3RIYXNoKHMuY29kZSwgcy5kYXRhKTsKICAgIHJldHVybiBuZXdCYXNlY2hhaW5BZGRyZXNzKGhhc2gpOwp9CgppbmxpbmUgZnVuIGNvbnRyYWN0U2hhcmRC" + + "YXNlY2hhaW5BZGRyZXNzKHM6IFN0YXRlSW5pdCk6IEJhc2VjaGFpbkFkZHJlc3MgewogICAgbGV0IGhhc2ggPSBiZWdpbkNlbGwoKS5zdG9yZVNoYXJkZWRTdGF0ZUlu" + + "aXQocykuZW5kQ2VsbCgpLmhhc2goKTsKICAgIHJldHVybiBuZXdCYXNlY2hhaW5BZGRyZXNzKGhhc2gpOwp9CgovLy8gRXh0ZW5zaW9uIGZ1bmN0aW9uIGZvciB0aGUg" + + "YEJ1aWxkZXJgIHR5cGUuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNi4wLgovLy8KLy8vIFN0b3JlcyB0aGUgYmFzZWNoYWluIGFkZHJlc3MgaW4gdGhlIGNvcHkgb2Yg" + + "dGhlIEJ1aWxkZXIgYW5kIHJldHVybnMgdGhhdCBjb3B5LgovLy8KLy8vIElmIHRoZSBhZGRyZXNzIGhhcyBhIGBudWxsYCBoYXNoLCBzdG9yZXMgdHdvIHplcm8gYml0" + + "cyBgMGIwMGAgKGBhZGRyX25vbmVgKS4gT3RoZXJ3aXNlLAovLy8gc3RvcmVzIHRoZSBmdWxsIGFkZHJlc3Mgd2l0aCB0aGUgdGhyZWUtYml0IHByZWZpeCBgMGIxMDBg" + + "LAovLy8gZm9sbG93ZWQgYnkgdGhlIDgtYml0IHdvcmtjaGFpbiBJRCBzZXQgdG8gMCBhbmQgdGhlIDI1Ni1iaXQgaGFzaC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4g" + + "ZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgYWRkcjogQmFzZWNoYWluQWRkcmVzcyA9IG5ld0Jhc2VjaGFpbkFkZHJlc3MoMHg4M2RmZDU1MmU2MzcyOWI0NzJmY2JjYzhj" + + "NDVlYmNjNjY5MTcwMjU1OGI2OGVjNzUyN2UxYmE0MDNhMGYzMWE4KTsKLy8vICAgICBsZXQgYjogQnVpbGRlciA9IGJlZ2luQ2VsbCgpOwovLy8gICAgIGxldCBiMjog" + + "QnVpbGRlciA9IGIuc3RvcmVCYXNlY2hhaW5BZGRyZXNzKGFkZHIpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA4OiBbQ2Vs" + + "bCBvdmVyZmxvd10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gc3RvcmUgYW4gYGFkZHJlc3NgIGludG8gdGhlIGBCdWlsZGVyYCB3aGVuIGl0IGNhbm5vdCBm" + + "aXQgaXQuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNidWlsZGVyc3RvcmViYXNlY2hhaW5hZGRyZXNzCi8vLwov" + + "Ly8gW0NlbGwgb3ZlcmZsb3ddOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjOAovLy8KZXh0ZW5kcyBmdW4gc3RvcmVCYXNlY2hhaW5B" + + "ZGRyZXNzKHNlbGY6IEJ1aWxkZXIsIGFkZHJlc3M6IEJhc2VjaGFpbkFkZHJlc3MpOiBCdWlsZGVyIHsKICAgIGlmIChhZGRyZXNzLmhhc2ggPT0gbnVsbCkgewogICAg" + + "ICAgIHJldHVybiBzZWxmLnN0b3JlVWludCgwLCAyKTsgLy8gMGIwMAogICAgfQoKICAgIHJldHVybiBzZWxmCiAgICAgICAgLnN0b3JlVWludCgwYjEwXzBfMDAwMDAw" + + "MDAsIDMgKyA4KQogICAgICAgIC5zdG9yZVVpbnQoYWRkcmVzcy5oYXNoISEsIDI1Nik7Cn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0" + + "IDEuNi4zLgovLy8KLy8vIENoZWNrcyB3aGV0aGVyIHRoZSBgYWRkcmVzc2AgaXMgaW4gdGhlIGJhc2VjaGFpbiwgaS5lLiwgaXRzIGNoYWluIElEIGlzIDAuCi8vLwov" + + "Ly8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGVzKCkgewovLy8gICAgIGxldCBzb21lQmFzZWNoYWluQWRkcmVzczogQWRkcmVzcyA9Ci8vLyAgICAgICAgIG5ld0FkZHJl" + + "c3MoMCwgMHg4M2RmZDU1MmU2MzcyOWI0NzJmY2JjYzhjNDVlYmNjNjY5MTcwMjU1OGI2OGVjNzUyN2UxYmE0MDNhMGYzMWE4KTsKLy8vCi8vLyAgICAgbGV0IHNvbWVN" + + "YXN0ZXJjaGFpbkFkZHJlc3M6IEFkZHJlc3MgPQovLy8gICAgICAgICBuZXdBZGRyZXNzKC0xLCAweDgzZGZkNTUyZTYzNzI5YjQ3MmZjYmNjOGM0NWViY2M2NjkxNzAy" + + "NTU4YjY4ZWM3NTI3ZTFiYTQwM2EwZjMxYTgpOwovLy8KLy8vICAgICAvLyBEb2VzIG5vdCB0aHJvdyBiZWNhdXNlIHRoZSBjaGFpbiBJRCBpcyAwCi8vLyAgICAgZm9y" + + "Y2VCYXNlY2hhaW4oc29tZUJhc2VjaGFpbkFkZHJlc3MpOwovLy8KLy8vICAgICB0cnkgewovLy8gICAgICAgICAvLyBUaHJvd3MgYmVjYXVzZSB0aGUgY2hhaW4gSUQg" + + "aXMgLTEgKG1hc3RlcmNoYWluKQovLy8gICAgICAgICBmb3JjZUJhc2VjaGFpbihzb21lTWFzdGVyY2hhaW5BZGRyZXNzKTsKLy8vICAgICB9IGNhdGNoIChleGl0Q29k" + + "ZSkgewovLy8gICAgICAgICAvLyBleGl0Q29kZSBpcyAxMzgKLy8vICAgICB9Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDEz" + + "ODogW05vdCBhIGJhc2VjaGFpbiBhZGRyZXNzXSDigJQgVGhyb3duIHdoZW4gdGhlIGdpdmVuIGBhZGRyZXNzYCBpcyBub3QgaW4gdGhlIGJhc2VjaGFpbiAoY2hhaW4g" + + "SUQgaXMgbm90IDApLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWRkcmVzc2VzI2ZvcmNlYmFzZWNoYWluCi8vLwovLy8g" + + "W05vdCBhIGJhc2VjaGFpbiBhZGRyZXNzXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzEzOAovLy8KYXNtIGZ1biBmb3JjZUJhc2Vj" + + "aGFpbihhZGRyZXNzOiBBZGRyZXNzKSB7IFJFV1JJVEVTVERBRERSIERST1AgMTM4IFRIUk9XSUYgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNl" + + "IFRhY3QgMS42LjQuCi8vLwovLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGBhZGRyZXNzYCBpcyBpbiB0aGUgYHdvcmtjaGFpbmAsIGkuZS4sIGl0cyBjaGFpbiBJRCBpcyBl" + + "cXVhbCB0byBgd29ya2NoYWluYC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZXMoKSB7Ci8vLyAgICAgbGV0IHNvbWVCYXNlY2hhaW5BZGRyZXNzOiBBZGRy" + + "ZXNzID0KLy8vICAgICAgICAgbmV3QWRkcmVzcygwLCAweDgzZGZkNTUyZTYzNzI5YjQ3MmZjYmNjOGM0NWViY2M2NjkxNzAyNTU4YjY4ZWM3NTI3ZTFiYTQwM2EwZjMx" + + "YTgpOwovLy8KLy8vICAgICBsZXQgc29tZU1hc3RlcmNoYWluQWRkcmVzczogQWRkcmVzcyA9Ci8vLyAgICAgICAgIG5ld0FkZHJlc3MoLTEsIDB4ODNkZmQ1NTJlNjM3" + + "MjliNDcyZmNiY2M4YzQ1ZWJjYzY2OTE3MDI1NThiNjhlYzc1MjdlMWJhNDAzYTBmMzFhOCk7Ci8vLwovLy8gICAgIC8vIERvZXMgbm90IHRocm93IGJlY2F1c2UgdGhl" + + "IGNoYWluIElEIG1hdGNoZXMgd29ya2NoYWluIHBhcmFtZXRlcgovLy8gICAgIGZvcmNlV29ya2NoYWluKHNvbWVCYXNlY2hhaW5BZGRyZXNzLCAwLCA1OTMpOwovLy8g" + + "ICAgIGZvcmNlV29ya2NoYWluKHNvbWVNYXN0ZXJjaGFpbkFkZHJlc3MsIC0xLCA1OTMpOwovLy8KLy8vICAgICB0cnkgewovLy8gICAgICAgICAvLyBUaHJvd3MgYmVj" + + "YXVzZSB0aGUgY2hhaW4gSUQgaXMgMCB3aGljaCBkb2Vzbid0IG1hdGNoIHRoZSB3b3JrY2hhaW4gcGFyYW1ldGVyLCAtMQovLy8gICAgICAgICBmb3JjZVdvcmtjaGFp" + + "bihzb21lQmFzZWNoYWluQWRkcmVzcywgLTEsIDU5Myk7Ci8vLyAgICAgfSBjYXRjaCAoZXhpdENvZGUpIHsKLy8vICAgICAgICAgLy8gZXhpdENvZGUgaXMgNTkzCi8v" + + "LyAgICAgfQovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiBgZXJyb3JDb2RlYCDigJQgVGhyb3duIHdoZW4gdGhlIGdpdmVuIGBh" + + "ZGRyZXNzYCBpcyBub3QgaW4gdGhlIHNwZWNpZmllZCBgd29ya2NoYWluYCAoY2hhaW4gSUQgaXMgbm90IGVxdWFsIHRvIGB3b3JrY2hhaW5gKS4KLy8vCi8vLyBTZWU6" + + "IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkZHJlc3NlcyNmb3JjZXdvcmtjaGFpbgovLy8KYXNtKGVycm9yQ29kZSB3b3JrY2hhaW4gYWRkcmVz" + + "cykgZnVuIGZvcmNlV29ya2NoYWluKGFkZHJlc3M6IEFkZHJlc3MsIHdvcmtjaGFpbjogSW50LCBlcnJvckNvZGU6IEludCkgewogICAgUkVXUklURVNUREFERFIKICAg" + + "IERST1AKICAgIENNUAogICAgVEhST1dBTllJRgp9CgpleHRlbmRzIGlubGluZSBmdW4gY2hhbmdlU2hhcmQoc2VsZjogQWRkcmVzcywgc2hhcmQ6IEludCk6IEFkZHJl" + + "c3MgewogICAgbGV0IHNsOiBTbGljZSA9IHNlbGYuYXNTbGljZSgpOwoKICAgIHJldHVybiBiZWdpbkNlbGwoKS5zdG9yZVVpbnQoc2wubG9hZFVpbnQoMTEpLCAxMSku" + + "c3RvcmVVaW50KGNoYW5nZVNoYXJkKHNsLmxvYWRVaW50KDI1NiksIHNoYXJkKSwgMjU2KS5hc1NsaWNlKCkubG9hZEFkZHJlc3MoKTsKfQoKZXh0ZW5kcyBpbmxpbmUg" + + "ZnVuIGdldFNoYXJkKHNlbGY6IEFkZHJlc3MpOiBJbnQgewogICAgbGV0IHNsID0gc2VsZi5hc1NsaWNlKCk7CiAgICBzbC5za2lwQml0cygxMSk7IC8vIGFkZHJfc3Rk" + + "JDEwLCBhbnljYXN0OiBmYWxzZSwgd29ya2NoYWluOiBpbnQ4IAogICAgcmV0dXJuIHNsLmxvYWRVaW50KHByZWZpeExlbmd0aCk7Cn0KCmlubGluZSBleHRlbmRzIGZ1" + + "biBoYXNTYW1lU2hhcmQoc2VsZjogQWRkcmVzcywgYjogQWRkcmVzcyk6IEJvb2wgewogICAgcmV0dXJuIHNlbGYuZ2V0U2hhcmQoKSA9PSBiLmdldFNoYXJkKCk7Cn0K"; files["std/internal/base.tact"] = "Ly8vIERlc2NyaWJlcyB0aGUgYmFzZSBsb2dpYyB0aGF0IGlzIGF2YWlsYWJsZSBpbiBhbGwgY29udHJhY3RzIGFuZCB0cmFpdHMgYnkgZGVmYXVsdC4KLy8vCi8vLyBU" + "aGlzIHRyYWl0IGlzIGltcGxpY2l0bHkgaW5oZXJpdGVkIGJ5IGV2ZXJ5IG90aGVyIGNvbnRyYWN0IGFuZCB0cmFpdC4KLy8vIEl0IGNvbnRhaW5zIGEgbnVtYmVyIG9m" + @@ -956,7 +963,13 @@ files["std/internal/cells.tact"] = "IGNlbGxzLiBJZiBjIGlzIG51bGwsIHJldHVybnMgemVyby4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgYzogQ2VsbCA9IGJl" + "Z2luQ2VsbCgpLnN0b3JlSW50KDQyLCA3KS5lbmRDZWxsKCk7Ci8vLyAgICAgbGV0IGRlcHRoOiBJbnQgPSBjLmRlcHRoKCk7IC8vIDAKLy8vIH0KLy8vIGBgYAovLy8K" + "Ly8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY2VsbHMjY2VsbGRlcHRoCi8vLwphc20gZXh0ZW5kcyBmdW4gZGVwdGgoc2VsZjogQ2Vs" + - "bD8pOiBJbnQgeyBDREVQVEggfQo="; + "bD8pOiBJbnQgeyBDREVQVEggfQoKZXh0ZW5kcyBpbmxpbmUgZnVuIHN0b3JlU2hhcmRlZFN0YXRlSW5pdChzZWxmOiBCdWlsZGVyLCBpbml0OiBTdGF0ZUluaXQpOiBC" + + "dWlsZGVyIHsKICAgIHJldHVybiBzZWxmCiAgICAgICAgLnN0b3JlVWludCgzMiArIHByZWZpeExlbmd0aCwgNikgLy8gZml4ZWRfcHJlZml4X2xlbmd0aDogdHJ1ZSwg" + + "cHJlZml4TGVuZ3RoOiB1aW50NQogICAgICAgIC5zdG9yZVVpbnQoNiwgNCkgLy8gc3BlY2lhbDogZmFsc2UsIGNvZGU6IHRydWUsIGRhdGE6IHRydWUsIGxpYnJhcnk6" + + "IGZhbHNlIAogICAgICAgIC5zdG9yZVJlZihpbml0LmNvZGUpCiAgICAgICAgLnN0b3JlUmVmKGluaXQuZGF0YSk7Cn0KCmV4dGVuZHMgaW5saW5lIGZ1biBzdG9yZVN0" + + "YXRlSW5pdChzZWxmOiBCdWlsZGVyLCBpbml0OiBTdGF0ZUluaXQpOiBCdWlsZGVyIHsKICAgIHJldHVybiBzZWxmCiAgICAgICAgLnN0b3JlVWludCgzLCA1KSAvLyBm" + + "aXhlZF9wcmVmaXhfbGVuZ3RoOiBmYWxzZSwgc3BlY2lhbDogZmFsc2UsIGNvZGU6IHRydWUsIGRhdGE6IHRydWUsIGxpYnJhcnk6IGZhbHNlCiAgICAgICAgLnN0b3Jl" + + "UmVmKGluaXQuY29kZSkKICAgICAgICAuc3RvcmVSZWYoaW5pdC5kYXRhKTsKfQo="; files["std/internal/config.tact"] = "Ly8vIExvYWRzIGEgW2NvbmZpZ3VyYXRpb24gcGFyYW1ldGVyXSBvZiBUT04gQmxvY2tjaGFpbiBieSBpdHMgYGlkYCBudW1iZXIuCi8vLwovLy8gU2VlOiBodHRwczov" + "L2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jb250ZXh0c3RhdGUjZ2V0Y29uZmlncGFyYW0KLy8vCi8vLyBbY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJdOiBodHRw" + @@ -1095,148 +1108,152 @@ files["std/internal/contract.tact"] = "IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM5Ci8vLwppbmxpbmUgZXh0ZW5kcyBmdW4gaGFzU2FtZUJhc2VjaGFpbkFkZHJlc3Moc2Vs" + "ZjogU3RhdGVJbml0LCBhZGRyZXNzOiBBZGRyZXNzKTogQm9vbCB7CiAgICBsZXQgYWRkcmVzc0hhc2ggPSBwYXJzZVN0ZEFkZHJlc3MoYWRkcmVzcy5hc1NsaWNlKCkp" + "LmFkZHJlc3M7CiAgICBsZXQgYmFzZUFkZHJlc3MgPSBjb250cmFjdEJhc2VjaGFpbkFkZHJlc3Moc2VsZik7CiAgICByZXR1cm4gYmFzZUFkZHJlc3MuaGFzaCEhID09" + - "IGFkZHJlc3NIYXNoOwp9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLgovLy8KLy8vIENvbXB1dGVzIHNtYXJ0IGNvbnRyYWN0J3MgYEFkZHJlc3NgIGluIHRoZSB3b3JrY2hh" + - "aW4gSUQgMCAoYmFzZWNoYWluKSB1c2luZyB0aGUgYFN0YXRlSW5pdGAgYHNgIG9mIHRoZSBjb250cmFjdC4gQWxpYXMgdG8gYGNvbnRyYWN0QWRkcmVzc0V4dCgwLCBz" + - "LmNvZGUsIHMuZGF0YSlgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBzOiBTdGF0ZUluaXQgPSBpbml0T2YgU29tZUNvbnRy" + - "YWN0KCk7Ci8vLyAgICAgbGV0IGZvdW5kTWVTb21lOiBBZGRyZXNzID0gY29udHJhY3RBZGRyZXNzKHMpOwovLy8gICAgIGxldCBhbmRTb21lTW9yZTogQWRkcmVzcyA9" + - "IGNvbnRyYWN0QWRkcmVzc0V4dCgwLCBzLmNvZGUsIHMuZGF0YSk7Ci8vLwovLy8gICAgIGZvdW5kTWVTb21lID09IGFuZFNvbWVNb3JlOyAvLyB0cnVlCi8vLyB9Ci8v" + - "LyBgYGAKLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkZHJlc3NlcyNjb250cmFjdGFkZHJlc3MKLy8vICogaHR0" + - "cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWRkcmVzc2VzI2NvbnRyYWN0YWRkcmVzc2V4dAovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9i" + - "b29rL2V4cHJlc3Npb25zI2luaXRvZgovLy8KaW5saW5lIGZ1biBjb250cmFjdEFkZHJlc3MoczogU3RhdGVJbml0KTogQWRkcmVzcyB7CiAgICByZXR1cm4gY29udHJh" + - "Y3RBZGRyZXNzRXh0KDAsIHMuY29kZSwgcy5kYXRhKTsKfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4KLy8vCi8vLyBSZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBjdXJy" + - "ZW50IHNtYXJ0IGNvbnRyYWN0IGFzIGFuIGBBZGRyZXNzYC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgbWVNeXNlbGZBbmRJ" + - "OiBBZGRyZXNzID0gbXlBZGRyZXNzKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWNvbnRleHRz" + - "dGF0ZSNteWFkZHJlc3MKLy8vCmFzbSBmdW4gbXlBZGRyZXNzKCk6IEFkZHJlc3MgeyBNWUFERFIgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4KLy8vCi8vLyBSZXR1cm5z" + - "IHRoZSBuYW5vVG9uY29pbiBgSW50YCBiYWxhbmNlIG9mIHRoZSBzbWFydCBjb250cmFjdCBhcyBpdCB3YXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjb21wdXRlIHBoYXNl" + - "IG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBpTmVlZEFEb2xsYTogSW50ID0g" + - "bXlCYWxhbmNlKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWNvbnRleHRzdGF0ZSNteWJhbGFu" + - "Y2UKLy8vCmFzbSBmdW4gbXlCYWxhbmNlKCk6IEludCB7IEJBTEFOQ0UgRklSU1QgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41" + - "LjAuCi8vLwovLy8gUmV0dXJucyB0aGUgbmFub1RvbmNvaW4gYEludGAgYW1vdW50IG9mIGdhcyBjb25zdW1lZCBieSBUVk0gaW4gdGhlIGN1cnJlbnQgdHJhbnNhY3Rp" + - "b24gc28gZmFyLiBUaGUgcmVzdWx0aW5nIHZhbHVlIGluY2x1ZGVzIHRoZSBjb3N0IG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBm" + - "dW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgZ2FzOiBJbnQgPSBnYXNDb25zdW1lZCgpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFj" + - "dC1sYW5nLm9yZy9yZWYvY29yZS1jb250ZXh0c3RhdGUjZ2FzY29uc3VtZWQKLy8vCmFzbSBmdW4gZ2FzQ29uc3VtZWQoKTogSW50IHsgR0FTQ09OU1VNRUQgfQoKLy8v" + - "IEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gUmV0dXJucyB0aGUgbmFub1RvbmNvaW4gYEludGAgYW1vdW50IG9mIHRo" + - "ZSBhY2N1bXVsYXRlZCBzdG9yYWdlIGZlZSBkZWJ0LiBTdG9yYWdlIGZlZXMgYXJlIGRlZHVjdGVkIGZyb20gdGhlIGluY29taW5nIG1lc3NhZ2UgdmFsdWUgYmVmb3Jl" + - "IHRoZSBuZXcgY29udHJhY3QgYmFsYW5jZSBpcyBjYWxjdWxhdGVkLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBkZWJ0OiBJ" + - "bnQgPSBteVN0b3JhZ2VEdWUoKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY29udGV4dHN0YXRl" + - "I215c3RvcmFnZWR1ZQovLy8KYXNtIGZ1biBteVN0b3JhZ2VEdWUoKTogSW50IHsgRFVFUEFZTUVOVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2lu" + - "Y2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBzdG9yYWdlIGZlZSBpbiBuYW5vVG9uY29pbnMgYEludGAgZm9yIHN0b3Jpbmcg" + - "YSBjb250cmFjdCB3aXRoIGEgZ2l2ZW4gbnVtYmVyIG9mIGBjZWxsc2AgYW5kIGBiaXRzYCBmb3IgYSBudW1iZXIgb2YgYHNlY29uZHNgLiBVc2VzIHRoZSBwcmljZXMg" + - "b2YgdGhlIG1hc3RlcmNoYWluIGlmIGBpc01hc3RlcmNoYWluYCBpcyBgdHJ1ZWAsIG90aGVyd2lzZSB0aGUgcHJpY2VzIG9mIHRoZSBiYXNlY2hhaW4uIFRoZSBjdXJy" + - "ZW50IHByaWNlcyBhcmUgb2J0YWluZWQgZnJvbSB0aGUgY29uZmlnIHBhcmFtIDE4IG9mIFRPTiBCbG9ja2NoYWluLgovLy8KLy8vIE5vdGUsIHRoYXQgc3BlY2lmeWlu" + - "ZyB2YWx1ZXMgb2YgYGNlbGxzYCBhbmQgYGJpdHNgIGhpZ2hlciB0aGFuIHRoZWlyIG1heGltdW0gdmFsdWVzIGxpc3RlZCBpbiBhY2NvdW50IHN0YXRlIGxpbWl0cyAo" + - "YG1heF9hY2Nfc3RhdGVfY2VsbHNgIGFuZCBgbWF4X2FjY19zdGF0ZV9iaXRzYCkgd2lsbCBoYXZlIHRoZSBzYW1lIHJlc3VsdCBhcyB3aXRoIHNwZWNpZnlpbmcgdGhl" + - "IGV4YWN0IGxpbWl0cy4gSW4gYWRkaXRpb24sIG1ha2Ugc3VyZSB5b3UgdGFrZSBpbnRvIGFjY291bnQgdGhlIGRlZHVwbGljYXRpb24gb2YgY2VsbHMgd2l0aCB0aGUg" + - "c2FtZSBoYXNoLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBmZWU6IEludCA9IGdldFN0b3JhZ2VGZWUoMV8wMDAsIDFfMDAw" + - "LCAxXzAwMCwgZmFsc2UpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA1OiBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFu" + - "Z2VdIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2AsIGBiaXRzYCBvciBgc2Vjb25kc2AuCi8vLwov" + - "Ly8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1nYXMjZ2V0c3RvcmFnZWZlZQovLy8KLy8vIFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCBy" + - "YW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwphc20gZnVuIGdldFN0b3JhZ2VGZWUoY2VsbHM6IEludCwgYml0czog" + - "SW50LCBzZWNvbmRzOiBJbnQsIGlzTWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRTVE9SQUdFRkVFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBz" + - "aW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlIGNvbXB1dGUgZmVlIGluIG5hbm9Ub25jb2lucyBgSW50YCBmb3IgYSB0cmFu" + - "c2FjdGlvbiB0aGF0IGNvbnN1bWVkIGBnYXNVc2VkYCBhbW91bnQgb2YgZ2FzLiBVc2VzIHRoZSBwcmljZXMgb2YgdGhlIG1hc3RlcmNoYWluIGlmIGBpc01hc3RlcmNo" + - "YWluYCBpcyBgdHJ1ZWAsIG90aGVyd2lzZSB0aGUgcHJpY2VzIG9mIHRoZSBiYXNlY2hhaW4uIFRoZSBjdXJyZW50IHByaWNlcyBhcmUgb2J0YWluZWQgZnJvbSB0aGUg" + - "Y29uZmlnIHBhcmFtIDIwIGZvciB0aGUgbWFzdGVyY2hhaW4gYW5kIGNvbmZpZyBwYXJhbSAyMSBmb3IgdGhlIGJhc2VjaGFpbiBvZiBUT04gQmxvY2tjaGFpbi4KLy8v" + - "Ci8vLyBXaGVuIHRoZSBgZ2FzVXNlZGAgaXMgbGVzcyB0aGFuIGEgY2VydGFpbiB0aHJlc2hvbGQgY2FsbGVkIGBmbGF0X2dhc19saW1pdGAsIHRoZXJlJ3MgYSBtaW5p" + - "bXVtIHByaWNlIHRvIHBheSBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgYGZsYXRfZ2FzX3ByaWNlYC4gVGhlIGxlc3MgZ2FzIGlzIHVzZWQgYmVsb3cgdGhpcyB0aHJlc2hv" + - "bGQsIHRoZSBoaWdoZXIgdGhlIG1pbmltdW0gcHJpY2Ugd2lsbCBiZS4gU2VlIHRoZSBleGFtcGxlIGZvciBgZ2V0U2ltcGxlQ29tcHV0ZUZlZSgpYCB0byBkZXJpdmUg" + - "dGhhdCB0aHJlc2hvbGQuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZTogSW50ID0gZ2V0Q29tcHV0ZUZlZSgxXzAwMCwg" + - "ZmFsc2UpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA1OiBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdIOKAlCBU" + - "aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHNwZWNpZnkgbmVnYXRpdmUgdmFsdWUgb2YgYGdhc1VzZWRgLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFu" + - "Zy5vcmcvcmVmL2NvcmUtZ2FzI2dldGNvbXB1dGVmZWUKLy8vCi8vLyBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdOiBodHRwczovL2RvY3MudGFjdC1sYW5n" + - "Lm9yZy9ib29rL2V4aXQtY29kZXMjNQovLy8KYXNtIGZ1biBnZXRDb21wdXRlRmVlKGdhc1VzZWQ6IEludCwgaXNNYXN0ZXJjaGFpbjogQm9vbCk6IEludCB7IEdFVEdB" + - "U0ZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBTaW1pbGFyIHRvIGBnZXRDb21wdXRlRmVlKClgLCBi" + - "dXQgd2l0aG91dCB0aGUgYGZsYXRfZ2FzX3ByaWNlYCwgaS5lLiB3aXRob3V0IGEgbWluaW11bSBwcmljZSB0byBwYXkgaWYgdGhlIGBnYXNVc2VkYCBpcyBsZXNzIHRo" + - "YW4gYSBjZXJ0YWluIHRocmVzaG9sZCBjYWxsZWQgYGZsYXRfZ2FzX2xpbWl0YC4gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyBvbmx5IHRoZSBgZ2FzVXNlZGAgdGltZXMg" + - "dGhlIGN1cnJlbnQgZ2FzIHByaWNlLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBmZWUgPSBnZXRDb21wdXRlRmVlKDAsIGZh" + - "bHNlKTsKLy8vICAgICBsZXQgZmVlTm9GbGF0ID0gZ2V0U2ltcGxlQ29tcHV0ZUZlZSgwLCBmYWxzZSk7Ci8vLyAgICAgbGV0IG1heEZsYXRQcmljZSA9IGZlZSAtIGZl" + - "ZU5vRmxhdDsKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogNTogW0ludGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXSDigJQg" + - "VGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBzcGVjaWZ5IG5lZ2F0aXZlIG51bWJlciBvZiBgY2VsbHNgLCBgYml0c2Agb3IgYHNlY29uZHNgLgovLy8KLy8vIFNlZToK" + - "Ly8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtZ2FzI2dldHNpbXBsZWNvbXB1dGVmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5v" + - "cmcvcmVmL2NvcmUtZ2FzI2dldGNvbXB1dGVmZWUKLy8vCi8vLyBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9y" + - "Zy9ib29rL2V4aXQtY29kZXMjNQovLy8KYXNtIGZ1biBnZXRTaW1wbGVDb21wdXRlRmVlKGdhc1VzZWQ6IEludCwgaXNNYXN0ZXJjaGFpbjogQm9vbCk6IEludCB7IEdF" + - "VEdBU0ZFRVNJTVBMRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5z" + - "IHRoZSBmb3J3YXJkIGZlZSBpbiBuYW5vVG9uY29pbnMgYEludGAgZm9yIGFuIG91dGdvaW5nIG1lc3NhZ2UgY29uc2lzdGluZyBvZiBhIGdpdmVuIG51bWJlciBvZiBg" + - "Y2VsbHNgIGFuZCBgYml0c2AuIFVzZXMgdGhlIHByaWNlcyBvZiB0aGUgbWFzdGVyY2hhaW4gaWYgYGlzTWFzdGVyY2hhaW5gIGlzIGB0cnVlYCwgb3RoZXJ3aXNlIHRo" + - "ZSBwcmljZXMgb2YgdGhlIGJhc2VjaGFpbi4gVGhlIGN1cnJlbnQgcHJpY2VzIGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBjb25maWcgcGFyYW0gMjQgZm9yIHRoZSBtYXN0" + - "ZXJjaGFpbiBhbmQgY29uZmlnIHBhcmFtIDI1IGZvciB0aGUgYmFzZWNoYWluIG9mIFRPTiBCbG9ja2NoYWluLgovLy8KLy8vIElmIGJvdGggdGhlIHNvdXJjZSBhbmQg" + - "dGhlIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBhcmUgaW4gdGhlIGJhc2VjaGFpbiwgdGhlbiBzcGVjaWZ5IGBpc01hc3RlcmNoYWluYCBhcyBgZmFsc2VgLiBPdGhlcndp" + - "c2UsIHNwZWNpZnkgYHRydWVgLgovLy8KLy8vIE5vdGUsIHRoYXQgc3BlY2lmeWluZyB2YWx1ZXMgb2YgYGNlbGxzYCBhbmQgYGJpdHNgIGhpZ2hlciB0aGFuIHRoZWly" + - "IG1heGltdW0gdmFsdWVzIGxpc3RlZCBpbiBhY2NvdW50IHN0YXRlIGxpbWl0cyAoYG1heF9tc2dfY2VsbHNgIGFuZCBgbWF4X21zZ19iaXRzYCkgd2lsbCBoYXZlIHRo" + - "ZSBzYW1lIHJlc3VsdCBhcyB3aXRoIHNwZWNpZnlpbmcgdGhlIGV4YWN0IGxpbWl0cy4KLy8vCi8vLyBIb3dldmVyLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZXMgb2Yg" + - "YGNlbGxzYCBhbmQgYGJpdHNgLCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyBhZGRzIHRoZSBtaW5pbXVtIHByaWNlIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBgbHVtcF9wcmlj" + - "ZWAuIFNlZSB0aGUgZXhhbXBsZSBmb3IgYGdldFNpbXBsZUZvcndhcmRGZWUoKWAgdG8gZGVyaXZlIGl0LiBJbiBhZGRpdGlvbiwgbWFrZSBzdXJlIHlvdSB0YWtlIGlu" + - "dG8gYWNjb3VudCB0aGUgZGVkdXBsaWNhdGlvbiBvZiBjZWxscyB3aXRoIHRoZSBzYW1lIGhhc2gsIHNpbmNlIGZvciBleGFtcGxlIHRoZSByb290IGNlbGwgYW5kIGl0" + - "cyBkYXRhIGJpdHMgZG9uJ3QgY291bnQgdG93YXJkcyB0aGUgZm9yd2FyZCBmZWUgYW5kIGFyZSBjb3ZlcmVkIGJ5IHRoZSBgbHVtcF9wcmljZWAuCi8vLwovLy8gYGBg" + - "dGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZTogSW50ID0gZ2V0Rm9yd2FyZEZlZSgxXzAwMCwgMV8wMDAsIGZhbHNlKTsKLy8vIH0KLy8vIGBg" + - "YAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogNTogW0ludGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGlu" + - "ZyB0byBzcGVjaWZ5IG5lZ2F0aXZlIG51bWJlciBvZiBgY2VsbHNgIG9yIGBiaXRzYC4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3Jn" + - "L3JlZi9jb3JlLWdhcyNnZXRmb3J3YXJkZmVlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWdhcyNnZXRzaW1wbGVmb3J3YXJkZmVlCi8v" + - "LyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWdhcyNnZXRvcmlnaW5hbGZ3ZGZlZQovLy8KLy8vIFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCBy" + - "YW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwphc20gZnVuIGdldEZvcndhcmRGZWUoY2VsbHM6IEludCwgYml0czog" + - "SW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VURk9SV0FSREZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUu" + - "MC4KLy8vCi8vLyBTaW1pbGFyIHRvIGBnZXRGb3J3YXJkRmVlKClgLCBidXQgd2l0aG91dCB0aGUgYGx1bXBfcHJpY2VgLCBpLmUuIHdpdGhvdXQgdGhlIG1pbmltdW0g" + - "cHJpY2UgdG8gcGF5IHJlZ2FyZGxlc3Mgb2YgdGhlIGFtb3VudCBvZiBgY2VsbHNgIG9yIGBiaXRzYC4gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyBvbmx5IHRoZSBgY2Vs" + - "bHNgIHRpbWVzIHRoZSBjdXJyZW50IGNlbGwgcHJpY2UgcGx1cyBgYml0c2AgdGltZXMgdGhlIGN1cnJlbnQgYml0IHByaWNlLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1" + - "biBleGFtcGxlKCkgewovLy8gICAgIGxldCBmZWUgPSBnZXRGb3J3YXJkRmVlKDFfMDAwLCAxXzAwMCwgZmFsc2UpOwovLy8gICAgIGxldCBmZWVOb0x1bXAgPSBnZXRT" + - "aW1wbGVGb3J3YXJkRmVlKDFfMDAwLCAxXzAwMCwgZmFsc2UpOwovLy8gICAgIGxldCBsdW1wUHJpY2UgPSBmZWUgLSBmZWVOb0x1bXA7Ci8vLyB9Ci8vLyBgYGAKLy8v" + - "Ci8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8g" + - "c3BlY2lmeSBuZWdhdGl2ZSBudW1iZXIgb2YgYGNlbGxzYCBvciBgYml0c2AuCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYv" + - "Y29yZS1nYXMjZ2V0c2ltcGxlZm9yd2FyZGZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1nYXMjZ2V0Zm9yd2FyZGZlZQovLy8KLy8v" + - "IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwphc20gZnVuIGdldFNp" + - "bXBsZUZvcndhcmRGZWUoY2VsbHM6IEludCwgYml0czogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VURk9SV0FSREZFRVNJTVBMRSB9CgovLy8gR2xv" + - "YmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBzby1jYWxsZWQgX29yaWdpbmFs" + - "XyBmb3J3YXJkIGZlZSBpbiBuYW5vVG9uY29pbiBgSW50YCBmb3IgYSBtZXNzYWdlIGJhc2VkIG9uIHRoZSBnaXZlbiBgZndkRmVlYCBvZiB0aGlzIG1lc3NhZ2UsIHdo" + - "aWNoIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nIGBnZXRGb3J3YXJkRmVlKClgLiBJZiBib3RoIHRoZSBzb3VyY2UgYW5kIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNz" + - "ZXMgYXJlIGluIHRoZSBiYXNlY2hhaW4sIHNwZWNpZnkgYGlzTWFzdGVyY2hhaW5gIGFzIGBmYWxzZWAuIE90aGVyd2lzZSwgc3BlY2lmeSBgdHJ1ZWAuCi8vLwovLy8g" + - "VGhlIHJlc3VsdCBpcyBjb21wdXRlZCB1c2luZyB0aGUgYGZpcnN0X2ZyYWNgIHZhbHVlLCB3aGljaCBpcyBvYnRhaW5lZCBmcm9tIGNvbmZpZyBwYXJhbSAyNCBmb3Ig" + - "dGhlIG1hc3RlcmNoYWluIGFuZCBjb25maWcgcGFyYW0gMjUgZm9yIHRoZSBiYXNlY2hhaW4gb2YgVE9OIEJsb2NrY2hhaW4uIER1ZSB0byB0aGUgY3VycmVudCB2YWx1" + - "ZSBvZiBgZmlyc3RfZnJhY2AgZm9yIGFsbCB3b3JrY2hhaW5zLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgY2hlYXBlciBlcXVpdmFsZW50IGNhbGN1bGF0aW9uIG9m" + - "IGBmd2RGZWUgKiAzIC8gMmAuIFRoaXMgcmF0aW8gbWlnaHQgY2hhbmdlLCBzbyBpdCBpcyBiZXR0ZXIgbm90IHRvIGhhcmRjb2RlIGl0IGFuZCB1c2UgdGhpcyBmdW5j" + - "dGlvbiBpbnN0ZWFkLgovLy8KLy8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIHRoZSBvdXRnb2luZyBtZXNzYWdlIGRlcGVuZHMgaGVhdmlseSBvbiB0" + - "aGUgc3RydWN0dXJlIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlLCBzbyB5b3UgY2FuIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgZm9yd2FyZCBmZWUgZm9yIHlvdXIgb3V0" + - "Z29pbmcgbWVzc2FnZSBiYXNlZCBvbiB0aGUgZmVlIHRoZSBzZW5kZXIgcGFpZC4gQ2FsY3VsYXRpbmcgdGhlIGV4YWN0IGZlZSB3aXRoIG5hbm9Ub25jb2luLWxldmVs" + - "IHByZWNpc2lvbiBjYW4gYmUgdmVyeSBleHBlbnNpdmUsIHNvIHRoZSBhcHByb3hpbWF0aW9uIGdpdmVuIGJ5IHRoaXMgZnVuY3Rpb24gaXMgb2Z0ZW4gZ29vZCBlbm91" + - "Z2guCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgLy8gQ29udGV4dC5yZWFkRm9yd2FyZEZlZSgpIGFwcGxpZXMgZ2V0T3JpZ2luYWxG" + - "d2RGZWUoKSBhdCB0aGUgZW5kCi8vLyAgICAgbGV0IG9yaWdGd2RGZWU6IEludCA9IGNvbnRleHQoKS5yZWFkRm9yd2FyZEZlZSgpOwovLy8KLy8vICAgICAvLyBUaGVy" + - "ZWZvcmUsIGNhbGxpbmcgZ2V0T3JpZ2luYWxGd2RGZWUoKSBvbiB0aGF0IHZhbHVlIGlzIHJlZHVuZGFudAovLy8gICAgIGxldCBvcmlnRndkRmVlMjogSW50ID0gZ2V0" + - "T3JpZ2luYWxGd2RGZWUob3JpZ0Z3ZEZlZSwgZmFsc2UpOwovLy8KLy8vICAgICAvLyDijIgoMiAqIG9yaWdGd2RGZWUyKSAvIG9yaWdGd2RGZWXijIkgaXMgZXF1YWwg" + - "dG8gMwovLy8gICAgIG11bGRpdmMoMiwgb3JpZ0Z3ZEZlZTIsIG9yaWdGd2RGZWUpID09IDM7IC8vIHRydWUsIGJ1dCB0aGlzIHJlbGF0aW9uCi8vLyAgICAgICAgICAg" + - "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIGNoYW5nZSBpbiB0aGUgZnV0dXJlCi8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQg" + - "Y29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gc3BlY2lmeSBhIG5lZ2F0" + - "aXZlIHZhbHVlIG9mIGBmd2RGZWVgLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtZ2FzI2dldG9yaWdpbmFsZndk" + - "ZmVlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWdhcyNnZXRmb3J3YXJkZmVlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3Jn" + - "L3JlZi9jb3JlLWNvbnRleHRzdGF0ZSNjb250ZXh0cmVhZGZvcndhcmRmZWUKLy8vCi8vLyBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdOiBodHRwczovL2Rv" + - "Y3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjNQovLy8KYXNtIGZ1biBnZXRPcmlnaW5hbEZ3ZEZlZShmd2RGZWU6IEludCwgaXNNYXN0ZXJjaGFpbjogQm9v" + - "bCk6IEludCB7IEdFVE9SSUdJTkFMRldERkVFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNi4wLgovLy8KLy8vIFNldHMgdGhl" + - "IGBnYXNfbGltaXRgIHRvIHRoZSBgSW50YCBgbGltaXRgIGFuZCByZXNldHMgdGhlIGBnYXNfY3JlZGl0YCB0byAwLiBOb3RlIHRoYXQgc3BlY2lmeWluZyB0aGUgYGxp" + - "bWl0YCBoaWdoZXIgdGhhbiB0aGUgbWF4aW11bSBhbGxvd2VkIHZhbHVlIG9mIDJeNjMgLSAxIHdpbGwgaGF2ZSB0aGUgc2FtZSByZXN1bHQgYXMgd2l0aCBzcGVjaWZ5" + - "aW5nIHRoYXQgZXhhY3QgbWF4aW11bSBvciBjYWxsaW5nIGBhY2NlcHRNZXNzYWdlKClgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAg" + - "IHNldEdhc0xpbWl0KDQyMDAwKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogLTE0OiBbT3V0IG9mIGdhcyBlcnJvcl0g4oCU" + - "IFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gc3BlY2lmeSBhIG5lZ2F0aXZlIG9yIGluc3VmZmljaWVudCB2YWx1ZSBvZiBgbGltaXRgLgovLy8KLy8vIFNlZTogaHR0" + - "cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtZ2FzI3NldGdhc2xpbWl0Ci8vLwovLy8gW091dCBvZiBnYXMgZXJyb3JdOiBodHRwczovL2RvY3MudGFjdC1s" + - "YW5nLm9yZy9ib29rL2V4aXQtY29kZXMjLTE0Ci8vLwphc20gZnVuIHNldEdhc0xpbWl0KGxpbWl0OiBJbnQpIHsgU0VUR0FTTElNSVQgfQoKLy8vIEdsb2JhbCBmdW5j" + - "dGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjAuCi8vLwovLy8gR2VuZXJhdGVzIGFuZCByZXR1cm5zIGFuIHVuc2lnbmVkIDI1Ni1iaXQgYEludGAgc2VlZCBm" + - "b3IgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgcmVzdWx0aW5nIHNlZWQgaXMgY29tbW9ubHkgdXNlZCB3aXRoIHRoZSBgc2V0U2VlZCgpYCBhbmQgYG5h" + - "dGl2ZVJhbmRvbWl6ZSgpYCBmdW5jdGlvbnMuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IHNlZWQ6IEludCA9IGdldFNlZWQo" + - "KTsKLy8vICAgICBzZXRTZWVkKHNlZWQpOyAvLyBmcm9tIG5vdyBvbiB0aGUgcmVzdWx0cyBvZiBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvcgovLy8gICAgICAg" + - "ICAgICAgICAgICAgIC8vIGFyZSBjb21wbGV0ZWx5IGRldGVybWluZWQgYnkgdGhlIHNlZWQsIHdoaWNoIGNhbiBiZSBoYW5keSBpbiB0ZXN0cywKLy8vICAgICAgICAg" + - "ICAgICAgICAgICAvLyBidXQgbXVzdCBub3QgYmUgdXNlZCBpbiBwcm9kdWN0aW9uIGNvZGUhCi8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8v" + - "ZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXJhbmRvbSNnZXRzZWVkCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXJhbmRvbSNzZXRz" + - "ZWVkCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXJhbmRvbSNuYXRpdmVyYW5kb21pemUKLy8vCmFzbSBmdW4gZ2V0U2VlZCgpOiBJbnQg" + - "eyBSQU5EU0VFRCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMC4KLy8vCi8vLyBTZXRzIHRoZSBzZWVkIG9mIHRoZSByYW5k" + - "b20gbnVtYmVyIGdlbmVyYXRvciB0byB0aGUgdW5zaWduZWQgMjU2LWJpdCBgSW50YCBgc2VlZGAgd2hpY2ggY2FuIGJlIG9idGFpbmVkIHdpdGggdGhlIGBnZXRTZWVk" + - "KClgIGZ1bmN0aW9uLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBzZWVkOiBJbnQgPSBnZXRTZWVkKCk7Ci8vLyAgICAgc2V0" + - "U2VlZChzZWVkKTsgLy8gZnJvbSBub3cgb24gdGhlIHJlc3VsdHMgb2YgcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKLy8vICAgICAgICAgICAgICAgICAgICAv" + - "LyBhcmUgY29tcGxldGVseSBkZXRlcm1pbmVkIGJ5IHRoZSBzZWVkLCB3aGljaCBjYW4gYmUgaGFuZHkgaW4gdGVzdHMsCi8vLyAgICAgICAgICAgICAgICAgICAgLy8g" + - "YnV0IG11c3Qgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbiBjb2RlIQovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA1OiBbSW50" + - "ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHNwZWNpZnkgYSBuZWdhdGl2ZSB2YWx1ZSBvZiBgc2VlZGAuCi8v" + - "LwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1yYW5kb20jc2V0c2VlZAovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5n" + - "Lm9yZy9yZWYvY29yZS1yYW5kb20jZ2V0c2VlZAovLy8KLy8vIFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3Jn" + - "L2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwphc20gZnVuIHNldFNlZWQoc2VlZDogSW50KSB7IFNFVFJBTkQgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNp" + - "bmNlIFRhY3QgMS42LjAuCi8vLwovLy8gUmV0dXJucyB0aGUgc21hcnQgY29udHJhY3QgY29kZSBgQ2VsbGAgb2J0YWluZWQgZnJvbSB0aGUgYGM3YCByZWdpc3Rlci4K" + - "Ly8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgY29kZTogQ2VsbCA9IG15Q29kZSgpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gU2Vl" + - "OiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jb250ZXh0c3RhdGUjbXljb2RlCi8vLwphc20gZnVuIG15Q29kZSgpOiBDZWxsIHsgTVlDT0RFIH0K"; + "IGFkZHJlc3NIYXNoOwp9CgppbmxpbmUgZXh0ZW5kcyBmdW4gaGFzU2FtZUJhc2VjaGFpbkFkZHJlc3NXaXRob3V0U2hhcmQoc2VsZjogU3RhdGVJbml0LCBhZGRyZXNz" + + "OiBBZGRyZXNzKTogQm9vbCB7CiAgICBsZXQgYWRkcmVzc0hhc2ggPSBwYXJzZVN0ZEFkZHJlc3MoYWRkcmVzcy5hc1NsaWNlKCkpLmFkZHJlc3M7CiAgICBsZXQgYmFz" + + "ZUFkZHJlc3MgPSBjb250cmFjdFNoYXJkQmFzZWNoYWluQWRkcmVzcyhzZWxmKTsKICAgIHJldHVybiBleHRyYWN0TG93Qml0cyhiYXNlQWRkcmVzcy5oYXNoISEsIDI1" + + "NiAtIHByZWZpeExlbmd0aCkgPT0gZXh0cmFjdExvd0JpdHMoYWRkcmVzc0hhc2gsIDI1NiAtIHByZWZpeExlbmd0aCk7Cn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uCi8v" + + "LwovLy8gQ29tcHV0ZXMgc21hcnQgY29udHJhY3QncyBgQWRkcmVzc2AgaW4gdGhlIHdvcmtjaGFpbiBJRCAwIChiYXNlY2hhaW4pIHVzaW5nIHRoZSBgU3RhdGVJbml0" + + "YCBgc2Agb2YgdGhlIGNvbnRyYWN0LiBBbGlhcyB0byBgY29udHJhY3RBZGRyZXNzRXh0KDAsIHMuY29kZSwgcy5kYXRhKWAuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVu" + + "IGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IHM6IFN0YXRlSW5pdCA9IGluaXRPZiBTb21lQ29udHJhY3QoKTsKLy8vICAgICBsZXQgZm91bmRNZVNvbWU6IEFkZHJlc3Mg" + + "PSBjb250cmFjdEFkZHJlc3Mocyk7Ci8vLyAgICAgbGV0IGFuZFNvbWVNb3JlOiBBZGRyZXNzID0gY29udHJhY3RBZGRyZXNzRXh0KDAsIHMuY29kZSwgcy5kYXRhKTsK" + + "Ly8vCi8vLyAgICAgZm91bmRNZVNvbWUgPT0gYW5kU29tZU1vcmU7IC8vIHRydWUKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRh" + + "Y3QtbGFuZy5vcmcvcmVmL2NvcmUtYWRkcmVzc2VzI2NvbnRyYWN0YWRkcmVzcwovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZGRyZXNz" + + "ZXMjY29udHJhY3RhZGRyZXNzZXh0Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhwcmVzc2lvbnMjaW5pdG9mCi8vLwppbmxpbmUgZnVuIGNv" + + "bnRyYWN0QWRkcmVzcyhzOiBTdGF0ZUluaXQpOiBBZGRyZXNzIHsKICAgIHJldHVybiBjb250cmFjdEFkZHJlc3NFeHQoMCwgcy5jb2RlLCBzLmRhdGEpOwp9CgovLy8g" + + "R2xvYmFsIGZ1bmN0aW9uLgovLy8KLy8vIFJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgc21hcnQgY29udHJhY3QgYXMgYW4gYEFkZHJlc3NgLgovLy8K" + + "Ly8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBtZU15c2VsZkFuZEk6IEFkZHJlc3MgPSBteUFkZHJlc3MoKTsKLy8vIH0KLy8vIGBgYAov" + + "Ly8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY29udGV4dHN0YXRlI215YWRkcmVzcwovLy8KYXNtIGZ1biBteUFkZHJlc3MoKTog" + + "QWRkcmVzcyB7IE1ZQUREUiB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLgovLy8KLy8vIFJldHVybnMgdGhlIG5hbm9Ub25jb2luIGBJbnRgIGJhbGFuY2Ugb2YgdGhlIHNt" + + "YXJ0IGNvbnRyYWN0IGFzIGl0IHdhcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbXB1dGUgcGhhc2Ugb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uCi8vLwovLy8gYGBg" + + "dGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGlOZWVkQURvbGxhOiBJbnQgPSBteUJhbGFuY2UoKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTog" + + "aHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY29udGV4dHN0YXRlI215YmFsYW5jZQovLy8KYXNtIGZ1biBteUJhbGFuY2UoKTogSW50IHsgQkFMQU5D" + + "RSBGSVJTVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBSZXR1cm5zIHRoZSBuYW5vVG9uY29pbiBgSW50" + + "YCBhbW91bnQgb2YgZ2FzIGNvbnN1bWVkIGJ5IFRWTSBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyBmYXIuIFRoZSByZXN1bHRpbmcgdmFsdWUgaW5jbHVkZXMg" + + "dGhlIGNvc3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBnYXM6IEludCA9IGdh" + + "c0NvbnN1bWVkKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWNvbnRleHRzdGF0ZSNnYXNjb25z" + + "dW1lZAovLy8KYXNtIGZ1biBnYXNDb25zdW1lZCgpOiBJbnQgeyBHQVNDT05TVU1FRCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAx" + + "LjUuMC4KLy8vCi8vLyBSZXR1cm5zIHRoZSBuYW5vVG9uY29pbiBgSW50YCBhbW91bnQgb2YgdGhlIGFjY3VtdWxhdGVkIHN0b3JhZ2UgZmVlIGRlYnQuIFN0b3JhZ2Ug" + + "ZmVlcyBhcmUgZGVkdWN0ZWQgZnJvbSB0aGUgaW5jb21pbmcgbWVzc2FnZSB2YWx1ZSBiZWZvcmUgdGhlIG5ldyBjb250cmFjdCBiYWxhbmNlIGlzIGNhbGN1bGF0ZWQu" + + "Ci8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGRlYnQ6IEludCA9IG15U3RvcmFnZUR1ZSgpOwovLy8gfQovLy8gYGBgCi8vLwov" + + "Ly8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jb250ZXh0c3RhdGUjbXlzdG9yYWdlZHVlCi8vLwphc20gZnVuIG15U3RvcmFnZUR1ZSgp" + + "OiBJbnQgeyBEVUVQQVlNRU5UIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIENhbGN1bGF0ZXMgYW5kIHJl" + + "dHVybnMgdGhlIHN0b3JhZ2UgZmVlIGluIG5hbm9Ub25jb2lucyBgSW50YCBmb3Igc3RvcmluZyBhIGNvbnRyYWN0IHdpdGggYSBnaXZlbiBudW1iZXIgb2YgYGNlbGxz" + + "YCBhbmQgYGJpdHNgIGZvciBhIG51bWJlciBvZiBgc2Vjb25kc2AuIFVzZXMgdGhlIHByaWNlcyBvZiB0aGUgbWFzdGVyY2hhaW4gaWYgYGlzTWFzdGVyY2hhaW5gIGlz" + + "IGB0cnVlYCwgb3RoZXJ3aXNlIHRoZSBwcmljZXMgb2YgdGhlIGJhc2VjaGFpbi4gVGhlIGN1cnJlbnQgcHJpY2VzIGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBjb25maWcg" + + "cGFyYW0gMTggb2YgVE9OIEJsb2NrY2hhaW4uCi8vLwovLy8gTm90ZSwgdGhhdCBzcGVjaWZ5aW5nIHZhbHVlcyBvZiBgY2VsbHNgIGFuZCBgYml0c2AgaGlnaGVyIHRo" + + "YW4gdGhlaXIgbWF4aW11bSB2YWx1ZXMgbGlzdGVkIGluIGFjY291bnQgc3RhdGUgbGltaXRzIChgbWF4X2FjY19zdGF0ZV9jZWxsc2AgYW5kIGBtYXhfYWNjX3N0YXRl" + + "X2JpdHNgKSB3aWxsIGhhdmUgdGhlIHNhbWUgcmVzdWx0IGFzIHdpdGggc3BlY2lmeWluZyB0aGUgZXhhY3QgbGltaXRzLiBJbiBhZGRpdGlvbiwgbWFrZSBzdXJlIHlv" + + "dSB0YWtlIGludG8gYWNjb3VudCB0aGUgZGVkdXBsaWNhdGlvbiBvZiBjZWxscyB3aXRoIHRoZSBzYW1lIGhhc2guCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1w" + + "bGUoKSB7Ci8vLyAgICAgbGV0IGZlZTogSW50ID0gZ2V0U3RvcmFnZUZlZSgxXzAwMCwgMV8wMDAsIDFfMDAwLCBmYWxzZSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAj" + + "IyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gc3BlY2lm" + + "eSBuZWdhdGl2ZSBudW1iZXIgb2YgYGNlbGxzYCwgYGJpdHNgIG9yIGBzZWNvbmRzYC4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9j" + + "b3JlLWdhcyNnZXRzdG9yYWdlZmVlCi8vLwovLy8gW0ludGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9l" + + "eGl0LWNvZGVzIzUKLy8vCmFzbSBmdW4gZ2V0U3RvcmFnZUZlZShjZWxsczogSW50LCBiaXRzOiBJbnQsIHNlY29uZHM6IEludCwgaXNNYXN0ZXJjaGFpbjogQm9vbCk6" + + "IEludCB7IEdFVFNUT1JBR0VGRUUgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQ2FsY3VsYXRlcyBhbmQg" + + "cmV0dXJucyB0aGUgY29tcHV0ZSBmZWUgaW4gbmFub1RvbmNvaW5zIGBJbnRgIGZvciBhIHRyYW5zYWN0aW9uIHRoYXQgY29uc3VtZWQgYGdhc1VzZWRgIGFtb3VudCBv" + + "ZiBnYXMuIFVzZXMgdGhlIHByaWNlcyBvZiB0aGUgbWFzdGVyY2hhaW4gaWYgYGlzTWFzdGVyY2hhaW5gIGlzIGB0cnVlYCwgb3RoZXJ3aXNlIHRoZSBwcmljZXMgb2Yg" + + "dGhlIGJhc2VjaGFpbi4gVGhlIGN1cnJlbnQgcHJpY2VzIGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBjb25maWcgcGFyYW0gMjAgZm9yIHRoZSBtYXN0ZXJjaGFpbiBhbmQg" + + "Y29uZmlnIHBhcmFtIDIxIGZvciB0aGUgYmFzZWNoYWluIG9mIFRPTiBCbG9ja2NoYWluLgovLy8KLy8vIFdoZW4gdGhlIGBnYXNVc2VkYCBpcyBsZXNzIHRoYW4gYSBj" + + "ZXJ0YWluIHRocmVzaG9sZCBjYWxsZWQgYGZsYXRfZ2FzX2xpbWl0YCwgdGhlcmUncyBhIG1pbmltdW0gcHJpY2UgdG8gcGF5IGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBg" + + "ZmxhdF9nYXNfcHJpY2VgLiBUaGUgbGVzcyBnYXMgaXMgdXNlZCBiZWxvdyB0aGlzIHRocmVzaG9sZCwgdGhlIGhpZ2hlciB0aGUgbWluaW11bSBwcmljZSB3aWxsIGJl" + + "LiBTZWUgdGhlIGV4YW1wbGUgZm9yIGBnZXRTaW1wbGVDb21wdXRlRmVlKClgIHRvIGRlcml2ZSB0aGF0IHRocmVzaG9sZC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4g" + + "ZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgZmVlOiBJbnQgPSBnZXRDb21wdXRlRmVlKDFfMDAwLCBmYWxzZSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQg" + + "Y29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gc3BlY2lmeSBuZWdhdGl2" + + "ZSB2YWx1ZSBvZiBgZ2FzVXNlZGAuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1nYXMjZ2V0Y29tcHV0ZWZlZQovLy8KLy8v" + + "IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwphc20gZnVuIGdldENv" + + "bXB1dGVGZWUoZ2FzVXNlZDogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VUR0FTRkVFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBz" + + "aW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIFNpbWlsYXIgdG8gYGdldENvbXB1dGVGZWUoKWAsIGJ1dCB3aXRob3V0IHRoZSBgZmxhdF9nYXNfcHJpY2VgLCBpLmUuIHdp" + + "dGhvdXQgYSBtaW5pbXVtIHByaWNlIHRvIHBheSBpZiB0aGUgYGdhc1VzZWRgIGlzIGxlc3MgdGhhbiBhIGNlcnRhaW4gdGhyZXNob2xkIGNhbGxlZCBgZmxhdF9nYXNf" + + "bGltaXRgLiBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIG9ubHkgdGhlIGBnYXNVc2VkYCB0aW1lcyB0aGUgY3VycmVudCBnYXMgcHJpY2UuCi8vLwovLy8gYGBgdGFjdAov" + + "Ly8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZSA9IGdldENvbXB1dGVGZWUoMCwgZmFsc2UpOwovLy8gICAgIGxldCBmZWVOb0ZsYXQgPSBnZXRTaW1wbGVD" + + "b21wdXRlRmVlKDAsIGZhbHNlKTsKLy8vICAgICBsZXQgbWF4RmxhdFByaWNlID0gZmVlIC0gZmVlTm9GbGF0OwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0" + + "IGNvZGVzCi8vLwovLy8gKiA1OiBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHNwZWNpZnkgbmVnYXRp" + + "dmUgbnVtYmVyIG9mIGBjZWxsc2AsIGBiaXRzYCBvciBgc2Vjb25kc2AuCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29y" + + "ZS1nYXMjZ2V0c2ltcGxlY29tcHV0ZWZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1nYXMjZ2V0Y29tcHV0ZWZlZQovLy8KLy8vIFtJ" + + "bnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwphc20gZnVuIGdldFNpbXBs" + + "ZUNvbXB1dGVGZWUoZ2FzVXNlZDogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VUR0FTRkVFU0lNUExFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2" + + "YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlIGZvcndhcmQgZmVlIGluIG5hbm9Ub25jb2lucyBgSW50YCBm" + + "b3IgYW4gb3V0Z29pbmcgbWVzc2FnZSBjb25zaXN0aW5nIG9mIGEgZ2l2ZW4gbnVtYmVyIG9mIGBjZWxsc2AgYW5kIGBiaXRzYC4gVXNlcyB0aGUgcHJpY2VzIG9mIHRo" + + "ZSBtYXN0ZXJjaGFpbiBpZiBgaXNNYXN0ZXJjaGFpbmAgaXMgYHRydWVgLCBvdGhlcndpc2UgdGhlIHByaWNlcyBvZiB0aGUgYmFzZWNoYWluLiBUaGUgY3VycmVudCBw" + + "cmljZXMgYXJlIG9idGFpbmVkIGZyb20gdGhlIGNvbmZpZyBwYXJhbSAyNCBmb3IgdGhlIG1hc3RlcmNoYWluIGFuZCBjb25maWcgcGFyYW0gMjUgZm9yIHRoZSBiYXNl" + + "Y2hhaW4gb2YgVE9OIEJsb2NrY2hhaW4uCi8vLwovLy8gSWYgYm90aCB0aGUgc291cmNlIGFuZCB0aGUgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFyZSBpbiB0aGUgYmFz" + + "ZWNoYWluLCB0aGVuIHNwZWNpZnkgYGlzTWFzdGVyY2hhaW5gIGFzIGBmYWxzZWAuIE90aGVyd2lzZSwgc3BlY2lmeSBgdHJ1ZWAuCi8vLwovLy8gTm90ZSwgdGhhdCBz" + + "cGVjaWZ5aW5nIHZhbHVlcyBvZiBgY2VsbHNgIGFuZCBgYml0c2AgaGlnaGVyIHRoYW4gdGhlaXIgbWF4aW11bSB2YWx1ZXMgbGlzdGVkIGluIGFjY291bnQgc3RhdGUg" + + "bGltaXRzIChgbWF4X21zZ19jZWxsc2AgYW5kIGBtYXhfbXNnX2JpdHNgKSB3aWxsIGhhdmUgdGhlIHNhbWUgcmVzdWx0IGFzIHdpdGggc3BlY2lmeWluZyB0aGUgZXhh" + + "Y3QgbGltaXRzLgovLy8KLy8vIEhvd2V2ZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlcyBvZiBgY2VsbHNgIGFuZCBgYml0c2AsIHRoaXMgZnVuY3Rpb24gYWx3YXlz" + + "IGFkZHMgdGhlIG1pbmltdW0gcHJpY2UgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBsdW1wX3ByaWNlYC4gU2VlIHRoZSBleGFtcGxlIGZvciBgZ2V0U2ltcGxlRm9yd2Fy" + + "ZEZlZSgpYCB0byBkZXJpdmUgaXQuIEluIGFkZGl0aW9uLCBtYWtlIHN1cmUgeW91IHRha2UgaW50byBhY2NvdW50IHRoZSBkZWR1cGxpY2F0aW9uIG9mIGNlbGxzIHdp" + + "dGggdGhlIHNhbWUgaGFzaCwgc2luY2UgZm9yIGV4YW1wbGUgdGhlIHJvb3QgY2VsbCBhbmQgaXRzIGRhdGEgYml0cyBkb24ndCBjb3VudCB0b3dhcmRzIHRoZSBmb3J3" + + "YXJkIGZlZSBhbmQgYXJlIGNvdmVyZWQgYnkgdGhlIGBsdW1wX3ByaWNlYC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgZmVl" + + "OiBJbnQgPSBnZXRGb3J3YXJkRmVlKDFfMDAwLCAxXzAwMCwgZmFsc2UpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA1OiBb" + + "SW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2Ag" + + "b3IgYGJpdHNgLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtZ2FzI2dldGZvcndhcmRmZWUKLy8vICogaHR0cHM6" + + "Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtZ2FzI2dldHNpbXBsZWZvcndhcmRmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUt" + + "Z2FzI2dldG9yaWdpbmFsZndkZmVlCi8vLwovLy8gW0ludGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9l" + + "eGl0LWNvZGVzIzUKLy8vCmFzbSBmdW4gZ2V0Rm9yd2FyZEZlZShjZWxsczogSW50LCBiaXRzOiBJbnQsIGlzTWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRGT1JX" + + "QVJERkVFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIFNpbWlsYXIgdG8gYGdldEZvcndhcmRGZWUoKWAs" + + "IGJ1dCB3aXRob3V0IHRoZSBgbHVtcF9wcmljZWAsIGkuZS4gd2l0aG91dCB0aGUgbWluaW11bSBwcmljZSB0byBwYXkgcmVnYXJkbGVzcyBvZiB0aGUgYW1vdW50IG9m" + + "IGBjZWxsc2Agb3IgYGJpdHNgLiBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIG9ubHkgdGhlIGBjZWxsc2AgdGltZXMgdGhlIGN1cnJlbnQgY2VsbCBwcmljZSBwbHVzIGBi" + + "aXRzYCB0aW1lcyB0aGUgY3VycmVudCBiaXQgcHJpY2UuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZSA9IGdldEZvcndh" + + "cmRGZWUoMV8wMDAsIDFfMDAwLCBmYWxzZSk7Ci8vLyAgICAgbGV0IGZlZU5vTHVtcCA9IGdldFNpbXBsZUZvcndhcmRGZWUoMV8wMDAsIDFfMDAwLCBmYWxzZSk7Ci8v" + + "LyAgICAgbGV0IGx1bXBQcmljZSA9IGZlZSAtIGZlZU5vTHVtcDsKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogNTogW0ludGVn" + + "ZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBzcGVjaWZ5IG5lZ2F0aXZlIG51bWJlciBvZiBgY2VsbHNgIG9yIGBi" + + "aXRzYC4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWdhcyNnZXRzaW1wbGVmb3J3YXJkZmVlCi8vLyAqIGh0dHBz" + + "Oi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWdhcyNnZXRmb3J3YXJkZmVlCi8vLwovLy8gW0ludGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXTogaHR0cHM6" + + "Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzUKLy8vCmFzbSBmdW4gZ2V0U2ltcGxlRm9yd2FyZEZlZShjZWxsczogSW50LCBiaXRzOiBJbnQsIGlz" + + "TWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRGT1JXQVJERkVFU0lNUExFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4w" + + "LgovLy8KLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlIHNvLWNhbGxlZCBfb3JpZ2luYWxfIGZvcndhcmQgZmVlIGluIG5hbm9Ub25jb2luIGBJbnRgIGZvciBh" + + "IG1lc3NhZ2UgYmFzZWQgb24gdGhlIGdpdmVuIGBmd2RGZWVgIG9mIHRoaXMgbWVzc2FnZSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGJ5IGNhbGxpbmcgYGdldEZvcndh" + + "cmRGZWUoKWAuIElmIGJvdGggdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBhcmUgaW4gdGhlIGJhc2VjaGFpbiwgc3BlY2lmeSBgaXNNYXN0" + + "ZXJjaGFpbmAgYXMgYGZhbHNlYC4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGB0cnVlYC4KLy8vCi8vLyBUaGUgcmVzdWx0IGlzIGNvbXB1dGVkIHVzaW5nIHRoZSBgZmlyc3Rf" + + "ZnJhY2AgdmFsdWUsIHdoaWNoIGlzIG9idGFpbmVkIGZyb20gY29uZmlnIHBhcmFtIDI0IGZvciB0aGUgbWFzdGVyY2hhaW4gYW5kIGNvbmZpZyBwYXJhbSAyNSBmb3Ig" + + "dGhlIGJhc2VjaGFpbiBvZiBUT04gQmxvY2tjaGFpbi4gRHVlIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIGBmaXJzdF9mcmFjYCBmb3IgYWxsIHdvcmtjaGFpbnMsIHRo" + + "aXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBjaGVhcGVyIGVxdWl2YWxlbnQgY2FsY3VsYXRpb24gb2YgYGZ3ZEZlZSAqIDMgLyAyYC4gVGhpcyByYXRpbyBtaWdodCBjaGFu" + + "Z2UsIHNvIGl0IGlzIGJldHRlciBub3QgdG8gaGFyZGNvZGUgaXQgYW5kIHVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQuCi8vLwovLy8gVGhpcyBmdW5jdGlvbiBjYW4g" + + "YmUgdXNlZnVsIHdoZW4gdGhlIG91dGdvaW5nIG1lc3NhZ2UgZGVwZW5kcyBoZWF2aWx5IG9uIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGluY29taW5nIG1lc3NhZ2UsIHNv" + + "IHlvdSBjYW4gdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBmb3J3YXJkIGZlZSBmb3IgeW91ciBvdXRnb2luZyBtZXNzYWdlIGJhc2VkIG9uIHRoZSBmZWUgdGhlIHNlbmRl" + + "ciBwYWlkLiBDYWxjdWxhdGluZyB0aGUgZXhhY3QgZmVlIHdpdGggbmFub1RvbmNvaW4tbGV2ZWwgcHJlY2lzaW9uIGNhbiBiZSB2ZXJ5IGV4cGVuc2l2ZSwgc28gdGhl" + + "IGFwcHJveGltYXRpb24gZ2l2ZW4gYnkgdGhpcyBmdW5jdGlvbiBpcyBvZnRlbiBnb29kIGVub3VnaC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsK" + + "Ly8vICAgICAvLyBDb250ZXh0LnJlYWRGb3J3YXJkRmVlKCkgYXBwbGllcyBnZXRPcmlnaW5hbEZ3ZEZlZSgpIGF0IHRoZSBlbmQKLy8vICAgICBsZXQgb3JpZ0Z3ZEZl" + + "ZTogSW50ID0gY29udGV4dCgpLnJlYWRGb3J3YXJkRmVlKCk7Ci8vLwovLy8gICAgIC8vIFRoZXJlZm9yZSwgY2FsbGluZyBnZXRPcmlnaW5hbEZ3ZEZlZSgpIG9uIHRo" + + "YXQgdmFsdWUgaXMgcmVkdW5kYW50Ci8vLyAgICAgbGV0IG9yaWdGd2RGZWUyOiBJbnQgPSBnZXRPcmlnaW5hbEZ3ZEZlZShvcmlnRndkRmVlLCBmYWxzZSk7Ci8vLwov" + + "Ly8gICAgIC8vIOKMiCgyICogb3JpZ0Z3ZEZlZTIpIC8gb3JpZ0Z3ZEZlZeKMiSBpcyBlcXVhbCB0byAzCi8vLyAgICAgbXVsZGl2YygyLCBvcmlnRndkRmVlMiwgb3Jp" + + "Z0Z3ZEZlZSkgPT0gMzsgLy8gdHJ1ZSwgYnV0IHRoaXMgcmVsYXRpb24KLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj" + + "YW4gY2hhbmdlIGluIHRoZSBmdXR1cmUKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogNTogW0ludGVnZXIgb3V0IG9mIGV4cGVj" + + "dGVkIHJhbmdlXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBzcGVjaWZ5IGEgbmVnYXRpdmUgdmFsdWUgb2YgYGZ3ZEZlZWAuCi8vLwovLy8gU2VlOgovLy8g" + + "KiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1nYXMjZ2V0b3JpZ2luYWxmd2RmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVm" + + "L2NvcmUtZ2FzI2dldGZvcndhcmRmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY29udGV4dHN0YXRlI2NvbnRleHRyZWFkZm9yd2Fy" + + "ZGZlZQovLy8KLy8vIFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwph" + + "c20gZnVuIGdldE9yaWdpbmFsRndkRmVlKGZ3ZEZlZTogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VUT1JJR0lOQUxGV0RGRUUgfQoKLy8vIEdsb2Jh" + + "bCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjAuCi8vLwovLy8gU2V0cyB0aGUgYGdhc19saW1pdGAgdG8gdGhlIGBJbnRgIGBsaW1pdGAgYW5kIHJl" + + "c2V0cyB0aGUgYGdhc19jcmVkaXRgIHRvIDAuIE5vdGUgdGhhdCBzcGVjaWZ5aW5nIHRoZSBgbGltaXRgIGhpZ2hlciB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFs" + + "dWUgb2YgMl42MyAtIDEgd2lsbCBoYXZlIHRoZSBzYW1lIHJlc3VsdCBhcyB3aXRoIHNwZWNpZnlpbmcgdGhhdCBleGFjdCBtYXhpbXVtIG9yIGNhbGxpbmcgYGFjY2Vw" + + "dE1lc3NhZ2UoKWAuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgc2V0R2FzTGltaXQoNDIwMDApOwovLy8gfQovLy8gYGBgCi8vLwov" + + "Ly8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiAtMTQ6IFtPdXQgb2YgZ2FzIGVycm9yXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBzcGVjaWZ5IGEgbmVn" + + "YXRpdmUgb3IgaW5zdWZmaWNpZW50IHZhbHVlIG9mIGBsaW1pdGAuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1nYXMjc2V0" + + "Z2FzbGltaXQKLy8vCi8vLyBbT3V0IG9mIGdhcyBlcnJvcl06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMtMTQKLy8vCmFzbSBmdW4g" + + "c2V0R2FzTGltaXQobGltaXQ6IEludCkgeyBTRVRHQVNMSU1JVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMC4KLy8vCi8v" + + "LyBHZW5lcmF0ZXMgYW5kIHJldHVybnMgYW4gdW5zaWduZWQgMjU2LWJpdCBgSW50YCBzZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFRoZSByZXN1" + + "bHRpbmcgc2VlZCBpcyBjb21tb25seSB1c2VkIHdpdGggdGhlIGBzZXRTZWVkKClgIGFuZCBgbmF0aXZlUmFuZG9taXplKClgIGZ1bmN0aW9ucy4KLy8vCi8vLyBgYGB0" + + "YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgc2VlZDogSW50ID0gZ2V0U2VlZCgpOwovLy8gICAgIHNldFNlZWQoc2VlZCk7IC8vIGZyb20gbm93IG9u" + + "IHRoZSByZXN1bHRzIG9mIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCi8vLyAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGNvbXBsZXRlbHkgZGV0ZXJtaW5l" + + "ZCBieSB0aGUgc2VlZCwgd2hpY2ggY2FuIGJlIGhhbmR5IGluIHRlc3RzLAovLy8gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBtdXN0IG5vdCBiZSB1c2VkIGluIHBy" + + "b2R1Y3Rpb24gY29kZSEKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtcmFuZG9tI2dldHNl" + + "ZWQKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtcmFuZG9tI3NldHNlZWQKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVm" + + "L2NvcmUtcmFuZG9tI25hdGl2ZXJhbmRvbWl6ZQovLy8KYXNtIGZ1biBnZXRTZWVkKCk6IEludCB7IFJBTkRTRUVEIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWls" + + "YWJsZSBzaW5jZSBUYWN0IDEuNi4wLgovLy8KLy8vIFNldHMgdGhlIHNlZWQgb2YgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHRvIHRoZSB1bnNpZ25lZCAyNTYt" + + "Yml0IGBJbnRgIGBzZWVkYCB3aGljaCBjYW4gYmUgb2J0YWluZWQgd2l0aCB0aGUgYGdldFNlZWQoKWAgZnVuY3Rpb24uCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4" + + "YW1wbGUoKSB7Ci8vLyAgICAgbGV0IHNlZWQ6IEludCA9IGdldFNlZWQoKTsKLy8vICAgICBzZXRTZWVkKHNlZWQpOyAvLyBmcm9tIG5vdyBvbiB0aGUgcmVzdWx0cyBv" + + "ZiBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvcgovLy8gICAgICAgICAgICAgICAgICAgIC8vIGFyZSBjb21wbGV0ZWx5IGRldGVybWluZWQgYnkgdGhlIHNlZWQs" + + "IHdoaWNoIGNhbiBiZSBoYW5keSBpbiB0ZXN0cywKLy8vICAgICAgICAgICAgICAgICAgICAvLyBidXQgbXVzdCBub3QgYmUgdXNlZCBpbiBwcm9kdWN0aW9uIGNvZGUh" + + "Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0g4oCUIFRocm93biB3" + + "aGVuIGF0dGVtcHRpbmcgdG8gc3BlY2lmeSBhIG5lZ2F0aXZlIHZhbHVlIG9mIGBzZWVkYC4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcu" + + "b3JnL3JlZi9jb3JlLXJhbmRvbSNzZXRzZWVkCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXJhbmRvbSNnZXRzZWVkCi8vLwovLy8gW0lu" + + "dGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzUKLy8vCmFzbSBmdW4gc2V0U2VlZChz" + + "ZWVkOiBJbnQpIHsgU0VUUkFORCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMC4KLy8vCi8vLyBSZXR1cm5zIHRoZSBzbWFy" + + "dCBjb250cmFjdCBjb2RlIGBDZWxsYCBvYnRhaW5lZCBmcm9tIHRoZSBgYzdgIHJlZ2lzdGVyLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8g" + + "ICAgIGxldCBjb2RlOiBDZWxsID0gbXlDb2RlKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWNv" + + "bnRleHRzdGF0ZSNteWNvZGUKLy8vCmFzbSBmdW4gbXlDb2RlKCk6IENlbGwgeyBNWUNPREUgfQo="; files["std/internal/crypto.tact"] = "Ly8vIEV4dGVuc2lvbiBmdW5jdGlvbiBmb3IgdGhlIGBDZWxsYCB0eXBlLgovLy8KLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgYW4gYEludGAgdmFsdWUgb2YgdGhl" + "IFtTSEEtMjU2XSBoYXNoIG9mIHRoZQovLy8gW3N0YW5kYXJkIGBDZWxsYCByZXByZXNlbnRhdGlvbl1bc3RkLXJlcHJlc2VudGF0aW9uXSBvZiB0aGUgZ2l2ZW4gYENl" + @@ -1599,7 +1616,9 @@ files["std/internal/math.tact"] = "dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM1Ci8vLwpmdW4gc3FydChudW06IEludCk6IEludCB7CiAgICBpZiAobnVtID09IDApIHsKICAg" + "ICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBsZXQgczogSW50ID0gbG9nMihudW0pOwogICAgbGV0IHg6IEludCA9IChzID09IDEgPyAobnVtIC0gMSkgLyAyICsgMSA6" + "IDEgPDwgKChzICsgMSkgLyAyKSk7CgogICAgbGV0IHE6IEludCA9IDA7CgogICAgZG8gewogICAgICAgIHEgPSAoZGl2YyhudW0sIHgpIC0geCkgLyAyOwogICAgICAg" + - "IHggKz0gcTsKICAgIH0gdW50aWwgKHEgPT0gMCk7CgogICAgcmV0dXJuIHg7Cn0K"; + "IHggKz0gcTsKICAgIH0gdW50aWwgKHEgPT0gMCk7CgogICAgcmV0dXJuIHg7Cn0KCmFzbSBmdW4gZXh0cmFjdExvd0JpdHModmFsdWU6IEludCwgY291bnQ6IEludCk6" + + "IEludCB7IAogICAgTU9EUE9XMgp9CgppbmxpbmUgZnVuIGNoYW5nZVNoYXJkKGhhc2g6IEludCwgc2hhcmQ6IEludCk6IEludCB7CiAgICByZXR1cm4gZXh0cmFjdExv" + + "d0JpdHMoaGFzaCwgMjU2IC0gcHJlZml4TGVuZ3RoKSB8IChzaGFyZCA8PCAoMjU2IC0gcHJlZml4TGVuZ3RoKSk7Cn0K"; files["std/internal/primitives.tact"] = "Ly8vIGBJbnRgIGlzIHRoZSBwcmltaXRpdmUgMjU3LWJpdCBzaWduZWQgaW50ZWdlciB0eXBlLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcv" + "Ym9vay9pbnRlZ2VycwovLy8KcHJpbWl0aXZlIEludDsKCi8vLyBgQm9vbGAgaXMgdGhlIGNsYXNzaWNhbCBib29sZWFuIHR5cGUsIHdoaWNoIGNhbiBob2xkIG9ubHkg" + @@ -1683,242 +1702,260 @@ files["std/internal/reserve.tact"] = "YWN0LWxhbmcub3JnL3JlZi9jb3JlLWNvbnRleHRzdGF0ZSNuYXRpdmVyZXNlcnZlLW9wdGlvbmFsLWZsYWdzCi8vLwpjb25zdCBSZXNlcnZlQm91bmNlSWZBY3Rpb25G" + "YWlsOiBJbnQgPSAxNjsK"; files["std/internal/send.tact"] = - "Ly8vIE9yZGluYXJ5IG1lc3NhZ2UgKGRlZmF1bHQpLgovLy8KLy8vIFRoaXMgY29uc3RhbnQgaXMgYXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjAuCi8vLwovLy8gU2Vl" + - "OiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNiYXNlLW1vZGVzCi8vLwpjb25zdCBTZW5kRGVmYXVsdE1vZGU6IEludCA9IDA7Cgov" + - "Ly8gQ2FycnkgYWxsIHRoZSByZW1haW5pbmcgdmFsdWUgb2YgdGhlIGluYm91bmQgbWVzc2FnZSBpbiBhZGRpdGlvbgovLy8gdG8gdGhlIHZhbHVlIGluaXRpYWxseSBp" + - "bmRpY2F0ZWQgaW4gdGhlIG5ldyBtZXNzYWdlLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNzYWdlLW1vZGUjYmFzZS1tb2Rl" + - "cwovLy8KY29uc3QgU2VuZFJlbWFpbmluZ1ZhbHVlOiBJbnQgPSA2NDsKCi8vLyBDYXJyeSAqKmFsbCB0aGUgcmVtYWluaW5nIGJhbGFuY2UqKiBvZiB0aGUgY3VycmVu" + - "dCBzbWFydCBjb250cmFjdCBpbnN0ZWFkCi8vLyBvZiB0aGUgdmFsdWUgb3JpZ2luYWxseSBpbmRpY2F0ZWQgaW4gdGhlIG1lc3NhZ2UuCi8vLwovLy8gU2VlOiBodHRw" + - "czovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNiYXNlLW1vZGVzCi8vLwpjb25zdCBTZW5kUmVtYWluaW5nQmFsYW5jZTogSW50ID0gMTI4OwoK" + - "Ly8vIERvZXNuJ3Qgc2VuZCB0aGUgbWVzc2FnZSwgb25seSBlc3RpbWF0ZXMgdGhlIGZvcndhcmQgZmVlcwovLy8gaWYgdGhlIG1lc3NhZ2Utc2VuZGluZyBmdW5jdGlv" + - "biBjb21wdXRlcyB0aG9zZS4KLy8vCi8vLyBUaGlzIGNvbnN0YW50IGlzIGF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6" + - "Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNzYWdlLW1vZGUjYmFzZS1tb2RlcwovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL3NlbmQjbWVz" + - "c2FnZS1zZW5kaW5nLWZ1bmN0aW9ucwovLy8KY29uc3QgU2VuZE9ubHlFc3RpbWF0ZUZlZTogSW50ID0gMTAyNDsKCi8vLyAqKkRlcHJlY2F0ZWQqKiBzaW5jZSBUYWN0" + - "IDEuNi41LgovLy8KLy8vIFBheSBmb3J3YXJkIGZlZXMgc2VwYXJhdGVseSBmcm9tIHRoZSBtZXNzYWdlIHZhbHVlLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRh" + - "Y3QtbGFuZy5vcmcvYm9vay9tZXNzYWdlLW1vZGUjb3B0aW9uYWwtZmxhZ3MKLy8vCmNvbnN0IFNlbmRQYXlHYXNTZXBhcmF0ZWx5OiBJbnQgPSAxOwoKLy8vIFBheSBm" + - "b3J3YXJkIGZlZXMgc2VwYXJhdGVseSBmcm9tIHRoZSBtZXNzYWdlIHZhbHVlLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNz" + - "YWdlLW1vZGUjb3B0aW9uYWwtZmxhZ3MKLy8vCmNvbnN0IFNlbmRQYXlGd2RGZWVzU2VwYXJhdGVseTogSW50ID0gMTsKCi8vLyBJZ25vcmUgYW55IGVycm9ycyBhcmlz" + - "aW5nIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyBtZXNzYWdlIGR1cmluZyB0aGUgYWN0aW9uIHBoYXNlLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5v" + - "cmcvYm9vay9tZXNzYWdlLW1vZGUjb3B0aW9uYWwtZmxhZ3MKLy8vCmNvbnN0IFNlbmRJZ25vcmVFcnJvcnM6IEludCA9IDI7CgovLy8gQm91bmNlIHRyYW5zYWN0aW9u" + - "IGluIGNhc2Ugb2YgYW55IGVycm9ycyBkdXJpbmcgYWN0aW9uIHBoYXNlLgovLy8gSGFzIG5vIGVmZmVjdCBpZiBmbGFnICsyLCBgU2VuZElnbm9yZUVycm9yc2AgaXMg" + - "dXNlZC4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svbWVzc2FnZS1tb2RlI29wdGlvbmFsLWZsYWdzCi8vLwpjb25zdCBTZW5kQm91" + - "bmNlSWZBY3Rpb25GYWlsOiBJbnQgPSAxNjsKCi8vLyBDdXJyZW50IGFjY291bnQgKGNvbnRyYWN0KSB3aWxsIGJlIGRlc3Ryb3llZCBpZiBpdHMgcmVzdWx0aW5nIGJh" + - "bGFuY2UgaXMgemVyby4KLy8vIFRoaXMgZmxhZyBpcyBvZnRlbiB1c2VkIHdpdGggbW9kZSAxMjgsIGBTZW5kUmVtYWluaW5nQmFsYW5jZWAuCi8vLwovLy8gU2VlOiBo" + - "dHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNvcHRpb25hbC1mbGFncwovLy8KY29uc3QgU2VuZERlc3Ryb3lJZlplcm86IEludCA9IDMy" + - "OwoKLy8vIFN0cnVjdCBmb3Igc3BlY2lmeWluZyB0aGUgbWVzc2FnZSBwYXJhbWV0ZXJzIG9mIHRoZSBgc2VuZCgpYCBmdW5jdGlvbi4KLy8vCi8vLyBTZWU6IGh0dHBz" + - "Oi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjc2VuZAovLy8Kc3RydWN0IFNlbmRQYXJhbWV0ZXJzIHsKICAgIC8vLyBBbiA4LWJpdCB2YWx1ZSB0aGF0" + - "IGNvbmZpZ3VyZXMgaG93IHRvIHNlbmQgYSBtZXNzYWdlLCBkZWZhdWx0cyB0byAwLgogICAgLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9t" + - "ZXNzYWdlLW1vZGUKICAgIG1vZGU6IEludCA9IFNlbmREZWZhdWx0TW9kZTsKCiAgICAvLy8gT3B0aW9uYWwgbWVzc2FnZSBib2R5IGFzIGEgYENlbGxgLgogICAgYm9k" + - "eTogQ2VsbD8gPSBudWxsOwoKICAgIC8vLyBPcHRpb25hbCBpbml0aWFsIGNvZGUgb2YgdGhlIGNvbnRyYWN0IChjb21waWxlZCBiaXRjb2RlKS4KICAgIGNvZGU6IENl" + - "bGw/ID0gbnVsbDsKCiAgICAvLy8gT3B0aW9uYWwgaW5pdGlhbCBkYXRhIG9mIHRoZSBjb250cmFjdCAoYXJndW1lbnRzIG9mIGBpbml0KClgIGZ1bmN0aW9uIG9yIHZh" + - "bHVlcyBvZiBjb250cmFjdCBwYXJhbWV0ZXJzKS4KICAgIGRhdGE6IENlbGw/ID0gbnVsbDsKCiAgICAvLy8gVGhlIGFtb3VudCBvZiBuYW5vVG9uY29pbnMgeW91IHdh" + - "bnQgdG8gc2VuZCB3aXRoCiAgICAvLy8gdGhlIG1lc3NhZ2UuIFRoaXMgdmFsdWUgaXMgdXNlZCB0byBjb3ZlciBmb3J3YXJkIGZlZXMsCiAgICAvLy8gdW5sZXNzIHRo" + - "ZSBvcHRpb25hbCBmbGFnIGBTZW5kUGF5RndkRmVlc1NlcGFyYXRlbHlgIGlzIHVzZWQuCiAgICB2YWx1ZTogSW50OwoKICAgIC8vLyBSZWNpcGllbnQgaW50ZXJuYWwg" + - "YEFkZHJlc3NgIG9uIFRPTiBCbG9ja2NoYWluLgogICAgdG86IEFkZHJlc3M7CgogICAgLy8vIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCkgbWVzc2FnZSBib3Vu" + - "Y2VzIGJhY2sgdG8gdGhlIHNlbmRlciBpZgogICAgLy8vIHRoZSByZWNpcGllbnQgY29udHJhY3QgZG9lc24ndCBleGlzdCBvciB3YXNuJ3QgYWJsZSB0byBwcm9jZXNz" + - "IHRoZSBtZXNzYWdlLgogICAgYm91bmNlOiBCb29sID0gdHJ1ZTsKfQoKLy8vIFN0cnVjdCBmb3Igc3BlY2lmeWluZyB0aGUgbWVzc2FnZSBwYXJhbWV0ZXJzIG9mIHRo" + - "ZSBgbWVzc2FnZSgpYCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjAuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYv" + - "Y29yZS1zZW5kI21lc3NhZ2UKLy8vCnN0cnVjdCBNZXNzYWdlUGFyYW1ldGVycyB7CiAgICAvLy8gQW4gOC1iaXQgdmFsdWUgdGhhdCBjb25maWd1cmVzIGhvdyB0byBz" + - "ZW5kIGEgbWVzc2FnZSwgZGVmYXVsdHMgdG8gMC4KICAgIC8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svbWVzc2FnZS1tb2RlCiAgICBtb2Rl" + - "OiBJbnQgPSBTZW5kRGVmYXVsdE1vZGU7CgogICAgLy8vIE9wdGlvbmFsIG1lc3NhZ2UgYm9keSBhcyBhIGBDZWxsYC4KICAgIGJvZHk6IENlbGw/ID0gbnVsbDsKCiAg" + - "ICAvLy8gVGhlIGFtb3VudCBvZiBuYW5vVG9uY29pbnMgeW91IHdhbnQgdG8gc2VuZCB3aXRoCiAgICAvLy8gdGhlIG1lc3NhZ2UuIFRoaXMgdmFsdWUgaXMgdXNlZCB0" + - "byBjb3ZlciBmb3J3YXJkIGZlZXMsCiAgICAvLy8gdW5sZXNzIHRoZSBvcHRpb25hbCBmbGFnIGBTZW5kUGF5RndkRmVlc1NlcGFyYXRlbHlgIGlzIHVzZWQuCiAgICB2" + - "YWx1ZTogSW50OwoKICAgIC8vLyBSZWNpcGllbnQgaW50ZXJuYWwgYEFkZHJlc3NgIG9uIFRPTiBCbG9ja2NoYWluLgogICAgdG86IEFkZHJlc3M7CgogICAgLy8vIFdo" + - "ZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCkgbWVzc2FnZSBib3VuY2VzIGJhY2sgdG8gdGhlIHNlbmRlciBpZgogICAgLy8vIHRoZSByZWNpcGllbnQgY29udHJhY3Qg" + - "ZG9lc24ndCBleGlzdCBvciB3YXNuJ3QgYWJsZSB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgogICAgYm91bmNlOiBCb29sID0gdHJ1ZTsKfQoKLy8vIEdsb2JhbCBmdW5j" + - "dGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjAuCi8vLwovLy8gUXVldWVzIHRoZSBtZXNzYWdlIHRvIGJlIHNlbnQgdXNpbmcgdGhlIGBNZXNzYWdlUGFyYW1l" + - "dGVyc2Agc3RydWN0LiBBbGxvd3MgZm9yIGNoZWFwZXIgbm9uLWRlcGxveW1lbnQsIHJlZ3VsYXIgbWVzc2FnZXMgY29tcGFyZWQgdG8gdGhlIGBzZW5kKClgIGZ1bmN0" + - "aW9uLgovLy8KLy8vIFRoZSBgTWVzc2FnZVBhcmFtZXRlcnNgIHN0cnVjdCBpcyBzaW1pbGFyIHRvIGBTZW5kUGFyYW1ldGVyc2Agc3RydWN0LCBidXQgd2l0aG91dCB0" + - "aGUgYGNvZGVgIGFuZCBgZGF0YWAgZmllbGRzLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIG1lc3NhZ2UoTWVzc2FnZVBhcmFtZXRl" + - "cnN7Ci8vLyAgICAgICAgIHRvOiBzZW5kZXIoKSwgICAgLy8gYmFjayB0byB0aGUgc2VuZGVyLAovLy8gICAgICAgICB2YWx1ZTogdG9uKCIxIiksIC8vIHdpdGggMSBU" + - "b25jb2luICgxXzAwMF8wMDBfMDAwIG5hbm9Ub25jb2luKSwKLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbm8gbWVzc2FnZSBib2R5Ci8vLyAgICAg" + - "fSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDMzOiBbQWN0aW9uIGxpc3QgaXMgdG9vIGxvbmddIOKAlCBUaHJvd24gd2hl" + - "biBhdHRlbXB0aW5nIHRvIHF1ZXVlIG1vcmUgdGhhbiAyNTUgbWVzc2FnZXMuCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYv" + - "Y29yZS1zZW5kI21lc3NhZ2UKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNzYWdlLW1vZGUKLy8vCi8vLyBbQWN0aW9uIGxpc3QgaXMgdG9v" + - "IGxvbmddOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMzMKLy8vCmFzbSBmdW4gbWVzc2FnZShwYXJhbXM6IE1lc3NhZ2VQYXJhbWV0" + - "ZXJzKSB7CiAgICBORVdDCiAgICBiezAxfSBTVFNMSUNFQ09OU1QgIC8vIHN0b3JlIHRhZyA9ICQwIGFuZCBpaHJfZGlzYWJsZWQgPSB0cnVlCiAgICAxIFNUSSAgICAg" + - "ICAgICAgICAgIC8vIHN0b3JlIGBib3VuY2VgCiAgICBiezAwMH0gU1RTTElDRUNPTlNUIC8vIHN0b3JlIGJvdW5jZWQgPSBmYWxzZSBhbmQgc3JjID0gYWRkcl9ub25l" + - "CiAgICBTVFNMSUNFICAgICAgICAgICAgIC8vIHN0b3JlIGB0b2AKICAgIFNXQVAKICAgIFNUR1JBTVMgICAgICAgICAgICAgLy8gc3RvcmUgYHZhbHVlYAogICAgMTA2" + - "IFBVU0hJTlQgICAgICAgICAvLyAxICsgNCArIDQgKyA2NCArIDMyICsgMQogICAgU1RaRVJPRVMKICAgIC8vIOKGkiBTdGFjayBzdGF0ZQogICAgLy8gczA6IEJ1aWxk" + - "ZXIKICAgIC8vIHMxOiBgYm9keWAKICAgIC8vIHMyOiBgbW9kZWAKICAgIFNURElDVAogICAgRU5EQwogICAgU1dBUAogICAgU0VORFJBV01TRwp9CgovLy8gR2xvYmFs" + - "IGZ1bmN0aW9uLiBRdWV1ZXMgdGhlIG1lc3NhZ2UgdG8gYmUgc2VudCB1c2luZyBhIGBTZW5kUGFyYW1ldGVyc2Agc3RydWN0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1" + - "biBleGFtcGxlKCkgewovLy8gICAgIHNlbmQoU2VuZFBhcmFtZXRlcnN7Ci8vLyAgICAgICAgIHRvOiBzZW5kZXIoKSwgICAgLy8gYmFjayB0byB0aGUgc2VuZGVyLAov" + - "Ly8gICAgICAgICB2YWx1ZTogdG9uKCIxIiksIC8vIHdpdGggMSBUb25jb2luICgxXzAwMF8wMDBfMDAwIG5hbm9Ub25jb2luKSwKLy8vICAgICAgICAgICAgICAgICAg" + - "ICAgICAgICAvLyBhbmQgbm8gbWVzc2FnZSBib2R5Ci8vLyAgICAgfSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDMzOiBb" + - "QWN0aW9uIGxpc3QgaXMgdG9vIGxvbmddIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHF1ZXVlIG1vcmUgdGhhbiAyNTUgbWVzc2FnZXMuCi8vLwovLy8gU2Vl" + - "OiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1zZW5kI3NlbmQKLy8vCi8vLyBbQWN0aW9uIGxpc3QgaXMgdG9vIGxvbmddOiBodHRwczovL2RvY3Mu" + - "dGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMzMKLy8vCmFzbSBmdW4gc2VuZChwYXJhbXM6IFNlbmRQYXJhbWV0ZXJzKSB7CiAgICAvLyBJbnN0cnVjdGlvbnMg" + - "YXJlIGdyb3VwZWQsIGFuZCB0aGUgc3RhY2sgc3RhdGVzIHRoZXkgcHJvZHVjZSBhcyBhIGdyb3VwIGFyZSBzaG93biByaWdodCBhZnRlci4KICAgIC8vIEluIHRoZSBl" + - "bmQsIG91ciBtZXNzYWdlIENlbGwgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBUTC1CIHN0cnVjdHVyZToKICAgIC8vIG1lc3NhZ2UkXyB7WDpUeXBlfQogICAgLy8g" + - "ICBpbmZvOkNvbW1vbk1zZ0luZm9SZWxheGVkCiAgICAvLyAgIGluaXQ6KE1heWJlIChFaXRoZXIgU3RhdGVJbml0IF5TdGF0ZUluaXQpKQogICAgLy8gICBib2R5OihF" + - "aXRoZXIgWCBeWCkKICAgIC8vID0gTWVzc2FnZVJlbGF4ZWQgWDsKCiAgICAvLyDihpIgU3RhY2sgc3RhdGUKICAgIC8vIHMwOiBgcGFyYW1zLmJvdW5jZWAKICAgIC8v" + - "IHMxOiBgcGFyYW1zLnRvYAogICAgLy8gczI6IGBwYXJhbXMudmFsdWVgCiAgICAvLyBzMzogYHBhcmFtcy5kYXRhYAogICAgLy8gczQ6IGBwYXJhbXMuY29kZWAKICAg" + - "IC8vIHM1OiBgcGFyYW1zLmJvZHlgCiAgICAvLyBzNjogYHBhcmFtcy5tb2RlYAogICAgLy8gRm9yIGJyZXZpdHksIHRoZSAicGFyYW1zIiBwcmVmaXggd2lsbCBiZSBv" + - "bWl0dGVkIGZyb20gbm93IG9uLgoKICAgIC8vIEdyb3VwIDE6IFN0b3JpbmcgdGhlIGBib3VuY2VgLCBgdG9gIGFuZCBgdmFsdWVgIGludG8gYSBCdWlsZGVyCiAgICBO" + - "RVdDCiAgICBiezAxfSBTVFNMSUNFQ09OU1QgIC8vIHN0b3JlIHRhZyA9ICQwIGFuZCBpaHJfZGlzYWJsZWQgPSB0cnVlCiAgICAxIFNUSSAgICAgICAgICAgICAgIC8v" + - "IHN0b3JlIGBib3VuY2VgCiAgICBiezAwMH0gU1RTTElDRUNPTlNUIC8vIHN0b3JlIGJvdW5jZWQgPSBmYWxzZSBhbmQgc3JjID0gYWRkcl9ub25lCiAgICBTVFNMSUNF" + - "ICAgICAgICAgICAgIC8vIHN0b3JlIGB0b2AKICAgIFNXQVAKICAgIFNUR1JBTVMgICAgICAgICAgICAgLy8gc3RvcmUgYHZhbHVlYAogICAgMTA1IFBVU0hJTlQgICAg" + - "ICAgICAvLyAxICsgNCArIDQgKyA2NCArIDMyCiAgICBTVFpFUk9FUyAgICAgICAgICAgIC8vIHN0b3JlIGN1cnJlbmN5X2NvbGxlY3Rpb24sIGlocl9mZWUsIGZ3ZF9m" + - "ZWUsIGNyZWF0ZWRfbHQgYW5kIGNyZWF0ZWRfYXQKICAgIC8vIOKGkiBTdGFjayBzdGF0ZQogICAgLy8gczA6IEJ1aWxkZXIKICAgIC8vIHMxOiBgZGF0YWAKICAgIC8v" + - "IHMyOiBgY29kZWAKICAgIC8vIHMzOiBgYm9keWAKICAgIC8vIHM0OiBgbW9kZWAKCiAgICAvLyBHcm91cCAyOiBQbGFjaW5nIHRoZSBCdWlsZGVyIGFmdGVyIGNvZGUg" + - "YW5kIGRhdGEsIHRoZW4gY2hlY2tpbmcgdGhvc2UgZm9yIG51bGxhYmlsaXR5CiAgICBzMiBYQ0hHMAogICAgRFVQMgogICAgSVNOVUxMCiAgICBTV0FQCiAgICBJU05V" + - "TEwKICAgIEFORAogICAgLy8g4oaSIFN0YWNrIHN0YXRlCiAgICAvLyBzMDogLTEgKHRydWUpIGlmIGBkYXRhYCBhbmQgYGNvZGVgIGFyZSBib3RoIG51bGwsIDAgKGZh" + - "bHNlKSBvdGhlcndpc2UKICAgIC8vIHMxOiBgY29kZWAKICAgIC8vIHMyOiBgZGF0YWAKICAgIC8vIHMzOiBCdWlsZGVyCiAgICAvLyBzNDogYGJvZHlgCiAgICAvLyBz" + - "NTogYG1vZGVgCgogICAgLy8gR3JvdXAgMzogTGVmdCBicmFuY2ggb2YgdGhlIElGRUxTRSwgZXhlY3V0ZWQgaWYgczAgaXMgLTEgKHRydWUpCiAgICA8ewogICAgICAg" + - "IERST1AyIC8vIGRyb3AgYGRhdGFgIGFuZCBgY29kZWAsIHNpbmNlIGVpdGhlciBvZiB0aG9zZSBpcyBudWxsCiAgICAgICAgYnswfSBTVFNMSUNFQ09OU1QKICAgIH0+" + - "IFBVU0hDT05UCgogICAgLy8gR3JvdXAgMzogUmlnaHQgYnJhbmNoIG9mIHRoZSBJRkVMU0UsIGV4ZWN1dGVkIGlmIHMwIGlzIDAgKGZhbHNlKQogICAgPHsKICAgICAg" + - "ICAvLyBfIHNwbGl0X2RlcHRoOihNYXliZSAoIyMgNSkpCiAgICAgICAgLy8gICBzcGVjaWFsOihNYXliZSBUaWNrVG9jaykKICAgICAgICAvLyAgIGNvZGU6KE1heWJl" + - "IF5DZWxsKQogICAgICAgIC8vICAgZGF0YTooTWF5YmUgXkNlbGwpCiAgICAgICAgLy8gICBsaWJyYXJ5OihNYXliZSBeQ2VsbCkKICAgICAgICAvLyA9IFN0YXRlSW5p" + - "dDsKICAgICAgICBST1QgICAgICAgICAgICAgICAgLy8gcGxhY2UgbWVzc2FnZSBCdWlsZGVyIG9uIHRvcAogICAgICAgIGJ7MTB9IFNUU0xJQ0VDT05TVCAvLyBzdG9y" + - "ZSBNYXliZSA9IHRydWUsIEVpdGhlciA9IGZhbHNlCiAgICAgICAgLy8gU3RhcnQgY29tcG9zaW5nIGlubGluZWQgU3RhdGVJbml0CiAgICAgICAgYnswMH0gU1RTTElD" + - "RUNPTlNUIC8vIHN0b3JlIHNwbGl0X2RlcHRoIGFuZCBzcGVjaWFsIGZpcnN0CiAgICAgICAgU1RESUNUICAgICAgICAgICAgIC8vIHN0b3JlIGNvZGUKICAgICAgICBT" + - "VERJQ1QgICAgICAgICAgICAgLy8gc3RvcmUgZGF0YQogICAgICAgIGJ7MH0gU1RTTElDRUNPTlNUICAvLyBzdG9yZSBsaWJyYXJ5CiAgICB9PiBQVVNIQ09OVAoKICAg" + - "IC8vIEdyb3VwIDM6IElGRUxTRSB0aGF0IGRvZXMgdGhlIGJyYW5jaGluZyBzaG93biBhYm92ZQogICAgSUZFTFNFCiAgICAvLyDihpIgU3RhY2sgc3RhdGUKICAgIC8v" + - "IHMwOiBCdWlsZGVyCiAgICAvLyBzMTogbnVsbCBvciBTdGF0ZUluaXQKICAgIC8vIHMyOiBgYm9keWAKICAgIC8vIHMzOiBgbW9kZWAKCiAgICAvLyBHcm91cCA0OiBG" + - "aW5hbGl6aW5nIHRoZSBtZXNzYWdlCiAgICBTVERJQ1QgLy8gc3RvcmUgYGJvZHlgIGFzIHJlZiB3aXRoIGFuIGV4dHJhIE1heWJlIGJpdCwgc2luY2UgYGJvZHlgIG1p" + - "Z2h0IGJlIG51bGwKICAgIEVOREMKICAgIC8vIOKGkiBTdGFjayBzdGF0ZQogICAgLy8gczA6IENlbGwKICAgIC8vIHMxOiBgbW9kZWAKCiAgICAvLyBHcm91cCA1OiBT" + - "ZW5kaW5nIHRoZSBtZXNzYWdlLCB3aXRoIGBtb2RlYCBvbiB0b3AKICAgIFNXQVAKICAgIFNFTkRSQVdNU0cgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RhY3QtbGFuZy90" + - "YWN0L2lzc3Vlcy8xNTU4Cn0KCi8vLyBTdHJ1Y3QgZm9yIHNwZWNpZnlpbmcgdGhlIGRlcGxveW1lbnQgbWVzc2FnZSBwYXJhbWV0ZXJzIG9mIHRoZSBgZGVwbG95KClg" + - "IGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMC4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjZGVw" + - "bG95Ci8vLwpzdHJ1Y3QgRGVwbG95UGFyYW1ldGVycyB7CiAgICAvLy8gQW4gOC1iaXQgdmFsdWUgdGhhdCBjb25maWd1cmVzIGhvdyB0byBzZW5kIGEgbWVzc2FnZSwg" + - "ZGVmYXVsdHMgdG8gMC4KICAgIC8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svbWVzc2FnZS1tb2RlCiAgICBtb2RlOiBJbnQgPSBTZW5kRGVm" + - "YXVsdE1vZGU7CgogICAgLy8vIE9wdGlvbmFsIG1lc3NhZ2UgYm9keSBhcyBhIGBDZWxsYC4KICAgIGJvZHk6IENlbGw/ID0gbnVsbDsKCiAgICAvLy8gVGhlIGFtb3Vu" + - "dCBvZiBuYW5vVG9uY29pbnMgeW91IHdhbnQgdG8gc2VuZCB3aXRoCiAgICAvLy8gdGhlIG1lc3NhZ2UuIFRoaXMgdmFsdWUgaXMgdXNlZCB0byBjb3ZlciBmb3J3YXJk" + - "IGZlZXMsCiAgICAvLy8gdW5sZXNzIHRoZSBvcHRpb25hbCBmbGFnIGBTZW5kUGF5RndkRmVlc1NlcGFyYXRlbHlgIGlzIHVzZWQuCiAgICB2YWx1ZTogSW50OwoKICAg" + - "IC8vLyBXaGVuIHNldCB0byBgdHJ1ZWAgKGRlZmF1bHQpIG1lc3NhZ2UgYm91bmNlcyBiYWNrIHRvIHRoZSBzZW5kZXIgaWYKICAgIC8vLyB0aGUgcmVjaXBpZW50IGNv" + - "bnRyYWN0IGRvZXNuJ3QgZXhpc3Qgb3Igd2Fzbid0IGFibGUgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4KICAgIGJvdW5jZTogQm9vbCA9IHRydWU7CgogICAgLy8vIElu" + - "aXRpYWwgcGFja2FnZSBvZiB0aGUgY29udHJhY3QgKGluaXRpYWwgY29kZSBhbmQgaW5pdGlhbCBkYXRhKS4KICAgIC8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxh" + - "bmcub3JnL2Jvb2svZXhwcmVzc2lvbnMjaW5pdG9mCiAgICBpbml0OiBTdGF0ZUluaXQ7Cn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0" + - "IDEuNi4wLgovLy8KLy8vIFF1ZXVlcyB0aGUgY29udHJhY3QgZGVwbG95bWVudCBtZXNzYWdlIHRvIGJlIHNlbnQgdXNpbmcgdGhlIGBEZXBsb3lQYXJhbWV0ZXJzYCBz" + - "dHJ1Y3QuIEFsbG93cyBmb3IgY2hlYXBlciBvbi1jaGFpbiBkZXBsb3ltZW50cyBjb21wYXJlZCB0byB0aGUgYHNlbmQoKWAgZnVuY3Rpb24uCi8vLwovLy8gVGhlIGBE" + - "ZXBsb3lQYXJhbWV0ZXJzYCBzdHJ1Y3QgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBmaWVsZHM6Ci8vLyAqIGBtb2RlOiBJbnRgLCBhbiA4LWJpdCB2YWx1ZSB0aGF0" + - "IGNvbmZpZ3VyZXMgaG93IHRvIHNlbmQgYSBtZXNzYWdlLCBkZWZhdWx0cyB0byAwLgovLy8gKiBgYm9keTogQ2VsbD9gLCBvcHRpb25hbCBtZXNzYWdlIGJvZHkgYXMg" + - "YSBgQ2VsbGAuCi8vLyAqIGB2YWx1ZTogSW50YCwgdGhlIGFtb3VudCBvZiBuYW5vVG9uY29pbnMgeW91IHdhbnQgdG8gc2VuZCB3aXRoIHRoZSBtZXNzYWdlLgovLy8g" + - "ICBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gY292ZXIgZm9yd2FyZCBmZWVzLCB1bmxlc3MgdGhlIG9wdGlvbmFsIGZsYWcgYFNlbmRQYXlGd2RGZWVzU2VwYXJhdGVseWAg" + - "aXMgdXNlZC4KLy8vICogYGJvdW5jZTogQm9vbGAsIHdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCkgbWVzc2FnZSBib3VuY2VzIGJhY2sgdG8gdGhlIHNlbmRlcgov" + - "Ly8gICAgaWYgdGhlIHJlY2lwaWVudCBjb250cmFjdCBkb2Vzbid0IGV4aXN0IG9yIHdhc24ndCBhYmxlIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuCi8vLyAqIGBpbml0" + - "OiBTdGF0ZUluaXRgLCBpbml0IHBhY2thZ2Ugb2YgdGhlIGNvbnRyYWN0IChpbml0aWFsIGNvZGUgYW5kIGluaXRpYWwgZGF0YSkuCi8vLwovLy8gYGBgdGFjdAovLy8g" + - "ZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgZGVwbG95KERlcGxveVBhcmFtZXRlcnN7Ci8vLyAgICAgICAgIGluaXQ6IGluaXRPZiBTb21lQ29udHJhY3QoKSwgLy8gd2l0" + - "aCBpbml0aWFsIGNvZGUgYW5kIGRhdGEgb2YgU29tZUNvbnRyYWN0Ci8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIG5vIGFkZGl0" + - "aW9uYWwgbWVzc2FnZSBib2R5Ci8vLyAgICAgICAgIG1vZGU6IFNlbmRJZ25vcmVFcnJvcnMsICAgICAgLy8gc2tpcCB0aGUgbWVzc2FnZSBpbiBjYXNlIG9mIGVycm9y" + - "cwovLy8gICAgICAgICB2YWx1ZTogdG9uKCIxIiksICAgICAgICAgICAgIC8vIHNlbmQgMSBUb25jb2luICgxXzAwMF8wMDBfMDAwIG5hbm9Ub25jb2luKQovLy8gICAg" + - "IH0pOwovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiAzMzogW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXSDigJQgVGhyb3duIHdo" + - "ZW4gYXR0ZW1wdGluZyB0byBxdWV1ZSBtb3JlIHRoYW4gMjU1IG1lc3NhZ2VzLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVm" + - "L2NvcmUtc2VuZCNkZXBsb3kKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNzYWdlLW1vZGUKLy8vCi8vLyBbQWN0aW9uIGxpc3QgaXMgdG9v" + - "IGxvbmddOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMzMKLy8vCmFzbSBmdW4gZGVwbG95KHBhcmFtczogRGVwbG95UGFyYW1ldGVy" + - "cykgewogICAgLy8gSW5zdHJ1Y3Rpb25zIGFyZSBncm91cGVkLCBhbmQgdGhlIHN0YWNrIHN0YXRlcyB0aGV5IHByb2R1Y2UgYXMgYSBncm91cCBhcmUgc2hvd24gcmln" + - "aHQgYWZ0ZXIuCiAgICAvLwogICAgLy8g4oaSIFN0YWNrIHN0YXRlCiAgICAvLyBzMDogYHBhcmFtcy5pbml0LmRhdGFgCiAgICAvLyBzMTogYHBhcmFtcy5pbml0LmNv" + - "ZGVgCiAgICAvLyBzMjogYHBhcmFtcy5ib3VuY2VgCiAgICAvLyBzMzogYHBhcmFtcy52YWx1ZWAKICAgIC8vIHM0OiBgcGFyYW1zLmJvZHlgCiAgICAvLyBzNTogYHBh" + - "cmFtcy5tb2RlYAogICAgLy8gRm9yIGJyZXZpdHksIHRoZSAicGFyYW1zIiBwcmVmaXggd2lsbCBiZSBvbWl0dGVkIGZyb20gbm93IG9uLgoKICAgIC8vIEdyb3VwIDE6" + - "IFByZXBhcmF0aW9uIG9mIG5lZWRlZCBwYXJhbXMKICAgIC8vIEZvciBhbG1vc3QgaWRlbnRpY2FsIGxvZ2ljIGFuZCBpbnN0cnVjdGlvbnMsCiAgICAvLyBzZWUgY29t" + - "bWVudHMgaW5zaWRlIGBjb250cmFjdEhhc2goKWAgZnVuY3Rpb24gaW4gY29udHJhY3QudGFjdAogICAgNCAxIEJMS1BVU0ggLy8gcHVzaGVzIDIgY29waWVzIG9mIGBp" + - "bml0LmNvZGVgIGFuZCBgaW5pdC5kYXRhYAogICAgSEFTSENVIC8vIGBpbml0LmRhdGFgIGhhc2gKICAgIFNXQVAKICAgIEhBU0hDVSAvLyBgaW5pdC5jb2RlYCBoYXNo" + - "CiAgICBTV0FQMgogICAgQ0RFUFRIIC8vIGBpbml0LmRhdGFgIGRlcHRoCiAgICBTV0FQCiAgICBDREVQVEggLy8gYGluaXQuY29kZWAgZGVwdGgKCiAgICAvLyBHcm91" + - "cCAyOiBDYWxjdWxhdGluZyBkZXN0aW5hdGlvbiBhZGRyZXNzCiAgICAvLyBGb3IgYWxtb3N0IGlkZW50aWNhbCBsb2dpYyBhbmQgaW5zdHJ1Y3Rpb25zLAogICAgLy8g" + - "c2VlIGNvbW1lbnRzIGluc2lkZSBgY29udHJhY3RIYXNoKClgIGZ1bmN0aW9uIGluIGNvbnRyYWN0LnRhY3QKICAgIDEzMTM4MCBJTlQgLy8gKDIgPDwgMTYpIHwgKDEg" + - "PDwgOCkgfCAweDM0CiAgICBORVdDCiAgICAyNCBTVFUKICAgIDE2IFNUVQogICAgMTYgU1RVCiAgICAyNTYgU1RVCiAgICAyNTYgU1RVCiAgICBPTkUgSEFTSEVYVF9T" + - "SEEyNTYgLy8gb2J0YWlucyBoYXNoIHBhcnQgKGFjY291bnQgaWQpIG9mIHRoZSBhZGRyZXNzCiAgICAvLyDihpIgU3RhY2sgc3RhdGUKICAgIC8vIHMwOiBkZXN0QWRk" + - "cihoYXNoIHBhcnQpCiAgICAvLyBzMTogYGluaXQuZGF0YWAKICAgIC8vIHMyOiBgaW5pdC5jb2RlYAogICAgLy8gczMgYW5kIGJlbG93OiBgYm91bmNlYCwgYHZhbHVl" + - "YCwgYGJvZHlgLCBgbW9kZWAKCiAgICAvLyBHcm91cCAzOiBCdWlsZGluZyBhIG1lc3NhZ2UgKENvbW1vbk1zZ0luZm9SZWxheGVkKQogICAgczMgWENIRzAgICAgICAg" + - "ICAgIC8vIHN3YXBzIGBib3VuY2VgIHdpdGggZGVzdEFkZHIoaGFzaCBwYXJ0KQogICAgTkVXQwogICAgYnswMX0gU1RTTElDRUNPTlNUIC8vIHN0b3JlIHRhZyA9ICQw" + - "IGFuZCBpaHJfZGlzYWJsZWQgPSB0cnVlCiAgICAxIFNUSSAgICAgICAgICAgICAgLy8gc3RvcmUgYGJvdW5jZWAKICAgIHMxIHMyIFhDSEcgICAgICAgICAvLyBzd2Fw" + - "IGBpbml0LmRhdGFgIHdpdGggYGluaXQuY29kZWAsIHBsYWNpbmcgY29kZSBvbiBzMQogICAgU1RSRUYgICAgICAgICAgICAgIC8vIHN0b3JlIGBpbml0LmNvZGVgCiAg" + - "ICBTVFJFRiAgICAgICAgICAgICAgLy8gc3RvcmUgYGluaXQuZGF0YWAKICAgIC8vIElubGluZSBTdGF0ZUluaXQ6CiAgICBiezAwMDEwMDAwMDAwMDAwfSBTVFNMSUNF" + - "Q09OU1QKICAgIC8vIDAgKyAwMCArIDEwICsgMCArIDAwMDAwMDAwCiAgICAvLyAxKSAwIC0gYm91bmNlZCA9IGZhbHNlCiAgICAvLyAyKSAwMCAtIHNyYyA9IGFkZHJf" + - "bm9uZQogICAgLy8gMykgMTAgLSB0YWcgb2YgYWRkcl9zdGQgKHBhcnQgb2YgZGVzdCkKICAgIC8vIDQpIDAgLSBNYXliZSBBbnljYXN0ID0gZmFsc2UKICAgIC8vIDUp" + - "IDAwMDAwMDAwIC0gd29ya2NoYWluX2lkIChwYXJ0IG9mIGRlc3QpCiAgICAvLwogICAgMjU2IFNUVSAgICAgLy8gc3RvcmUgZGVzdEFkZHIoaGFzaCBwYXJ0KQogICAg" + - "U1dBUCAgICAgICAgLy8gQnVpbGRlciBvbiB0b3AsIGB2YWx1ZWAgYmVsb3cKICAgIFNUR1JBTVMgICAgIC8vIHN0b3JlIGB2YWx1ZWAKICAgIDEwNSBQVVNISU5UIC8v" + - "IDEgKyA0ICsgNCArIDY0ICsgMzIKICAgIFNUWkVST0VTICAgIC8vIHN0b3JlIGN1cnJlbmN5X2NvbGxlY3Rpb24sIGlocl9mZWUsIGZ3ZF9mZWUsIGNyZWF0ZWRfbHQg" + - "YW5kIGNyZWF0ZWRfYXQKCiAgICAvLyBHcm91cCA0OiBDb250aW51ZSBidWlsZGluZyBhIG1lc3NhZ2UgKENvbW1vbk1zZ0luZm9SZWxheGVkIGludG8gTWVzc2FnZVJl" + - "bGF4ZWQpCiAgICAvLyBSZW1haW5pbmcgYml0cyBvZiBNZXNzYWdlUmVsYXhlZDoKICAgIGJ7MTAwMDExMH0gU1RTTElDRUNPTlNUCiAgICAvLyAxMCArIDAgKyAwICsg" + - "MSArIDEgKyAwCiAgICAvLyAxMCAtIE1heWJlIChFaXRoZXIgU3RhdGVJbml0IF5TdGF0ZUluaXQpID0gdHJ1ZSBmYWxzZQogICAgLy8gMCAtIHNwbGl0X2RlcHRoOihN" + - "YXliZSAoIyMgNSkpID0gZmFsc2UKICAgIC8vIDAgPSBzcGVjaWFsOihNYXliZSBUaWNrVG9jaykgPSBmYWxzZQogICAgLy8gMSA9IGNvZGU6KE1heWJlIF5DZWxsKSA9" + - "IHRydWUKICAgIC8vIDEgPSBkYXRhOihNYXliZSBeQ2VsbCkgPSB0cnVlCiAgICAvLyAwID0gbGlicmFyeTooTWF5YmUgXkNlbGwpID0gZmFsc2UKICAgIC8vCiAgICBT" + - "VERJQ1QgLy8gc3RvcmUgYGJvZHlgIGFzIHJlZiB3aXRoIGFuIGV4dHJhIE1heWJlIGJpdCwgc2luY2UgYGJvZHlgIG1pZ2h0IGJlIG51bGwKICAgIEVOREMgICAvLyBm" + - "aW5hbGl6ZSB0aGUgbWVzc2FnZQogICAgLy8g4oaSIFN0YWNrIHN0YXRlCiAgICAvLyBzMDogQ2VsbAogICAgLy8gczE6IHBhcmFtcy5gbW9kZWAKCiAgICAvLyBHcm91" + - "cCA1OiBTZW5kaW5nIHRoZSBtZXNzYWdlLCB3aXRoIGBtb2RlYCBvbiB0b3AKICAgIFNXQVAKICAgIFNFTkRSQVdNU0cKfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZh" + - "aWxhYmxlIHNpbmNlIFRhY3QgMS42LjEuCi8vLwovLy8gUXVldWVzIGFuIGVtcHR5IG1lc3NhZ2UgdG8gYmUgc2VudCB3aXRoIHRoZSBgU2VuZFJlbWFpbmluZ1ZhbHVl" + - "YCBtb2RlIGFuZCB0aGUgYFNlbmRJZ25vcmVFcnJvcnNgIGZsYWcgdG8gdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgYHRvYC4KLy8vIFRoaXMgaXMgdGhlIG1vc3QgZ2Fz" + - "LWVmZmljaWVudCB3YXkgdG8gc2VuZCB0aGUgcmVtYWluaW5nIHZhbHVlIGZyb20gdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gdGhlIGdpdmVuIGFkZHJlc3MuCi8vLwov" + - "Ly8gVGhpcyBmdW5jdGlvbiB3b24ndCBmb3J3YXJkIGV4Y2VzcyB2YWx1ZXMgaWYgYW55IG90aGVyIG1lc3NhZ2Utc2VuZGluZyBmdW5jdGlvbnMgd2VyZSBjYWxsZWQg" + - "aW4gdGhlIHNhbWUgcmVjZWl2ZXIgYmVmb3JlLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlcygpIHsKLy8vICAgICAvLyBGb3J3YXJkIHRoZSByZW1haW5p" + - "bmcgdmFsdWUgYmFjayB0byB0aGUgc2VuZGVyCi8vLyAgICAgY2FzaGJhY2soc2VuZGVyKCkpOwovLy8KLy8vICAgICAvLyBUaGUgY2FzaGJhY2soKSBmdW5jdGlvbiBh" + - "Ym92ZSBpcyBjaGVhcGVyLCBidXQgZnVuY3Rpb25hbGx5Ci8vLyAgICAgLy8gZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nIGNhbGwgdG8gdGhlIG1lc3NhZ2UoKSBm" + - "dW5jdGlvbgovLy8gICAgIG1lc3NhZ2UoTWVzc2FnZVBhcmFtZXRlcnN7Ci8vLyAgICAgICAgIG1vZGU6IFNlbmRSZW1haW5pbmdWYWx1ZSB8IFNlbmRJZ25vcmVFcnJv" + - "cnMsCi8vLyAgICAgICAgIGJvZHk6IG51bGwsCi8vLyAgICAgICAgIHZhbHVlOiAwLAovLy8gICAgICAgICB0bzogc2VuZGVyKCksCi8vLyAgICAgICAgIGJvdW5jZTog" + - "ZmFsc2UsCi8vLyAgICAgfSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDMzOiBbQWN0aW9uIGxpc3QgaXMgdG9vIGxvbmdd" + - "IOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHF1ZXVlIG1vcmUgdGhhbiAyNTUgbWVzc2FnZXMuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5n" + - "Lm9yZy9yZWYvY29yZS1zZW5kI2Nhc2hiYWNrCi8vLwovLy8gW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9l" + - "eGl0LWNvZGVzIzMzCi8vLwphc20gZnVuIGNhc2hiYWNrKHRvOiBBZGRyZXNzKSB7CiAgICBORVdDCiAgICB4ezQyX30gU1RTTElDRUNPTlNUIC8vIC5zdG9yZVVpbnQo" + - "MHgxMCwgNikKICAgIFNUU0xJQ0UgICAgICAgICAgLy8gLnN0b3JlQWRkcmVzcyh0bykKICAgIDAgUFVTSElOVCAgICAgICAgLy8gMAogICAgMTExIFNUVVIgICAgICAg" + - "ICAvLyAuc3RvcmVVaW50KDAsIDExMSkKICAgICAgICAgICAgICAgICAgICAgLy8gNCB6ZXJvcyBmb3IgY29pbnMgYW5kIDEwNyB6ZXJvcyBmb3IgbHQsIGZlZXMsIGV0" + - "Yy4KICAgIEVOREMKICAgIDY2IFBVU0hJTlQgICAgICAgLy8gU2VuZFJlbWFpbmluZ1ZhbHVlIHwgU2VuZElnbm9yZUVycm9ycwogICAgU0VORFJBV01TRwp9CgovLy8g" + - "R2xvYmFsIGZ1bmN0aW9uLiAqKkRlcHJlY2F0ZWQqKiBzaW5jZSBUYWN0IDEuNi42LgovLy8KLy8vIFVzZSBgc2VuZFJhd01lc3NhZ2UoKWAgaW5zdGVhZC4KLy8vCi8v" + - "LyBRdWV1ZXMgdGhlIG1lc3NhZ2UgdG8gYmUgc2VudCBieSBzcGVjaWZ5aW5nIHRoZSBjb21wbGV0ZSBgbXNnYCBjZWxsIGFuZCB0aGUgbWVzc2FnZSBgbW9kZWAuCi8v" + - "LwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiAzMzogW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBxdWV1" + - "ZSBtb3JlIHRoYW4gMjU1IG1lc3NhZ2VzLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNzZW5kcmF3bWVz" + - "c2FnZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1zZW5kI25hdGl2ZXNlbmRtZXNzYWdlCi8vLwovLy8gW0FjdGlvbiBsaXN0IGlzIHRv" + - "byBsb25nXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzMzCi8vLwphc20gZnVuIG5hdGl2ZVNlbmRNZXNzYWdlKG1zZzogQ2VsbCwg" + - "bW9kZTogSW50KSB7IFNFTkRSQVdNU0cgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjYuCi8vLwovLy8gUXVldWVzIHRoZSBt" + - "ZXNzYWdlIHRvIGJlIHNlbnQgYnkgc3BlY2lmeWluZyB0aGUgY29tcGxldGUgYG1zZ2AgY2VsbCBhbmQgdGhlIG1lc3NhZ2UgYG1vZGVgLgovLy8KLy8vIFByZWZlciB1" + - "c2luZyB0aGUgbW9yZSB1c2VyLWZyaWVuZGx5IGBtZXNzYWdlKClgLCBgZGVwbG95KClgLCBvciBgc2VuZCgpYCBmdW5jdGlvbnMgdW5sZXNzIHlvdSBoYXZlIGEgY29t" + - "cGxleCBsb2dpYyB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgb3RoZXJ3aXNlLgovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogMzM6IFtBY3Rpb24gbGlz" + + "Y29uc3QgcHJlZml4TGVuZ3RoOiBJbnQgPSA4OwovLy8gT3JkaW5hcnkgbWVzc2FnZSAoZGVmYXVsdCkuCi8vLwovLy8gVGhpcyBjb25zdGFudCBpcyBhdmFpbGFibGUg" + + "c2luY2UgVGFjdCAxLjYuMC4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svbWVzc2FnZS1tb2RlI2Jhc2UtbW9kZXMKLy8vCmNvbnN0" + + "IFNlbmREZWZhdWx0TW9kZTogSW50ID0gMDsKCi8vLyBDYXJyeSBhbGwgdGhlIHJlbWFpbmluZyB2YWx1ZSBvZiB0aGUgaW5ib3VuZCBtZXNzYWdlIGluIGFkZGl0aW9u" + + "Ci8vLyB0byB0aGUgdmFsdWUgaW5pdGlhbGx5IGluZGljYXRlZCBpbiB0aGUgbmV3IG1lc3NhZ2UuCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9y" + + "Zy9ib29rL21lc3NhZ2UtbW9kZSNiYXNlLW1vZGVzCi8vLwpjb25zdCBTZW5kUmVtYWluaW5nVmFsdWU6IEludCA9IDY0OwoKLy8vIENhcnJ5ICoqYWxsIHRoZSByZW1h" + + "aW5pbmcgYmFsYW5jZSoqIG9mIHRoZSBjdXJyZW50IHNtYXJ0IGNvbnRyYWN0IGluc3RlYWQKLy8vIG9mIHRoZSB2YWx1ZSBvcmlnaW5hbGx5IGluZGljYXRlZCBpbiB0" + + "aGUgbWVzc2FnZS4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svbWVzc2FnZS1tb2RlI2Jhc2UtbW9kZXMKLy8vCmNvbnN0IFNlbmRS" + + "ZW1haW5pbmdCYWxhbmNlOiBJbnQgPSAxMjg7CgovLy8gRG9lc24ndCBzZW5kIHRoZSBtZXNzYWdlLCBvbmx5IGVzdGltYXRlcyB0aGUgZm9yd2FyZCBmZWVzCi8vLyBp" + + "ZiB0aGUgbWVzc2FnZS1zZW5kaW5nIGZ1bmN0aW9uIGNvbXB1dGVzIHRob3NlLgovLy8KLy8vIFRoaXMgY29uc3RhbnQgaXMgYXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41" + + "LjAuCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNiYXNlLW1vZGVzCi8vLyAqIGh0dHBzOi8vZG9j" + + "cy50YWN0LWxhbmcub3JnL2Jvb2svc2VuZCNtZXNzYWdlLXNlbmRpbmctZnVuY3Rpb25zCi8vLwpjb25zdCBTZW5kT25seUVzdGltYXRlRmVlOiBJbnQgPSAxMDI0OwoK" + + "Ly8vICoqRGVwcmVjYXRlZCoqIHNpbmNlIFRhY3QgMS42LjUuCi8vLwovLy8gUGF5IGZvcndhcmQgZmVlcyBzZXBhcmF0ZWx5IGZyb20gdGhlIG1lc3NhZ2UgdmFsdWUu" + + "Ci8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNvcHRpb25hbC1mbGFncwovLy8KY29uc3QgU2VuZFBheUdhc1Nl" + + "cGFyYXRlbHk6IEludCA9IDE7CgovLy8gUGF5IGZvcndhcmQgZmVlcyBzZXBhcmF0ZWx5IGZyb20gdGhlIG1lc3NhZ2UgdmFsdWUuCi8vLwovLy8gU2VlOiBodHRwczov" + + "L2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNvcHRpb25hbC1mbGFncwovLy8KY29uc3QgU2VuZFBheUZ3ZEZlZXNTZXBhcmF0ZWx5OiBJbnQgPSAx" + + "OwoKLy8vIElnbm9yZSBhbnkgZXJyb3JzIGFyaXNpbmcgd2hpbGUgcHJvY2Vzc2luZyB0aGlzIG1lc3NhZ2UgZHVyaW5nIHRoZSBhY3Rpb24gcGhhc2UuCi8vLwovLy8g" + + "U2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZSNvcHRpb25hbC1mbGFncwovLy8KY29uc3QgU2VuZElnbm9yZUVycm9yczogSW50" + + "ID0gMjsKCi8vLyBCb3VuY2UgdHJhbnNhY3Rpb24gaW4gY2FzZSBvZiBhbnkgZXJyb3JzIGR1cmluZyBhY3Rpb24gcGhhc2UuCi8vLyBIYXMgbm8gZWZmZWN0IGlmIGZs" + + "YWcgKzIsIGBTZW5kSWdub3JlRXJyb3JzYCBpcyB1c2VkLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNzYWdlLW1vZGUjb3B0" + + "aW9uYWwtZmxhZ3MKLy8vCmNvbnN0IFNlbmRCb3VuY2VJZkFjdGlvbkZhaWw6IEludCA9IDE2OwoKLy8vIEN1cnJlbnQgYWNjb3VudCAoY29udHJhY3QpIHdpbGwgYmUg" + + "ZGVzdHJveWVkIGlmIGl0cyByZXN1bHRpbmcgYmFsYW5jZSBpcyB6ZXJvLgovLy8gVGhpcyBmbGFnIGlzIG9mdGVuIHVzZWQgd2l0aCBtb2RlIDEyOCwgYFNlbmRSZW1h" + + "aW5pbmdCYWxhbmNlYC4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svbWVzc2FnZS1tb2RlI29wdGlvbmFsLWZsYWdzCi8vLwpjb25z" + + "dCBTZW5kRGVzdHJveUlmWmVybzogSW50ID0gMzI7CgovLy8gU3RydWN0IGZvciBzcGVjaWZ5aW5nIHRoZSBtZXNzYWdlIHBhcmFtZXRlcnMgb2YgdGhlIGBzZW5kKClg" + + "IGZ1bmN0aW9uLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNzZW5kCi8vLwpzdHJ1Y3QgU2VuZFBhcmFtZXRlcnMg" + + "ewogICAgLy8vIEFuIDgtYml0IHZhbHVlIHRoYXQgY29uZmlndXJlcyBob3cgdG8gc2VuZCBhIG1lc3NhZ2UsIGRlZmF1bHRzIHRvIDAuCiAgICAvLy8gU2VlOiBodHRw" + + "czovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9kZQogICAgbW9kZTogSW50ID0gU2VuZERlZmF1bHRNb2RlOwoKICAgIC8vLyBPcHRpb25hbCBtZXNz" + + "YWdlIGJvZHkgYXMgYSBgQ2VsbGAuCiAgICBib2R5OiBDZWxsPyA9IG51bGw7CgogICAgLy8vIE9wdGlvbmFsIGluaXRpYWwgY29kZSBvZiB0aGUgY29udHJhY3QgKGNv" + + "bXBpbGVkIGJpdGNvZGUpLgogICAgY29kZTogQ2VsbD8gPSBudWxsOwoKICAgIC8vLyBPcHRpb25hbCBpbml0aWFsIGRhdGEgb2YgdGhlIGNvbnRyYWN0IChhcmd1bWVu" + + "dHMgb2YgYGluaXQoKWAgZnVuY3Rpb24gb3IgdmFsdWVzIG9mIGNvbnRyYWN0IHBhcmFtZXRlcnMpLgogICAgZGF0YTogQ2VsbD8gPSBudWxsOwoKICAgIC8vLyBUaGUg" + + "YW1vdW50IG9mIG5hbm9Ub25jb2lucyB5b3Ugd2FudCB0byBzZW5kIHdpdGgKICAgIC8vLyB0aGUgbWVzc2FnZS4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGNvdmVyIGZv" + + "cndhcmQgZmVlcywKICAgIC8vLyB1bmxlc3MgdGhlIG9wdGlvbmFsIGZsYWcgYFNlbmRQYXlGd2RGZWVzU2VwYXJhdGVseWAgaXMgdXNlZC4KICAgIHZhbHVlOiBJbnQ7" + + "CgogICAgLy8vIFJlY2lwaWVudCBpbnRlcm5hbCBgQWRkcmVzc2Agb24gVE9OIEJsb2NrY2hhaW4uCiAgICB0bzogQWRkcmVzczsKCiAgICAvLy8gV2hlbiBzZXQgdG8g" + + "YHRydWVgIChkZWZhdWx0KSBtZXNzYWdlIGJvdW5jZXMgYmFjayB0byB0aGUgc2VuZGVyIGlmCiAgICAvLy8gdGhlIHJlY2lwaWVudCBjb250cmFjdCBkb2Vzbid0IGV4" + + "aXN0IG9yIHdhc24ndCBhYmxlIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuCiAgICBib3VuY2U6IEJvb2wgPSB0cnVlOwp9CgovLy8gU3RydWN0IGZvciBzcGVjaWZ5aW5n" + + "IHRoZSBtZXNzYWdlIHBhcmFtZXRlcnMgb2YgdGhlIGBtZXNzYWdlKClgIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMC4KLy8vCi8vLyBTZWU6IGh0" + + "dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjbWVzc2FnZQovLy8Kc3RydWN0IE1lc3NhZ2VQYXJhbWV0ZXJzIHsKICAgIC8vLyBBbiA4LWJpdCB2" + + "YWx1ZSB0aGF0IGNvbmZpZ3VyZXMgaG93IHRvIHNlbmQgYSBtZXNzYWdlLCBkZWZhdWx0cyB0byAwLgogICAgLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5v" + + "cmcvYm9vay9tZXNzYWdlLW1vZGUKICAgIG1vZGU6IEludCA9IFNlbmREZWZhdWx0TW9kZTsKCiAgICAvLy8gT3B0aW9uYWwgbWVzc2FnZSBib2R5IGFzIGEgYENlbGxg" + + "LgogICAgYm9keTogQ2VsbD8gPSBudWxsOwoKICAgIC8vLyBUaGUgYW1vdW50IG9mIG5hbm9Ub25jb2lucyB5b3Ugd2FudCB0byBzZW5kIHdpdGgKICAgIC8vLyB0aGUg" + + "bWVzc2FnZS4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGNvdmVyIGZvcndhcmQgZmVlcywKICAgIC8vLyB1bmxlc3MgdGhlIG9wdGlvbmFsIGZsYWcgYFNlbmRQYXlGd2RG" + + "ZWVzU2VwYXJhdGVseWAgaXMgdXNlZC4KICAgIHZhbHVlOiBJbnQ7CgogICAgLy8vIFJlY2lwaWVudCBpbnRlcm5hbCBgQWRkcmVzc2Agb24gVE9OIEJsb2NrY2hhaW4u" + + "CiAgICB0bzogQWRkcmVzczsKCiAgICAvLy8gV2hlbiBzZXQgdG8gYHRydWVgIChkZWZhdWx0KSBtZXNzYWdlIGJvdW5jZXMgYmFjayB0byB0aGUgc2VuZGVyIGlmCiAg" + + "ICAvLy8gdGhlIHJlY2lwaWVudCBjb250cmFjdCBkb2Vzbid0IGV4aXN0IG9yIHdhc24ndCBhYmxlIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuCiAgICBib3VuY2U6IEJv" + + "b2wgPSB0cnVlOwp9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMC4KLy8vCi8vLyBRdWV1ZXMgdGhlIG1lc3NhZ2UgdG8gYmUg" + + "c2VudCB1c2luZyB0aGUgYE1lc3NhZ2VQYXJhbWV0ZXJzYCBzdHJ1Y3QuIEFsbG93cyBmb3IgY2hlYXBlciBub24tZGVwbG95bWVudCwgcmVndWxhciBtZXNzYWdlcyBj" + + "b21wYXJlZCB0byB0aGUgYHNlbmQoKWAgZnVuY3Rpb24uCi8vLwovLy8gVGhlIGBNZXNzYWdlUGFyYW1ldGVyc2Agc3RydWN0IGlzIHNpbWlsYXIgdG8gYFNlbmRQYXJh" + + "bWV0ZXJzYCBzdHJ1Y3QsIGJ1dCB3aXRob3V0IHRoZSBgY29kZWAgYW5kIGBkYXRhYCBmaWVsZHMuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8v" + + "LyAgICAgbWVzc2FnZShNZXNzYWdlUGFyYW1ldGVyc3sKLy8vICAgICAgICAgdG86IHNlbmRlcigpLCAgICAvLyBiYWNrIHRvIHRoZSBzZW5kZXIsCi8vLyAgICAgICAg" + + "IHZhbHVlOiB0b24oIjEiKSwgLy8gd2l0aCAxIFRvbmNvaW4gKDFfMDAwXzAwMF8wMDAgbmFub1RvbmNvaW4pLAovLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC8v" + + "IGFuZCBubyBtZXNzYWdlIGJvZHkKLy8vICAgICB9KTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogMzM6IFtBY3Rpb24gbGlz" + "dCBpcyB0b28gbG9uZ10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gcXVldWUgbW9yZSB0aGFuIDI1NSBtZXNzYWdlcy4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0" + - "dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjc2VuZHJhd21lc3NhZ2UKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUt" + - "c2VuZCNtZXNzYWdlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjZGVwbG95Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcu" + - "b3JnL3JlZi9jb3JlLXNlbmQjc2VuZAovLy8KLy8vIFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ106IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1j" + - "b2RlcyMzMwovLy8KYXNtIGZ1biBzZW5kUmF3TWVzc2FnZShtc2c6IENlbGwsIG1vZGU6IEludCkgeyBTRU5EUkFXTVNHIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uICoq" + - "RGVwcmVjYXRlZCoqIHNpbmNlIFRhY3QgMS42LjYuCi8vLwovLy8gVXNlIGBzZW5kUmF3TWVzc2FnZVJldHVybkZvcndhcmRGZWUoKWAgaW5zdGVhZC4KLy8vCi8vLyBT" + - "aW1pbGFyIHRvIGBzZW5kUmF3TWVzc2FnZSgpYCwgYnV0IGFsc28gY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgZm9yd2FyZCBmZWUgaW4gbmFub1RvbmNvaW4uCi8v" + - "LwovLy8gIyMjIyBFeGl0IGNvZGVzCi8vLwovLy8gKiA1OiBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdIC0gVGhyb3duIGlmIHRoZSBtZXNzYWdlIG1vZGUg" + - "aXMgaW52YWxpZC4KLy8vICogNzogW1R5cGUgY2hlY2sgZXJyb3JdIC0gVGhyb3duIGlmIGFueSBvZiB0aGUgYmxvY2tjaGFpbiBjb25maWcsIGNvbnRyYWN0IGJhbGFu" + - "Y2Ugb3IgaW5jb21pbmcgbWVzc2FnZSB2YWx1ZSBhcmUgaW52YWxpZC4KLy8vICogOTogW0NlbGwgdW5kZXJmbG93XSAtIFRocm93biBpZiB0aGUgYmxvY2tjaGFpbiBj" + - "b25maWcgaXMgaW52YWxpZC4KLy8vICogMTE6IFsiVW5rbm93biIgZXJyb3JdIC0gVGhyb3duIGlmIHRoZSBtZXNzYWdlIGNlbGwgaXMgaWxsLWZvcm1lZCBvciB0aGUg" + - "YmxvY2tjaGFpbiBjb25maWcgaXMgaW52YWxpZC4KLy8vICogMzM6IFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8g" + - "cXVldWUgbW9yZSB0aGFuIDI1NSBtZXNzYWdlcy4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjbmF0aXZl" + - "c2VuZG1lc3NhZ2VyZXR1cm5mb3J3YXJkZmVlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjc2VuZHJhd21lc3NhZ2UKLy8vCi8v" + - "LyBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VdOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjNQovLy8gW1R5cGUgY2hlY2sg" + - "ZXJyb3JdOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjNwovLy8gW0NlbGwgdW5kZXJmbG93XTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFu" + - "Zy5vcmcvYm9vay9leGl0LWNvZGVzIzkKLy8vIFsiVW5rbm93biIgZXJyb3JdOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMTEKLy8v" + - "IFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ106IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMzMwovLy8KYXNtIGZ1biBuYXRpdmVTZW5k" + - "TWVzc2FnZVJldHVybkZvcndhcmRGZWUobXNnOiBDZWxsLCBtb2RlOiBJbnQpOiBJbnQgeyBTRU5ETVNHIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWlsYWJsZSBz" + - "aW5jZSBUYWN0IDEuNi42LgovLy8KLy8vIFNpbWlsYXIgdG8gYHNlbmRSYXdNZXNzYWdlKClgLCBidXQgYWxzbyBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBmb3J3" + - "YXJkIGZlZSBpbiBuYW5vVG9uY29pbi4KLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0gLSBU" + - "aHJvd24gaWYgdGhlIG1lc3NhZ2UgbW9kZSBpcyBpbnZhbGlkLgovLy8gKiA3OiBbVHlwZSBjaGVjayBlcnJvcl0gLSBUaHJvd24gaWYgYW55IG9mIHRoZSBibG9ja2No" + - "YWluIGNvbmZpZywgY29udHJhY3QgYmFsYW5jZSBvciBpbmNvbWluZyBtZXNzYWdlIHZhbHVlIGFyZSBpbnZhbGlkLgovLy8gKiAxMTogWyJVbmtub3duIiBlcnJvcl0g" + - "LSBUaHJvd24gaWYgdGhlIG1lc3NhZ2UgY2VsbCBpcyBpbGwtZm9ybWVkIG9yIHRoZSBUVk0gY29uZmlnIGlzIGludmFsaWQuCi8vLyAqIDMzOiBbQWN0aW9uIGxpc3Qg" + - "aXMgdG9vIGxvbmddIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHF1ZXVlIG1vcmUgdGhhbiAyNTUgbWVzc2FnZXMuCi8vLwovLy8gU2VlOgovLy8gKiBodHRw" + - "czovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1zZW5kI3NlbmRyYXdtZXNzYWdlcmV0dXJuZm9yd2FyZGZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5n" + - "Lm9yZy9yZWYvY29yZS1zZW5kI3NlbmRyYXdtZXNzYWdlCi8vLwovLy8gW0ludGVnZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFu" + - "Zy5vcmcvYm9vay9leGl0LWNvZGVzIzUKLy8vIFtUeXBlIGNoZWNrIGVycm9yXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzcKLy8v" + - "IFsiVW5rbm93biIgZXJyb3JdOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMTEKLy8vIFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ106" + - "IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMzMwovLy8KYXNtIGZ1biBzZW5kTWVzc2FnZVJldHVybkZvcndhcmRGZWUobXNnOiBDZWxs" + - "LCBtb2RlOiBJbnQpOiBJbnQgeyBTRU5ETVNHIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uCi8vLwovLy8gUXVldWVzIHRoZSBtZXNzYWdlIGBib2R5YCB0byBiZSBzZW50" + - "IHRvIHRoZSBvdXRlciB3b3JsZCB3aXRoIHRoZSBwdXJwb3NlIG9mIGxvZ2dpbmcgYW5kIGFuYWx5emluZyBpdCBsYXRlciBvZmYtY2hhaW4uIFRoZSBtZXNzYWdlIGRv" + - "ZXMgbm90IGhhdmUgYSByZWNpcGllbnQgYW5kIGlzIG1vcmUgZ2FzLWVmZmljaWVudCBjb21wYXJlZCB0byB1c2luZyBhbnkgb3RoZXIgbWVzc2FnZS1zZW5kaW5nIGZ1" + - "bmN0aW9ucyBvZiBUYWN0LgovLy8KLy8vIFRoZSBtZXNzYWdlIGlzIHNlbnQgd2l0aCB0aGUgZGVmYXVsdCBtb2RlOiBgU2VuZERlZmF1bHRNb2RlYCAoMCkuCi8vLwov" + - "Ly8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgZW1pdCgiQ2F0Y2ggbWUgaWYgeW91IGNhbiwgTXIuIEhvbG1lcyIuYXNDb21tZW50KCkpOyAvLyBh" + - "c0NvbW1lbnQoKSBjb252ZXJ0cyBhIFN0cmluZyB0byBhIENlbGwKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogMzM6IFtBY3Rp" + - "b24gbGlzdCBpcyB0b28gbG9uZ10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gcXVldWUgbW9yZSB0aGFuIDI1NSBtZXNzYWdlcy4KLy8vCi8vLyBTZWU6IGh0" + - "dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjZW1pdAovLy8KLy8vIFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ106IGh0dHBzOi8vZG9jcy50YWN0" + - "LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMzMwovLy8KaW5saW5lIGZ1biBlbWl0KGJvZHk6IENlbGwpIHsKICAgIC8vIGV4dF9vdXRfbXNnX2luZm8kMTEgc3JjOk1z" + - "Z0FkZHJlc3NJbnQgZGVzdDpNc2dBZGRyZXNzRXh0IGNyZWF0ZWRfbHQ6dWludDY0IGNyZWF0ZWRfYXQ6dWludDMyCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1h" + - "eWJlOiBzdGF0ZUluaXQgKGZhbHNlKSBib2R5UmVmOiBib29sICh0cnVlKQogICAgbGV0IGM6IENlbGwgPSBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9yZVVpbnQoMTUy" + - "MTE4MDcyMDI3Mzg3NTI4MTc5NjA0Mzg0NjQ1MTMsIDEwNCkKICAgICAgICAuc3RvcmVSZWYoYm9keSkKICAgICAgICAuZW5kQ2VsbCgpOwogICAgc2VuZFJhd01lc3Nh" + - "Z2UoYywgMCk7Cn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uCi8vLwovLy8gQWdyZWVzIHRvIGJ1eSBzb21lIGdhcyB0byBmaW5pc2ggdGhlIGN1cnJlbnQgdHJhbnNhY3Rp" + - "b24gYnkgc2V0dGluZyB0aGUgYGdhc19saW1pdGAgdG8gaXRzIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBvZiAyXjYzIC0gMSBhbmQgcmVzZXR0aW5nIHRoZSBgZ2FzX2Ny" + - "ZWRpdGAgdG8gMC4gVGhpcyBhY3Rpb24gaXMgcmVxdWlyZWQgdG8gcHJvY2VzcyBleHRlcm5hbCBtZXNzYWdlcywgd2hpY2ggYnJpbmcgbm8gdmFsdWUgKGhlbmNlIG5v" + - "IGdhcykgd2l0aCB0aGVtc2VsdmVzLgovLy8KLy8vIGBgYHRhY3QKLy8vIGNvbnRyYWN0IFRpbWVvdXQgewovLy8gICAgIHRpbWVvdXQ6IEludDsKLy8vCi8vLyAgICAg" + - "aW5pdCgpIHsKLy8vICAgICAgICAgc2VsZi50aW1lb3V0ID0gbm93KCkgKyA1ICogNjA7IC8vIDUgbWludXRlcyBmcm9tIG5vdwovLy8gICAgIH0KLy8vCi8vLyAgICAg" + - "ZXh0ZXJuYWwoInRpbWVvdXQiKSB7Ci8vLyAgICAgICAgIGlmIChub3coKSA+IHNlbGYudGltZW91dCkgewovLy8gICAgICAgICAgICAgYWNjZXB0TWVzc2FnZSgpOyAv" + - "LyBzdGFydCBhY2NlcHRpbmcgZXh0ZXJuYWwgbWVzc2FnZXMgb25jZSB0aW1lb3V0IHdlbnQgb3V0Ci8vLyAgICAgICAgIH0KLy8vICAgICB9Ci8vLyB9Ci8vLyBgYGAK" + - "Ly8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWdhcyNhY2NlcHRtZXNzYWdlCi8vLwphc20gZnVuIGFjY2VwdE1lc3NhZ2UoKSB7" + - "IEFDQ0VQVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLgovLy8KLy8vIENvbW1pdHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgcmVnaXN0ZXJzIGBjNGAgKHBlcnNpc3RlbnQg" + - "ZGF0YSkgYW5kIGBjNWAgKGFjdGlvbnMpLCBzbyB0aGF0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBpcyBjb25zaWRlcmVkICJzdWNjZXNzZnVsIiB3aXRoIHRoZSBzYXZl" + - "ZCB2YWx1ZXMgZXZlbiBpZiBhbiBleGNlcHRpb24gaW4gY29tcHV0ZSBwaGFzZSBpcyB0aHJvd24gbGF0ZXIuCi8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgp" + - "IHsKLy8vICAgICBjb21taXQoKTsgIC8vIG5vdywgdHJhbnNhY3Rpb24gaXMgY29uc2lkZXJlZCAic3VjY2Vzc2Z1bCIKLy8vICAgICB0aHJvdyg0Mik7IC8vIGFuZCB0" + - "aGlzIHdvbid0IGZhaWwgaXQKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY29udGV4dHN0YXRlI2Nv" + - "bW1pdAovLy8KYXNtIGZ1biBjb21taXQoKSB7IENPTU1JVCB9Cg=="; + "dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjbWVzc2FnZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9k" + + "ZQovLy8KLy8vIFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ106IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMzMwovLy8KYXNtIGZ1biBt" + + "ZXNzYWdlKHBhcmFtczogTWVzc2FnZVBhcmFtZXRlcnMpIHsKICAgIE5FV0MKICAgIGJ7MDF9IFNUU0xJQ0VDT05TVCAgLy8gc3RvcmUgdGFnID0gJDAgYW5kIGlocl9k" + + "aXNhYmxlZCA9IHRydWUKICAgIDEgU1RJICAgICAgICAgICAgICAgLy8gc3RvcmUgYGJvdW5jZWAKICAgIGJ7MDAwfSBTVFNMSUNFQ09OU1QgLy8gc3RvcmUgYm91bmNl" + + "ZCA9IGZhbHNlIGFuZCBzcmMgPSBhZGRyX25vbmUKICAgIFNUU0xJQ0UgICAgICAgICAgICAgLy8gc3RvcmUgYHRvYAogICAgU1dBUAogICAgU1RHUkFNUyAgICAgICAg" + + "ICAgICAvLyBzdG9yZSBgdmFsdWVgCiAgICAxMDYgUFVTSElOVCAgICAgICAgIC8vIDEgKyA0ICsgNCArIDY0ICsgMzIgKyAxCiAgICBTVFpFUk9FUwogICAgLy8g4oaS" + + "IFN0YWNrIHN0YXRlCiAgICAvLyBzMDogQnVpbGRlcgogICAgLy8gczE6IGBib2R5YAogICAgLy8gczI6IGBtb2RlYAogICAgU1RESUNUCiAgICBFTkRDCiAgICBTV0FQ" + + "CiAgICBTRU5EUkFXTVNHCn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIFF1ZXVlcyB0aGUgbWVzc2FnZSB0byBiZSBzZW50IHVzaW5nIGEgYFNlbmRQYXJhbWV0ZXJzYCBz" + + "dHJ1Y3QuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgc2VuZChTZW5kUGFyYW1ldGVyc3sKLy8vICAgICAgICAgdG86IHNlbmRlcigp" + + "LCAgICAvLyBiYWNrIHRvIHRoZSBzZW5kZXIsCi8vLyAgICAgICAgIHZhbHVlOiB0b24oIjEiKSwgLy8gd2l0aCAxIFRvbmNvaW4gKDFfMDAwXzAwMF8wMDAgbmFub1Rv" + + "bmNvaW4pLAovLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBubyBtZXNzYWdlIGJvZHkKLy8vICAgICB9KTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMj" + + "IyMgRXhpdCBjb2RlcwovLy8KLy8vICogMzM6IFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gcXVldWUgbW9yZSB0" + + "aGFuIDI1NSBtZXNzYWdlcy4KLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjc2VuZAovLy8KLy8vIFtBY3Rpb24gbGlz" + + "dCBpcyB0b28gbG9uZ106IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMzMwovLy8KYXNtIGZ1biBzZW5kKHBhcmFtczogU2VuZFBhcmFt" + + "ZXRlcnMpIHsKICAgIC8vIEluc3RydWN0aW9ucyBhcmUgZ3JvdXBlZCwgYW5kIHRoZSBzdGFjayBzdGF0ZXMgdGhleSBwcm9kdWNlIGFzIGEgZ3JvdXAgYXJlIHNob3du" + + "IHJpZ2h0IGFmdGVyLgogICAgLy8gSW4gdGhlIGVuZCwgb3VyIG1lc3NhZ2UgQ2VsbCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIFRMLUIgc3RydWN0dXJlOgogICAg" + + "Ly8gbWVzc2FnZSRfIHtYOlR5cGV9CiAgICAvLyAgIGluZm86Q29tbW9uTXNnSW5mb1JlbGF4ZWQKICAgIC8vICAgaW5pdDooTWF5YmUgKEVpdGhlciBTdGF0ZUluaXQg" + + "XlN0YXRlSW5pdCkpCiAgICAvLyAgIGJvZHk6KEVpdGhlciBYIF5YKQogICAgLy8gPSBNZXNzYWdlUmVsYXhlZCBYOwoKICAgIC8vIOKGkiBTdGFjayBzdGF0ZQogICAg" + + "Ly8gczA6IGBwYXJhbXMuYm91bmNlYAogICAgLy8gczE6IGBwYXJhbXMudG9gCiAgICAvLyBzMjogYHBhcmFtcy52YWx1ZWAKICAgIC8vIHMzOiBgcGFyYW1zLmRhdGFg" + + "CiAgICAvLyBzNDogYHBhcmFtcy5jb2RlYAogICAgLy8gczU6IGBwYXJhbXMuYm9keWAKICAgIC8vIHM2OiBgcGFyYW1zLm1vZGVgCiAgICAvLyBGb3IgYnJldml0eSwg" + + "dGhlICJwYXJhbXMiIHByZWZpeCB3aWxsIGJlIG9taXR0ZWQgZnJvbSBub3cgb24uCgogICAgLy8gR3JvdXAgMTogU3RvcmluZyB0aGUgYGJvdW5jZWAsIGB0b2AgYW5k" + + "IGB2YWx1ZWAgaW50byBhIEJ1aWxkZXIKICAgIE5FV0MKICAgIGJ7MDF9IFNUU0xJQ0VDT05TVCAgLy8gc3RvcmUgdGFnID0gJDAgYW5kIGlocl9kaXNhYmxlZCA9IHRy" + + "dWUKICAgIDEgU1RJICAgICAgICAgICAgICAgLy8gc3RvcmUgYGJvdW5jZWAKICAgIGJ7MDAwfSBTVFNMSUNFQ09OU1QgLy8gc3RvcmUgYm91bmNlZCA9IGZhbHNlIGFu" + + "ZCBzcmMgPSBhZGRyX25vbmUKICAgIFNUU0xJQ0UgICAgICAgICAgICAgLy8gc3RvcmUgYHRvYAogICAgU1dBUAogICAgU1RHUkFNUyAgICAgICAgICAgICAvLyBzdG9y" + + "ZSBgdmFsdWVgCiAgICAxMDUgUFVTSElOVCAgICAgICAgIC8vIDEgKyA0ICsgNCArIDY0ICsgMzIKICAgIFNUWkVST0VTICAgICAgICAgICAgLy8gc3RvcmUgY3VycmVu" + + "Y3lfY29sbGVjdGlvbiwgaWhyX2ZlZSwgZndkX2ZlZSwgY3JlYXRlZF9sdCBhbmQgY3JlYXRlZF9hdAogICAgLy8g4oaSIFN0YWNrIHN0YXRlCiAgICAvLyBzMDogQnVp" + + "bGRlcgogICAgLy8gczE6IGBkYXRhYAogICAgLy8gczI6IGBjb2RlYAogICAgLy8gczM6IGBib2R5YAogICAgLy8gczQ6IGBtb2RlYAoKICAgIC8vIEdyb3VwIDI6IFBs" + + "YWNpbmcgdGhlIEJ1aWxkZXIgYWZ0ZXIgY29kZSBhbmQgZGF0YSwgdGhlbiBjaGVja2luZyB0aG9zZSBmb3IgbnVsbGFiaWxpdHkKICAgIHMyIFhDSEcwCiAgICBEVVAy" + + "CiAgICBJU05VTEwKICAgIFNXQVAKICAgIElTTlVMTAogICAgQU5ECiAgICAvLyDihpIgU3RhY2sgc3RhdGUKICAgIC8vIHMwOiAtMSAodHJ1ZSkgaWYgYGRhdGFgIGFu" + + "ZCBgY29kZWAgYXJlIGJvdGggbnVsbCwgMCAoZmFsc2UpIG90aGVyd2lzZQogICAgLy8gczE6IGBjb2RlYAogICAgLy8gczI6IGBkYXRhYAogICAgLy8gczM6IEJ1aWxk" + + "ZXIKICAgIC8vIHM0OiBgYm9keWAKICAgIC8vIHM1OiBgbW9kZWAKCiAgICAvLyBHcm91cCAzOiBMZWZ0IGJyYW5jaCBvZiB0aGUgSUZFTFNFLCBleGVjdXRlZCBpZiBz" + + "MCBpcyAtMSAodHJ1ZSkKICAgIDx7CiAgICAgICAgRFJPUDIgLy8gZHJvcCBgZGF0YWAgYW5kIGBjb2RlYCwgc2luY2UgZWl0aGVyIG9mIHRob3NlIGlzIG51bGwKICAg" + + "ICAgICBiezB9IFNUU0xJQ0VDT05TVAogICAgfT4gUFVTSENPTlQKCiAgICAvLyBHcm91cCAzOiBSaWdodCBicmFuY2ggb2YgdGhlIElGRUxTRSwgZXhlY3V0ZWQgaWYg" + + "czAgaXMgMCAoZmFsc2UpCiAgICA8ewogICAgICAgIC8vIF8gc3BsaXRfZGVwdGg6KE1heWJlICgjIyA1KSkKICAgICAgICAvLyAgIHNwZWNpYWw6KE1heWJlIFRpY2tU" + + "b2NrKQogICAgICAgIC8vICAgY29kZTooTWF5YmUgXkNlbGwpCiAgICAgICAgLy8gICBkYXRhOihNYXliZSBeQ2VsbCkKICAgICAgICAvLyAgIGxpYnJhcnk6KE1heWJl" + + "IF5DZWxsKQogICAgICAgIC8vID0gU3RhdGVJbml0OwogICAgICAgIFJPVCAgICAgICAgICAgICAgICAvLyBwbGFjZSBtZXNzYWdlIEJ1aWxkZXIgb24gdG9wCiAgICAg" + + "ICAgYnsxMH0gU1RTTElDRUNPTlNUIC8vIHN0b3JlIE1heWJlID0gdHJ1ZSwgRWl0aGVyID0gZmFsc2UKICAgICAgICAvLyBTdGFydCBjb21wb3NpbmcgaW5saW5lZCBT" + + "dGF0ZUluaXQKICAgICAgICBiezAwfSBTVFNMSUNFQ09OU1QgLy8gc3RvcmUgc3BsaXRfZGVwdGggYW5kIHNwZWNpYWwgZmlyc3QKICAgICAgICBTVERJQ1QgICAgICAg" + + "ICAgICAgLy8gc3RvcmUgY29kZQogICAgICAgIFNURElDVCAgICAgICAgICAgICAvLyBzdG9yZSBkYXRhCiAgICAgICAgYnswfSBTVFNMSUNFQ09OU1QgIC8vIHN0b3Jl" + + "IGxpYnJhcnkKICAgIH0+IFBVU0hDT05UCgogICAgLy8gR3JvdXAgMzogSUZFTFNFIHRoYXQgZG9lcyB0aGUgYnJhbmNoaW5nIHNob3duIGFib3ZlCiAgICBJRkVMU0UK" + + "ICAgIC8vIOKGkiBTdGFjayBzdGF0ZQogICAgLy8gczA6IEJ1aWxkZXIKICAgIC8vIHMxOiBudWxsIG9yIFN0YXRlSW5pdAogICAgLy8gczI6IGBib2R5YAogICAgLy8g" + + "czM6IGBtb2RlYAoKICAgIC8vIEdyb3VwIDQ6IEZpbmFsaXppbmcgdGhlIG1lc3NhZ2UKICAgIFNURElDVCAvLyBzdG9yZSBgYm9keWAgYXMgcmVmIHdpdGggYW4gZXh0" + + "cmEgTWF5YmUgYml0LCBzaW5jZSBgYm9keWAgbWlnaHQgYmUgbnVsbAogICAgRU5EQwogICAgLy8g4oaSIFN0YWNrIHN0YXRlCiAgICAvLyBzMDogQ2VsbAogICAgLy8g" + + "czE6IGBtb2RlYAoKICAgIC8vIEdyb3VwIDU6IFNlbmRpbmcgdGhlIG1lc3NhZ2UsIHdpdGggYG1vZGVgIG9uIHRvcAogICAgU1dBUAogICAgU0VORFJBV01TRyAvLyBo" + + "dHRwczovL2dpdGh1Yi5jb20vdGFjdC1sYW5nL3RhY3QvaXNzdWVzLzE1NTgKfQoKLy8vIFN0cnVjdCBmb3Igc3BlY2lmeWluZyB0aGUgZGVwbG95bWVudCBtZXNzYWdl" + + "IHBhcmFtZXRlcnMgb2YgdGhlIGBkZXBsb3koKWAgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNi4wLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRh" + + "Y3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNkZXBsb3kKLy8vCnN0cnVjdCBEZXBsb3lQYXJhbWV0ZXJzIHsKICAgIC8vLyBBbiA4LWJpdCB2YWx1ZSB0aGF0IGNvbmZp" + + "Z3VyZXMgaG93IHRvIHNlbmQgYSBtZXNzYWdlLCBkZWZhdWx0cyB0byAwLgogICAgLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9tZXNzYWdl" + + "LW1vZGUKICAgIG1vZGU6IEludCA9IFNlbmREZWZhdWx0TW9kZTsKCiAgICAvLy8gT3B0aW9uYWwgbWVzc2FnZSBib2R5IGFzIGEgYENlbGxgLgogICAgYm9keTogQ2Vs" + + "bD8gPSBudWxsOwoKICAgIC8vLyBUaGUgYW1vdW50IG9mIG5hbm9Ub25jb2lucyB5b3Ugd2FudCB0byBzZW5kIHdpdGgKICAgIC8vLyB0aGUgbWVzc2FnZS4gVGhpcyB2" + + "YWx1ZSBpcyB1c2VkIHRvIGNvdmVyIGZvcndhcmQgZmVlcywKICAgIC8vLyB1bmxlc3MgdGhlIG9wdGlvbmFsIGZsYWcgYFNlbmRQYXlGd2RGZWVzU2VwYXJhdGVseWAg" + + "aXMgdXNlZC4KICAgIHZhbHVlOiBJbnQ7CgogICAgLy8vIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCkgbWVzc2FnZSBib3VuY2VzIGJhY2sgdG8gdGhlIHNlbmRl" + + "ciBpZgogICAgLy8vIHRoZSByZWNpcGllbnQgY29udHJhY3QgZG9lc24ndCBleGlzdCBvciB3YXNuJ3QgYWJsZSB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgogICAgYm91" + + "bmNlOiBCb29sID0gdHJ1ZTsKCiAgICAvLy8gSW5pdGlhbCBwYWNrYWdlIG9mIHRoZSBjb250cmFjdCAoaW5pdGlhbCBjb2RlIGFuZCBpbml0aWFsIGRhdGEpLgogICAg" + + "Ly8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leHByZXNzaW9ucyNpbml0b2YKICAgIGluaXQ6IFN0YXRlSW5pdDsKfQoKLy8vIEdsb2JhbCBm" + + "dW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjAuCi8vLwovLy8gUXVldWVzIHRoZSBjb250cmFjdCBkZXBsb3ltZW50IG1lc3NhZ2UgdG8gYmUgc2VudCB1" + + "c2luZyB0aGUgYERlcGxveVBhcmFtZXRlcnNgIHN0cnVjdC4gQWxsb3dzIGZvciBjaGVhcGVyIG9uLWNoYWluIGRlcGxveW1lbnRzIGNvbXBhcmVkIHRvIHRoZSBgc2Vu" + + "ZCgpYCBmdW5jdGlvbi4KLy8vCi8vLyBUaGUgYERlcGxveVBhcmFtZXRlcnNgIHN0cnVjdCBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczoKLy8vICogYG1v" + + "ZGU6IEludGAsIGFuIDgtYml0IHZhbHVlIHRoYXQgY29uZmlndXJlcyBob3cgdG8gc2VuZCBhIG1lc3NhZ2UsIGRlZmF1bHRzIHRvIDAuCi8vLyAqIGBib2R5OiBDZWxs" + + "P2AsIG9wdGlvbmFsIG1lc3NhZ2UgYm9keSBhcyBhIGBDZWxsYC4KLy8vICogYHZhbHVlOiBJbnRgLCB0aGUgYW1vdW50IG9mIG5hbm9Ub25jb2lucyB5b3Ugd2FudCB0" + + "byBzZW5kIHdpdGggdGhlIG1lc3NhZ2UuCi8vLyAgIFRoaXMgdmFsdWUgaXMgdXNlZCB0byBjb3ZlciBmb3J3YXJkIGZlZXMsIHVubGVzcyB0aGUgb3B0aW9uYWwgZmxh" + + "ZyBgU2VuZFBheUZ3ZEZlZXNTZXBhcmF0ZWx5YCBpcyB1c2VkLgovLy8gKiBgYm91bmNlOiBCb29sYCwgd2hlbiBzZXQgdG8gYHRydWVgIChkZWZhdWx0KSBtZXNzYWdl" + + "IGJvdW5jZXMgYmFjayB0byB0aGUgc2VuZGVyCi8vLyAgICBpZiB0aGUgcmVjaXBpZW50IGNvbnRyYWN0IGRvZXNuJ3QgZXhpc3Qgb3Igd2Fzbid0IGFibGUgdG8gcHJv" + + "Y2VzcyB0aGUgbWVzc2FnZS4KLy8vICogYGluaXQ6IFN0YXRlSW5pdGAsIGluaXQgcGFja2FnZSBvZiB0aGUgY29udHJhY3QgKGluaXRpYWwgY29kZSBhbmQgaW5pdGlh" + + "bCBkYXRhKS4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBkZXBsb3koRGVwbG95UGFyYW1ldGVyc3sKLy8vICAgICAgICAgaW5pdDog" + + "aW5pdE9mIFNvbWVDb250cmFjdCgpLCAvLyB3aXRoIGluaXRpYWwgY29kZSBhbmQgZGF0YSBvZiBTb21lQ29udHJhY3QKLy8vICAgICAgICAgICAgICAgICAgICAgICAg" + + "ICAgICAgICAgICAgICAvLyBhbmQgbm8gYWRkaXRpb25hbCBtZXNzYWdlIGJvZHkKLy8vICAgICAgICAgbW9kZTogU2VuZElnbm9yZUVycm9ycywgICAgICAvLyBza2lw" + + "IHRoZSBtZXNzYWdlIGluIGNhc2Ugb2YgZXJyb3JzCi8vLyAgICAgICAgIHZhbHVlOiB0b24oIjEiKSwgICAgICAgICAgICAgLy8gc2VuZCAxIFRvbmNvaW4gKDFfMDAw" + + "XzAwMF8wMDAgbmFub1RvbmNvaW4pCi8vLyAgICAgfSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDMzOiBbQWN0aW9uIGxp" + + "c3QgaXMgdG9vIGxvbmddIOKAlCBUaHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHF1ZXVlIG1vcmUgdGhhbiAyNTUgbWVzc2FnZXMuCi8vLwovLy8gU2VlOgovLy8gKiBo" + + "dHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1zZW5kI2RlcGxveQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL21lc3NhZ2UtbW9k" + + "ZQovLy8KLy8vIFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ106IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMzMwovLy8KYXNtIGZ1biBk" + + "ZXBsb3kocGFyYW1zOiBEZXBsb3lQYXJhbWV0ZXJzKSB7CiAgICAvLyBJbnN0cnVjdGlvbnMgYXJlIGdyb3VwZWQsIGFuZCB0aGUgc3RhY2sgc3RhdGVzIHRoZXkgcHJv" + + "ZHVjZSBhcyBhIGdyb3VwIGFyZSBzaG93biByaWdodCBhZnRlci4KICAgIC8vCiAgICAvLyDihpIgU3RhY2sgc3RhdGUKICAgIC8vIHMwOiBgcGFyYW1zLmluaXQuZGF0" + + "YWAKICAgIC8vIHMxOiBgcGFyYW1zLmluaXQuY29kZWAKICAgIC8vIHMyOiBgcGFyYW1zLmJvdW5jZWAKICAgIC8vIHMzOiBgcGFyYW1zLnZhbHVlYAogICAgLy8gczQ6" + + "IGBwYXJhbXMuYm9keWAKICAgIC8vIHM1OiBgcGFyYW1zLm1vZGVgCiAgICAvLyBGb3IgYnJldml0eSwgdGhlICJwYXJhbXMiIHByZWZpeCB3aWxsIGJlIG9taXR0ZWQg" + + "ZnJvbSBub3cgb24uCgogICAgLy8gR3JvdXAgMTogUHJlcGFyYXRpb24gb2YgbmVlZGVkIHBhcmFtcwogICAgLy8gRm9yIGFsbW9zdCBpZGVudGljYWwgbG9naWMgYW5k" + + "IGluc3RydWN0aW9ucywKICAgIC8vIHNlZSBjb21tZW50cyBpbnNpZGUgYGNvbnRyYWN0SGFzaCgpYCBmdW5jdGlvbiBpbiBjb250cmFjdC50YWN0CiAgICA0IDEgQkxL" + + "UFVTSCAvLyBwdXNoZXMgMiBjb3BpZXMgb2YgYGluaXQuY29kZWAgYW5kIGBpbml0LmRhdGFgCiAgICBIQVNIQ1UgLy8gYGluaXQuZGF0YWAgaGFzaAogICAgU1dBUAog" + + "ICAgSEFTSENVIC8vIGBpbml0LmNvZGVgIGhhc2gKICAgIFNXQVAyCiAgICBDREVQVEggLy8gYGluaXQuZGF0YWAgZGVwdGgKICAgIFNXQVAKICAgIENERVBUSCAvLyBg" + + "aW5pdC5jb2RlYCBkZXB0aAoKICAgIC8vIEdyb3VwIDI6IENhbGN1bGF0aW5nIGRlc3RpbmF0aW9uIGFkZHJlc3MKICAgIC8vIEZvciBhbG1vc3QgaWRlbnRpY2FsIGxv" + + "Z2ljIGFuZCBpbnN0cnVjdGlvbnMsCiAgICAvLyBzZWUgY29tbWVudHMgaW5zaWRlIGBjb250cmFjdEhhc2goKWAgZnVuY3Rpb24gaW4gY29udHJhY3QudGFjdAogICAg" + + "MTMxMzgwIElOVCAvLyAoMiA8PCAxNikgfCAoMSA8PCA4KSB8IDB4MzQKICAgIE5FV0MKICAgIDI0IFNUVQogICAgMTYgU1RVCiAgICAxNiBTVFUKICAgIDI1NiBTVFUK" + + "ICAgIDI1NiBTVFUKICAgIE9ORSBIQVNIRVhUX1NIQTI1NiAvLyBvYnRhaW5zIGhhc2ggcGFydCAoYWNjb3VudCBpZCkgb2YgdGhlIGFkZHJlc3MKICAgIC8vIOKGkiBT" + + "dGFjayBzdGF0ZQogICAgLy8gczA6IGRlc3RBZGRyKGhhc2ggcGFydCkKICAgIC8vIHMxOiBgaW5pdC5kYXRhYAogICAgLy8gczI6IGBpbml0LmNvZGVgCiAgICAvLyBz" + + "MyBhbmQgYmVsb3c6IGBib3VuY2VgLCBgdmFsdWVgLCBgYm9keWAsIGBtb2RlYAoKICAgIC8vIEdyb3VwIDM6IEJ1aWxkaW5nIGEgbWVzc2FnZSAoQ29tbW9uTXNnSW5m" + + "b1JlbGF4ZWQpCiAgICBzMyBYQ0hHMCAgICAgICAgICAgLy8gc3dhcHMgYGJvdW5jZWAgd2l0aCBkZXN0QWRkcihoYXNoIHBhcnQpCiAgICBORVdDCiAgICBiezAxfSBT" + + "VFNMSUNFQ09OU1QgLy8gc3RvcmUgdGFnID0gJDAgYW5kIGlocl9kaXNhYmxlZCA9IHRydWUKICAgIDEgU1RJICAgICAgICAgICAgICAvLyBzdG9yZSBgYm91bmNlYAog" + + "ICAgczEgczIgWENIRyAgICAgICAgIC8vIHN3YXAgYGluaXQuZGF0YWAgd2l0aCBgaW5pdC5jb2RlYCwgcGxhY2luZyBjb2RlIG9uIHMxCiAgICBTVFJFRiAgICAgICAg" + + "ICAgICAgLy8gc3RvcmUgYGluaXQuY29kZWAKICAgIFNUUkVGICAgICAgICAgICAgICAvLyBzdG9yZSBgaW5pdC5kYXRhYAogICAgLy8gSW5saW5lIFN0YXRlSW5pdDoK" + + "ICAgIGJ7MDAwMTAwMDAwMDAwMDB9IFNUU0xJQ0VDT05TVAogICAgLy8gMCArIDAwICsgMTAgKyAwICsgMDAwMDAwMDAKICAgIC8vIDEpIDAgLSBib3VuY2VkID0gZmFs" + + "c2UKICAgIC8vIDIpIDAwIC0gc3JjID0gYWRkcl9ub25lCiAgICAvLyAzKSAxMCAtIHRhZyBvZiBhZGRyX3N0ZCAocGFydCBvZiBkZXN0KQogICAgLy8gNCkgMCAtIE1h" + + "eWJlIEFueWNhc3QgPSBmYWxzZQogICAgLy8gNSkgMDAwMDAwMDAgLSB3b3JrY2hhaW5faWQgKHBhcnQgb2YgZGVzdCkKICAgIC8vCiAgICAyNTYgU1RVICAgICAvLyBz" + + "dG9yZSBkZXN0QWRkcihoYXNoIHBhcnQpCiAgICBTV0FQICAgICAgICAvLyBCdWlsZGVyIG9uIHRvcCwgYHZhbHVlYCBiZWxvdwogICAgU1RHUkFNUyAgICAgLy8gc3Rv" + + "cmUgYHZhbHVlYAogICAgMTA1IFBVU0hJTlQgLy8gMSArIDQgKyA0ICsgNjQgKyAzMgogICAgU1RaRVJPRVMgICAgLy8gc3RvcmUgY3VycmVuY3lfY29sbGVjdGlvbiwg" + + "aWhyX2ZlZSwgZndkX2ZlZSwgY3JlYXRlZF9sdCBhbmQgY3JlYXRlZF9hdAoKICAgIC8vIEdyb3VwIDQ6IENvbnRpbnVlIGJ1aWxkaW5nIGEgbWVzc2FnZSAoQ29tbW9u" + + "TXNnSW5mb1JlbGF4ZWQgaW50byBNZXNzYWdlUmVsYXhlZCkKICAgIC8vIFJlbWFpbmluZyBiaXRzIG9mIE1lc3NhZ2VSZWxheGVkOgogICAgYnsxMDAwMTEwfSBTVFNM" + + "SUNFQ09OU1QKICAgIC8vIDEwICsgMCArIDAgKyAxICsgMSArIDAKICAgIC8vIDEwIC0gTWF5YmUgKEVpdGhlciBTdGF0ZUluaXQgXlN0YXRlSW5pdCkgPSB0cnVlIGZh" + + "bHNlCiAgICAvLyAwIC0gc3BsaXRfZGVwdGg6KE1heWJlICgjIyA1KSkgPSBmYWxzZQogICAgLy8gMCA9IHNwZWNpYWw6KE1heWJlIFRpY2tUb2NrKSA9IGZhbHNlCiAg" + + "ICAvLyAxID0gY29kZTooTWF5YmUgXkNlbGwpID0gdHJ1ZQogICAgLy8gMSA9IGRhdGE6KE1heWJlIF5DZWxsKSA9IHRydWUKICAgIC8vIDAgPSBsaWJyYXJ5OihNYXli" + + "ZSBeQ2VsbCkgPSBmYWxzZQogICAgLy8KICAgIFNURElDVCAvLyBzdG9yZSBgYm9keWAgYXMgcmVmIHdpdGggYW4gZXh0cmEgTWF5YmUgYml0LCBzaW5jZSBgYm9keWAg" + + "bWlnaHQgYmUgbnVsbAogICAgRU5EQyAgIC8vIGZpbmFsaXplIHRoZSBtZXNzYWdlCiAgICAvLyDihpIgU3RhY2sgc3RhdGUKICAgIC8vIHMwOiBDZWxsCiAgICAvLyBz" + + "MTogcGFyYW1zLmBtb2RlYAoKICAgIC8vIEdyb3VwIDU6IFNlbmRpbmcgdGhlIG1lc3NhZ2UsIHdpdGggYG1vZGVgIG9uIHRvcAogICAgU1dBUAogICAgU0VORFJBV01T" + + "Rwp9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjYuMS4KLy8vCi8vLyBRdWV1ZXMgYW4gZW1wdHkgbWVzc2FnZSB0byBiZSBzZW50" + + "IHdpdGggdGhlIGBTZW5kUmVtYWluaW5nVmFsdWVgIG1vZGUgYW5kIHRoZSBgU2VuZElnbm9yZUVycm9yc2AgZmxhZyB0byB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBg" + + "dG9gLgovLy8gVGhpcyBpcyB0aGUgbW9zdCBnYXMtZWZmaWNpZW50IHdheSB0byBzZW5kIHRoZSByZW1haW5pbmcgdmFsdWUgZnJvbSB0aGUgaW5jb21pbmcgbWVzc2Fn" + + "ZSB0byB0aGUgZ2l2ZW4gYWRkcmVzcy4KLy8vCi8vLyBUaGlzIGZ1bmN0aW9uIHdvbid0IGZvcndhcmQgZXhjZXNzIHZhbHVlcyBpZiBhbnkgb3RoZXIgbWVzc2FnZS1z" + + "ZW5kaW5nIGZ1bmN0aW9ucyB3ZXJlIGNhbGxlZCBpbiB0aGUgc2FtZSByZWNlaXZlciBiZWZvcmUuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGVzKCkgewov" + + "Ly8gICAgIC8vIEZvcndhcmQgdGhlIHJlbWFpbmluZyB2YWx1ZSBiYWNrIHRvIHRoZSBzZW5kZXIKLy8vICAgICBjYXNoYmFjayhzZW5kZXIoKSk7Ci8vLwovLy8gICAg" + + "IC8vIFRoZSBjYXNoYmFjaygpIGZ1bmN0aW9uIGFib3ZlIGlzIGNoZWFwZXIsIGJ1dCBmdW5jdGlvbmFsbHkKLy8vICAgICAvLyBlcXVpdmFsZW50IHRvIHRoZSBmb2xs" + + "b3dpbmcgY2FsbCB0byB0aGUgbWVzc2FnZSgpIGZ1bmN0aW9uCi8vLyAgICAgbWVzc2FnZShNZXNzYWdlUGFyYW1ldGVyc3sKLy8vICAgICAgICAgbW9kZTogU2VuZFJl" + + "bWFpbmluZ1ZhbHVlIHwgU2VuZElnbm9yZUVycm9ycywKLy8vICAgICAgICAgYm9keTogbnVsbCwKLy8vICAgICAgICAgdmFsdWU6IDAsCi8vLyAgICAgICAgIHRvOiBz" + + "ZW5kZXIoKSwKLy8vICAgICAgICAgYm91bmNlOiBmYWxzZSwKLy8vICAgICB9KTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICog" + + "MzM6IFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gcXVldWUgbW9yZSB0aGFuIDI1NSBtZXNzYWdlcy4KLy8vCi8v" + + "LyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjY2FzaGJhY2sKLy8vCi8vLyBbQWN0aW9uIGxpc3QgaXMgdG9vIGxvbmddOiBodHRw" + + "czovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMzMKLy8vCmFzbSBmdW4gY2FzaGJhY2sodG86IEFkZHJlc3MpIHsKICAgIE5FV0MKICAgIHh7NDJf" + + "fSBTVFNMSUNFQ09OU1QgLy8gLnN0b3JlVWludCgweDEwLCA2KQogICAgU1RTTElDRSAgICAgICAgICAvLyAuc3RvcmVBZGRyZXNzKHRvKQogICAgMCBQVVNISU5UICAg" + + "ICAgICAvLyAwCiAgICAxMTEgU1RVUiAgICAgICAgIC8vIC5zdG9yZVVpbnQoMCwgMTExKQogICAgICAgICAgICAgICAgICAgICAvLyA0IHplcm9zIGZvciBjb2lucyBh" + + "bmQgMTA3IHplcm9zIGZvciBsdCwgZmVlcywgZXRjLgogICAgRU5EQwogICAgNjYgUFVTSElOVCAgICAgICAvLyBTZW5kUmVtYWluaW5nVmFsdWUgfCBTZW5kSWdub3Jl" + + "RXJyb3JzCiAgICBTRU5EUkFXTVNHCn0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uICoqRGVwcmVjYXRlZCoqIHNpbmNlIFRhY3QgMS42LjYuCi8vLwovLy8gVXNlIGBzZW5k" + + "UmF3TWVzc2FnZSgpYCBpbnN0ZWFkLgovLy8KLy8vIFF1ZXVlcyB0aGUgbWVzc2FnZSB0byBiZSBzZW50IGJ5IHNwZWNpZnlpbmcgdGhlIGNvbXBsZXRlIGBtc2dgIGNl" + + "bGwgYW5kIHRoZSBtZXNzYWdlIGBtb2RlYC4KLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDMzOiBbQWN0aW9uIGxpc3QgaXMgdG9vIGxvbmddIOKAlCBU" + + "aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHF1ZXVlIG1vcmUgdGhhbiAyNTUgbWVzc2FnZXMuCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5n" + + "Lm9yZy9yZWYvY29yZS1zZW5kI3NlbmRyYXdtZXNzYWdlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjbmF0aXZlc2VuZG1lc3Nh" + + "Z2UKLy8vCi8vLyBbQWN0aW9uIGxpc3QgaXMgdG9vIGxvbmddOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjMzMKLy8vCmFzbSBmdW4g" + + "bmF0aXZlU2VuZE1lc3NhZ2UobXNnOiBDZWxsLCBtb2RlOiBJbnQpIHsgU0VORFJBV01TRyB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFj" + + "dCAxLjYuNi4KLy8vCi8vLyBRdWV1ZXMgdGhlIG1lc3NhZ2UgdG8gYmUgc2VudCBieSBzcGVjaWZ5aW5nIHRoZSBjb21wbGV0ZSBgbXNnYCBjZWxsIGFuZCB0aGUgbWVz" + + "c2FnZSBgbW9kZWAuCi8vLwovLy8gUHJlZmVyIHVzaW5nIHRoZSBtb3JlIHVzZXItZnJpZW5kbHkgYG1lc3NhZ2UoKWAsIGBkZXBsb3koKWAsIG9yIGBzZW5kKClgIGZ1" + + "bmN0aW9ucyB1bmxlc3MgeW91IGhhdmUgYSBjb21wbGV4IGxvZ2ljIHRoYXQgY2Fubm90IGJlIGV4cHJlc3NlZCBvdGhlcndpc2UuCi8vLwovLy8gIyMjIyBFeGl0IGNv" + + "ZGVzCi8vLwovLy8gKiAzMzogW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBxdWV1ZSBtb3JlIHRoYW4gMjU1IG1l" + + "c3NhZ2VzLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNzZW5kcmF3bWVzc2FnZQovLy8gKiBodHRwczov" + + "L2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1zZW5kI21lc3NhZ2UKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNkZXBsb3kK" + + "Ly8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNzZW5kCi8vLwovLy8gW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXTogaHR0cHM6Ly9k" + + "b2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzMzCi8vLwphc20gZnVuIHNlbmRSYXdNZXNzYWdlKG1zZzogQ2VsbCwgbW9kZTogSW50KSB7IFNFTkRSQVdN" + + "U0cgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gKipEZXByZWNhdGVkKiogc2luY2UgVGFjdCAxLjYuNi4KLy8vCi8vLyBVc2UgYHNlbmRSYXdNZXNzYWdlUmV0dXJuRm9y" + + "d2FyZEZlZSgpYCBpbnN0ZWFkLgovLy8KLy8vIFNpbWlsYXIgdG8gYHNlbmRSYXdNZXNzYWdlKClgLCBidXQgYWxzbyBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBm" + + "b3J3YXJkIGZlZSBpbiBuYW5vVG9uY29pbi4KLy8vCi8vLyAjIyMjIEV4aXQgY29kZXMKLy8vCi8vLyAqIDU6IFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV0g" + + "LSBUaHJvd24gaWYgdGhlIG1lc3NhZ2UgbW9kZSBpcyBpbnZhbGlkLgovLy8gKiA3OiBbVHlwZSBjaGVjayBlcnJvcl0gLSBUaHJvd24gaWYgYW55IG9mIHRoZSBibG9j" + + "a2NoYWluIGNvbmZpZywgY29udHJhY3QgYmFsYW5jZSBvciBpbmNvbWluZyBtZXNzYWdlIHZhbHVlIGFyZSBpbnZhbGlkLgovLy8gKiA5OiBbQ2VsbCB1bmRlcmZsb3dd" + + "IC0gVGhyb3duIGlmIHRoZSBibG9ja2NoYWluIGNvbmZpZyBpcyBpbnZhbGlkLgovLy8gKiAxMTogWyJVbmtub3duIiBlcnJvcl0gLSBUaHJvd24gaWYgdGhlIG1lc3Nh" + + "Z2UgY2VsbCBpcyBpbGwtZm9ybWVkIG9yIHRoZSBibG9ja2NoYWluIGNvbmZpZyBpcyBpbnZhbGlkLgovLy8gKiAzMzogW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXSDi" + + "gJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBxdWV1ZSBtb3JlIHRoYW4gMjU1IG1lc3NhZ2VzLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3Qt" + + "bGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNuYXRpdmVzZW5kbWVzc2FnZXJldHVybmZvcndhcmRmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2Nv" + + "cmUtc2VuZCNzZW5kcmF3bWVzc2FnZQovLy8KLy8vIFtJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZV06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2sv" + + "ZXhpdC1jb2RlcyM1Ci8vLyBbVHlwZSBjaGVjayBlcnJvcl06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyM3Ci8vLyBbQ2VsbCB1bmRl" + + "cmZsb3ddOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjOQovLy8gWyJVbmtub3duIiBlcnJvcl06IGh0dHBzOi8vZG9jcy50YWN0LWxh" + + "bmcub3JnL2Jvb2svZXhpdC1jb2RlcyMxMQovLy8gW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNv" + + "ZGVzIzMzCi8vLwphc20gZnVuIG5hdGl2ZVNlbmRNZXNzYWdlUmV0dXJuRm9yd2FyZEZlZShtc2c6IENlbGwsIG1vZGU6IEludCk6IEludCB7IFNFTkRNU0cgfQoKLy8v" + + "IEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS42LjYuCi8vLwovLy8gU2ltaWxhciB0byBgc2VuZFJhd01lc3NhZ2UoKWAsIGJ1dCBhbHNvIGNh" + + "bGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlIGZvcndhcmQgZmVlIGluIG5hbm9Ub25jb2luLgovLy8KLy8vICMjIyMgRXhpdCBjb2RlcwovLy8KLy8vICogNTogW0ludGVn" + + "ZXIgb3V0IG9mIGV4cGVjdGVkIHJhbmdlXSAtIFRocm93biBpZiB0aGUgbWVzc2FnZSBtb2RlIGlzIGludmFsaWQuCi8vLyAqIDc6IFtUeXBlIGNoZWNrIGVycm9yXSAt" + + "IFRocm93biBpZiBhbnkgb2YgdGhlIGJsb2NrY2hhaW4gY29uZmlnLCBjb250cmFjdCBiYWxhbmNlIG9yIGluY29taW5nIG1lc3NhZ2UgdmFsdWUgYXJlIGludmFsaWQu" + + "Ci8vLyAqIDExOiBbIlVua25vd24iIGVycm9yXSAtIFRocm93biBpZiB0aGUgbWVzc2FnZSBjZWxsIGlzIGlsbC1mb3JtZWQgb3IgdGhlIFRWTSBjb25maWcgaXMgaW52" + + "YWxpZC4KLy8vICogMzM6IFtBY3Rpb24gbGlzdCBpcyB0b28gbG9uZ10g4oCUIFRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gcXVldWUgbW9yZSB0aGFuIDI1NSBtZXNz" + + "YWdlcy4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjc2VuZHJhd21lc3NhZ2VyZXR1cm5mb3J3YXJkZmVl" + + "Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLXNlbmQjc2VuZHJhd21lc3NhZ2UKLy8vCi8vLyBbSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQg" + + "cmFuZ2VdOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9ib29rL2V4aXQtY29kZXMjNQovLy8gW1R5cGUgY2hlY2sgZXJyb3JdOiBodHRwczovL2RvY3MudGFjdC1s" + + "YW5nLm9yZy9ib29rL2V4aXQtY29kZXMjNwovLy8gWyJVbmtub3duIiBlcnJvcl06IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL2Jvb2svZXhpdC1jb2RlcyMxMQov" + + "Ly8gW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzMzCi8vLwphc20gZnVuIHNlbmRNZXNz" + + "YWdlUmV0dXJuRm9yd2FyZEZlZShtc2c6IENlbGwsIG1vZGU6IEludCk6IEludCB7IFNFTkRNU0cgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4KLy8vCi8vLyBRdWV1ZXMg" + + "dGhlIG1lc3NhZ2UgYGJvZHlgIHRvIGJlIHNlbnQgdG8gdGhlIG91dGVyIHdvcmxkIHdpdGggdGhlIHB1cnBvc2Ugb2YgbG9nZ2luZyBhbmQgYW5hbHl6aW5nIGl0IGxh" + + "dGVyIG9mZi1jaGFpbi4gVGhlIG1lc3NhZ2UgZG9lcyBub3QgaGF2ZSBhIHJlY2lwaWVudCBhbmQgaXMgbW9yZSBnYXMtZWZmaWNpZW50IGNvbXBhcmVkIHRvIHVzaW5n" + + "IGFueSBvdGhlciBtZXNzYWdlLXNlbmRpbmcgZnVuY3Rpb25zIG9mIFRhY3QuCi8vLwovLy8gVGhlIG1lc3NhZ2UgaXMgc2VudCB3aXRoIHRoZSBkZWZhdWx0IG1vZGU6" + + "IGBTZW5kRGVmYXVsdE1vZGVgICgwKS4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBlbWl0KCJDYXRjaCBtZSBpZiB5b3UgY2FuLCBN" + + "ci4gSG9sbWVzIi5hc0NvbW1lbnQoKSk7IC8vIGFzQ29tbWVudCgpIGNvbnZlcnRzIGEgU3RyaW5nIHRvIGEgQ2VsbAovLy8gfQovLy8gYGBgCi8vLwovLy8gIyMjIyBF" + + "eGl0IGNvZGVzCi8vLwovLy8gKiAzMzogW0FjdGlvbiBsaXN0IGlzIHRvbyBsb25nXSDigJQgVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBxdWV1ZSBtb3JlIHRoYW4g" + + "MjU1IG1lc3NhZ2VzLgovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtc2VuZCNlbWl0Ci8vLwovLy8gW0FjdGlvbiBsaXN0IGlz" + + "IHRvbyBsb25nXTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzIzMzCi8vLwppbmxpbmUgZnVuIGVtaXQoYm9keTogQ2VsbCkgewogICAg" + + "Ly8gZXh0X291dF9tc2dfaW5mbyQxMSBzcmM6TXNnQWRkcmVzc0ludCBkZXN0Ok1zZ0FkZHJlc3NFeHQgY3JlYXRlZF9sdDp1aW50NjQgY3JlYXRlZF9hdDp1aW50MzIK" + + "ICAgIC8vICAgICAgICAgICAgICAgICAgICAgbWF5YmU6IHN0YXRlSW5pdCAoZmFsc2UpIGJvZHlSZWY6IGJvb2wgKHRydWUpCiAgICBsZXQgYzogQ2VsbCA9IGJlZ2lu" + + "Q2VsbCgpCiAgICAgICAgLnN0b3JlVWludCgxNTIxMTgwNzIwMjczODc1MjgxNzk2MDQzODQ2NDUxMywgMTA0KQogICAgICAgIC5zdG9yZVJlZihib2R5KQogICAgICAg" + + "IC5lbmRDZWxsKCk7CiAgICBzZW5kUmF3TWVzc2FnZShjLCAwKTsKfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4KLy8vCi8vLyBBZ3JlZXMgdG8gYnV5IHNvbWUgZ2FzIHRv" + + "IGZpbmlzaCB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBieSBzZXR0aW5nIHRoZSBgZ2FzX2xpbWl0YCB0byBpdHMgbWF4aW11bSBhbGxvd2VkIHZhbHVlIG9mIDJeNjMg" + + "LSAxIGFuZCByZXNldHRpbmcgdGhlIGBnYXNfY3JlZGl0YCB0byAwLiBUaGlzIGFjdGlvbiBpcyByZXF1aXJlZCB0byBwcm9jZXNzIGV4dGVybmFsIG1lc3NhZ2VzLCB3" + + "aGljaCBicmluZyBubyB2YWx1ZSAoaGVuY2Ugbm8gZ2FzKSB3aXRoIHRoZW1zZWx2ZXMuCi8vLwovLy8gYGBgdGFjdAovLy8gY29udHJhY3QgVGltZW91dCB7Ci8vLyAg" + + "ICAgdGltZW91dDogSW50OwovLy8KLy8vICAgICBpbml0KCkgewovLy8gICAgICAgICBzZWxmLnRpbWVvdXQgPSBub3coKSArIDUgKiA2MDsgLy8gNSBtaW51dGVzIGZy" + + "b20gbm93Ci8vLyAgICAgfQovLy8KLy8vICAgICBleHRlcm5hbCgidGltZW91dCIpIHsKLy8vICAgICAgICAgaWYgKG5vdygpID4gc2VsZi50aW1lb3V0KSB7Ci8vLyAg" + + "ICAgICAgICAgICBhY2NlcHRNZXNzYWdlKCk7IC8vIHN0YXJ0IGFjY2VwdGluZyBleHRlcm5hbCBtZXNzYWdlcyBvbmNlIHRpbWVvdXQgd2VudCBvdXQKLy8vICAgICAg" + + "ICAgfQovLy8gICAgIH0KLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtZ2FzI2FjY2VwdG1lc3NhZ2UK" + + "Ly8vCmFzbSBmdW4gYWNjZXB0TWVzc2FnZSgpIHsgQUNDRVBUIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uCi8vLwovLy8gQ29tbWl0cyB0aGUgY3VycmVudCBzdGF0ZSBv" + + "ZiByZWdpc3RlcnMgYGM0YCAocGVyc2lzdGVudCBkYXRhKSBhbmQgYGM1YCAoYWN0aW9ucyksIHNvIHRoYXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGlzIGNvbnNpZGVy" + + "ZWQgInN1Y2Nlc3NmdWwiIHdpdGggdGhlIHNhdmVkIHZhbHVlcyBldmVuIGlmIGFuIGV4Y2VwdGlvbiBpbiBjb21wdXRlIHBoYXNlIGlzIHRocm93biBsYXRlci4KLy8K" + + "Ly8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGNvbW1pdCgpOyAgLy8gbm93LCB0cmFuc2FjdGlvbiBpcyBjb25zaWRlcmVkICJzdWNjZXNzZnVs" + + "IgovLy8gICAgIHRocm93KDQyKTsgLy8gYW5kIHRoaXMgd29uJ3QgZmFpbCBpdAovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5n" + + "Lm9yZy9yZWYvY29yZS1jb250ZXh0c3RhdGUjY29tbWl0Ci8vLwphc20gZnVuIGNvbW1pdCgpIHsgQ09NTUlUIH0KCnN0cnVjdCBTaGFyZERlcGxveVBhcmFtZXRlcnMg" + + "ewogICAgZGVwbG95UGFyYW1ldGVyczogRGVwbG95UGFyYW1ldGVyczsKCiAgICAvLy8gVGhlIHNoYXJkIG51bWJlciB0byBkZXBsb3kgdGhlIGNvbnRyYWN0IHRvLgog" + + "ICAgc2hhcmQ6IEludCBhcyB1aW50ODsKfQoKZXh0ZW5kcyBpbmxpbmUgZnVuIHRvU2hhcmQoc2VsZjogRGVwbG95UGFyYW1ldGVycywgc2hhcmQ6IEludCk6IFNoYXJk" + + "RGVwbG95UGFyYW1ldGVycyB7CiAgICByZXR1cm4gU2hhcmREZXBsb3lQYXJhbWV0ZXJzIHsKICAgICAgICBzaGFyZCwKICAgICAgICBkZXBsb3lQYXJhbWV0ZXJzOiBz" + + "ZWxmLAogICAgfTsKfQoKZXh0ZW5kcyBpbmxpbmUgZnVuIHNlbmQoc2VsZjogU2hhcmREZXBsb3lQYXJhbWV0ZXJzKSB7CiAgICBsZXQgbmV3U3RhdGVJbml0ID0gYmVn" + + "aW5DZWxsKCkuc3RvcmVTaGFyZGVkU3RhdGVJbml0KHNlbGYuZGVwbG95UGFyYW1ldGVycy5pbml0KS5lbmRDZWxsKCk7CiAgICBsZXQgbXNnID0gYmVnaW5DZWxsKCkK" + + "ICAgICAgICAuc3RvcmVVaW50KDEsIDIpIC8vIHN0b3JlIHRhZyA9ICQwIGFuZCBpaHJfZGlzYWJsZWQgPSB0cnVlCiAgICAgICAgLnN0b3JlQm9vbChzZWxmLmRlcGxv" + + "eVBhcmFtZXRlcnMuYm91bmNlKQogICAgICAgIC5zdG9yZVVpbnQoMSA8PCAxMCwgMTQpIC8vIHN0b3JlIGJvdW5jZWQgPSBmYWxzZSBhbmQgc3JjID0gYWRkcl9ub25l" + + "LCBhZGRyX3N0ZCQxMCwgYW55Y2FzdDogZmFsc2UsIHdvcmtjaGFpbiA9IDAgKGludDgpCiAgICAgICAgLnN0b3JlVWludChjaGFuZ2VTaGFyZChuZXdTdGF0ZUluaXQu" + + "aGFzaCgpLCBzZWxmLnNoYXJkKSwgMjU2KSAvLyBhZGRySGFzaAogICAgICAgIC5zdG9yZUNvaW5zKHNlbGYuZGVwbG95UGFyYW1ldGVycy52YWx1ZSkKICAgICAgICAu" + + "c3RvcmVVaW50KDIgKyAxLCAxICsgNCArIDQgKyA2NCArIDMyICsgMSArIDEpIC8vIDEgKyA0ICsgNCArIDY0ICsgMzIsIHN0YXRlSW5pdDogdHJ1ZSwgaW5SZWY6IGZh" + + "bHNlCiAgICAgICAgLnN0b3JlUmVmKG5ld1N0YXRlSW5pdCkKICAgICAgICAuc3RvcmVNYXliZVJlZihzZWxmLmRlcGxveVBhcmFtZXRlcnMuYm9keSkKICAgICAgICAu" + + "ZW5kQ2VsbCgpOwoKICAgIHNlbmRSYXdNZXNzYWdlKG1zZywgc2VsZi5kZXBsb3lQYXJhbWV0ZXJzLm1vZGUpOwp9CgpzdHJ1Y3QgU2hhcmRNZXNzYWdlUGFyYW1ldGVy" + + "cyB7CiAgICBtZXNzYWdlUGFyYW1ldGVyczogTWVzc2FnZVBhcmFtZXRlcnM7CgogICAgLy8vIFRoZSBzaGFyZCBudW1iZXIgdG8gZGVwbG95IHRoZSBjb250cmFjdCB0" + + "by4KICAgIHNoYXJkOiBJbnQgYXMgdWludDg7Cn0KCmV4dGVuZHMgaW5saW5lIGZ1biB0b1NoYXJkKHNlbGY6IE1lc3NhZ2VQYXJhbWV0ZXJzLCBzaGFyZDogSW50KTog" + + "U2hhcmRNZXNzYWdlUGFyYW1ldGVycyB7CiAgICByZXR1cm4gU2hhcmRNZXNzYWdlUGFyYW1ldGVycyB7CiAgICAgICAgc2hhcmQsCiAgICAgICAgbWVzc2FnZVBhcmFt" + + "ZXRlcnM6IHNlbGYsCiAgICB9Owp9CgpleHRlbmRzIGlubGluZSBmdW4gc2VuZChzZWxmOiBTaGFyZE1lc3NhZ2VQYXJhbWV0ZXJzKSB7CiAgICBzZWxmLm1lc3NhZ2VQ" + + "YXJhbWV0ZXJzLnRvID0gc2VsZi5tZXNzYWdlUGFyYW1ldGVycy50by5jaGFuZ2VTaGFyZChzZWxmLnNoYXJkKTsKICAgIG1lc3NhZ2Uoc2VsZi5tZXNzYWdlUGFyYW1l" + + "dGVycyk7Cn0K"; files["std/internal/text.tact"] = "Ly8KLy8gU3RyaW5nIGJ1aWxkZXIKLy8KCi8vLyBHbG9iYWwgZnVuY3Rpb24uCi8vLwovLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhbiBlbXB0eSBgU3RyaW5nQnVpbGRl" + "cmAuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKTogU3RyaW5nIHsKLy8vICAgICBsZXQgZml6ejogU3RyaW5nQnVpbGRlciA9IGJlZ2luU3RyaW5nKCk7" + diff --git a/src/stdlib/stdlib/std/internal/address.tact b/src/stdlib/stdlib/std/internal/address.tact index 7df2aed0d9..8ac3caa0e2 100644 --- a/src/stdlib/stdlib/std/internal/address.tact +++ b/src/stdlib/stdlib/std/internal/address.tact @@ -335,6 +335,11 @@ inline fun contractBasechainAddress(s: StateInit): BasechainAddress { return newBasechainAddress(hash); } +inline fun contractShardBasechainAddress(s: StateInit): BasechainAddress { + let hash = beginCell().storeShardedStateInit(s).endCell().hash(); + return newBasechainAddress(hash); +} + /// Extension function for the `Builder` type. Available since Tact 1.6.0. /// /// Stores the basechain address in the copy of the Builder and returns that copy. @@ -440,3 +445,19 @@ asm(errorCode workchain address) fun forceWorkchain(address: Address, workchain: CMP THROWANYIF } + +extends inline fun changeShard(self: Address, shard: Int): Address { + let sl: Slice = self.asSlice(); + + return beginCell().storeUint(sl.loadUint(11), 11).storeUint(changeShard(sl.loadUint(256), shard), 256).asSlice().loadAddress(); +} + +extends inline fun getShard(self: Address): Int { + let sl = self.asSlice(); + sl.skipBits(11); // addr_std$10, anycast: false, workchain: int8 + return sl.loadUint(prefixLength); +} + +inline extends fun hasSameShard(self: Address, b: Address): Bool { + return self.getShard() == b.getShard(); +} diff --git a/src/stdlib/stdlib/std/internal/cells.tact b/src/stdlib/stdlib/std/internal/cells.tact index c3d65c7b3b..8712cedfa4 100644 --- a/src/stdlib/stdlib/std/internal/cells.tact +++ b/src/stdlib/stdlib/std/internal/cells.tact @@ -1514,3 +1514,18 @@ asm extends fun computeDataSize(self: Slice, maxCells: Int): DataSize { SDATASIZ /// See: https://docs.tact-lang.org/ref/core-cells#celldepth /// asm extends fun depth(self: Cell?): Int { CDEPTH } + +extends inline fun storeShardedStateInit(self: Builder, init: StateInit): Builder { + return self + .storeUint(32 + prefixLength, 6) // fixed_prefix_length: true, prefixLength: uint5 + .storeUint(6, 4) // special: false, code: true, data: true, library: false + .storeRef(init.code) + .storeRef(init.data); +} + +extends inline fun storeStateInit(self: Builder, init: StateInit): Builder { + return self + .storeUint(3, 5) // fixed_prefix_length: false, special: false, code: true, data: true, library: false + .storeRef(init.code) + .storeRef(init.data); +} diff --git a/src/stdlib/stdlib/std/internal/contract.tact b/src/stdlib/stdlib/std/internal/contract.tact index 4f24460143..afbd59c8f4 100644 --- a/src/stdlib/stdlib/std/internal/contract.tact +++ b/src/stdlib/stdlib/std/internal/contract.tact @@ -144,6 +144,12 @@ inline extends fun hasSameBasechainAddress(self: StateInit, address: Address): B return baseAddress.hash!! == addressHash; } +inline extends fun hasSameBasechainAddressWithoutShard(self: StateInit, address: Address): Bool { + let addressHash = parseStdAddress(address.asSlice()).address; + let baseAddress = contractShardBasechainAddress(self); + return extractLowBits(baseAddress.hash!!, 256 - prefixLength) == extractLowBits(addressHash, 256 - prefixLength); +} + /// Global function. /// /// Computes smart contract's `Address` in the workchain ID 0 (basechain) using the `StateInit` `s` of the contract. Alias to `contractAddressExt(0, s.code, s.data)`. diff --git a/src/stdlib/stdlib/std/internal/math.tact b/src/stdlib/stdlib/std/internal/math.tact index c124885b5d..5a5507baa1 100644 --- a/src/stdlib/stdlib/std/internal/math.tact +++ b/src/stdlib/stdlib/std/internal/math.tact @@ -527,3 +527,11 @@ fun sqrt(num: Int): Int { return x; } + +asm fun extractLowBits(value: Int, count: Int): Int { + MODPOW2 +} + +inline fun changeShard(hash: Int, shard: Int): Int { + return extractLowBits(hash, 256 - prefixLength) | (shard << (256 - prefixLength)); +} diff --git a/src/stdlib/stdlib/std/internal/send.tact b/src/stdlib/stdlib/std/internal/send.tact index b5282e57ac..1c6973abe0 100644 --- a/src/stdlib/stdlib/std/internal/send.tact +++ b/src/stdlib/stdlib/std/internal/send.tact @@ -1,3 +1,4 @@ +const prefixLength: Int = 8; /// Ordinary message (default). /// /// This constant is available since Tact 1.6.0. @@ -625,3 +626,52 @@ asm fun acceptMessage() { ACCEPT } /// See: https://docs.tact-lang.org/ref/core-contextstate#commit /// asm fun commit() { COMMIT } + +struct ShardDeployParameters { + deployParameters: DeployParameters; + + /// The shard number to deploy the contract to. + shard: Int as uint8; +} + +extends inline fun toShard(self: DeployParameters, shard: Int): ShardDeployParameters { + return ShardDeployParameters { + shard, + deployParameters: self, + }; +} + +extends inline fun send(self: ShardDeployParameters) { + let newStateInit = beginCell().storeShardedStateInit(self.deployParameters.init).endCell(); + let msg = beginCell() + .storeUint(1, 2) // store tag = $0 and ihr_disabled = true + .storeBool(self.deployParameters.bounce) + .storeUint(1 << 10, 14) // store bounced = false and src = addr_none, addr_std$10, anycast: false, workchain = 0 (int8) + .storeUint(changeShard(newStateInit.hash(), self.shard), 256) // addrHash + .storeCoins(self.deployParameters.value) + .storeUint(2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1) // 1 + 4 + 4 + 64 + 32, stateInit: true, inRef: false + .storeRef(newStateInit) + .storeMaybeRef(self.deployParameters.body) + .endCell(); + + sendRawMessage(msg, self.deployParameters.mode); +} + +struct ShardMessageParameters { + messageParameters: MessageParameters; + + /// The shard number to deploy the contract to. + shard: Int as uint8; +} + +extends inline fun toShard(self: MessageParameters, shard: Int): ShardMessageParameters { + return ShardMessageParameters { + shard, + messageParameters: self, + }; +} + +extends inline fun send(self: ShardMessageParameters) { + self.messageParameters.to = self.messageParameters.to.changeShard(self.shard); + message(self.messageParameters); +}