diff --git a/CHANGELOG.md b/CHANGELOG.md index f2611c0b..25b7e5c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 0.14.1 + +- Support for Kusama CC3 +- Implement ability to sign raw messages (Thanks to https://github.com/c410-f3r) +- Allow the use of hex seeds as part of account creation + # 0.13.1 - Account export functionality (Thanks to https://github.com/Anze1m) diff --git a/lerna.json b/lerna.json index 5cf83e85..0db38ebc 100644 --- a/lerna.json +++ b/lerna.json @@ -9,5 +9,5 @@ "packages": [ "packages/*" ], - "version": "0.14.0-beta.9" + "version": "0.14.0" } diff --git a/package.json b/package.json index 4c77e62b..63eeb793 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ "yarn": "^1.10.1" }, "resolutions": { - "@polkadot/api": "^0.99.0-beta.4", + "@polkadot/api": "^0.99.0-beta.13", "@polkadot/keyring": "^1.7.1", - "@polkadot/types": "^0.99.0-beta.4", + "@polkadot/types": "^0.99.0-beta.13", "@polkadot/util": "^1.7.1", "@polkadot/util-crypto": "^1.7.1", "babel-core": "^7.0.0-bridge.0", diff --git a/packages/extension-chains/package.json b/packages/extension-chains/package.json index 27f4ff46..830a8cac 100644 --- a/packages/extension-chains/package.json +++ b/packages/extension-chains/package.json @@ -1,7 +1,7 @@ { "name": "@polkadot/extension-chains", "description": "Definitions for all known chains as exposed by the extension.", - "version": "0.14.0-beta.9", + "version": "0.14.0", "author": "Jaco Greeff ", "license": "Apache-2", "dependencies": { diff --git a/packages/extension-chains/src/kusama-cc3.ts b/packages/extension-chains/src/kusama-cc3.ts index 88ead42c..6ee3fc86 100644 --- a/packages/extension-chains/src/kusama-cc3.ts +++ b/packages/extension-chains/src/kusama-cc3.ts @@ -2,18 +2,18 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -// Generated via 'yarn run chain:info ws://127.0.0.1:9944' +// Generated via 'yarn run chain:info --ws wss://kusama-rpc.polkadot.io' export default { chain: 'Kusama CC3', genesisHash: '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', icon: 'polkadot', - specVersion: 1028, + specVersion: 1029, ss58Format: 2, tokenDecimals: 12, tokenSymbol: 'KSM', types: { Keys: 'SessionKeys5' }, - metaCalls: 'bWV0YQlsGFN5c3RlbQABHChmaWxsX2Jsb2NrAAQhASBBIGJpZyBkaXNwYXRjaCB0aGF0IHdpbGwgZGlzYWxsb3cgYW55IG90aGVyIHRyYW5zYWN0aW9uIHRvIGJlIGluY2x1ZGVkLhhyZW1hcmsEHF9yZW1hcmsUQnl0ZXMEbCBNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrLjhzZXRfaGVhcF9wYWdlcwQUcGFnZXMMdTY0BPwgU2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEDG5ldxRCeXRlcwRIIFNldCB0aGUgbmV3IGNvZGUuLHNldF9zdG9yYWdlBBRpdGVtczRWZWM8S2V5VmFsdWU+BGwgU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBBBrZXlzIFZlYzxLZXk+BHggS2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgEGHByZWZpeAxLZXkEFQEgS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AAABgUmFuZG9tbmVzc0NvbGxlY3RpdmVGbGlwAAAAAAAQQmFiZQABAAAAACRUaW1lc3RhbXAAAQQMc2V0BAxub3c8Q29tcGFjdDxNb21lbnQ+JFggU2V0IHRoZSBjdXJyZW50IHRpbWUuAFkBIFRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27YIHBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEUBIFRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5RCBgTWluaW11bVBlcmlvZGAuANggVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YC4AAAAcSW5kaWNlcwABAAAAACBCYWxhbmNlcwABECB0cmFuc2ZlcggQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT5k2CBUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgAJASBgdHJhbnNmZXJgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLiEBIEl0IHdpbGwgZGVjcmVhc2UgdGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBzeXN0ZW0gYnkgdGhlIGBUcmFuc2ZlckZlZWAuFQEgSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHS0IG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABkBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLgAsICMgPHdlaWdodD4xASAtIERlcGVuZGVudCBvbiBhcmd1bWVudHMgYnV0IG5vdCBjcml0aWNhbCwgZ2l2ZW4gcHJvcGVyIGltcGxlbWVudGF0aW9ucyBmb3LMICAgaW5wdXQgY29uZmlnIHR5cGVzLiBTZWUgcmVsYXRlZCBmdW5jdGlvbnMgYmVsb3cuaQEgLSBJdCBjb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzIGFuZCB3cml0ZXMgaW50ZXJuYWxseSBhbmQgbm8gY29tcGxleCBjb21wdXRhdGlvbi4ATCBSZWxhdGVkIGZ1bmN0aW9uczoAUQEgICAtIGBlbnN1cmVfY2FuX3dpdGhkcmF3YCBpcyBhbHdheXMgY2FsbGVkIGludGVybmFsbHkgYnV0IGhhcyBhIGJvdW5kZWQgY29tcGxleGl0eS4tASAgIC0gVHJhbnNmZXJyaW5nIGJhbGFuY2VzIHRvIGFjY291bnRzIHRoYXQgZGlkIG5vdCBleGlzdCBiZWZvcmUgd2lsbCBjYXVzZdQgICAgICBgVDo6T25OZXdBY2NvdW50Ojpvbl9uZXdfYWNjb3VudGAgdG8gYmUgY2FsbGVkLtwgICAtIFJlbW92aW5nIGVub3VnaCBmdW5kcyBmcm9tIGFuIGFjY291bnQgd2lsbCB0cmlnZ2VyWQEgICAgIGBUOjpEdXN0UmVtb3ZhbDo6b25fdW5iYWxhbmNlZGAgYW5kIGBUOjpPbkZyZWVCYWxhbmNlWmVybzo6b25fZnJlZV9iYWxhbmNlX3plcm9gLkkBICAgLSBgdHJhbnNmZXJfa2VlcF9hbGl2ZWAgd29ya3MgdGhlIHNhbWUgd2F5IGFzIGB0cmFuc2ZlcmAsIGJ1dCBoYXMgYW4gYWRkaXRpb25hbPggICAgIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90IGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgAwICMgPC93ZWlnaHQ+LHNldF9iYWxhbmNlDAx3aG8cQWRkcmVzcyBuZXdfZnJlZUBDb21wYWN0PEJhbGFuY2U+MG5ld19yZXNlcnZlZEBDb21wYWN0PEJhbGFuY2U+NJQgU2V0IHRoZSBiYWxhbmNlcyBvZiBhIGdpdmVuIGFjY291bnQuACEBIFRoaXMgd2lsbCBhbHRlciBgRnJlZUJhbGFuY2VgIGFuZCBgUmVzZXJ2ZWRCYWxhbmNlYCBpbiBzdG9yYWdlLiBpdCB3aWxsCQEgYWxzbyBkZWNyZWFzZSB0aGUgdG90YWwgaXNzdWFuY2Ugb2YgdGhlIHN5c3RlbSAoYFRvdGFsSXNzdWFuY2VgKS4ZASBJZiB0aGUgbmV3IGZyZWUgb3IgcmVzZXJ2ZWQgYmFsYW5jZSBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCzoIGl0IHdpbGwgcmVzZXQgdGhlIGFjY291bnQgbm9uY2UgKGBzeXN0ZW06OkFjY291bnROb25jZWApLgC0IFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAuACwgIyA8d2VpZ2h0PoAgLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLsQgLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzIGFuZCB3cml0ZXMuMCAjIDwvd2VpZ2h0Pjhmb3JjZV90cmFuc2ZlcgwYc291cmNlHEFkZHJlc3MQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT4IUQEgRXhhY3RseSBhcyBgdHJhbnNmZXJgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudCBtYXkgYmUsIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT4YUQEgU2FtZSBhcyB0aGUgW2B0cmFuc2ZlcmBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Qga2lsbCB0aGVAIG9yaWdpbiBhY2NvdW50LgC8IDk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyYF0gaW5zdGVhZC4AxCBbYHRyYW5zZmVyYF06IHN0cnVjdC5Nb2R1bGUuaHRtbCNtZXRob2QudHJhbnNmZXIAAABIVHJhbnNhY3Rpb25QYXltZW50AAAAAAAoQXV0aG9yc2hpcAABBChzZXRfdW5jbGVzBChuZXdfdW5jbGVzLFZlYzxIZWFkZXI+BGQgUHJvdmlkZSBhIHNldCBvZiB1bmNsZXMuAAAAHFN0YWtpbmcAAUAQYm9uZAwoY29udHJvbGxlchxBZGRyZXNzFHZhbHVlSENvbXBhY3Q8QmFsYW5jZU9mPhRwYXllZURSZXdhcmREZXN0aW5hdGlvbjxlASBUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxshCBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAxASBgdmFsdWVgIG11c3QgYmUgbW9yZSB0aGFuIHRoZSBgbWluaW11bV9iYWxhbmNlYCBzcGVjaWZpZWQgYnkgYFQ6OkN1cnJlbmN5YC4AJQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuACwgIyA8d2VpZ2h0PtQgLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBNb2RlcmF0ZSBjb21wbGV4aXR5LiAgLSBPKDEpLmggLSBUaHJlZSBleHRyYSBEQiBlbnRyaWVzLgBtASBOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZCB1bmxlc3MlASB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4wICMgPC93ZWlnaHQ+KGJvbmRfZXh0cmEEOG1heF9hZGRpdGlvbmFsSENvbXBhY3Q8QmFsYW5jZU9mPjhlASBBZGQgc29tZSBleHRyYSBhbW91bnQgdGhhdCBoYXZlIGFwcGVhcmVkIGluIHRoZSBzdGFzaCBgZnJlZV9iYWxhbmNlYCBpbnRvIHRoZSBiYWxhbmNlIHVwNCBmb3Igc3Rha2luZy4AUQEgVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5lASBVbmxpa2UgW2Bib25kYF0gb3IgW2B1bmJvbmRgXSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZSBhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50TCB0aGF0IGNhbiBiZSBhZGRlZC4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuACwgIyA8d2VpZ2h0PuggLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkuICAtIE8oMSkuQCAtIE9uZSBEQiBlbnRyeS4wICMgPC93ZWlnaHQ+GHVuYm9uZAQUdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+XFUBIFNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZAEBIHBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiUBIFQ6OkN1cnJlbmN5OjptaW5pbXVtX2JhbGFuY2UoKSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBJASBPbmNlIHRoZSB1bmxvY2sgcGVyaW9kIGlzIGRvbmUsIHlvdSBjYW4gY2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIHRvIGFjdHVhbGx5IG1vdmXAIHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuAD0BIE5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTUFYX1VOTE9DS0lOR19DSFVOS1NgKT0BIGNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSW4gdGhhdCBjYXNlLCBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gbmVlZPwgdG8gYmUgY2FsbGVkIGZpcnN0IHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAJggU2VlIGFsc28gW2BDYWxsOjp3aXRoZHJhd191bmJvbmRlZGBdLgAsICMgPHdlaWdodD5BASAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIExpbWl0ZWQgYnV0IHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGNvbXBsZXhpdHkumCAtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuZQEgLSBFYWNoIGNhbGwgKHJlcXVpcmVzIHRoZSByZW1haW5kZXIgb2YgdGhlIGJvbmRlZCBiYWxhbmNlIHRvIGJlIGFib3ZlIGBtaW5pbXVtX2JhbGFuY2VgKXEBICAgd2lsbCBjYXVzZSBhIG5ldyBlbnRyeSB0byBiZSBpbnNlcnRlZCBpbnRvIGEgdmVjdG9yIChgTGVkZ2VyLnVubG9ja2luZ2ApIGtlcHQgaW4gc3RvcmFnZS6lASAgIFRoZSBvbmx5IHdheSB0byBjbGVhbiB0aGUgYWZvcmVtZW50aW9uZWQgc3RvcmFnZSBpdGVtIGlzIGFsc28gdXNlci1jb250cm9sbGVkIHZpYSBgd2l0aGRyYXdfdW5ib25kZWRgLkAgLSBPbmUgREIgZW50cnkuKCA8L3dlaWdodD5Ed2l0aGRyYXdfdW5ib25kZWQAQC0BIFJlbW92ZSBhbnkgdW5sb2NrZWQgY2h1bmtzIGZyb20gdGhlIGB1bmxvY2tpbmdgIHF1ZXVlIGZyb20gb3VyIG1hbmFnZW1lbnQuADUBIFRoaXMgZXNzZW50aWFsbHkgZnJlZXMgdXAgdGhhdCBiYWxhbmNlIHRvIGJlIHVzZWQgYnkgdGhlIHN0YXNoIGFjY291bnQgdG8gZG9MIHdoYXRldmVyIGl0IHdhbnRzLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4AbCBTZWUgYWxzbyBbYENhbGw6OnVuYm9uZGBdLgAsICMgPHdlaWdodD5VASAtIENvdWxkIGJlIGRlcGVuZGVudCBvbiB0aGUgYG9yaWdpbmAgYXJndW1lbnQgYW5kIGhvdyBtdWNoIGB1bmxvY2tpbmdgIGNodW5rcyBleGlzdC5FASAgSXQgaW1wbGllcyBgY29uc29saWRhdGVfdW5sb2NrZWRgIHdoaWNoIGxvb3BzIG92ZXIgYExlZGdlci51bmxvY2tpbmdgLCB3aGljaCBpc/QgIGluZGlyZWN0bHkgdXNlci1jb250cm9sbGVkLiBTZWUgW2B1bmJvbmRgXSBmb3IgbW9yZSBkZXRhaWwueQEgLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLCB5ZXQgdGhlIHNpemUgb2Ygd2hpY2ggY291bGQgYmUgbGFyZ2UgYmFzZWQgb24gYGxlZGdlcmAuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiB2YWxpZGF0ZQQUcHJlZnM4VmFsaWRhdG9yUHJlZnMs6CBEZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A3CBFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guACwgIyA8d2VpZ2h0PuggLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkumCAtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiBub21pbmF0ZQQcdGFyZ2V0czBWZWM8QWRkcmVzcz4sEQEgRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDcIEVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ALCAjIDx3ZWlnaHQ+JQEgLSBUaGUgdHJhbnNhY3Rpb24ncyBjb21wbGV4aXR5IGlzIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiBgdGFyZ2V0c2AsmCB3aGljaCBpcyBjYXBwZWQgYXQgYE1BWF9OT01JTkFUSU9OU2Au2CAtIEJvdGggdGhlIHJlYWRzIGFuZCB3cml0ZXMgZm9sbG93IGEgc2ltaWxhciBwYXR0ZXJuLjAgIyA8L3dlaWdodD4UY2hpbGwALMggRGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDcIEVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ALCAjIDx3ZWlnaHQ+6CAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5UIC0gQ29udGFpbnMgb25lIHJlYWQuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiRzZXRfcGF5ZWUEFHBheWVlRFJld2FyZERlc3RpbmF0aW9uLLggKFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuANwgRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFUBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgAsICMgPHdlaWdodD7oIC0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpggLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsggLSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LjAgIyA8L3dlaWdodD44c2V0X2NvbnRyb2xsZXIEKGNvbnRyb2xsZXIcQWRkcmVzcyyQIChSZS0pc2V0IHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2guANwgRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFUBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLgAsICMgPHdlaWdodD7oIC0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpggLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsggLSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LjAgIyA8L3dlaWdodD5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQMbmV3MENvbXBhY3Q8dTMyPgSAIFRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy40Zm9yY2Vfbm9fZXJhcwAUsCBGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuACwgIyA8d2VpZ2h0PkAgLSBObyBhcmd1bWVudHMuMCAjIDwvd2VpZ2h0PjRmb3JjZV9uZXdfZXJhABhNASBGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJloCByZXNldCB0byBub3JtYWwgKG5vbi1mb3JjZWQpIGJlaGF2aW91ci4ALCAjIDx3ZWlnaHQ+QCAtIE5vIGFyZ3VtZW50cy4wICMgPC93ZWlnaHQ+RHNldF9pbnZ1bG5lcmFibGVzBCh2YWxpZGF0b3JzOFZlYzxBY2NvdW50SWQ+BMwgU2V0IHRoZSB2YWxpZGF0b3JzIHdobyBjYW5ub3QgYmUgc2xhc2hlZCAoaWYgYW55KS40Zm9yY2VfdW5zdGFrZQQUc3Rhc2gkQWNjb3VudElkBA0BIEZvcmNlIGEgY3VycmVudCBzdGFrZXIgdG8gYmVjb21lIGNvbXBsZXRlbHkgdW5zdGFrZWQsIGltbWVkaWF0ZWx5LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAUBQEgRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgAsICMgPHdlaWdodD5QIC0gT25lIHN0b3JhZ2Ugd3JpdGUwICMgPC93ZWlnaHQ+VGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgMZXJhIEVyYUluZGV4NHNsYXNoX2luZGljZXMgVmVjPHUzMj4cRQEgQ2FuY2VsIGVuYWN0bWVudCBvZiBhIGRlZmVycmVkIHNsYXNoLiBDYW4gYmUgY2FsbGVkIGJ5IGVpdGhlciB0aGUgcm9vdCBvcmlnaW4gb3JwIHRoZSBgVDo6U2xhc2hDYW5jZWxPcmlnaW5gLgUBIHBhc3NpbmcgdGhlIGVyYSBhbmQgaW5kaWNlcyBvZiB0aGUgc2xhc2hlcyBmb3IgdGhhdCBlcmEgdG8ga2lsbC4ALCAjIDx3ZWlnaHQ+VCAtIE9uZSBzdG9yYWdlIHdyaXRlLjAgIyA8L3dlaWdodD4AAAAgT2ZmZW5jZXMAAQAAAAAcU2Vzc2lvbgABBCBzZXRfa2V5cwgQa2V5cxBLZXlzFHByb29mFEJ5dGVzKOQgU2V0cyB0aGUgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlciB0byBga2V5YC4hASBBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsQgVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uANQgVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgc2lnbmVkLgAsICMgPHdlaWdodD6IIC0gTyhsb2cgbikgaW4gbnVtYmVyIG9mIGFjY291bnRzLlggLSBPbmUgZXh0cmEgREIgZW50cnkuMCAjIDwvd2VpZ2h0PgAAADxGaW5hbGl0eVRyYWNrZXIAAQQoZmluYWxfaGludAQQaGludFBDb21wYWN0PEJsb2NrTnVtYmVyPgj0IEhpbnQgdGhhdCB0aGUgYXV0aG9yIG9mIHRoaXMgYmxvY2sgdGhpbmtzIHRoZSBiZXN0IGZpbmFsaXplZGwgYmxvY2sgaXMgdGhlIGdpdmVuIG51bWJlci4AAAAcR3JhbmRwYQABBEhyZXBvcnRfbWlzYmVoYXZpb3IEHF9yZXBvcnQUQnl0ZXMEZCBSZXBvcnQgc29tZSBtaXNiZWhhdmlvci4AAAAgSW1PbmxpbmUAAQQkaGVhcnRiZWF0CCRoZWFydGJlYXQkSGVhcnRiZWF0KF9zaWduYXR1cmUkU2lnbmF0dXJlAAAAAEhBdXRob3JpdHlEaXNjb3ZlcnkAAQAAAAAkRGVtb2NyYWN5AAFUHHByb3Bvc2UINHByb3Bvc2FsX2hhc2gQSGFzaBR2YWx1ZUhDb21wYWN0PEJhbGFuY2VPZj4YoCBQcm9wb3NlIGEgc2Vuc2l0aXZlIGFjdGlvbiB0byBiZSB0YWtlbi4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkugCAtIFR3byBEQiBjaGFuZ2VzLCBvbmUgREIgZW50cnkuMCAjIDwvd2VpZ2h0PhhzZWNvbmQEIHByb3Bvc2FsSENvbXBhY3Q8UHJvcEluZGV4PhigIFByb3Bvc2UgYSBzZW5zaXRpdmUgYWN0aW9uIHRvIGJlIHRha2VuLgAsICMgPHdlaWdodD4gIC0gTygxKS5AIC0gT25lIERCIGVudHJ5LjAgIyA8L3dlaWdodD4Qdm90ZQgkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PhB2b3RlEFZvdGUcNQEgVm90ZSBpbiBhIHJlZmVyZW5kdW0uIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7wgb3RoZXJ3aXNlIGl0IGlzIGEgdm90ZSB0byBrZWVwIHRoZSBzdGF0dXMgcXVvLgAsICMgPHdlaWdodD4gIC0gTygxKS58IC0gT25lIERCIGNoYW5nZSwgb25lIERCIGVudHJ5LjAgIyA8L3dlaWdodD4ocHJveHlfdm90ZQgkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PhB2b3RlEFZvdGUcUQEgVm90ZSBpbiBhIHJlZmVyZW5kdW0gb24gYmVoYWxmIG9mIGEgc3Rhc2guIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3T4IHRoZSBwcm9wb3NhbDsgIG90aGVyd2lzZSBpdCBpcyBhIHZvdGUgdG8ga2VlcCB0aGUgc3RhdHVzIHF1by4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkufCAtIE9uZSBEQiBjaGFuZ2UsIG9uZSBEQiBlbnRyeS4wICMgPC93ZWlnaHQ+QGVtZXJnZW5jeV9jYW5jZWwEJHJlZl9pbmRleDxSZWZlcmVuZHVtSW5kZXgIUQEgU2NoZWR1bGUgYW4gZW1lcmdlbmN5IGNhbmNlbGxhdGlvbiBvZiBhIHJlZmVyZW5kdW0uIENhbm5vdCBoYXBwZW4gdHdpY2UgdG8gdGhlIHNhbWUwIHJlZmVyZW5kdW0uQGV4dGVybmFsX3Byb3Bvc2UENHByb3Bvc2FsX2hhc2gQSGFzaAgxASBTY2hlZHVsZSBhIHJlZmVyZW5kdW0gdG8gYmUgdGFibGVkIG9uY2UgaXQgaXMgbGVnYWwgdG8gc2NoZWR1bGUgYW4gZXh0ZXJuYWwwIHJlZmVyZW5kdW0uZGV4dGVybmFsX3Byb3Bvc2VfbWFqb3JpdHkENHByb3Bvc2FsX2hhc2gQSGFzaBRZASBTY2hlZHVsZSBhIG1ham9yaXR5LWNhcnJpZXMgcmVmZXJlbmR1bSB0byBiZSB0YWJsZWQgbmV4dCBvbmNlIGl0IGlzIGxlZ2FsIHRvIHNjaGVkdWxlYCBhbiBleHRlcm5hbCByZWZlcmVuZHVtLgBNASBVbmxpa2UgYGV4dGVybmFsX3Byb3Bvc2VgLCBibGFja2xpc3RpbmcgaGFzIG5vIGVmZmVjdCBvbiB0aGlzIGFuZCBpdCBtYXkgcmVwbGFjZSBhnCBwcmUtc2NoZWR1bGVkIGBleHRlcm5hbF9wcm9wb3NlYCBjYWxsLmBleHRlcm5hbF9wcm9wb3NlX2RlZmF1bHQENHByb3Bvc2FsX2hhc2gQSGFzaBRJASBTY2hlZHVsZSBhIG5lZ2F0aXZlLXR1cm5vdXQtYmlhcyByZWZlcmVuZHVtIHRvIGJlIHRhYmxlZCBuZXh0IG9uY2UgaXQgaXMgbGVnYWwgdG+EIHNjaGVkdWxlIGFuIGV4dGVybmFsIHJlZmVyZW5kdW0uAE0BIFVubGlrZSBgZXh0ZXJuYWxfcHJvcG9zZWAsIGJsYWNrbGlzdGluZyBoYXMgbm8gZWZmZWN0IG9uIHRoaXMgYW5kIGl0IG1heSByZXBsYWNlIGGcIHByZS1zY2hlZHVsZWQgYGV4dGVybmFsX3Byb3Bvc2VgIGNhbGwuKGZhc3RfdHJhY2sMNHByb3Bvc2FsX2hhc2gQSGFzaDR2b3RpbmdfcGVyaW9kLEJsb2NrTnVtYmVyFGRlbGF5LEJsb2NrTnVtYmVyJFEBIFNjaGVkdWxlIHRoZSBjdXJyZW50bHkgZXh0ZXJuYWxseS1wcm9wb3NlZCBtYWpvcml0eS1jYXJyaWVzIHJlZmVyZW5kdW0gdG8gYmUgdGFibGVkZQEgaW1tZWRpYXRlbHkuIElmIHRoZXJlIGlzIG5vIGV4dGVybmFsbHktcHJvcG9zZWQgcmVmZXJlbmR1bSBjdXJyZW50bHksIG9yIGlmIHRoZXJlIGlzIG9uZewgYnV0IGl0IGlzIG5vdCBhIG1ham9yaXR5LWNhcnJpZXMgcmVmZXJlbmR1bSB0aGVuIGl0IGZhaWxzLgD4IC0gYHByb3Bvc2FsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY3VycmVudCBleHRlcm5hbCBwcm9wb3NhbC5hASAtIGB2b3RpbmdfcGVyaW9kYDogVGhlIHBlcmlvZCB0aGF0IGlzIGFsbG93ZWQgZm9yIHZvdGluZyBvbiB0aGlzIHByb3Bvc2FsLiBJbmNyZWFzZWQgdG+YICAgYEVtZXJnZW5jeVZvdGluZ1BlcmlvZGAgaWYgdG9vIGxvdy5VASAtIGBkZWxheWA6IFRoZSBudW1iZXIgb2YgYmxvY2sgYWZ0ZXIgdm90aW5nIGhhcyBlbmRlZCBpbiBhcHByb3ZhbCBhbmQgdGhpcyBzaG91bGQgYmW8ICAgZW5hY3RlZC4gVGhpcyBkb2Vzbid0IGhhdmUgYSBtaW5pbXVtIGFtb3VudC40dmV0b19leHRlcm5hbAQ0cHJvcG9zYWxfaGFzaBBIYXNoBLwgVmV0byBhbmQgYmxhY2tsaXN0IHRoZSBleHRlcm5hbCBwcm9wb3NhbCBoYXNoLkRjYW5jZWxfcmVmZXJlbmR1bQQkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PgRUIFJlbW92ZSBhIHJlZmVyZW5kdW0uNGNhbmNlbF9xdWV1ZWQMEHdoZW5QQ29tcGFjdDxCbG9ja051bWJlcj4Ud2hpY2gwQ29tcGFjdDx1MzI+EHdoYXRgQ29tcGFjdDxSZWZlcmVuZHVtSW5kZXg+BKAgQ2FuY2VsIGEgcHJvcG9zYWwgcXVldWVkIGZvciBlbmFjdG1lbnQuJHNldF9wcm94eQQUcHJveHkkQWNjb3VudElkFJggU3BlY2lmeSBhIHByb3h5LiBDYWxsZWQgYnkgdGhlIHN0YXNoLgAsICMgPHdlaWdodD5YIC0gT25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD4wcmVzaWduX3Byb3h5ABSYIENsZWFyIHRoZSBwcm94eS4gQ2FsbGVkIGJ5IHRoZSBwcm94eS4ALCAjIDx3ZWlnaHQ+QCAtIE9uZSBEQiBjbGVhci4wICMgPC93ZWlnaHQ+MHJlbW92ZV9wcm94eQQUcHJveHkkQWNjb3VudElkFJggQ2xlYXIgdGhlIHByb3h5LiBDYWxsZWQgYnkgdGhlIHN0YXNoLgAsICMgPHdlaWdodD5AIC0gT25lIERCIGNsZWFyLjAgIyA8L3dlaWdodD4gZGVsZWdhdGUICHRvJEFjY291bnRJZChjb252aWN0aW9uKENvbnZpY3Rpb24UPCBEZWxlZ2F0ZSB2b3RlLgAsICMgPHdlaWdodD5YIC0gT25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD4odW5kZWxlZ2F0ZQAURCBVbmRlbGVnYXRlIHZvdGUuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLjAgIyA8L3dlaWdodD5YY2xlYXJfcHVibGljX3Byb3Bvc2FscwAEAQEgVmV0byBhbmQgYmxhY2tsaXN0IHRoZSBwcm9wb3NhbCBoYXNoLiBNdXN0IGJlIGZyb20gUm9vdCBvcmlnaW4uNG5vdGVfcHJlaW1hZ2UEQGVuY29kZWRfcHJvcG9zYWwUQnl0ZXMIYQEgUmVnaXN0ZXIgdGhlIHByZWltYWdlIGZvciBhbiB1cGNvbWluZyBwcm9wb3NhbC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgdGhlIHByb3Bvc2FsIHRvIGJlJQEgaW4gdGhlIGRpc3BhdGNoIHF1ZXVlIGJ1dCBkb2VzIHJlcXVpcmUgYSBkZXBvc2l0LCByZXR1cm5lZCBvbmNlIGVuYWN0ZWQuWG5vdGVfaW1taW5lbnRfcHJlaW1hZ2UMQGVuY29kZWRfcHJvcG9zYWwUQnl0ZXMQd2hlbixCbG9ja051bWJlchR3aGljaAx1MzIIRQEgUmVnaXN0ZXIgdGhlIHByZWltYWdlIGZvciBhbiB1cGNvbWluZyBwcm9wb3NhbC4gVGhpcyByZXF1aXJlcyB0aGUgcHJvcG9zYWwgdG8gYmW0IGluIHRoZSBkaXNwYXRjaCBxdWV1ZS4gTm8gZGVwb3NpdCBpcyBuZWVkZWQuNHJlYXBfcHJlaW1hZ2UENHByb3Bvc2FsX2hhc2gQSGFzaAT0IFJlbW92ZSBhbiBleHBpcmVkIHByb3Bvc2FsIHByZWltYWdlIGFuZCBjb2xsZWN0IHRoZSBkZXBvc2l0LgAAABxDb3VuY2lsAAEQLHNldF9tZW1iZXJzBCxuZXdfbWVtYmVyczhWZWM8QWNjb3VudElkPhBRASBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwIG1hbnVhbGx5IHRvIGBuZXdfbWVtYmVyc2AuIEJlIG5pY2UgdG8gdGhlIGNoYWluIGFuZFwgcHJvdmlkZSBpdCBwcmUtc29ydGVkLgBYIFJlcXVpcmVzIHJvb3Qgb3JpZ2luLhxleGVjdXRlBCBwcm9wb3NhbCBQcm9wb3NhbAz0IERpc3BhdGNoIGEgcHJvcG9zYWwgZnJvbSBhIG1lbWJlciB1c2luZyB0aGUgYE1lbWJlcmAgb3JpZ2luLgCsIE9yaWdpbiBtdXN0IGJlIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aXZlLhxwcm9wb3NlCCR0aHJlc2hvbGRQQ29tcGFjdDxNZW1iZXJDb3VudD4gcHJvcG9zYWwgUHJvcG9zYWwQLCAjIDx3ZWlnaHQ+kCAtIEJvdW5kZWQgc3RvcmFnZSByZWFkcyBhbmQgd3JpdGVzLrggLSBBcmd1bWVudCBgdGhyZXNob2xkYCBoYXMgYmVhcmluZyBvbiB3ZWlnaHQuMCAjIDwvd2VpZ2h0PhB2b3RlDCBwcm9wb3NhbBBIYXNoFGluZGV4WENvbXBhY3Q8UHJvcG9zYWxJbmRleD4cYXBwcm92ZRBib29sECwgIyA8d2VpZ2h0PowgLSBCb3VuZGVkIHN0b3JhZ2UgcmVhZCBhbmQgd3JpdGVzLlUBIC0gV2lsbCBiZSBzbGlnaHRseSBoZWF2aWVyIGlmIHRoZSBwcm9wb3NhbCBpcyBhcHByb3ZlZCAvIGRpc2FwcHJvdmVkIGFmdGVyIHRoZSB2b3RlLjAgIyA8L3dlaWdodD4AAABIVGVjaG5pY2FsQ29tbWl0dGVlAAEQLHNldF9tZW1iZXJzBCxuZXdfbWVtYmVyczhWZWM8QWNjb3VudElkPhBRASBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwIG1hbnVhbGx5IHRvIGBuZXdfbWVtYmVyc2AuIEJlIG5pY2UgdG8gdGhlIGNoYWluIGFuZFwgcHJvdmlkZSBpdCBwcmUtc29ydGVkLgBYIFJlcXVpcmVzIHJvb3Qgb3JpZ2luLhxleGVjdXRlBCBwcm9wb3NhbCBQcm9wb3NhbAz0IERpc3BhdGNoIGEgcHJvcG9zYWwgZnJvbSBhIG1lbWJlciB1c2luZyB0aGUgYE1lbWJlcmAgb3JpZ2luLgCsIE9yaWdpbiBtdXN0IGJlIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aXZlLhxwcm9wb3NlCCR0aHJlc2hvbGRQQ29tcGFjdDxNZW1iZXJDb3VudD4gcHJvcG9zYWwgUHJvcG9zYWwQLCAjIDx3ZWlnaHQ+kCAtIEJvdW5kZWQgc3RvcmFnZSByZWFkcyBhbmQgd3JpdGVzLrggLSBBcmd1bWVudCBgdGhyZXNob2xkYCBoYXMgYmVhcmluZyBvbiB3ZWlnaHQuMCAjIDwvd2VpZ2h0PhB2b3RlDCBwcm9wb3NhbBBIYXNoFGluZGV4WENvbXBhY3Q8UHJvcG9zYWxJbmRleD4cYXBwcm92ZRBib29sECwgIyA8d2VpZ2h0PowgLSBCb3VuZGVkIHN0b3JhZ2UgcmVhZCBhbmQgd3JpdGVzLlUBIC0gV2lsbCBiZSBzbGlnaHRseSBoZWF2aWVyIGlmIHRoZSBwcm9wb3NhbCBpcyBhcHByb3ZlZCAvIGRpc2FwcHJvdmVkIGFmdGVyIHRoZSB2b3RlLjAgIyA8L3dlaWdodD4AAABERWxlY3Rpb25zUGhyYWdtZW4AARgQdm90ZQgUdm90ZXM4VmVjPEFjY291bnRJZD4UdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+PAUBIFZvdGUgZm9yIGEgc2V0IG9mIGNhbmRpZGF0ZXMgZm9yIHRoZSB1cGNvbWluZyByb3VuZCBvZiBlbGVjdGlvbi4AUCBUaGUgYHZvdGVzYCBzaG91bGQ6SCAgIC0gbm90IGJlIGVtcHR5LqwgICAtIGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAF0BIFVwb24gdm90aW5nLCBgdmFsdWVgIHVuaXRzIG9mIGB3aG9gJ3MgYmFsYW5jZSBpcyBsb2NrZWQgYW5kIGEgYm9uZCBhbW91bnQgaXMgcmVzZXJ2ZWQuXQEgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gbm90IHBsYWNlIGFsbCBvZiB0aGVpciBiYWxhbmNlIGludG8gdGhlIGxvY2ugIGFuZCBrZWVwIHNvbWUgZm9yIGZ1cnRoZXIgdHJhbnNhY3Rpb25zLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGUwIFJlYWRzOiBPKDEpyCBXcml0ZXM6IE8oVikgZ2l2ZW4gYFZgIHZvdGVzLiBWIGlzIGJvdW5kZWQgYnkgMTYuMCAjIDwvd2VpZ2h0PjByZW1vdmVfdm90ZXIAHCEBIFJlbW92ZSBgb3JpZ2luYCBhcyBhIHZvdGVyLiBUaGlzIHJlbW92ZXMgdGhlIGxvY2sgYW5kIHJldHVybnMgdGhlIGJvbmQuACwgIyA8d2VpZ2h0PiwgIyMjIyBTdGF0ZTAgUmVhZHM6IE8oMSk0IFdyaXRlczogTygxKTAgIyA8L3dlaWdodD5QcmVwb3J0X2RlZnVuY3Rfdm90ZXIEGHRhcmdldBxBZGRyZXNzNF0BIFJlcG9ydCBgdGFyZ2V0YCBmb3IgYmVpbmcgYW4gZGVmdW5jdCB2b3Rlci4gSW4gY2FzZSBvZiBhIHZhbGlkIHJlcG9ydCwgdGhlIHJlcG9ydGVyIGlzXQEgcmV3YXJkZWQgYnkgdGhlIGJvbmQgYW1vdW50IG9mIGB0YXJnZXRgLiBPdGhlcndpc2UsIHRoZSByZXBvcnRlciBpdHNlbGYgaXMgcmVtb3ZlZCBhbmRcIHRoZWlyIGJvbmQgaXMgc2xhc2hlZC4AiCBBIGRlZnVuY3Qgdm90ZXIgaXMgZGVmaW5lZCB0byBiZTpNASAgIC0gYSB2b3RlciB3aG9zZSBjdXJyZW50IHN1Ym1pdHRlZCB2b3RlcyBhcmUgYWxsIGludmFsaWQuIGkuZS4gYWxsIG9mIHRoZW0gYXJlIG5vtCAgICAgbG9uZ2VyIGEgY2FuZGlkYXRlIG5vciBhbiBhY3RpdmUgbWVtYmVyLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGUVASBSZWFkczogTyhOTG9nTSkgZ2l2ZW4gTSBjdXJyZW50IGNhbmRpZGF0ZXMgYW5kIE4gdm90ZXMgZm9yIGB0YXJnZXRgLjQgV3JpdGVzOiBPKDEpMCAjIDwvd2VpZ2h0PkBzdWJtaXRfY2FuZGlkYWN5ADR4IFN1Ym1pdCBvbmVzZWxmIGZvciBjYW5kaWRhY3kuAGQgQSBjYW5kaWRhdGUgd2lsbCBlaXRoZXI67CAgIC0gTG9zZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXJtIGFuZCBmb3JmZWl0IHRoZWlyIGRlcG9zaXQuLQEgICAtIFdpbiBhbmQgYmVjb21lIGEgbWVtYmVyLiBNZW1iZXJzIHdpbGwgZXZlbnR1YWxseSBnZXQgdGhlaXIgc3Rhc2ggYmFjay5VASAgIC0gQmVjb21lIGEgcnVubmVyLXVwLiBSdW5uZXJzLXVwcyBhcmUgcmVzZXJ2ZWQgbWVtYmVycyBpbiBjYXNlIG9uZSBnZXRzIGZvcmNlZnVsbHk0ICAgICByZW1vdmVkLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGWMIFJlYWRzOiBPKExvZ04pIEdpdmVuIE4gY2FuZGlkYXRlcy40IFdyaXRlczogTygxKTAgIyA8L3dlaWdodD5IcmVub3VuY2VfY2FuZGlkYWN5ACRRASBSZW5vdW5jZSBvbmUncyBpbnRlbnRpb24gdG8gYmUgYSBjYW5kaWRhdGUgZm9yIHRoZSBuZXh0IGVsZWN0aW9uIHJvdW5kLiAzIHBvdGVudGlhbEAgb3V0Y29tZXMgZXhpc3Q6QQEgLSBgb3JpZ2luYCBpcyBhIGNhbmRpZGF0ZSBhbmQgbm90IGVsZWN0ZWQgaW4gYW55IHNldC4gSW4gdGhpcyBjYXNlLCB0aGUgYm9uZCBpc/QgICB1bnJlc2VydmVkLCByZXR1cm5lZCBhbmQgb3JpZ2luIGlzIHJlbW92ZWQgYXMgYSBjYW5kaWRhdGUuWQEgLSBgb3JpZ2luYCBpcyBhIGN1cnJlbnQgcnVubmVyIHVwLiBJbiB0aGlzIGNhc2UsIHRoZSBib25kIGlzIHVucmVzZXJ2ZWQsIHJldHVybmVkIGFuZIQgICBvcmlnaW4gaXMgcmVtb3ZlZCBhcyBhIHJ1bm5lci5NASAtIGBvcmlnaW5gIGlzIGEgY3VycmVudCBtZW1iZXIuIEluIHRoaXMgY2FzZSwgdGhlIGJvbmQgaXMgdW5yZXNlcnZlZCBhbmQgb3JpZ2luIGlzWQEgICByZW1vdmVkIGFzIGEgbWVtYmVyLCBjb25zZXF1ZW50bHkgbm90IGJlaW5nIGEgY2FuZGlkYXRlIGZvciB0aGUgbmV4dCByb3VuZCBhbnltb3JlLmUBICAgU2ltaWxhciB0byBbYHJlbW92ZV92b3RlcmBdLCBpZiByZXBsYWNlbWVudCBydW5uZXJzIGV4aXN0cywgdGhleSBhcmUgaW1tZWRpYXRlbHkgdXNlZC40cmVtb3ZlX21lbWJlcgQMd2hvHEFkZHJlc3M0XQEgUmVtb3ZlIGEgcGFydGljdWxhciBtZW1iZXIgZnJvbSB0aGUgc2V0LiBUaGlzIGlzIGVmZmVjdGl2ZSBpbW1lZGlhdGVseSBhbmQgdGhlIGJvbmQgb2aAIHRoZSBvdXRnb2luZyBtZW1iZXIgaXMgc2xhc2hlZC4AWQEgSWYgYSBydW5uZXItdXAgaXMgYXZhaWxhYmxlLCB0aGVuIHRoZSBiZXN0IHJ1bm5lci11cCB3aWxsIGJlIHJlbW92ZWQgYW5kIHJlcGxhY2VzIHRoZfQgb3V0Z29pbmcgbWVtYmVyLiBPdGhlcndpc2UsIGEgbmV3IHBocmFnbWVuIHJvdW5kIGlzIHN0YXJ0ZWQuAEUBIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZGVzaWduYXRlZCBibG9jayBudW1iZXIgb2YgdGhlIG5leHQgZWxlY3Rpb24uACwgIyA8d2VpZ2h0PiwgIyMjIyBTdGF0ZVggUmVhZHM6IE8oZG9fcGhyYWdtZW4pXCBXcml0ZXM6IE8oZG9fcGhyYWdtZW4pMCAjIDwvd2VpZ2h0PgAAAExUZWNobmljYWxNZW1iZXJzaGlwAAEQKGFkZF9tZW1iZXIEDHdobyRBY2NvdW50SWQMfCBBZGQgYSBtZW1iZXIgYHdob2AgdG8gdGhlIHNldC4AtCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgQWRkT3JpZ2luYCBvciByb290LjRyZW1vdmVfbWVtYmVyBAx3aG8kQWNjb3VudElkDJAgUmVtb3ZlIGEgbWVtYmVyIGB3aG9gIGZyb20gdGhlIHNldC4AwCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgUmVtb3ZlT3JpZ2luYCBvciByb290Lixzd2FwX21lbWJlcggYcmVtb3ZlJEFjY291bnRJZAxhZGQkQWNjb3VudElkDMAgU3dhcCBvdXQgb25lIG1lbWJlciBgcmVtb3ZlYCBmb3IgYW5vdGhlciBgYWRkYC4AuCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgU3dhcE9yaWdpbmAgb3Igcm9vdC40cmVzZXRfbWVtYmVycwQcbWVtYmVyczhWZWM8QWNjb3VudElkPhBZASBDaGFuZ2UgdGhlIG1lbWJlcnNoaXAgdG8gYSBuZXcgc2V0LCBkaXNyZWdhcmRpbmcgdGhlIGV4aXN0aW5nIG1lbWJlcnNoaXAuIEJlIG5pY2UgYW5kbCBwYXNzIGBtZW1iZXJzYCBwcmUtc29ydGVkLgC8IE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBSZXNldE9yaWdpbmAgb3Igcm9vdC4AAAAgVHJlYXN1cnkAAQw0cHJvcG9zZV9zcGVuZAgUdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+LGJlbmVmaWNpYXJ5HEFkZHJlc3MkLQEgUHV0IGZvcndhcmQgYSBzdWdnZXN0aW9uIGZvciBzcGVuZGluZy4gQSBkZXBvc2l0IHByb3BvcnRpb25hbCB0byB0aGUgdmFsdWU1ASBpcyByZXNlcnZlZCBhbmQgc2xhc2hlZCBpZiB0aGUgcHJvcG9zYWwgaXMgcmVqZWN0ZWQuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhlVCBwcm9wb3NhbCBpcyBhd2FyZGVkLgAsICMgPHdlaWdodD4gIC0gTygxKS5kIC0gTGltaXRlZCBzdG9yYWdlIHJlYWRzLpQgLSBPbmUgREIgY2hhbmdlLCBvbmUgZXh0cmEgREIgZW50cnkuMCAjIDwvd2VpZ2h0PjxyZWplY3RfcHJvcG9zYWwELHByb3Bvc2FsX2lkWENvbXBhY3Q8UHJvcG9zYWxJbmRleD4c/CBSZWplY3QgYSBwcm9wb3NlZCBzcGVuZC4gVGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSBzbGFzaGVkLgAsICMgPHdlaWdodD4gIC0gTygxKS5kIC0gTGltaXRlZCBzdG9yYWdlIHJlYWRzLkAgLSBPbmUgREIgY2xlYXIuMCAjIDwvd2VpZ2h0PkBhcHByb3ZlX3Byb3Bvc2FsBCxwcm9wb3NhbF9pZFhDb21wYWN0PFByb3Bvc2FsSW5kZXg+IF0BIEFwcHJvdmUgYSBwcm9wb3NhbC4gQXQgYSBsYXRlciB0aW1lLCB0aGUgcHJvcG9zYWwgd2lsbCBiZSBhbGxvY2F0ZWQgdG8gdGhlIGJlbmVmaWNpYXJ5rCBhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuZCAtIExpbWl0ZWQgc3RvcmFnZSByZWFkcy5EIC0gT25lIERCIGNoYW5nZS4wICMgPC93ZWlnaHQ+AAAAGENsYWltcwABCBRjbGFpbQgQZGVzdCRBY2NvdW50SWRIZXRoZXJldW1fc2lnbmF0dXJlOEVjZHNhU2lnbmF0dXJlBDggTWFrZSBhIGNsYWltLihtaW50X2NsYWltDAx3aG88RXRoZXJldW1BZGRyZXNzFHZhbHVlJEJhbGFuY2VPZkB2ZXN0aW5nX3NjaGVkdWxlpE9wdGlvbjwoQmFsYW5jZU9mLEJhbGFuY2VPZixCbG9ja051bWJlcik+BIggQWRkIGEgbmV3IGNsYWltLCBpZiB5b3UgYXJlIHJvb3QuAAAAKFBhcmFjaGFpbnMAAQQkc2V0X2hlYWRzBBRoZWFkc1hWZWM8QXR0ZXN0ZWRDYW5kaWRhdGU+BBUBIFByb3ZpZGUgY2FuZGlkYXRlIHJlY2VpcHRzIGZvciBwYXJhY2hhaW5zLCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgaWQuAAAAMEF0dGVzdGF0aW9ucwABBERtb3JlX2F0dGVzdGF0aW9ucwQUX21vcmVATW9yZUF0dGVzdGF0aW9ucwQVASBQcm92aWRlIGNhbmRpZGF0ZSByZWNlaXB0cyBmb3IgcGFyYWNoYWlucywgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGlkLgAAABRTbG90cwABGCxuZXdfYXVjdGlvbgggZHVyYXRpb25QQ29tcGFjdDxCbG9ja051bWJlcj5IbGVhc2VfcGVyaW9kX2luZGV4WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4UWCBDcmVhdGUgYSBuZXcgYXVjdGlvbi4AVQEgVGhpcyBjYW4gb25seSBoYXBwZW4gd2hlbiB0aGVyZSBpc24ndCBhbHJlYWR5IGFuIGF1Y3Rpb24gaW4gcHJvZ3Jlc3MgYW5kIG1heSBvbmx5IGJlKQEgY2FsbGVkIGJ5IHRoZSByb290IG9yaWdpbi4gQWNjZXB0cyB0aGUgYGR1cmF0aW9uYCBvZiB0aGlzIGF1Y3Rpb24gYW5kIHRoZV0BIGBsZWFzZV9wZXJpb2RfaW5kZXhgIG9mIHRoZSBpbml0aWFsIGxlYXNlIHBlcmlvZCBvZiB0aGUgZm91ciB0aGF0IGFyZSB0byBiZSBhdWN0aW9uZWQuDGJpZBQMc3ViOENvbXBhY3Q8U3ViSWQ+NGF1Y3Rpb25faW5kZXhUQ29tcGFjdDxBdWN0aW9uSW5kZXg+KGZpcnN0X3Nsb3RYQ29tcGFjdDxMZWFzZVBlcmlvZE9mPiRsYXN0X3Nsb3RYQ29tcGFjdDxMZWFzZVBlcmlvZE9mPhhhbW91bnRIQ29tcGFjdDxCYWxhbmNlT2Y+QE0BIE1ha2UgYSBuZXcgYmlkIGZyb20gYW4gYWNjb3VudCAoaW5jbHVkaW5nIGEgcGFyYWNoYWluIGFjY291bnQpIGZvciBkZXBsb3lpbmcgYSBuZXcsIHBhcmFjaGFpbi4AXQEgTXVsdGlwbGUgc2ltdWx0YW5lb3VzIGJpZHMgZnJvbSB0aGUgc2FtZSBiaWRkZXIgYXJlIGFsbG93ZWQgb25seSBhcyBsb25nIGFzIGFsbCBhY3RpdmVBASBiaWRzIG92ZXJsYXAgZWFjaCBvdGhlciAoaS5lLiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlKS4gQmlkcyBjYW5ub3QgYmUgcmVkYWN0ZWQuAFkBIC0gYHN1YmAgaXMgdGhlIHN1Yi1iaWRkZXIgSUQsIGFsbG93aW5nIGZvciBtdWx0aXBsZSBjb21wZXRpbmcgYmlkcyB0byBiZSBtYWRlIGJ5IChhbmR0IGZ1bmRlZCBieSkgdGhlIHNhbWUgYWNjb3VudC5RASAtIGBhdWN0aW9uX2luZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIGF1Y3Rpb24gdG8gYmlkIG9uLiBTaG91bGQganVzdCBiZSB0aGUgcHJlc2VudGwgdmFsdWUgb2YgYEF1Y3Rpb25Db3VudGVyYC5NASAtIGBmaXJzdF9zbG90YCBpcyB0aGUgZmlyc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlDQEgYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuRQEgLSBgbGFzdF9zbG90YCBpcyB0aGUgbGFzdCBsZWFzZSBwZXJpb2QgaW5kZXggb2YgdGhlIHJhbmdlIHRvIGJpZCBvbi4gVGhpcyBpcyB0aGUNASBhYnNvbHV0ZSBsZWFzZSBwZXJpb2QgaW5kZXggdmFsdWUsIG5vdCBhbiBhdWN0aW9uLXNwZWNpZmljIG9mZnNldC5NASAtIGBhbW91bnRgIGlzIHRoZSBhbW91bnQgdG8gYmlkIHRvIGJlIGhlbGQgYXMgZGVwb3NpdCBmb3IgdGhlIHBhcmFjaGFpbiBzaG91bGQgdGhlzCBiaWQgd2luLiBUaGlzIGFtb3VudCBpcyBoZWxkIHRocm91Z2hvdXQgdGhlIHJhbmdlLiRiaWRfcmVuZXcQNGF1Y3Rpb25faW5kZXhUQ29tcGFjdDxBdWN0aW9uSW5kZXg+KGZpcnN0X3Nsb3RYQ29tcGFjdDxMZWFzZVBlcmlvZE9mPiRsYXN0X3Nsb3RYQ29tcGFjdDxMZWFzZVBlcmlvZE9mPhhhbW91bnRIQ29tcGFjdDxCYWxhbmNlT2Y+PFEBIE1ha2UgYSBuZXcgYmlkIGZyb20gYSBwYXJhY2hhaW4gYWNjb3VudCBmb3IgcmVuZXdpbmcgdGhhdCAocHJlLWV4aXN0aW5nKSBwYXJhY2hhaW4uAKggVGhlIG9yaWdpbiAqbXVzdCogYmUgYSBwYXJhY2hhaW4gYWNjb3VudC4AXQEgTXVsdGlwbGUgc2ltdWx0YW5lb3VzIGJpZHMgZnJvbSB0aGUgc2FtZSBiaWRkZXIgYXJlIGFsbG93ZWQgb25seSBhcyBsb25nIGFzIGFsbCBhY3RpdmVBASBiaWRzIG92ZXJsYXAgZWFjaCBvdGhlciAoaS5lLiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlKS4gQmlkcyBjYW5ub3QgYmUgcmVkYWN0ZWQuAFEBIC0gYGF1Y3Rpb25faW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgYXVjdGlvbiB0byBiaWQgb24uIFNob3VsZCBqdXN0IGJlIHRoZSBwcmVzZW50bCB2YWx1ZSBvZiBgQXVjdGlvbkNvdW50ZXJgLk0BIC0gYGZpcnN0X3Nsb3RgIGlzIHRoZSBmaXJzdCBsZWFzZSBwZXJpb2QgaW5kZXggb2YgdGhlIHJhbmdlIHRvIGJpZCBvbi4gVGhpcyBpcyB0aGUNASBhYnNvbHV0ZSBsZWFzZSBwZXJpb2QgaW5kZXggdmFsdWUsIG5vdCBhbiBhdWN0aW9uLXNwZWNpZmljIG9mZnNldC5FASAtIGBsYXN0X3Nsb3RgIGlzIHRoZSBsYXN0IGxlYXNlIHBlcmlvZCBpbmRleCBvZiB0aGUgcmFuZ2UgdG8gYmlkIG9uLiBUaGlzIGlzIHRoZQ0BIGFic29sdXRlIGxlYXNlIHBlcmlvZCBpbmRleCB2YWx1ZSwgbm90IGFuIGF1Y3Rpb24tc3BlY2lmaWMgb2Zmc2V0Lk0BIC0gYGFtb3VudGAgaXMgdGhlIGFtb3VudCB0byBiaWQgdG8gYmUgaGVsZCBhcyBkZXBvc2l0IGZvciB0aGUgcGFyYWNoYWluIHNob3VsZCB0aGXMIGJpZCB3aW4uIFRoaXMgYW1vdW50IGlzIGhlbGQgdGhyb3VnaG91dCB0aGUgcmFuZ2UuPHNldF9vZmZib2FyZGluZwQQZGVzdBxBZGRyZXNzFMggU2V0IHRoZSBvZmYtYm9hcmRpbmcgaW5mb3JtYXRpb24gZm9yIGEgcGFyYWNoYWluLgCoIFRoZSBvcmlnaW4gKm11c3QqIGJlIGEgcGFyYWNoYWluIGFjY291bnQuACEBIC0gYGRlc3RgIGlzIHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHJlY2VpdmUgdGhlIHBhcmFjaGFpbidzIGRlcG9zaXQuPGZpeF9kZXBsb3lfZGF0YRAMc3ViOENvbXBhY3Q8U3ViSWQ+HHBhcmFfaWQ8Q29tcGFjdDxQYXJhSWQ+JGNvZGVfaGFzaBBIYXNoRGluaXRpYWxfaGVhZF9kYXRhFEJ5dGVzHC0BIFNldCB0aGUgZGVwbG95IGluZm9ybWF0aW9uIGZvciBhIHN1Y2Nlc3NmdWwgYmlkIHRvIGRlcGxveSBhIG5ldyBwYXJhY2hhaW4uAMggLSBgb3JpZ2luYCBtdXN0IGJlIHRoZSBzdWNjZXNzZnVsIGJpZGRlciBhY2NvdW50LrAgLSBgc3ViYCBpcyB0aGUgc3ViLWJpZGRlciBJRCBvZiB0aGUgYmlkZGVyLgEBIC0gYHBhcmFfaWRgIGlzIHRoZSBwYXJhY2hhaW4gSUQgYWxsb3R0ZWQgdG8gdGhlIHdpbm5pbmcgYmlkZGVyLh0BIC0gYGNvZGVfaGFzaGAgaXMgdGhlIGhhc2ggb2YgdGhlIHBhcmFjaGFpbidzIFdhc20gdmFsaWRhdGlvbiBmdW5jdGlvbi7wIC0gYGluaXRpYWxfaGVhZF9kYXRhYCBpcyB0aGUgcGFyYWNoYWluJ3MgaW5pdGlhbCBoZWFkIGRhdGEuVGVsYWJvcmF0ZV9kZXBsb3lfZGF0YQgccGFyYV9pZDxDb21wYWN0PFBhcmFJZD4QY29kZRRCeXRlczB0IE5vdGUgYSBuZXcgcGFyYWNoYWluJ3MgY29kZS4ATQEgVGhpcyBtdXN0IGJlIGNhbGxlZCBhZnRlciBgZml4X2RlcGxveV9kYXRhYCBhbmQgYGNvZGVgIG11c3QgYmUgdGhlIHByZWltYWdlIG9mIHRoZcQgYGNvZGVfaGFzaGAgcGFzc2VkIHRoZXJlIGZvciB0aGUgc2FtZSBgcGFyYV9pZGAuAGEBIFRoaXMgbWF5IGJlIGNhbGxlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWNoYWluJ3MgZmlyc3QgbGVhc2UgcGVyaW9kLkUBIElmIGNhbGxlZCBiZWZvcmUgdGhlbiB0aGUgcGFyYWNoYWluIHdpbGwgYmVjb21lIGFjdGl2ZSBhdCB0aGUgZmlyc3QgYmxvY2sgb2YgaXRzZQEgc3RhcnRpbmcgbGVhc2UgcGVyaW9kLiBJZiBhZnRlciwgdGhlbiBpdCB3aWxsIGJlY29tZSBhY3RpdmUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBjYWxsLgBsIC0gYF9vcmlnaW5gIGlzIGlycmVsZXZhbnQu/CAtIGBwYXJhX2lkYCBpcyB0aGUgcGFyYWNoYWluIElEIHdob3NlIGNvZGUgd2lsbCBiZSBlbGFib3JhdGVkLhUBIC0gYGNvZGVgIGlzIHRoZSBwcmVpbWFnZSBvZiB0aGUgcmVnaXN0ZXJlZCBgY29kZV9oYXNoYCBvZiBgcGFyYV9pZGAuAAAAJFJlZ2lzdHJhcgABHDRyZWdpc3Rlcl9wYXJhEAhpZDxDb21wYWN0PFBhcmFJZD4QaW5mbyBQYXJhSW5mbxBjb2RlFEJ5dGVzRGluaXRpYWxfaGVhZF9kYXRhFEJ5dGVzCJggUmVnaXN0ZXIgYSBwYXJhY2hhaW4gd2l0aCBnaXZlbiBjb2RlLowgRmFpbHMgaWYgZ2l2ZW4gSUQgaXMgYWxyZWFkeSB1c2VkLjxkZXJlZ2lzdGVyX3BhcmEECGlkPENvbXBhY3Q8UGFyYUlkPgSUIERlcmVnaXN0ZXIgYSBwYXJhY2hhaW4gd2l0aCBnaXZlbiBpZEBzZXRfdGhyZWFkX2NvdW50BBRjb3VudAx1MzIUQQEgUmVzZXQgdGhlIG51bWJlciBvZiBwYXJhdGhyZWFkcyB0aGF0IGNhbiBwYXkgdG8gYmUgc2NoZWR1bGVkIGluIGEgc2luZ2xlIGJsb2NrLgCYIC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBwYXJhdGhyZWFkcy4AhCBNdXN0IGJlIGNhbGxlZCBmcm9tIFJvb3Qgb3JpZ2luLkxyZWdpc3Rlcl9wYXJhdGhyZWFkCBBjb2RlFEJ5dGVzRGluaXRpYWxfaGVhZF9kYXRhFEJ5dGVzEKQgUmVnaXN0ZXIgYSBwYXJhdGhyZWFkIGZvciBpbW1lZGlhdGUgdXNlLgBNASBNdXN0IGJlIHNlbnQgZnJvbSBhIFNpZ25lZCBvcmlnaW4gdGhhdCBpcyBhYmxlIHRvIGhhdmUgUGFyYXRocmVhZERlcG9zaXQgcmVzZXJ2ZWQuOQEgYGNvZGVgIGFuZCBgaW5pdGlhbF9oZWFkX2RhdGFgIGFyZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHBhcmF0aHJlYWQncyBzdGF0ZS5Ec2VsZWN0X3BhcmF0aHJlYWQMDF9pZDxDb21wYWN0PFBhcmFJZD4kX2NvbGxhdG9yKENvbGxhdG9ySWQoX2hlYWRfaGFzaBBIYXNoFAUBIFBsYWNlIGEgYmlkIGZvciBhIHBhcmF0aHJlYWQgdG8gYmUgcHJvZ3Jlc3NlZCBpbiB0aGUgbmV4dCBibG9jay4AQQEgVGhpcyBpcyBhIGtpbmQgb2Ygc3BlY2lhbCB0cmFuc2FjdGlvbiB0aGF0IHNob3VsZCBieSBoZWF2aWx5IHByaW9yaXRpemVkIGluIHRoZV0BIHRyYW5zYWN0aW9uIHBvb2wgYWNjb3JkaW5nIHRvIHRoZSBgdmFsdWVgOyBvbmx5IGBUaHJlYWRDb3VudGAgb2YgdGhlbSBtYXkgYmUgcHJlc2VudGVkVCBpbiBhbnkgc2luZ2xlIGJsb2NrLlRkZXJlZ2lzdGVyX3BhcmF0aHJlYWQAHMggRGVyZWdpc3RlciBhIHBhcmF0aHJlYWQgYW5kIHJldHJpZXZlIHRoZSBkZXBvc2l0LgAhASBNdXN0IGJlIHNlbnQgZnJvbSBhIGBQYXJhY2hhaW5gIG9yaWdpbiB3aGljaCBpcyBjdXJyZW50bHkgYSBwYXJhdGhyZWFkLgBZASBFbnN1cmUgdGhhdCBiZWZvcmUgY2FsbGluZyB0aGlzIHRoYXQgYW55IGZ1bmRzIHlvdSB3YW50IGVtcHRpZWQgZnJvbSB0aGUgcGFyYXRocmVhZCdzRQEgYWNjb3VudCBpcyBtb3ZlZCBvdXQ7IGFmdGVyIHRoaXMgaXQgd2lsbCBiZSBpbXBvc3NpYmxlIHRvIHJldHJpZXZlIHRoZW0gKHdpdGhvdXRoIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uKS4Qc3dhcAQUb3RoZXI8Q29tcGFjdDxQYXJhSWQ+IGUBIFN3YXAgYSBwYXJhY2hhaW4gd2l0aCBhbm90aGVyIHBhcmFjaGFpbiBvciBwYXJhdGhyZWFkLiBUaGUgb3JpZ2luIG11c3QgYmUgYSBgUGFyYWNoYWluYC5lASBUaGUgc3dhcCB3aWxsIGhhcHBlbiBvbmx5IGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gb3Bwb3NpdGUgc3dhcCBwZW5kaW5nLiBJZiB0aGVyZSBpcyBub3QsXQEgdGhlIHN3YXAgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIHBlbmRpbmcgc3dhcHMgbWFwLCByZWFkeSBmb3IgYSBsYXRlciBjb25maXJtYXRvcnkgc3dhcC4AYQEgVGhlIGBQYXJhSWRgcyByZW1haW4gbWFwcGVkIHRvIHRoZSBzYW1lIGhlYWQgZGF0YSBhbmQgY29kZSBzbyBleHRlcm5hbCBjb2RlIGNhbiByZWx5IG9uQQEgYFBhcmFJZGAgdG8gYmUgYSBsb25nLXRlcm0gaWRlbnRpZmllciBvZiBhIG5vdGlvbmFsICJwYXJhY2hhaW4iLiBIb3dldmVyLCB0aGVpclkBIHNjaGVkdWxpbmcgaW5mbyAoaS5lLiB3aGV0aGVyIHRoZXkncmUgYSBwYXJhdGhyZWFkIG9yIHBhcmFjaGFpbiksIGF1Y3Rpb24gaW5mb3JtYXRpb26YIGFuZCB0aGUgYXVjdGlvbiBkZXBvc2l0IGFyZSBzd2l0Y2hlZC4AAAAUTmlja3MAARAgc2V0X25hbWUEEG5hbWUUQnl0ZXNAXQEgU2V0IGFuIGFjY291bnQncyBuYW1lLiBUaGUgbmFtZSBzaG91bGQgYmUgYSBVVEYtOC1lbmNvZGVkIHN0cmluZyBieSBjb252ZW50aW9uLCB0aG91Z2hMIHdlIGRvbid0IGNoZWNrIGl0LgBhASBUaGUgbmFtZSBtYXkgbm90IGJlIG1vcmUgdGhhbiBgVDo6TWF4TGVuZ3RoYCBieXRlcywgbm9yIGxlc3MgdGhhbiBgVDo6TWluTGVuZ3RoYCBieXRlcy4AXQEgSWYgdGhlIGFjY291bnQgZG9lc24ndCBhbHJlYWR5IGhhdmUgYSBuYW1lLCB0aGVuIGEgZmVlIG9mIGBSZXNlcnZhdGlvbkZlZWAgaXMgcmVzZXJ2ZWRAIGluIHRoZSBhY2NvdW50LgDQIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsICMgPHdlaWdodD4gIC0gTygxKS6EIC0gQXQgbW9zdCBvbmUgYmFsYW5jZSBvcGVyYXRpb24uaCAtIE9uZSBzdG9yYWdlIHJlYWQvd3JpdGUuNCAtIE9uZSBldmVudC4wICMgPC93ZWlnaHQ+KGNsZWFyX25hbWUAKFEBIENsZWFyIGFuIGFjY291bnQncyBuYW1lIGFuZCByZXR1cm4gdGhlIGRlcG9zaXQuIEZhaWxzIGlmIHRoZSBhY2NvdW50IHdhcyBub3QgbmFtZWQuANAgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACwgIyA8d2VpZ2h0PiAgLSBPKDEpLmQgLSBPbmUgYmFsYW5jZSBvcGVyYXRpb24uaCAtIE9uZSBzdG9yYWdlIHJlYWQvd3JpdGUuNCAtIE9uZSBldmVudC4wICMgPC93ZWlnaHQ+JGtpbGxfbmFtZQQYdGFyZ2V0HEFkZHJlc3M05CBSZW1vdmUgYW4gYWNjb3VudCdzIG5hbWUgYW5kIHRha2UgY2hhcmdlIG9mIHRoZSBkZXBvc2l0LgBJASBGYWlscyBpZiBgd2hvYCBoYXMgbm90IGJlZW4gbmFtZWQuIFRoZSBkZXBvc2l0IGlzIGRlYWx0IHdpdGggdGhyb3VnaCBgVDo6U2xhc2hlZGBMIGltYmFsYW5jZSBoYW5kbGVyLgAxASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8gb3IgbWF0Y2ggYFQ6OkZvcmNlT3JpZ2luYC4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSku3CAtIE9uZSB1bmJhbGFuY2VkIGhhbmRsZXIgKHByb2JhYmx5IGEgYmFsYW5jZSB0cmFuc2ZlciloIC0gT25lIHN0b3JhZ2UgcmVhZC93cml0ZS40IC0gT25lIGV2ZW50LjAgIyA8L3dlaWdodD4oZm9yY2VfbmFtZQgYdGFyZ2V0HEFkZHJlc3MQbmFtZRRCeXRlczDIIFNldCBhIHRoaXJkLXBhcnR5IGFjY291bnQncyBuYW1lIHdpdGggbm8gZGVwb3NpdC4AoCBObyBsZW5ndGggY2hlY2tpbmcgaXMgZG9uZSBvbiB0aGUgbmFtZS4AMQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfIG9yIG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLoQgLSBBdCBtb3N0IG9uZSBiYWxhbmNlIG9wZXJhdGlvbi5oIC0gT25lIHN0b3JhZ2UgcmVhZC93cml0ZS40IC0gT25lIGV2ZW50LjAgIyA8L3dlaWdodD4AAAA=' + metaCalls: 'bWV0YQlsGFN5c3RlbQABHChmaWxsX2Jsb2NrAAQhASBBIGJpZyBkaXNwYXRjaCB0aGF0IHdpbGwgZGlzYWxsb3cgYW55IG90aGVyIHRyYW5zYWN0aW9uIHRvIGJlIGluY2x1ZGVkLhhyZW1hcmsEHF9yZW1hcmsUQnl0ZXMEbCBNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrLjhzZXRfaGVhcF9wYWdlcwQUcGFnZXMMdTY0BPwgU2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEDG5ldxRCeXRlcwRIIFNldCB0aGUgbmV3IGNvZGUuLHNldF9zdG9yYWdlBBRpdGVtczRWZWM8S2V5VmFsdWU+BGwgU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBBBrZXlzIFZlYzxLZXk+BHggS2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgEGHByZWZpeAxLZXkEFQEgS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AAABgUmFuZG9tbmVzc0NvbGxlY3RpdmVGbGlwAAAAAAAQQmFiZQABAAAAACRUaW1lc3RhbXAAAQQMc2V0BAxub3c8Q29tcGFjdDxNb21lbnQ+JFggU2V0IHRoZSBjdXJyZW50IHRpbWUuAFkBIFRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27YIHBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEUBIFRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5RCBgTWluaW11bVBlcmlvZGAuANggVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YC4AAAAcSW5kaWNlcwABAAAAACBCYWxhbmNlcwABECB0cmFuc2ZlcggQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT5k2CBUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgAJASBgdHJhbnNmZXJgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLiEBIEl0IHdpbGwgZGVjcmVhc2UgdGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBzeXN0ZW0gYnkgdGhlIGBUcmFuc2ZlckZlZWAuFQEgSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHS0IG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABkBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLgAsICMgPHdlaWdodD4xASAtIERlcGVuZGVudCBvbiBhcmd1bWVudHMgYnV0IG5vdCBjcml0aWNhbCwgZ2l2ZW4gcHJvcGVyIGltcGxlbWVudGF0aW9ucyBmb3LMICAgaW5wdXQgY29uZmlnIHR5cGVzLiBTZWUgcmVsYXRlZCBmdW5jdGlvbnMgYmVsb3cuaQEgLSBJdCBjb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzIGFuZCB3cml0ZXMgaW50ZXJuYWxseSBhbmQgbm8gY29tcGxleCBjb21wdXRhdGlvbi4ATCBSZWxhdGVkIGZ1bmN0aW9uczoAUQEgICAtIGBlbnN1cmVfY2FuX3dpdGhkcmF3YCBpcyBhbHdheXMgY2FsbGVkIGludGVybmFsbHkgYnV0IGhhcyBhIGJvdW5kZWQgY29tcGxleGl0eS4tASAgIC0gVHJhbnNmZXJyaW5nIGJhbGFuY2VzIHRvIGFjY291bnRzIHRoYXQgZGlkIG5vdCBleGlzdCBiZWZvcmUgd2lsbCBjYXVzZdQgICAgICBgVDo6T25OZXdBY2NvdW50Ojpvbl9uZXdfYWNjb3VudGAgdG8gYmUgY2FsbGVkLtwgICAtIFJlbW92aW5nIGVub3VnaCBmdW5kcyBmcm9tIGFuIGFjY291bnQgd2lsbCB0cmlnZ2VyWQEgICAgIGBUOjpEdXN0UmVtb3ZhbDo6b25fdW5iYWxhbmNlZGAgYW5kIGBUOjpPbkZyZWVCYWxhbmNlWmVybzo6b25fZnJlZV9iYWxhbmNlX3plcm9gLkkBICAgLSBgdHJhbnNmZXJfa2VlcF9hbGl2ZWAgd29ya3MgdGhlIHNhbWUgd2F5IGFzIGB0cmFuc2ZlcmAsIGJ1dCBoYXMgYW4gYWRkaXRpb25hbPggICAgIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90IGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgAwICMgPC93ZWlnaHQ+LHNldF9iYWxhbmNlDAx3aG8cQWRkcmVzcyBuZXdfZnJlZUBDb21wYWN0PEJhbGFuY2U+MG5ld19yZXNlcnZlZEBDb21wYWN0PEJhbGFuY2U+NJQgU2V0IHRoZSBiYWxhbmNlcyBvZiBhIGdpdmVuIGFjY291bnQuACEBIFRoaXMgd2lsbCBhbHRlciBgRnJlZUJhbGFuY2VgIGFuZCBgUmVzZXJ2ZWRCYWxhbmNlYCBpbiBzdG9yYWdlLiBpdCB3aWxsCQEgYWxzbyBkZWNyZWFzZSB0aGUgdG90YWwgaXNzdWFuY2Ugb2YgdGhlIHN5c3RlbSAoYFRvdGFsSXNzdWFuY2VgKS4ZASBJZiB0aGUgbmV3IGZyZWUgb3IgcmVzZXJ2ZWQgYmFsYW5jZSBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCzoIGl0IHdpbGwgcmVzZXQgdGhlIGFjY291bnQgbm9uY2UgKGBzeXN0ZW06OkFjY291bnROb25jZWApLgC0IFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAuACwgIyA8d2VpZ2h0PoAgLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLsQgLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzIGFuZCB3cml0ZXMuMCAjIDwvd2VpZ2h0Pjhmb3JjZV90cmFuc2ZlcgwYc291cmNlHEFkZHJlc3MQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT4IUQEgRXhhY3RseSBhcyBgdHJhbnNmZXJgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudCBtYXkgYmUsIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT4YUQEgU2FtZSBhcyB0aGUgW2B0cmFuc2ZlcmBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Qga2lsbCB0aGVAIG9yaWdpbiBhY2NvdW50LgC8IDk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyYF0gaW5zdGVhZC4AxCBbYHRyYW5zZmVyYF06IHN0cnVjdC5Nb2R1bGUuaHRtbCNtZXRob2QudHJhbnNmZXIAAABIVHJhbnNhY3Rpb25QYXltZW50AAAAAAAoQXV0aG9yc2hpcAABBChzZXRfdW5jbGVzBChuZXdfdW5jbGVzLFZlYzxIZWFkZXI+BGQgUHJvdmlkZSBhIHNldCBvZiB1bmNsZXMuAAAAHFN0YWtpbmcAAUAQYm9uZAwoY29udHJvbGxlchxBZGRyZXNzFHZhbHVlSENvbXBhY3Q8QmFsYW5jZU9mPhRwYXllZURSZXdhcmREZXN0aW5hdGlvbjxlASBUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxshCBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAxASBgdmFsdWVgIG11c3QgYmUgbW9yZSB0aGFuIHRoZSBgbWluaW11bV9iYWxhbmNlYCBzcGVjaWZpZWQgYnkgYFQ6OkN1cnJlbmN5YC4AJQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuACwgIyA8d2VpZ2h0PtQgLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBNb2RlcmF0ZSBjb21wbGV4aXR5LiAgLSBPKDEpLmggLSBUaHJlZSBleHRyYSBEQiBlbnRyaWVzLgBtASBOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZCB1bmxlc3MlASB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4wICMgPC93ZWlnaHQ+KGJvbmRfZXh0cmEEOG1heF9hZGRpdGlvbmFsSENvbXBhY3Q8QmFsYW5jZU9mPjhlASBBZGQgc29tZSBleHRyYSBhbW91bnQgdGhhdCBoYXZlIGFwcGVhcmVkIGluIHRoZSBzdGFzaCBgZnJlZV9iYWxhbmNlYCBpbnRvIHRoZSBiYWxhbmNlIHVwNCBmb3Igc3Rha2luZy4AUQEgVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5lASBVbmxpa2UgW2Bib25kYF0gb3IgW2B1bmJvbmRgXSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZSBhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50TCB0aGF0IGNhbiBiZSBhZGRlZC4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuACwgIyA8d2VpZ2h0PuggLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkuICAtIE8oMSkuQCAtIE9uZSBEQiBlbnRyeS4wICMgPC93ZWlnaHQ+GHVuYm9uZAQUdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+XFUBIFNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZAEBIHBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiUBIFQ6OkN1cnJlbmN5OjptaW5pbXVtX2JhbGFuY2UoKSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBJASBPbmNlIHRoZSB1bmxvY2sgcGVyaW9kIGlzIGRvbmUsIHlvdSBjYW4gY2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIHRvIGFjdHVhbGx5IG1vdmXAIHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuAD0BIE5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTUFYX1VOTE9DS0lOR19DSFVOS1NgKT0BIGNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSW4gdGhhdCBjYXNlLCBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gbmVlZPwgdG8gYmUgY2FsbGVkIGZpcnN0IHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAJggU2VlIGFsc28gW2BDYWxsOjp3aXRoZHJhd191bmJvbmRlZGBdLgAsICMgPHdlaWdodD5BASAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIExpbWl0ZWQgYnV0IHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGNvbXBsZXhpdHkumCAtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuZQEgLSBFYWNoIGNhbGwgKHJlcXVpcmVzIHRoZSByZW1haW5kZXIgb2YgdGhlIGJvbmRlZCBiYWxhbmNlIHRvIGJlIGFib3ZlIGBtaW5pbXVtX2JhbGFuY2VgKXEBICAgd2lsbCBjYXVzZSBhIG5ldyBlbnRyeSB0byBiZSBpbnNlcnRlZCBpbnRvIGEgdmVjdG9yIChgTGVkZ2VyLnVubG9ja2luZ2ApIGtlcHQgaW4gc3RvcmFnZS6lASAgIFRoZSBvbmx5IHdheSB0byBjbGVhbiB0aGUgYWZvcmVtZW50aW9uZWQgc3RvcmFnZSBpdGVtIGlzIGFsc28gdXNlci1jb250cm9sbGVkIHZpYSBgd2l0aGRyYXdfdW5ib25kZWRgLkAgLSBPbmUgREIgZW50cnkuKCA8L3dlaWdodD5Ed2l0aGRyYXdfdW5ib25kZWQAQC0BIFJlbW92ZSBhbnkgdW5sb2NrZWQgY2h1bmtzIGZyb20gdGhlIGB1bmxvY2tpbmdgIHF1ZXVlIGZyb20gb3VyIG1hbmFnZW1lbnQuADUBIFRoaXMgZXNzZW50aWFsbHkgZnJlZXMgdXAgdGhhdCBiYWxhbmNlIHRvIGJlIHVzZWQgYnkgdGhlIHN0YXNoIGFjY291bnQgdG8gZG9MIHdoYXRldmVyIGl0IHdhbnRzLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4AbCBTZWUgYWxzbyBbYENhbGw6OnVuYm9uZGBdLgAsICMgPHdlaWdodD5VASAtIENvdWxkIGJlIGRlcGVuZGVudCBvbiB0aGUgYG9yaWdpbmAgYXJndW1lbnQgYW5kIGhvdyBtdWNoIGB1bmxvY2tpbmdgIGNodW5rcyBleGlzdC5FASAgSXQgaW1wbGllcyBgY29uc29saWRhdGVfdW5sb2NrZWRgIHdoaWNoIGxvb3BzIG92ZXIgYExlZGdlci51bmxvY2tpbmdgLCB3aGljaCBpc/QgIGluZGlyZWN0bHkgdXNlci1jb250cm9sbGVkLiBTZWUgW2B1bmJvbmRgXSBmb3IgbW9yZSBkZXRhaWwueQEgLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLCB5ZXQgdGhlIHNpemUgb2Ygd2hpY2ggY291bGQgYmUgbGFyZ2UgYmFzZWQgb24gYGxlZGdlcmAuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiB2YWxpZGF0ZQQUcHJlZnM4VmFsaWRhdG9yUHJlZnMs6CBEZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A3CBFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guACwgIyA8d2VpZ2h0PuggLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkumCAtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiBub21pbmF0ZQQcdGFyZ2V0czBWZWM8QWRkcmVzcz4sEQEgRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDcIEVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ALCAjIDx3ZWlnaHQ+JQEgLSBUaGUgdHJhbnNhY3Rpb24ncyBjb21wbGV4aXR5IGlzIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiBgdGFyZ2V0c2AsmCB3aGljaCBpcyBjYXBwZWQgYXQgYE1BWF9OT01JTkFUSU9OU2Au2CAtIEJvdGggdGhlIHJlYWRzIGFuZCB3cml0ZXMgZm9sbG93IGEgc2ltaWxhciBwYXR0ZXJuLjAgIyA8L3dlaWdodD4UY2hpbGwALMggRGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDcIEVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ALCAjIDx3ZWlnaHQ+6CAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5UIC0gQ29udGFpbnMgb25lIHJlYWQuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiRzZXRfcGF5ZWUEFHBheWVlRFJld2FyZERlc3RpbmF0aW9uLLggKFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuANwgRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFUBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgAsICMgPHdlaWdodD7oIC0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpggLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsggLSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LjAgIyA8L3dlaWdodD44c2V0X2NvbnRyb2xsZXIEKGNvbnRyb2xsZXIcQWRkcmVzcyyQIChSZS0pc2V0IHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2guANwgRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFUBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLgAsICMgPHdlaWdodD7oIC0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpggLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsggLSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LjAgIyA8L3dlaWdodD5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQMbmV3MENvbXBhY3Q8dTMyPgSAIFRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy40Zm9yY2Vfbm9fZXJhcwAUsCBGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuACwgIyA8d2VpZ2h0PkAgLSBObyBhcmd1bWVudHMuMCAjIDwvd2VpZ2h0PjRmb3JjZV9uZXdfZXJhABhNASBGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJloCByZXNldCB0byBub3JtYWwgKG5vbi1mb3JjZWQpIGJlaGF2aW91ci4ALCAjIDx3ZWlnaHQ+QCAtIE5vIGFyZ3VtZW50cy4wICMgPC93ZWlnaHQ+RHNldF9pbnZ1bG5lcmFibGVzBCh2YWxpZGF0b3JzOFZlYzxBY2NvdW50SWQ+BMwgU2V0IHRoZSB2YWxpZGF0b3JzIHdobyBjYW5ub3QgYmUgc2xhc2hlZCAoaWYgYW55KS40Zm9yY2VfdW5zdGFrZQQUc3Rhc2gkQWNjb3VudElkBA0BIEZvcmNlIGEgY3VycmVudCBzdGFrZXIgdG8gYmVjb21lIGNvbXBsZXRlbHkgdW5zdGFrZWQsIGltbWVkaWF0ZWx5LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAUBQEgRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgAsICMgPHdlaWdodD5QIC0gT25lIHN0b3JhZ2Ugd3JpdGUwICMgPC93ZWlnaHQ+VGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgMZXJhIEVyYUluZGV4NHNsYXNoX2luZGljZXMgVmVjPHUzMj4cRQEgQ2FuY2VsIGVuYWN0bWVudCBvZiBhIGRlZmVycmVkIHNsYXNoLiBDYW4gYmUgY2FsbGVkIGJ5IGVpdGhlciB0aGUgcm9vdCBvcmlnaW4gb3JwIHRoZSBgVDo6U2xhc2hDYW5jZWxPcmlnaW5gLgUBIHBhc3NpbmcgdGhlIGVyYSBhbmQgaW5kaWNlcyBvZiB0aGUgc2xhc2hlcyBmb3IgdGhhdCBlcmEgdG8ga2lsbC4ALCAjIDx3ZWlnaHQ+VCAtIE9uZSBzdG9yYWdlIHdyaXRlLjAgIyA8L3dlaWdodD4AAAAgT2ZmZW5jZXMAAQAAAAAcU2Vzc2lvbgABBCBzZXRfa2V5cwgQa2V5cxBLZXlzFHByb29mFEJ5dGVzKOQgU2V0cyB0aGUgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlciB0byBga2V5YC4hASBBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsQgVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uANQgVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgc2lnbmVkLgAsICMgPHdlaWdodD6IIC0gTyhsb2cgbikgaW4gbnVtYmVyIG9mIGFjY291bnRzLlggLSBPbmUgZXh0cmEgREIgZW50cnkuMCAjIDwvd2VpZ2h0PgAAADxGaW5hbGl0eVRyYWNrZXIAAQQoZmluYWxfaGludAQQaGludFBDb21wYWN0PEJsb2NrTnVtYmVyPgj0IEhpbnQgdGhhdCB0aGUgYXV0aG9yIG9mIHRoaXMgYmxvY2sgdGhpbmtzIHRoZSBiZXN0IGZpbmFsaXplZGwgYmxvY2sgaXMgdGhlIGdpdmVuIG51bWJlci4AAAAcR3JhbmRwYQABBEhyZXBvcnRfbWlzYmVoYXZpb3IEHF9yZXBvcnQUQnl0ZXMEZCBSZXBvcnQgc29tZSBtaXNiZWhhdmlvci4AAAAgSW1PbmxpbmUAAQQkaGVhcnRiZWF0CCRoZWFydGJlYXQkSGVhcnRiZWF0KF9zaWduYXR1cmUkU2lnbmF0dXJlAAAAAEhBdXRob3JpdHlEaXNjb3ZlcnkAAQAAAAAkRGVtb2NyYWN5AAFUHHByb3Bvc2UINHByb3Bvc2FsX2hhc2gQSGFzaBR2YWx1ZUhDb21wYWN0PEJhbGFuY2VPZj4YoCBQcm9wb3NlIGEgc2Vuc2l0aXZlIGFjdGlvbiB0byBiZSB0YWtlbi4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkugCAtIFR3byBEQiBjaGFuZ2VzLCBvbmUgREIgZW50cnkuMCAjIDwvd2VpZ2h0PhhzZWNvbmQEIHByb3Bvc2FsSENvbXBhY3Q8UHJvcEluZGV4PhigIFByb3Bvc2UgYSBzZW5zaXRpdmUgYWN0aW9uIHRvIGJlIHRha2VuLgAsICMgPHdlaWdodD4gIC0gTygxKS5AIC0gT25lIERCIGVudHJ5LjAgIyA8L3dlaWdodD4Qdm90ZQgkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PhB2b3RlEFZvdGUcNQEgVm90ZSBpbiBhIHJlZmVyZW5kdW0uIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7wgb3RoZXJ3aXNlIGl0IGlzIGEgdm90ZSB0byBrZWVwIHRoZSBzdGF0dXMgcXVvLgAsICMgPHdlaWdodD4gIC0gTygxKS58IC0gT25lIERCIGNoYW5nZSwgb25lIERCIGVudHJ5LjAgIyA8L3dlaWdodD4ocHJveHlfdm90ZQgkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PhB2b3RlEFZvdGUcUQEgVm90ZSBpbiBhIHJlZmVyZW5kdW0gb24gYmVoYWxmIG9mIGEgc3Rhc2guIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3T4IHRoZSBwcm9wb3NhbDsgIG90aGVyd2lzZSBpdCBpcyBhIHZvdGUgdG8ga2VlcCB0aGUgc3RhdHVzIHF1by4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkufCAtIE9uZSBEQiBjaGFuZ2UsIG9uZSBEQiBlbnRyeS4wICMgPC93ZWlnaHQ+QGVtZXJnZW5jeV9jYW5jZWwEJHJlZl9pbmRleDxSZWZlcmVuZHVtSW5kZXgIUQEgU2NoZWR1bGUgYW4gZW1lcmdlbmN5IGNhbmNlbGxhdGlvbiBvZiBhIHJlZmVyZW5kdW0uIENhbm5vdCBoYXBwZW4gdHdpY2UgdG8gdGhlIHNhbWUwIHJlZmVyZW5kdW0uQGV4dGVybmFsX3Byb3Bvc2UENHByb3Bvc2FsX2hhc2gQSGFzaAgxASBTY2hlZHVsZSBhIHJlZmVyZW5kdW0gdG8gYmUgdGFibGVkIG9uY2UgaXQgaXMgbGVnYWwgdG8gc2NoZWR1bGUgYW4gZXh0ZXJuYWwwIHJlZmVyZW5kdW0uZGV4dGVybmFsX3Byb3Bvc2VfbWFqb3JpdHkENHByb3Bvc2FsX2hhc2gQSGFzaBRZASBTY2hlZHVsZSBhIG1ham9yaXR5LWNhcnJpZXMgcmVmZXJlbmR1bSB0byBiZSB0YWJsZWQgbmV4dCBvbmNlIGl0IGlzIGxlZ2FsIHRvIHNjaGVkdWxlYCBhbiBleHRlcm5hbCByZWZlcmVuZHVtLgBNASBVbmxpa2UgYGV4dGVybmFsX3Byb3Bvc2VgLCBibGFja2xpc3RpbmcgaGFzIG5vIGVmZmVjdCBvbiB0aGlzIGFuZCBpdCBtYXkgcmVwbGFjZSBhnCBwcmUtc2NoZWR1bGVkIGBleHRlcm5hbF9wcm9wb3NlYCBjYWxsLmBleHRlcm5hbF9wcm9wb3NlX2RlZmF1bHQENHByb3Bvc2FsX2hhc2gQSGFzaBRJASBTY2hlZHVsZSBhIG5lZ2F0aXZlLXR1cm5vdXQtYmlhcyByZWZlcmVuZHVtIHRvIGJlIHRhYmxlZCBuZXh0IG9uY2UgaXQgaXMgbGVnYWwgdG+EIHNjaGVkdWxlIGFuIGV4dGVybmFsIHJlZmVyZW5kdW0uAE0BIFVubGlrZSBgZXh0ZXJuYWxfcHJvcG9zZWAsIGJsYWNrbGlzdGluZyBoYXMgbm8gZWZmZWN0IG9uIHRoaXMgYW5kIGl0IG1heSByZXBsYWNlIGGcIHByZS1zY2hlZHVsZWQgYGV4dGVybmFsX3Byb3Bvc2VgIGNhbGwuKGZhc3RfdHJhY2sMNHByb3Bvc2FsX2hhc2gQSGFzaDR2b3RpbmdfcGVyaW9kLEJsb2NrTnVtYmVyFGRlbGF5LEJsb2NrTnVtYmVyJFEBIFNjaGVkdWxlIHRoZSBjdXJyZW50bHkgZXh0ZXJuYWxseS1wcm9wb3NlZCBtYWpvcml0eS1jYXJyaWVzIHJlZmVyZW5kdW0gdG8gYmUgdGFibGVkZQEgaW1tZWRpYXRlbHkuIElmIHRoZXJlIGlzIG5vIGV4dGVybmFsbHktcHJvcG9zZWQgcmVmZXJlbmR1bSBjdXJyZW50bHksIG9yIGlmIHRoZXJlIGlzIG9uZewgYnV0IGl0IGlzIG5vdCBhIG1ham9yaXR5LWNhcnJpZXMgcmVmZXJlbmR1bSB0aGVuIGl0IGZhaWxzLgD4IC0gYHByb3Bvc2FsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY3VycmVudCBleHRlcm5hbCBwcm9wb3NhbC5hASAtIGB2b3RpbmdfcGVyaW9kYDogVGhlIHBlcmlvZCB0aGF0IGlzIGFsbG93ZWQgZm9yIHZvdGluZyBvbiB0aGlzIHByb3Bvc2FsLiBJbmNyZWFzZWQgdG+YICAgYEVtZXJnZW5jeVZvdGluZ1BlcmlvZGAgaWYgdG9vIGxvdy5VASAtIGBkZWxheWA6IFRoZSBudW1iZXIgb2YgYmxvY2sgYWZ0ZXIgdm90aW5nIGhhcyBlbmRlZCBpbiBhcHByb3ZhbCBhbmQgdGhpcyBzaG91bGQgYmW8ICAgZW5hY3RlZC4gVGhpcyBkb2Vzbid0IGhhdmUgYSBtaW5pbXVtIGFtb3VudC40dmV0b19leHRlcm5hbAQ0cHJvcG9zYWxfaGFzaBBIYXNoBLwgVmV0byBhbmQgYmxhY2tsaXN0IHRoZSBleHRlcm5hbCBwcm9wb3NhbCBoYXNoLkRjYW5jZWxfcmVmZXJlbmR1bQQkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PgRUIFJlbW92ZSBhIHJlZmVyZW5kdW0uNGNhbmNlbF9xdWV1ZWQMEHdoZW5QQ29tcGFjdDxCbG9ja051bWJlcj4Ud2hpY2gwQ29tcGFjdDx1MzI+EHdoYXRgQ29tcGFjdDxSZWZlcmVuZHVtSW5kZXg+BKAgQ2FuY2VsIGEgcHJvcG9zYWwgcXVldWVkIGZvciBlbmFjdG1lbnQuJHNldF9wcm94eQQUcHJveHkkQWNjb3VudElkFJggU3BlY2lmeSBhIHByb3h5LiBDYWxsZWQgYnkgdGhlIHN0YXNoLgAsICMgPHdlaWdodD5YIC0gT25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD4wcmVzaWduX3Byb3h5ABSYIENsZWFyIHRoZSBwcm94eS4gQ2FsbGVkIGJ5IHRoZSBwcm94eS4ALCAjIDx3ZWlnaHQ+QCAtIE9uZSBEQiBjbGVhci4wICMgPC93ZWlnaHQ+MHJlbW92ZV9wcm94eQQUcHJveHkkQWNjb3VudElkFJggQ2xlYXIgdGhlIHByb3h5LiBDYWxsZWQgYnkgdGhlIHN0YXNoLgAsICMgPHdlaWdodD5AIC0gT25lIERCIGNsZWFyLjAgIyA8L3dlaWdodD4gZGVsZWdhdGUICHRvJEFjY291bnRJZChjb252aWN0aW9uKENvbnZpY3Rpb24UPCBEZWxlZ2F0ZSB2b3RlLgAsICMgPHdlaWdodD5YIC0gT25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD4odW5kZWxlZ2F0ZQAURCBVbmRlbGVnYXRlIHZvdGUuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLjAgIyA8L3dlaWdodD5YY2xlYXJfcHVibGljX3Byb3Bvc2FscwAEAQEgVmV0byBhbmQgYmxhY2tsaXN0IHRoZSBwcm9wb3NhbCBoYXNoLiBNdXN0IGJlIGZyb20gUm9vdCBvcmlnaW4uNG5vdGVfcHJlaW1hZ2UEQGVuY29kZWRfcHJvcG9zYWwUQnl0ZXMIYQEgUmVnaXN0ZXIgdGhlIHByZWltYWdlIGZvciBhbiB1cGNvbWluZyBwcm9wb3NhbC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgdGhlIHByb3Bvc2FsIHRvIGJlJQEgaW4gdGhlIGRpc3BhdGNoIHF1ZXVlIGJ1dCBkb2VzIHJlcXVpcmUgYSBkZXBvc2l0LCByZXR1cm5lZCBvbmNlIGVuYWN0ZWQuWG5vdGVfaW1taW5lbnRfcHJlaW1hZ2UMQGVuY29kZWRfcHJvcG9zYWwUQnl0ZXMQd2hlbixCbG9ja051bWJlchR3aGljaAx1MzIIRQEgUmVnaXN0ZXIgdGhlIHByZWltYWdlIGZvciBhbiB1cGNvbWluZyBwcm9wb3NhbC4gVGhpcyByZXF1aXJlcyB0aGUgcHJvcG9zYWwgdG8gYmW0IGluIHRoZSBkaXNwYXRjaCBxdWV1ZS4gTm8gZGVwb3NpdCBpcyBuZWVkZWQuNHJlYXBfcHJlaW1hZ2UENHByb3Bvc2FsX2hhc2gQSGFzaAT0IFJlbW92ZSBhbiBleHBpcmVkIHByb3Bvc2FsIHByZWltYWdlIGFuZCBjb2xsZWN0IHRoZSBkZXBvc2l0LgAAABxDb3VuY2lsAAEQLHNldF9tZW1iZXJzBCxuZXdfbWVtYmVyczhWZWM8QWNjb3VudElkPhBRASBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwIG1hbnVhbGx5IHRvIGBuZXdfbWVtYmVyc2AuIEJlIG5pY2UgdG8gdGhlIGNoYWluIGFuZFwgcHJvdmlkZSBpdCBwcmUtc29ydGVkLgBYIFJlcXVpcmVzIHJvb3Qgb3JpZ2luLhxleGVjdXRlBCBwcm9wb3NhbCBQcm9wb3NhbAz0IERpc3BhdGNoIGEgcHJvcG9zYWwgZnJvbSBhIG1lbWJlciB1c2luZyB0aGUgYE1lbWJlcmAgb3JpZ2luLgCsIE9yaWdpbiBtdXN0IGJlIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aXZlLhxwcm9wb3NlCCR0aHJlc2hvbGRQQ29tcGFjdDxNZW1iZXJDb3VudD4gcHJvcG9zYWwgUHJvcG9zYWwQLCAjIDx3ZWlnaHQ+kCAtIEJvdW5kZWQgc3RvcmFnZSByZWFkcyBhbmQgd3JpdGVzLrggLSBBcmd1bWVudCBgdGhyZXNob2xkYCBoYXMgYmVhcmluZyBvbiB3ZWlnaHQuMCAjIDwvd2VpZ2h0PhB2b3RlDCBwcm9wb3NhbBBIYXNoFGluZGV4WENvbXBhY3Q8UHJvcG9zYWxJbmRleD4cYXBwcm92ZRBib29sECwgIyA8d2VpZ2h0PowgLSBCb3VuZGVkIHN0b3JhZ2UgcmVhZCBhbmQgd3JpdGVzLlUBIC0gV2lsbCBiZSBzbGlnaHRseSBoZWF2aWVyIGlmIHRoZSBwcm9wb3NhbCBpcyBhcHByb3ZlZCAvIGRpc2FwcHJvdmVkIGFmdGVyIHRoZSB2b3RlLjAgIyA8L3dlaWdodD4AAABIVGVjaG5pY2FsQ29tbWl0dGVlAAEQLHNldF9tZW1iZXJzBCxuZXdfbWVtYmVyczhWZWM8QWNjb3VudElkPhBRASBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwIG1hbnVhbGx5IHRvIGBuZXdfbWVtYmVyc2AuIEJlIG5pY2UgdG8gdGhlIGNoYWluIGFuZFwgcHJvdmlkZSBpdCBwcmUtc29ydGVkLgBYIFJlcXVpcmVzIHJvb3Qgb3JpZ2luLhxleGVjdXRlBCBwcm9wb3NhbCBQcm9wb3NhbAz0IERpc3BhdGNoIGEgcHJvcG9zYWwgZnJvbSBhIG1lbWJlciB1c2luZyB0aGUgYE1lbWJlcmAgb3JpZ2luLgCsIE9yaWdpbiBtdXN0IGJlIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aXZlLhxwcm9wb3NlCCR0aHJlc2hvbGRQQ29tcGFjdDxNZW1iZXJDb3VudD4gcHJvcG9zYWwgUHJvcG9zYWwQLCAjIDx3ZWlnaHQ+kCAtIEJvdW5kZWQgc3RvcmFnZSByZWFkcyBhbmQgd3JpdGVzLrggLSBBcmd1bWVudCBgdGhyZXNob2xkYCBoYXMgYmVhcmluZyBvbiB3ZWlnaHQuMCAjIDwvd2VpZ2h0PhB2b3RlDCBwcm9wb3NhbBBIYXNoFGluZGV4WENvbXBhY3Q8UHJvcG9zYWxJbmRleD4cYXBwcm92ZRBib29sECwgIyA8d2VpZ2h0PowgLSBCb3VuZGVkIHN0b3JhZ2UgcmVhZCBhbmQgd3JpdGVzLlUBIC0gV2lsbCBiZSBzbGlnaHRseSBoZWF2aWVyIGlmIHRoZSBwcm9wb3NhbCBpcyBhcHByb3ZlZCAvIGRpc2FwcHJvdmVkIGFmdGVyIHRoZSB2b3RlLjAgIyA8L3dlaWdodD4AAABERWxlY3Rpb25zUGhyYWdtZW4AARgQdm90ZQgUdm90ZXM4VmVjPEFjY291bnRJZD4UdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+PAUBIFZvdGUgZm9yIGEgc2V0IG9mIGNhbmRpZGF0ZXMgZm9yIHRoZSB1cGNvbWluZyByb3VuZCBvZiBlbGVjdGlvbi4AUCBUaGUgYHZvdGVzYCBzaG91bGQ6SCAgIC0gbm90IGJlIGVtcHR5LqwgICAtIGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAF0BIFVwb24gdm90aW5nLCBgdmFsdWVgIHVuaXRzIG9mIGB3aG9gJ3MgYmFsYW5jZSBpcyBsb2NrZWQgYW5kIGEgYm9uZCBhbW91bnQgaXMgcmVzZXJ2ZWQuXQEgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gbm90IHBsYWNlIGFsbCBvZiB0aGVpciBiYWxhbmNlIGludG8gdGhlIGxvY2ugIGFuZCBrZWVwIHNvbWUgZm9yIGZ1cnRoZXIgdHJhbnNhY3Rpb25zLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGUwIFJlYWRzOiBPKDEpyCBXcml0ZXM6IE8oVikgZ2l2ZW4gYFZgIHZvdGVzLiBWIGlzIGJvdW5kZWQgYnkgMTYuMCAjIDwvd2VpZ2h0PjByZW1vdmVfdm90ZXIAHCEBIFJlbW92ZSBgb3JpZ2luYCBhcyBhIHZvdGVyLiBUaGlzIHJlbW92ZXMgdGhlIGxvY2sgYW5kIHJldHVybnMgdGhlIGJvbmQuACwgIyA8d2VpZ2h0PiwgIyMjIyBTdGF0ZTAgUmVhZHM6IE8oMSk0IFdyaXRlczogTygxKTAgIyA8L3dlaWdodD5QcmVwb3J0X2RlZnVuY3Rfdm90ZXIEGHRhcmdldBxBZGRyZXNzNF0BIFJlcG9ydCBgdGFyZ2V0YCBmb3IgYmVpbmcgYW4gZGVmdW5jdCB2b3Rlci4gSW4gY2FzZSBvZiBhIHZhbGlkIHJlcG9ydCwgdGhlIHJlcG9ydGVyIGlzXQEgcmV3YXJkZWQgYnkgdGhlIGJvbmQgYW1vdW50IG9mIGB0YXJnZXRgLiBPdGhlcndpc2UsIHRoZSByZXBvcnRlciBpdHNlbGYgaXMgcmVtb3ZlZCBhbmRcIHRoZWlyIGJvbmQgaXMgc2xhc2hlZC4AiCBBIGRlZnVuY3Qgdm90ZXIgaXMgZGVmaW5lZCB0byBiZTpNASAgIC0gYSB2b3RlciB3aG9zZSBjdXJyZW50IHN1Ym1pdHRlZCB2b3RlcyBhcmUgYWxsIGludmFsaWQuIGkuZS4gYWxsIG9mIHRoZW0gYXJlIG5vtCAgICAgbG9uZ2VyIGEgY2FuZGlkYXRlIG5vciBhbiBhY3RpdmUgbWVtYmVyLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGUVASBSZWFkczogTyhOTG9nTSkgZ2l2ZW4gTSBjdXJyZW50IGNhbmRpZGF0ZXMgYW5kIE4gdm90ZXMgZm9yIGB0YXJnZXRgLjQgV3JpdGVzOiBPKDEpMCAjIDwvd2VpZ2h0PkBzdWJtaXRfY2FuZGlkYWN5ADR4IFN1Ym1pdCBvbmVzZWxmIGZvciBjYW5kaWRhY3kuAGQgQSBjYW5kaWRhdGUgd2lsbCBlaXRoZXI67CAgIC0gTG9zZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXJtIGFuZCBmb3JmZWl0IHRoZWlyIGRlcG9zaXQuLQEgICAtIFdpbiBhbmQgYmVjb21lIGEgbWVtYmVyLiBNZW1iZXJzIHdpbGwgZXZlbnR1YWxseSBnZXQgdGhlaXIgc3Rhc2ggYmFjay5VASAgIC0gQmVjb21lIGEgcnVubmVyLXVwLiBSdW5uZXJzLXVwcyBhcmUgcmVzZXJ2ZWQgbWVtYmVycyBpbiBjYXNlIG9uZSBnZXRzIGZvcmNlZnVsbHk0ICAgICByZW1vdmVkLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGWMIFJlYWRzOiBPKExvZ04pIEdpdmVuIE4gY2FuZGlkYXRlcy40IFdyaXRlczogTygxKTAgIyA8L3dlaWdodD5IcmVub3VuY2VfY2FuZGlkYWN5ACRRASBSZW5vdW5jZSBvbmUncyBpbnRlbnRpb24gdG8gYmUgYSBjYW5kaWRhdGUgZm9yIHRoZSBuZXh0IGVsZWN0aW9uIHJvdW5kLiAzIHBvdGVudGlhbEAgb3V0Y29tZXMgZXhpc3Q6QQEgLSBgb3JpZ2luYCBpcyBhIGNhbmRpZGF0ZSBhbmQgbm90IGVsZWN0ZWQgaW4gYW55IHNldC4gSW4gdGhpcyBjYXNlLCB0aGUgYm9uZCBpc/QgICB1bnJlc2VydmVkLCByZXR1cm5lZCBhbmQgb3JpZ2luIGlzIHJlbW92ZWQgYXMgYSBjYW5kaWRhdGUuWQEgLSBgb3JpZ2luYCBpcyBhIGN1cnJlbnQgcnVubmVyIHVwLiBJbiB0aGlzIGNhc2UsIHRoZSBib25kIGlzIHVucmVzZXJ2ZWQsIHJldHVybmVkIGFuZIQgICBvcmlnaW4gaXMgcmVtb3ZlZCBhcyBhIHJ1bm5lci5NASAtIGBvcmlnaW5gIGlzIGEgY3VycmVudCBtZW1iZXIuIEluIHRoaXMgY2FzZSwgdGhlIGJvbmQgaXMgdW5yZXNlcnZlZCBhbmQgb3JpZ2luIGlzWQEgICByZW1vdmVkIGFzIGEgbWVtYmVyLCBjb25zZXF1ZW50bHkgbm90IGJlaW5nIGEgY2FuZGlkYXRlIGZvciB0aGUgbmV4dCByb3VuZCBhbnltb3JlLmUBICAgU2ltaWxhciB0byBbYHJlbW92ZV92b3RlcmBdLCBpZiByZXBsYWNlbWVudCBydW5uZXJzIGV4aXN0cywgdGhleSBhcmUgaW1tZWRpYXRlbHkgdXNlZC40cmVtb3ZlX21lbWJlcgQMd2hvHEFkZHJlc3M0XQEgUmVtb3ZlIGEgcGFydGljdWxhciBtZW1iZXIgZnJvbSB0aGUgc2V0LiBUaGlzIGlzIGVmZmVjdGl2ZSBpbW1lZGlhdGVseSBhbmQgdGhlIGJvbmQgb2aAIHRoZSBvdXRnb2luZyBtZW1iZXIgaXMgc2xhc2hlZC4AWQEgSWYgYSBydW5uZXItdXAgaXMgYXZhaWxhYmxlLCB0aGVuIHRoZSBiZXN0IHJ1bm5lci11cCB3aWxsIGJlIHJlbW92ZWQgYW5kIHJlcGxhY2VzIHRoZfQgb3V0Z29pbmcgbWVtYmVyLiBPdGhlcndpc2UsIGEgbmV3IHBocmFnbWVuIHJvdW5kIGlzIHN0YXJ0ZWQuAEUBIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZGVzaWduYXRlZCBibG9jayBudW1iZXIgb2YgdGhlIG5leHQgZWxlY3Rpb24uACwgIyA8d2VpZ2h0PiwgIyMjIyBTdGF0ZVggUmVhZHM6IE8oZG9fcGhyYWdtZW4pXCBXcml0ZXM6IE8oZG9fcGhyYWdtZW4pMCAjIDwvd2VpZ2h0PgAAAExUZWNobmljYWxNZW1iZXJzaGlwAAEUKGFkZF9tZW1iZXIEDHdobyRBY2NvdW50SWQMfCBBZGQgYSBtZW1iZXIgYHdob2AgdG8gdGhlIHNldC4AtCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgQWRkT3JpZ2luYCBvciByb290LjRyZW1vdmVfbWVtYmVyBAx3aG8kQWNjb3VudElkDJAgUmVtb3ZlIGEgbWVtYmVyIGB3aG9gIGZyb20gdGhlIHNldC4AwCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgUmVtb3ZlT3JpZ2luYCBvciByb290Lixzd2FwX21lbWJlcggYcmVtb3ZlJEFjY291bnRJZAxhZGQkQWNjb3VudElkDMAgU3dhcCBvdXQgb25lIG1lbWJlciBgcmVtb3ZlYCBmb3IgYW5vdGhlciBgYWRkYC4AuCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgU3dhcE9yaWdpbmAgb3Igcm9vdC40cmVzZXRfbWVtYmVycwQcbWVtYmVyczhWZWM8QWNjb3VudElkPhBZASBDaGFuZ2UgdGhlIG1lbWJlcnNoaXAgdG8gYSBuZXcgc2V0LCBkaXNyZWdhcmRpbmcgdGhlIGV4aXN0aW5nIG1lbWJlcnNoaXAuIEJlIG5pY2UgYW5kbCBwYXNzIGBtZW1iZXJzYCBwcmUtc29ydGVkLgC8IE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBSZXNldE9yaWdpbmAgb3Igcm9vdC4oY2hhbmdlX2tleQQMbmV3JEFjY291bnRJZAzYIFN3YXAgb3V0IHRoZSBzZW5kaW5nIG1lbWJlciBmb3Igc29tZSBvdGhlciBrZXkgYG5ld2AuAPQgTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFNpZ25lZGAgb3JpZ2luIG9mIGEgY3VycmVudCBtZW1iZXIuAAAAIFRyZWFzdXJ5AAEMNHByb3Bvc2Vfc3BlbmQIFHZhbHVlSENvbXBhY3Q8QmFsYW5jZU9mPixiZW5lZmljaWFyeRxBZGRyZXNzJC0BIFB1dCBmb3J3YXJkIGEgc3VnZ2VzdGlvbiBmb3Igc3BlbmRpbmcuIEEgZGVwb3NpdCBwcm9wb3J0aW9uYWwgdG8gdGhlIHZhbHVlNQEgaXMgcmVzZXJ2ZWQgYW5kIHNsYXNoZWQgaWYgdGhlIHByb3Bvc2FsIGlzIHJlamVjdGVkLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoZVQgcHJvcG9zYWwgaXMgYXdhcmRlZC4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuZCAtIExpbWl0ZWQgc3RvcmFnZSByZWFkcy6UIC0gT25lIERCIGNoYW5nZSwgb25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD48cmVqZWN0X3Byb3Bvc2FsBCxwcm9wb3NhbF9pZFhDb21wYWN0PFByb3Bvc2FsSW5kZXg+HPwgUmVqZWN0IGEgcHJvcG9zZWQgc3BlbmQuIFRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgc2xhc2hlZC4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuZCAtIExpbWl0ZWQgc3RvcmFnZSByZWFkcy5AIC0gT25lIERCIGNsZWFyLjAgIyA8L3dlaWdodD5AYXBwcm92ZV9wcm9wb3NhbAQscHJvcG9zYWxfaWRYQ29tcGFjdDxQcm9wb3NhbEluZGV4PiBdASBBcHByb3ZlIGEgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIHByb3Bvc2FsIHdpbGwgYmUgYWxsb2NhdGVkIHRvIHRoZSBiZW5lZmljaWFyeawgYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLmQgLSBMaW1pdGVkIHN0b3JhZ2UgcmVhZHMuRCAtIE9uZSBEQiBjaGFuZ2UuMCAjIDwvd2VpZ2h0PgAAABhDbGFpbXMAAQgUY2xhaW0IEGRlc3QkQWNjb3VudElkSGV0aGVyZXVtX3NpZ25hdHVyZThFY2RzYVNpZ25hdHVyZQQ4IE1ha2UgYSBjbGFpbS4obWludF9jbGFpbQwMd2hvPEV0aGVyZXVtQWRkcmVzcxR2YWx1ZSRCYWxhbmNlT2ZAdmVzdGluZ19zY2hlZHVsZaRPcHRpb248KEJhbGFuY2VPZixCYWxhbmNlT2YsQmxvY2tOdW1iZXIpPgSIIEFkZCBhIG5ldyBjbGFpbSwgaWYgeW91IGFyZSByb290LgAAAChQYXJhY2hhaW5zAAEEJHNldF9oZWFkcwQUaGVhZHNYVmVjPEF0dGVzdGVkQ2FuZGlkYXRlPgQVASBQcm92aWRlIGNhbmRpZGF0ZSByZWNlaXB0cyBmb3IgcGFyYWNoYWlucywgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGlkLgAAADBBdHRlc3RhdGlvbnMAAQREbW9yZV9hdHRlc3RhdGlvbnMEFF9tb3JlQE1vcmVBdHRlc3RhdGlvbnMEFQEgUHJvdmlkZSBjYW5kaWRhdGUgcmVjZWlwdHMgZm9yIHBhcmFjaGFpbnMsIGluIGFzY2VuZGluZyBvcmRlciBieSBpZC4AAAAUU2xvdHMAARgsbmV3X2F1Y3Rpb24IIGR1cmF0aW9uUENvbXBhY3Q8QmxvY2tOdW1iZXI+SGxlYXNlX3BlcmlvZF9pbmRleFhDb21wYWN0PExlYXNlUGVyaW9kT2Y+FFggQ3JlYXRlIGEgbmV3IGF1Y3Rpb24uAFUBIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlcmUgaXNuJ3QgYWxyZWFkeSBhbiBhdWN0aW9uIGluIHByb2dyZXNzIGFuZCBtYXkgb25seSBiZSkBIGNhbGxlZCBieSB0aGUgcm9vdCBvcmlnaW4uIEFjY2VwdHMgdGhlIGBkdXJhdGlvbmAgb2YgdGhpcyBhdWN0aW9uIGFuZCB0aGVdASBgbGVhc2VfcGVyaW9kX2luZGV4YCBvZiB0aGUgaW5pdGlhbCBsZWFzZSBwZXJpb2Qgb2YgdGhlIGZvdXIgdGhhdCBhcmUgdG8gYmUgYXVjdGlvbmVkLgxiaWQUDHN1YjhDb21wYWN0PFN1YklkPjRhdWN0aW9uX2luZGV4VENvbXBhY3Q8QXVjdGlvbkluZGV4PihmaXJzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4kbGFzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4YYW1vdW50SENvbXBhY3Q8QmFsYW5jZU9mPkBNASBNYWtlIGEgbmV3IGJpZCBmcm9tIGFuIGFjY291bnQgKGluY2x1ZGluZyBhIHBhcmFjaGFpbiBhY2NvdW50KSBmb3IgZGVwbG95aW5nIGEgbmV3LCBwYXJhY2hhaW4uAF0BIE11bHRpcGxlIHNpbXVsdGFuZW91cyBiaWRzIGZyb20gdGhlIHNhbWUgYmlkZGVyIGFyZSBhbGxvd2VkIG9ubHkgYXMgbG9uZyBhcyBhbGwgYWN0aXZlQQEgYmlkcyBvdmVybGFwIGVhY2ggb3RoZXIgKGkuZS4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSkuIEJpZHMgY2Fubm90IGJlIHJlZGFjdGVkLgBZASAtIGBzdWJgIGlzIHRoZSBzdWItYmlkZGVyIElELCBhbGxvd2luZyBmb3IgbXVsdGlwbGUgY29tcGV0aW5nIGJpZHMgdG8gYmUgbWFkZSBieSAoYW5kdCBmdW5kZWQgYnkpIHRoZSBzYW1lIGFjY291bnQuUQEgLSBgYXVjdGlvbl9pbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBhdWN0aW9uIHRvIGJpZCBvbi4gU2hvdWxkIGp1c3QgYmUgdGhlIHByZXNlbnRsIHZhbHVlIG9mIGBBdWN0aW9uQ291bnRlcmAuTQEgLSBgZmlyc3Rfc2xvdGAgaXMgdGhlIGZpcnN0IGxlYXNlIHBlcmlvZCBpbmRleCBvZiB0aGUgcmFuZ2UgdG8gYmlkIG9uLiBUaGlzIGlzIHRoZQ0BIGFic29sdXRlIGxlYXNlIHBlcmlvZCBpbmRleCB2YWx1ZSwgbm90IGFuIGF1Y3Rpb24tc3BlY2lmaWMgb2Zmc2V0LkUBIC0gYGxhc3Rfc2xvdGAgaXMgdGhlIGxhc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlDQEgYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuTQEgLSBgYW1vdW50YCBpcyB0aGUgYW1vdW50IHRvIGJpZCB0byBiZSBoZWxkIGFzIGRlcG9zaXQgZm9yIHRoZSBwYXJhY2hhaW4gc2hvdWxkIHRoZcwgYmlkIHdpbi4gVGhpcyBhbW91bnQgaXMgaGVsZCB0aHJvdWdob3V0IHRoZSByYW5nZS4kYmlkX3JlbmV3EDRhdWN0aW9uX2luZGV4VENvbXBhY3Q8QXVjdGlvbkluZGV4PihmaXJzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4kbGFzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4YYW1vdW50SENvbXBhY3Q8QmFsYW5jZU9mPjxRASBNYWtlIGEgbmV3IGJpZCBmcm9tIGEgcGFyYWNoYWluIGFjY291bnQgZm9yIHJlbmV3aW5nIHRoYXQgKHByZS1leGlzdGluZykgcGFyYWNoYWluLgCoIFRoZSBvcmlnaW4gKm11c3QqIGJlIGEgcGFyYWNoYWluIGFjY291bnQuAF0BIE11bHRpcGxlIHNpbXVsdGFuZW91cyBiaWRzIGZyb20gdGhlIHNhbWUgYmlkZGVyIGFyZSBhbGxvd2VkIG9ubHkgYXMgbG9uZyBhcyBhbGwgYWN0aXZlQQEgYmlkcyBvdmVybGFwIGVhY2ggb3RoZXIgKGkuZS4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSkuIEJpZHMgY2Fubm90IGJlIHJlZGFjdGVkLgBRASAtIGBhdWN0aW9uX2luZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIGF1Y3Rpb24gdG8gYmlkIG9uLiBTaG91bGQganVzdCBiZSB0aGUgcHJlc2VudGwgdmFsdWUgb2YgYEF1Y3Rpb25Db3VudGVyYC5NASAtIGBmaXJzdF9zbG90YCBpcyB0aGUgZmlyc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlDQEgYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuRQEgLSBgbGFzdF9zbG90YCBpcyB0aGUgbGFzdCBsZWFzZSBwZXJpb2QgaW5kZXggb2YgdGhlIHJhbmdlIHRvIGJpZCBvbi4gVGhpcyBpcyB0aGUNASBhYnNvbHV0ZSBsZWFzZSBwZXJpb2QgaW5kZXggdmFsdWUsIG5vdCBhbiBhdWN0aW9uLXNwZWNpZmljIG9mZnNldC5NASAtIGBhbW91bnRgIGlzIHRoZSBhbW91bnQgdG8gYmlkIHRvIGJlIGhlbGQgYXMgZGVwb3NpdCBmb3IgdGhlIHBhcmFjaGFpbiBzaG91bGQgdGhlzCBiaWQgd2luLiBUaGlzIGFtb3VudCBpcyBoZWxkIHRocm91Z2hvdXQgdGhlIHJhbmdlLjxzZXRfb2ZmYm9hcmRpbmcEEGRlc3QcQWRkcmVzcxTIIFNldCB0aGUgb2ZmLWJvYXJkaW5nIGluZm9ybWF0aW9uIGZvciBhIHBhcmFjaGFpbi4AqCBUaGUgb3JpZ2luICptdXN0KiBiZSBhIHBhcmFjaGFpbiBhY2NvdW50LgAhASAtIGBkZXN0YCBpcyB0aGUgZGVzdGluYXRpb24gYWNjb3VudCB0byByZWNlaXZlIHRoZSBwYXJhY2hhaW4ncyBkZXBvc2l0LjxmaXhfZGVwbG95X2RhdGEQDHN1YjhDb21wYWN0PFN1YklkPhxwYXJhX2lkPENvbXBhY3Q8UGFyYUlkPiRjb2RlX2hhc2gQSGFzaERpbml0aWFsX2hlYWRfZGF0YRRCeXRlcxwtASBTZXQgdGhlIGRlcGxveSBpbmZvcm1hdGlvbiBmb3IgYSBzdWNjZXNzZnVsIGJpZCB0byBkZXBsb3kgYSBuZXcgcGFyYWNoYWluLgDIIC0gYG9yaWdpbmAgbXVzdCBiZSB0aGUgc3VjY2Vzc2Z1bCBiaWRkZXIgYWNjb3VudC6wIC0gYHN1YmAgaXMgdGhlIHN1Yi1iaWRkZXIgSUQgb2YgdGhlIGJpZGRlci4BASAtIGBwYXJhX2lkYCBpcyB0aGUgcGFyYWNoYWluIElEIGFsbG90dGVkIHRvIHRoZSB3aW5uaW5nIGJpZGRlci4dASAtIGBjb2RlX2hhc2hgIGlzIHRoZSBoYXNoIG9mIHRoZSBwYXJhY2hhaW4ncyBXYXNtIHZhbGlkYXRpb24gZnVuY3Rpb24u8CAtIGBpbml0aWFsX2hlYWRfZGF0YWAgaXMgdGhlIHBhcmFjaGFpbidzIGluaXRpYWwgaGVhZCBkYXRhLlRlbGFib3JhdGVfZGVwbG95X2RhdGEIHHBhcmFfaWQ8Q29tcGFjdDxQYXJhSWQ+EGNvZGUUQnl0ZXMwdCBOb3RlIGEgbmV3IHBhcmFjaGFpbidzIGNvZGUuAE0BIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYGZpeF9kZXBsb3lfZGF0YWAgYW5kIGBjb2RlYCBtdXN0IGJlIHRoZSBwcmVpbWFnZSBvZiB0aGXEIGBjb2RlX2hhc2hgIHBhc3NlZCB0aGVyZSBmb3IgdGhlIHNhbWUgYHBhcmFfaWRgLgBhASBUaGlzIG1heSBiZSBjYWxsZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFjaGFpbidzIGZpcnN0IGxlYXNlIHBlcmlvZC5FASBJZiBjYWxsZWQgYmVmb3JlIHRoZW4gdGhlIHBhcmFjaGFpbiB3aWxsIGJlY29tZSBhY3RpdmUgYXQgdGhlIGZpcnN0IGJsb2NrIG9mIGl0c2UBIHN0YXJ0aW5nIGxlYXNlIHBlcmlvZC4gSWYgYWZ0ZXIsIHRoZW4gaXQgd2lsbCBiZWNvbWUgYWN0aXZlIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgY2FsbC4AbCAtIGBfb3JpZ2luYCBpcyBpcnJlbGV2YW50LvwgLSBgcGFyYV9pZGAgaXMgdGhlIHBhcmFjaGFpbiBJRCB3aG9zZSBjb2RlIHdpbGwgYmUgZWxhYm9yYXRlZC4VASAtIGBjb2RlYCBpcyB0aGUgcHJlaW1hZ2Ugb2YgdGhlIHJlZ2lzdGVyZWQgYGNvZGVfaGFzaGAgb2YgYHBhcmFfaWRgLgAAACRSZWdpc3RyYXIAARw0cmVnaXN0ZXJfcGFyYRAIaWQ8Q29tcGFjdDxQYXJhSWQ+EGluZm8gUGFyYUluZm8QY29kZRRCeXRlc0Rpbml0aWFsX2hlYWRfZGF0YRRCeXRlcwiYIFJlZ2lzdGVyIGEgcGFyYWNoYWluIHdpdGggZ2l2ZW4gY29kZS6MIEZhaWxzIGlmIGdpdmVuIElEIGlzIGFscmVhZHkgdXNlZC48ZGVyZWdpc3Rlcl9wYXJhBAhpZDxDb21wYWN0PFBhcmFJZD4ElCBEZXJlZ2lzdGVyIGEgcGFyYWNoYWluIHdpdGggZ2l2ZW4gaWRAc2V0X3RocmVhZF9jb3VudAQUY291bnQMdTMyFEEBIFJlc2V0IHRoZSBudW1iZXIgb2YgcGFyYXRocmVhZHMgdGhhdCBjYW4gcGF5IHRvIGJlIHNjaGVkdWxlZCBpbiBhIHNpbmdsZSBibG9jay4AmCAtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgcGFyYXRocmVhZHMuAIQgTXVzdCBiZSBjYWxsZWQgZnJvbSBSb290IG9yaWdpbi5McmVnaXN0ZXJfcGFyYXRocmVhZAgQY29kZRRCeXRlc0Rpbml0aWFsX2hlYWRfZGF0YRRCeXRlcxCkIFJlZ2lzdGVyIGEgcGFyYXRocmVhZCBmb3IgaW1tZWRpYXRlIHVzZS4ATQEgTXVzdCBiZSBzZW50IGZyb20gYSBTaWduZWQgb3JpZ2luIHRoYXQgaXMgYWJsZSB0byBoYXZlIFBhcmF0aHJlYWREZXBvc2l0IHJlc2VydmVkLjkBIGBjb2RlYCBhbmQgYGluaXRpYWxfaGVhZF9kYXRhYCBhcmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBwYXJhdGhyZWFkJ3Mgc3RhdGUuRHNlbGVjdF9wYXJhdGhyZWFkDAxfaWQ8Q29tcGFjdDxQYXJhSWQ+JF9jb2xsYXRvcihDb2xsYXRvcklkKF9oZWFkX2hhc2gQSGFzaBQFASBQbGFjZSBhIGJpZCBmb3IgYSBwYXJhdGhyZWFkIHRvIGJlIHByb2dyZXNzZWQgaW4gdGhlIG5leHQgYmxvY2suAEEBIFRoaXMgaXMgYSBraW5kIG9mIHNwZWNpYWwgdHJhbnNhY3Rpb24gdGhhdCBzaG91bGQgYnkgaGVhdmlseSBwcmlvcml0aXplZCBpbiB0aGVdASB0cmFuc2FjdGlvbiBwb29sIGFjY29yZGluZyB0byB0aGUgYHZhbHVlYDsgb25seSBgVGhyZWFkQ291bnRgIG9mIHRoZW0gbWF5IGJlIHByZXNlbnRlZFQgaW4gYW55IHNpbmdsZSBibG9jay5UZGVyZWdpc3Rlcl9wYXJhdGhyZWFkABzIIERlcmVnaXN0ZXIgYSBwYXJhdGhyZWFkIGFuZCByZXRyaWV2ZSB0aGUgZGVwb3NpdC4AIQEgTXVzdCBiZSBzZW50IGZyb20gYSBgUGFyYWNoYWluYCBvcmlnaW4gd2hpY2ggaXMgY3VycmVudGx5IGEgcGFyYXRocmVhZC4AWQEgRW5zdXJlIHRoYXQgYmVmb3JlIGNhbGxpbmcgdGhpcyB0aGF0IGFueSBmdW5kcyB5b3Ugd2FudCBlbXB0aWVkIGZyb20gdGhlIHBhcmF0aHJlYWQnc0UBIGFjY291bnQgaXMgbW92ZWQgb3V0OyBhZnRlciB0aGlzIGl0IHdpbGwgYmUgaW1wb3NzaWJsZSB0byByZXRyaWV2ZSB0aGVtICh3aXRob3V0aCBnb3Zlcm5hbmNlIGludGVydmVudGlvbikuEHN3YXAEFG90aGVyPENvbXBhY3Q8UGFyYUlkPiBlASBTd2FwIGEgcGFyYWNoYWluIHdpdGggYW5vdGhlciBwYXJhY2hhaW4gb3IgcGFyYXRocmVhZC4gVGhlIG9yaWdpbiBtdXN0IGJlIGEgYFBhcmFjaGFpbmAuZQEgVGhlIHN3YXAgd2lsbCBoYXBwZW4gb25seSBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIG9wcG9zaXRlIHN3YXAgcGVuZGluZy4gSWYgdGhlcmUgaXMgbm90LF0BIHRoZSBzd2FwIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBwZW5kaW5nIHN3YXBzIG1hcCwgcmVhZHkgZm9yIGEgbGF0ZXIgY29uZmlybWF0b3J5IHN3YXAuAGEBIFRoZSBgUGFyYUlkYHMgcmVtYWluIG1hcHBlZCB0byB0aGUgc2FtZSBoZWFkIGRhdGEgYW5kIGNvZGUgc28gZXh0ZXJuYWwgY29kZSBjYW4gcmVseSBvbkEBIGBQYXJhSWRgIHRvIGJlIGEgbG9uZy10ZXJtIGlkZW50aWZpZXIgb2YgYSBub3Rpb25hbCAicGFyYWNoYWluIi4gSG93ZXZlciwgdGhlaXJZASBzY2hlZHVsaW5nIGluZm8gKGkuZS4gd2hldGhlciB0aGV5J3JlIGEgcGFyYXRocmVhZCBvciBwYXJhY2hhaW4pLCBhdWN0aW9uIGluZm9ybWF0aW9umCBhbmQgdGhlIGF1Y3Rpb24gZGVwb3NpdCBhcmUgc3dpdGNoZWQuAAAAFE5pY2tzAAEQIHNldF9uYW1lBBBuYW1lFEJ5dGVzQF0BIFNldCBhbiBhY2NvdW50J3MgbmFtZS4gVGhlIG5hbWUgc2hvdWxkIGJlIGEgVVRGLTgtZW5jb2RlZCBzdHJpbmcgYnkgY29udmVudGlvbiwgdGhvdWdoTCB3ZSBkb24ndCBjaGVjayBpdC4AYQEgVGhlIG5hbWUgbWF5IG5vdCBiZSBtb3JlIHRoYW4gYFQ6Ok1heExlbmd0aGAgYnl0ZXMsIG5vciBsZXNzIHRoYW4gYFQ6Ok1pbkxlbmd0aGAgYnl0ZXMuAF0BIElmIHRoZSBhY2NvdW50IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGEgbmFtZSwgdGhlbiBhIGZlZSBvZiBgUmVzZXJ2YXRpb25GZWVgIGlzIHJlc2VydmVkQCBpbiB0aGUgYWNjb3VudC4A0CBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuhCAtIEF0IG1vc3Qgb25lIGJhbGFuY2Ugb3BlcmF0aW9uLmggLSBPbmUgc3RvcmFnZSByZWFkL3dyaXRlLjQgLSBPbmUgZXZlbnQuMCAjIDwvd2VpZ2h0PihjbGVhcl9uYW1lAChRASBDbGVhciBhbiBhY2NvdW50J3MgbmFtZSBhbmQgcmV0dXJuIHRoZSBkZXBvc2l0LiBGYWlscyBpZiB0aGUgYWNjb3VudCB3YXMgbm90IG5hbWVkLgDQIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsICMgPHdlaWdodD4gIC0gTygxKS5kIC0gT25lIGJhbGFuY2Ugb3BlcmF0aW9uLmggLSBPbmUgc3RvcmFnZSByZWFkL3dyaXRlLjQgLSBPbmUgZXZlbnQuMCAjIDwvd2VpZ2h0PiRraWxsX25hbWUEGHRhcmdldBxBZGRyZXNzNOQgUmVtb3ZlIGFuIGFjY291bnQncyBuYW1lIGFuZCB0YWtlIGNoYXJnZSBvZiB0aGUgZGVwb3NpdC4ASQEgRmFpbHMgaWYgYHdob2AgaGFzIG5vdCBiZWVuIG5hbWVkLiBUaGUgZGVwb3NpdCBpcyBkZWFsdCB3aXRoIHRocm91Z2ggYFQ6OlNsYXNoZWRgTCBpbWJhbGFuY2UgaGFuZGxlci4AMQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfIG9yIG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLtwgLSBPbmUgdW5iYWxhbmNlZCBoYW5kbGVyIChwcm9iYWJseSBhIGJhbGFuY2UgdHJhbnNmZXIpaCAtIE9uZSBzdG9yYWdlIHJlYWQvd3JpdGUuNCAtIE9uZSBldmVudC4wICMgPC93ZWlnaHQ+KGZvcmNlX25hbWUIGHRhcmdldBxBZGRyZXNzEG5hbWUUQnl0ZXMwyCBTZXQgYSB0aGlyZC1wYXJ0eSBhY2NvdW50J3MgbmFtZSB3aXRoIG5vIGRlcG9zaXQuAKAgTm8gbGVuZ3RoIGNoZWNraW5nIGlzIGRvbmUgb24gdGhlIG5hbWUuADEBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290XyBvciBtYXRjaCBgVDo6Rm9yY2VPcmlnaW5gLgAsICMgPHdlaWdodD4gIC0gTygxKS6EIC0gQXQgbW9zdCBvbmUgYmFsYW5jZSBvcGVyYXRpb24uaCAtIE9uZSBzdG9yYWdlIHJlYWQvd3JpdGUuNCAtIE9uZSBldmVudC4wICMgPC93ZWlnaHQ+AAAAbWV0YQlsGFN5c3RlbQABHChmaWxsX2Jsb2NrAAQhASBBIGJpZyBkaXNwYXRjaCB0aGF0IHdpbGwgZGlzYWxsb3cgYW55IG90aGVyIHRyYW5zYWN0aW9uIHRvIGJlIGluY2x1ZGVkLhhyZW1hcmsEHF9yZW1hcmsUQnl0ZXMEbCBNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrLjhzZXRfaGVhcF9wYWdlcwQUcGFnZXMMdTY0BPwgU2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEDG5ldxRCeXRlcwRIIFNldCB0aGUgbmV3IGNvZGUuLHNldF9zdG9yYWdlBBRpdGVtczRWZWM8S2V5VmFsdWU+BGwgU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBBBrZXlzIFZlYzxLZXk+BHggS2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgEGHByZWZpeAxLZXkEFQEgS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AAABgUmFuZG9tbmVzc0NvbGxlY3RpdmVGbGlwAAAAAAAQQmFiZQABAAAAACRUaW1lc3RhbXAAAQQMc2V0BAxub3c8Q29tcGFjdDxNb21lbnQ+JFggU2V0IHRoZSBjdXJyZW50IHRpbWUuAFkBIFRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27YIHBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEUBIFRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5RCBgTWluaW11bVBlcmlvZGAuANggVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YC4AAAAcSW5kaWNlcwABAAAAACBCYWxhbmNlcwABECB0cmFuc2ZlcggQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT5k2CBUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgAJASBgdHJhbnNmZXJgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLiEBIEl0IHdpbGwgZGVjcmVhc2UgdGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBzeXN0ZW0gYnkgdGhlIGBUcmFuc2ZlckZlZWAuFQEgSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHS0IG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABkBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLgAsICMgPHdlaWdodD4xASAtIERlcGVuZGVudCBvbiBhcmd1bWVudHMgYnV0IG5vdCBjcml0aWNhbCwgZ2l2ZW4gcHJvcGVyIGltcGxlbWVudGF0aW9ucyBmb3LMICAgaW5wdXQgY29uZmlnIHR5cGVzLiBTZWUgcmVsYXRlZCBmdW5jdGlvbnMgYmVsb3cuaQEgLSBJdCBjb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzIGFuZCB3cml0ZXMgaW50ZXJuYWxseSBhbmQgbm8gY29tcGxleCBjb21wdXRhdGlvbi4ATCBSZWxhdGVkIGZ1bmN0aW9uczoAUQEgICAtIGBlbnN1cmVfY2FuX3dpdGhkcmF3YCBpcyBhbHdheXMgY2FsbGVkIGludGVybmFsbHkgYnV0IGhhcyBhIGJvdW5kZWQgY29tcGxleGl0eS4tASAgIC0gVHJhbnNmZXJyaW5nIGJhbGFuY2VzIHRvIGFjY291bnRzIHRoYXQgZGlkIG5vdCBleGlzdCBiZWZvcmUgd2lsbCBjYXVzZdQgICAgICBgVDo6T25OZXdBY2NvdW50Ojpvbl9uZXdfYWNjb3VudGAgdG8gYmUgY2FsbGVkLtwgICAtIFJlbW92aW5nIGVub3VnaCBmdW5kcyBmcm9tIGFuIGFjY291bnQgd2lsbCB0cmlnZ2VyWQEgICAgIGBUOjpEdXN0UmVtb3ZhbDo6b25fdW5iYWxhbmNlZGAgYW5kIGBUOjpPbkZyZWVCYWxhbmNlWmVybzo6b25fZnJlZV9iYWxhbmNlX3plcm9gLkkBICAgLSBgdHJhbnNmZXJfa2VlcF9hbGl2ZWAgd29ya3MgdGhlIHNhbWUgd2F5IGFzIGB0cmFuc2ZlcmAsIGJ1dCBoYXMgYW4gYWRkaXRpb25hbPggICAgIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90IGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgAwICMgPC93ZWlnaHQ+LHNldF9iYWxhbmNlDAx3aG8cQWRkcmVzcyBuZXdfZnJlZUBDb21wYWN0PEJhbGFuY2U+MG5ld19yZXNlcnZlZEBDb21wYWN0PEJhbGFuY2U+NJQgU2V0IHRoZSBiYWxhbmNlcyBvZiBhIGdpdmVuIGFjY291bnQuACEBIFRoaXMgd2lsbCBhbHRlciBgRnJlZUJhbGFuY2VgIGFuZCBgUmVzZXJ2ZWRCYWxhbmNlYCBpbiBzdG9yYWdlLiBpdCB3aWxsCQEgYWxzbyBkZWNyZWFzZSB0aGUgdG90YWwgaXNzdWFuY2Ugb2YgdGhlIHN5c3RlbSAoYFRvdGFsSXNzdWFuY2VgKS4ZASBJZiB0aGUgbmV3IGZyZWUgb3IgcmVzZXJ2ZWQgYmFsYW5jZSBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCzoIGl0IHdpbGwgcmVzZXQgdGhlIGFjY291bnQgbm9uY2UgKGBzeXN0ZW06OkFjY291bnROb25jZWApLgC0IFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAuACwgIyA8d2VpZ2h0PoAgLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLsQgLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzIGFuZCB3cml0ZXMuMCAjIDwvd2VpZ2h0Pjhmb3JjZV90cmFuc2ZlcgwYc291cmNlHEFkZHJlc3MQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT4IUQEgRXhhY3RseSBhcyBgdHJhbnNmZXJgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudCBtYXkgYmUsIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgQZGVzdBxBZGRyZXNzFHZhbHVlQENvbXBhY3Q8QmFsYW5jZT4YUQEgU2FtZSBhcyB0aGUgW2B0cmFuc2ZlcmBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Qga2lsbCB0aGVAIG9yaWdpbiBhY2NvdW50LgC8IDk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyYF0gaW5zdGVhZC4AxCBbYHRyYW5zZmVyYF06IHN0cnVjdC5Nb2R1bGUuaHRtbCNtZXRob2QudHJhbnNmZXIAAABIVHJhbnNhY3Rpb25QYXltZW50AAAAAAAoQXV0aG9yc2hpcAABBChzZXRfdW5jbGVzBChuZXdfdW5jbGVzLFZlYzxIZWFkZXI+BGQgUHJvdmlkZSBhIHNldCBvZiB1bmNsZXMuAAAAHFN0YWtpbmcAAUAQYm9uZAwoY29udHJvbGxlchxBZGRyZXNzFHZhbHVlSENvbXBhY3Q8QmFsYW5jZU9mPhRwYXllZURSZXdhcmREZXN0aW5hdGlvbjxlASBUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxshCBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAxASBgdmFsdWVgIG11c3QgYmUgbW9yZSB0aGFuIHRoZSBgbWluaW11bV9iYWxhbmNlYCBzcGVjaWZpZWQgYnkgYFQ6OkN1cnJlbmN5YC4AJQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuACwgIyA8d2VpZ2h0PtQgLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBNb2RlcmF0ZSBjb21wbGV4aXR5LiAgLSBPKDEpLmggLSBUaHJlZSBleHRyYSBEQiBlbnRyaWVzLgBtASBOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZCB1bmxlc3MlASB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4wICMgPC93ZWlnaHQ+KGJvbmRfZXh0cmEEOG1heF9hZGRpdGlvbmFsSENvbXBhY3Q8QmFsYW5jZU9mPjhlASBBZGQgc29tZSBleHRyYSBhbW91bnQgdGhhdCBoYXZlIGFwcGVhcmVkIGluIHRoZSBzdGFzaCBgZnJlZV9iYWxhbmNlYCBpbnRvIHRoZSBiYWxhbmNlIHVwNCBmb3Igc3Rha2luZy4AUQEgVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5lASBVbmxpa2UgW2Bib25kYF0gb3IgW2B1bmJvbmRgXSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZSBhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50TCB0aGF0IGNhbiBiZSBhZGRlZC4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuACwgIyA8d2VpZ2h0PuggLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkuICAtIE8oMSkuQCAtIE9uZSBEQiBlbnRyeS4wICMgPC93ZWlnaHQ+GHVuYm9uZAQUdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+XFUBIFNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZAEBIHBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiUBIFQ6OkN1cnJlbmN5OjptaW5pbXVtX2JhbGFuY2UoKSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBJASBPbmNlIHRoZSB1bmxvY2sgcGVyaW9kIGlzIGRvbmUsIHlvdSBjYW4gY2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIHRvIGFjdHVhbGx5IG1vdmXAIHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuAD0BIE5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTUFYX1VOTE9DS0lOR19DSFVOS1NgKT0BIGNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSW4gdGhhdCBjYXNlLCBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gbmVlZPwgdG8gYmUgY2FsbGVkIGZpcnN0IHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAJggU2VlIGFsc28gW2BDYWxsOjp3aXRoZHJhd191bmJvbmRlZGBdLgAsICMgPHdlaWdodD5BASAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIExpbWl0ZWQgYnV0IHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGNvbXBsZXhpdHkumCAtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuZQEgLSBFYWNoIGNhbGwgKHJlcXVpcmVzIHRoZSByZW1haW5kZXIgb2YgdGhlIGJvbmRlZCBiYWxhbmNlIHRvIGJlIGFib3ZlIGBtaW5pbXVtX2JhbGFuY2VgKXEBICAgd2lsbCBjYXVzZSBhIG5ldyBlbnRyeSB0byBiZSBpbnNlcnRlZCBpbnRvIGEgdmVjdG9yIChgTGVkZ2VyLnVubG9ja2luZ2ApIGtlcHQgaW4gc3RvcmFnZS6lASAgIFRoZSBvbmx5IHdheSB0byBjbGVhbiB0aGUgYWZvcmVtZW50aW9uZWQgc3RvcmFnZSBpdGVtIGlzIGFsc28gdXNlci1jb250cm9sbGVkIHZpYSBgd2l0aGRyYXdfdW5ib25kZWRgLkAgLSBPbmUgREIgZW50cnkuKCA8L3dlaWdodD5Ed2l0aGRyYXdfdW5ib25kZWQAQC0BIFJlbW92ZSBhbnkgdW5sb2NrZWQgY2h1bmtzIGZyb20gdGhlIGB1bmxvY2tpbmdgIHF1ZXVlIGZyb20gb3VyIG1hbmFnZW1lbnQuADUBIFRoaXMgZXNzZW50aWFsbHkgZnJlZXMgdXAgdGhhdCBiYWxhbmNlIHRvIGJlIHVzZWQgYnkgdGhlIHN0YXNoIGFjY291bnQgdG8gZG9MIHdoYXRldmVyIGl0IHdhbnRzLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4AbCBTZWUgYWxzbyBbYENhbGw6OnVuYm9uZGBdLgAsICMgPHdlaWdodD5VASAtIENvdWxkIGJlIGRlcGVuZGVudCBvbiB0aGUgYG9yaWdpbmAgYXJndW1lbnQgYW5kIGhvdyBtdWNoIGB1bmxvY2tpbmdgIGNodW5rcyBleGlzdC5FASAgSXQgaW1wbGllcyBgY29uc29saWRhdGVfdW5sb2NrZWRgIHdoaWNoIGxvb3BzIG92ZXIgYExlZGdlci51bmxvY2tpbmdgLCB3aGljaCBpc/QgIGluZGlyZWN0bHkgdXNlci1jb250cm9sbGVkLiBTZWUgW2B1bmJvbmRgXSBmb3IgbW9yZSBkZXRhaWwueQEgLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLCB5ZXQgdGhlIHNpemUgb2Ygd2hpY2ggY291bGQgYmUgbGFyZ2UgYmFzZWQgb24gYGxlZGdlcmAuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiB2YWxpZGF0ZQQUcHJlZnM4VmFsaWRhdG9yUHJlZnMs6CBEZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A3CBFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AVQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guACwgIyA8d2VpZ2h0PuggLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkumCAtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiBub21pbmF0ZQQcdGFyZ2V0czBWZWM8QWRkcmVzcz4sEQEgRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDcIEVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ALCAjIDx3ZWlnaHQ+JQEgLSBUaGUgdHJhbnNhY3Rpb24ncyBjb21wbGV4aXR5IGlzIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiBgdGFyZ2V0c2AsmCB3aGljaCBpcyBjYXBwZWQgYXQgYE1BWF9OT01JTkFUSU9OU2Au2CAtIEJvdGggdGhlIHJlYWRzIGFuZCB3cml0ZXMgZm9sbG93IGEgc2ltaWxhciBwYXR0ZXJuLjAgIyA8L3dlaWdodD4UY2hpbGwALMggRGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDcIEVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBVASBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ALCAjIDx3ZWlnaHQ+6CAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5UIC0gQ29udGFpbnMgb25lIHJlYWQuyCAtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuMCAjIDwvd2VpZ2h0PiRzZXRfcGF5ZWUEFHBheWVlRFJld2FyZERlc3RpbmF0aW9uLLggKFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuANwgRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFUBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgAsICMgPHdlaWdodD7oIC0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpggLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsggLSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LjAgIyA8L3dlaWdodD44c2V0X2NvbnRyb2xsZXIEKGNvbnRyb2xsZXIcQWRkcmVzcyyQIChSZS0pc2V0IHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2guANwgRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFUBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLgAsICMgPHdlaWdodD7oIC0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpggLSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsggLSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LjAgIyA8L3dlaWdodD5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQMbmV3MENvbXBhY3Q8dTMyPgSAIFRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy40Zm9yY2Vfbm9fZXJhcwAUsCBGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuACwgIyA8d2VpZ2h0PkAgLSBObyBhcmd1bWVudHMuMCAjIDwvd2VpZ2h0PjRmb3JjZV9uZXdfZXJhABhNASBGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJloCByZXNldCB0byBub3JtYWwgKG5vbi1mb3JjZWQpIGJlaGF2aW91ci4ALCAjIDx3ZWlnaHQ+QCAtIE5vIGFyZ3VtZW50cy4wICMgPC93ZWlnaHQ+RHNldF9pbnZ1bG5lcmFibGVzBCh2YWxpZGF0b3JzOFZlYzxBY2NvdW50SWQ+BMwgU2V0IHRoZSB2YWxpZGF0b3JzIHdobyBjYW5ub3QgYmUgc2xhc2hlZCAoaWYgYW55KS40Zm9yY2VfdW5zdGFrZQQUc3Rhc2gkQWNjb3VudElkBA0BIEZvcmNlIGEgY3VycmVudCBzdGFrZXIgdG8gYmVjb21lIGNvbXBsZXRlbHkgdW5zdGFrZWQsIGltbWVkaWF0ZWx5LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAUBQEgRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgAsICMgPHdlaWdodD5QIC0gT25lIHN0b3JhZ2Ugd3JpdGUwICMgPC93ZWlnaHQ+VGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgMZXJhIEVyYUluZGV4NHNsYXNoX2luZGljZXMgVmVjPHUzMj4cRQEgQ2FuY2VsIGVuYWN0bWVudCBvZiBhIGRlZmVycmVkIHNsYXNoLiBDYW4gYmUgY2FsbGVkIGJ5IGVpdGhlciB0aGUgcm9vdCBvcmlnaW4gb3JwIHRoZSBgVDo6U2xhc2hDYW5jZWxPcmlnaW5gLgUBIHBhc3NpbmcgdGhlIGVyYSBhbmQgaW5kaWNlcyBvZiB0aGUgc2xhc2hlcyBmb3IgdGhhdCBlcmEgdG8ga2lsbC4ALCAjIDx3ZWlnaHQ+VCAtIE9uZSBzdG9yYWdlIHdyaXRlLjAgIyA8L3dlaWdodD4AAAAgT2ZmZW5jZXMAAQAAAAAcU2Vzc2lvbgABBCBzZXRfa2V5cwgQa2V5cxBLZXlzFHByb29mFEJ5dGVzKOQgU2V0cyB0aGUgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlciB0byBga2V5YC4hASBBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsQgVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uANQgVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgc2lnbmVkLgAsICMgPHdlaWdodD6IIC0gTyhsb2cgbikgaW4gbnVtYmVyIG9mIGFjY291bnRzLlggLSBPbmUgZXh0cmEgREIgZW50cnkuMCAjIDwvd2VpZ2h0PgAAADxGaW5hbGl0eVRyYWNrZXIAAQQoZmluYWxfaGludAQQaGludFBDb21wYWN0PEJsb2NrTnVtYmVyPgj0IEhpbnQgdGhhdCB0aGUgYXV0aG9yIG9mIHRoaXMgYmxvY2sgdGhpbmtzIHRoZSBiZXN0IGZpbmFsaXplZGwgYmxvY2sgaXMgdGhlIGdpdmVuIG51bWJlci4AAAAcR3JhbmRwYQABBEhyZXBvcnRfbWlzYmVoYXZpb3IEHF9yZXBvcnQUQnl0ZXMEZCBSZXBvcnQgc29tZSBtaXNiZWhhdmlvci4AAAAgSW1PbmxpbmUAAQQkaGVhcnRiZWF0CCRoZWFydGJlYXQkSGVhcnRiZWF0KF9zaWduYXR1cmUkU2lnbmF0dXJlAAAAAEhBdXRob3JpdHlEaXNjb3ZlcnkAAQAAAAAkRGVtb2NyYWN5AAFUHHByb3Bvc2UINHByb3Bvc2FsX2hhc2gQSGFzaBR2YWx1ZUhDb21wYWN0PEJhbGFuY2VPZj4YoCBQcm9wb3NlIGEgc2Vuc2l0aXZlIGFjdGlvbiB0byBiZSB0YWtlbi4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkugCAtIFR3byBEQiBjaGFuZ2VzLCBvbmUgREIgZW50cnkuMCAjIDwvd2VpZ2h0PhhzZWNvbmQEIHByb3Bvc2FsSENvbXBhY3Q8UHJvcEluZGV4PhigIFByb3Bvc2UgYSBzZW5zaXRpdmUgYWN0aW9uIHRvIGJlIHRha2VuLgAsICMgPHdlaWdodD4gIC0gTygxKS5AIC0gT25lIERCIGVudHJ5LjAgIyA8L3dlaWdodD4Qdm90ZQgkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PhB2b3RlEFZvdGUcNQEgVm90ZSBpbiBhIHJlZmVyZW5kdW0uIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7wgb3RoZXJ3aXNlIGl0IGlzIGEgdm90ZSB0byBrZWVwIHRoZSBzdGF0dXMgcXVvLgAsICMgPHdlaWdodD4gIC0gTygxKS58IC0gT25lIERCIGNoYW5nZSwgb25lIERCIGVudHJ5LjAgIyA8L3dlaWdodD4ocHJveHlfdm90ZQgkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PhB2b3RlEFZvdGUcUQEgVm90ZSBpbiBhIHJlZmVyZW5kdW0gb24gYmVoYWxmIG9mIGEgc3Rhc2guIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3T4IHRoZSBwcm9wb3NhbDsgIG90aGVyd2lzZSBpdCBpcyBhIHZvdGUgdG8ga2VlcCB0aGUgc3RhdHVzIHF1by4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkufCAtIE9uZSBEQiBjaGFuZ2UsIG9uZSBEQiBlbnRyeS4wICMgPC93ZWlnaHQ+QGVtZXJnZW5jeV9jYW5jZWwEJHJlZl9pbmRleDxSZWZlcmVuZHVtSW5kZXgIUQEgU2NoZWR1bGUgYW4gZW1lcmdlbmN5IGNhbmNlbGxhdGlvbiBvZiBhIHJlZmVyZW5kdW0uIENhbm5vdCBoYXBwZW4gdHdpY2UgdG8gdGhlIHNhbWUwIHJlZmVyZW5kdW0uQGV4dGVybmFsX3Byb3Bvc2UENHByb3Bvc2FsX2hhc2gQSGFzaAgxASBTY2hlZHVsZSBhIHJlZmVyZW5kdW0gdG8gYmUgdGFibGVkIG9uY2UgaXQgaXMgbGVnYWwgdG8gc2NoZWR1bGUgYW4gZXh0ZXJuYWwwIHJlZmVyZW5kdW0uZGV4dGVybmFsX3Byb3Bvc2VfbWFqb3JpdHkENHByb3Bvc2FsX2hhc2gQSGFzaBRZASBTY2hlZHVsZSBhIG1ham9yaXR5LWNhcnJpZXMgcmVmZXJlbmR1bSB0byBiZSB0YWJsZWQgbmV4dCBvbmNlIGl0IGlzIGxlZ2FsIHRvIHNjaGVkdWxlYCBhbiBleHRlcm5hbCByZWZlcmVuZHVtLgBNASBVbmxpa2UgYGV4dGVybmFsX3Byb3Bvc2VgLCBibGFja2xpc3RpbmcgaGFzIG5vIGVmZmVjdCBvbiB0aGlzIGFuZCBpdCBtYXkgcmVwbGFjZSBhnCBwcmUtc2NoZWR1bGVkIGBleHRlcm5hbF9wcm9wb3NlYCBjYWxsLmBleHRlcm5hbF9wcm9wb3NlX2RlZmF1bHQENHByb3Bvc2FsX2hhc2gQSGFzaBRJASBTY2hlZHVsZSBhIG5lZ2F0aXZlLXR1cm5vdXQtYmlhcyByZWZlcmVuZHVtIHRvIGJlIHRhYmxlZCBuZXh0IG9uY2UgaXQgaXMgbGVnYWwgdG+EIHNjaGVkdWxlIGFuIGV4dGVybmFsIHJlZmVyZW5kdW0uAE0BIFVubGlrZSBgZXh0ZXJuYWxfcHJvcG9zZWAsIGJsYWNrbGlzdGluZyBoYXMgbm8gZWZmZWN0IG9uIHRoaXMgYW5kIGl0IG1heSByZXBsYWNlIGGcIHByZS1zY2hlZHVsZWQgYGV4dGVybmFsX3Byb3Bvc2VgIGNhbGwuKGZhc3RfdHJhY2sMNHByb3Bvc2FsX2hhc2gQSGFzaDR2b3RpbmdfcGVyaW9kLEJsb2NrTnVtYmVyFGRlbGF5LEJsb2NrTnVtYmVyJFEBIFNjaGVkdWxlIHRoZSBjdXJyZW50bHkgZXh0ZXJuYWxseS1wcm9wb3NlZCBtYWpvcml0eS1jYXJyaWVzIHJlZmVyZW5kdW0gdG8gYmUgdGFibGVkZQEgaW1tZWRpYXRlbHkuIElmIHRoZXJlIGlzIG5vIGV4dGVybmFsbHktcHJvcG9zZWQgcmVmZXJlbmR1bSBjdXJyZW50bHksIG9yIGlmIHRoZXJlIGlzIG9uZewgYnV0IGl0IGlzIG5vdCBhIG1ham9yaXR5LWNhcnJpZXMgcmVmZXJlbmR1bSB0aGVuIGl0IGZhaWxzLgD4IC0gYHByb3Bvc2FsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY3VycmVudCBleHRlcm5hbCBwcm9wb3NhbC5hASAtIGB2b3RpbmdfcGVyaW9kYDogVGhlIHBlcmlvZCB0aGF0IGlzIGFsbG93ZWQgZm9yIHZvdGluZyBvbiB0aGlzIHByb3Bvc2FsLiBJbmNyZWFzZWQgdG+YICAgYEVtZXJnZW5jeVZvdGluZ1BlcmlvZGAgaWYgdG9vIGxvdy5VASAtIGBkZWxheWA6IFRoZSBudW1iZXIgb2YgYmxvY2sgYWZ0ZXIgdm90aW5nIGhhcyBlbmRlZCBpbiBhcHByb3ZhbCBhbmQgdGhpcyBzaG91bGQgYmW8ICAgZW5hY3RlZC4gVGhpcyBkb2Vzbid0IGhhdmUgYSBtaW5pbXVtIGFtb3VudC40dmV0b19leHRlcm5hbAQ0cHJvcG9zYWxfaGFzaBBIYXNoBLwgVmV0byBhbmQgYmxhY2tsaXN0IHRoZSBleHRlcm5hbCBwcm9wb3NhbCBoYXNoLkRjYW5jZWxfcmVmZXJlbmR1bQQkcmVmX2luZGV4YENvbXBhY3Q8UmVmZXJlbmR1bUluZGV4PgRUIFJlbW92ZSBhIHJlZmVyZW5kdW0uNGNhbmNlbF9xdWV1ZWQMEHdoZW5QQ29tcGFjdDxCbG9ja051bWJlcj4Ud2hpY2gwQ29tcGFjdDx1MzI+EHdoYXRgQ29tcGFjdDxSZWZlcmVuZHVtSW5kZXg+BKAgQ2FuY2VsIGEgcHJvcG9zYWwgcXVldWVkIGZvciBlbmFjdG1lbnQuJHNldF9wcm94eQQUcHJveHkkQWNjb3VudElkFJggU3BlY2lmeSBhIHByb3h5LiBDYWxsZWQgYnkgdGhlIHN0YXNoLgAsICMgPHdlaWdodD5YIC0gT25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD4wcmVzaWduX3Byb3h5ABSYIENsZWFyIHRoZSBwcm94eS4gQ2FsbGVkIGJ5IHRoZSBwcm94eS4ALCAjIDx3ZWlnaHQ+QCAtIE9uZSBEQiBjbGVhci4wICMgPC93ZWlnaHQ+MHJlbW92ZV9wcm94eQQUcHJveHkkQWNjb3VudElkFJggQ2xlYXIgdGhlIHByb3h5LiBDYWxsZWQgYnkgdGhlIHN0YXNoLgAsICMgPHdlaWdodD5AIC0gT25lIERCIGNsZWFyLjAgIyA8L3dlaWdodD4gZGVsZWdhdGUICHRvJEFjY291bnRJZChjb252aWN0aW9uKENvbnZpY3Rpb24UPCBEZWxlZ2F0ZSB2b3RlLgAsICMgPHdlaWdodD5YIC0gT25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD4odW5kZWxlZ2F0ZQAURCBVbmRlbGVnYXRlIHZvdGUuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLjAgIyA8L3dlaWdodD5YY2xlYXJfcHVibGljX3Byb3Bvc2FscwAEAQEgVmV0byBhbmQgYmxhY2tsaXN0IHRoZSBwcm9wb3NhbCBoYXNoLiBNdXN0IGJlIGZyb20gUm9vdCBvcmlnaW4uNG5vdGVfcHJlaW1hZ2UEQGVuY29kZWRfcHJvcG9zYWwUQnl0ZXMIYQEgUmVnaXN0ZXIgdGhlIHByZWltYWdlIGZvciBhbiB1cGNvbWluZyBwcm9wb3NhbC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgdGhlIHByb3Bvc2FsIHRvIGJlJQEgaW4gdGhlIGRpc3BhdGNoIHF1ZXVlIGJ1dCBkb2VzIHJlcXVpcmUgYSBkZXBvc2l0LCByZXR1cm5lZCBvbmNlIGVuYWN0ZWQuWG5vdGVfaW1taW5lbnRfcHJlaW1hZ2UMQGVuY29kZWRfcHJvcG9zYWwUQnl0ZXMQd2hlbixCbG9ja051bWJlchR3aGljaAx1MzIIRQEgUmVnaXN0ZXIgdGhlIHByZWltYWdlIGZvciBhbiB1cGNvbWluZyBwcm9wb3NhbC4gVGhpcyByZXF1aXJlcyB0aGUgcHJvcG9zYWwgdG8gYmW0IGluIHRoZSBkaXNwYXRjaCBxdWV1ZS4gTm8gZGVwb3NpdCBpcyBuZWVkZWQuNHJlYXBfcHJlaW1hZ2UENHByb3Bvc2FsX2hhc2gQSGFzaAT0IFJlbW92ZSBhbiBleHBpcmVkIHByb3Bvc2FsIHByZWltYWdlIGFuZCBjb2xsZWN0IHRoZSBkZXBvc2l0LgAAABxDb3VuY2lsAAEQLHNldF9tZW1iZXJzBCxuZXdfbWVtYmVyczhWZWM8QWNjb3VudElkPhBRASBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwIG1hbnVhbGx5IHRvIGBuZXdfbWVtYmVyc2AuIEJlIG5pY2UgdG8gdGhlIGNoYWluIGFuZFwgcHJvdmlkZSBpdCBwcmUtc29ydGVkLgBYIFJlcXVpcmVzIHJvb3Qgb3JpZ2luLhxleGVjdXRlBCBwcm9wb3NhbCBQcm9wb3NhbAz0IERpc3BhdGNoIGEgcHJvcG9zYWwgZnJvbSBhIG1lbWJlciB1c2luZyB0aGUgYE1lbWJlcmAgb3JpZ2luLgCsIE9yaWdpbiBtdXN0IGJlIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aXZlLhxwcm9wb3NlCCR0aHJlc2hvbGRQQ29tcGFjdDxNZW1iZXJDb3VudD4gcHJvcG9zYWwgUHJvcG9zYWwQLCAjIDx3ZWlnaHQ+kCAtIEJvdW5kZWQgc3RvcmFnZSByZWFkcyBhbmQgd3JpdGVzLrggLSBBcmd1bWVudCBgdGhyZXNob2xkYCBoYXMgYmVhcmluZyBvbiB3ZWlnaHQuMCAjIDwvd2VpZ2h0PhB2b3RlDCBwcm9wb3NhbBBIYXNoFGluZGV4WENvbXBhY3Q8UHJvcG9zYWxJbmRleD4cYXBwcm92ZRBib29sECwgIyA8d2VpZ2h0PowgLSBCb3VuZGVkIHN0b3JhZ2UgcmVhZCBhbmQgd3JpdGVzLlUBIC0gV2lsbCBiZSBzbGlnaHRseSBoZWF2aWVyIGlmIHRoZSBwcm9wb3NhbCBpcyBhcHByb3ZlZCAvIGRpc2FwcHJvdmVkIGFmdGVyIHRoZSB2b3RlLjAgIyA8L3dlaWdodD4AAABIVGVjaG5pY2FsQ29tbWl0dGVlAAEQLHNldF9tZW1iZXJzBCxuZXdfbWVtYmVyczhWZWM8QWNjb3VudElkPhBRASBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwIG1hbnVhbGx5IHRvIGBuZXdfbWVtYmVyc2AuIEJlIG5pY2UgdG8gdGhlIGNoYWluIGFuZFwgcHJvdmlkZSBpdCBwcmUtc29ydGVkLgBYIFJlcXVpcmVzIHJvb3Qgb3JpZ2luLhxleGVjdXRlBCBwcm9wb3NhbCBQcm9wb3NhbAz0IERpc3BhdGNoIGEgcHJvcG9zYWwgZnJvbSBhIG1lbWJlciB1c2luZyB0aGUgYE1lbWJlcmAgb3JpZ2luLgCsIE9yaWdpbiBtdXN0IGJlIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aXZlLhxwcm9wb3NlCCR0aHJlc2hvbGRQQ29tcGFjdDxNZW1iZXJDb3VudD4gcHJvcG9zYWwgUHJvcG9zYWwQLCAjIDx3ZWlnaHQ+kCAtIEJvdW5kZWQgc3RvcmFnZSByZWFkcyBhbmQgd3JpdGVzLrggLSBBcmd1bWVudCBgdGhyZXNob2xkYCBoYXMgYmVhcmluZyBvbiB3ZWlnaHQuMCAjIDwvd2VpZ2h0PhB2b3RlDCBwcm9wb3NhbBBIYXNoFGluZGV4WENvbXBhY3Q8UHJvcG9zYWxJbmRleD4cYXBwcm92ZRBib29sECwgIyA8d2VpZ2h0PowgLSBCb3VuZGVkIHN0b3JhZ2UgcmVhZCBhbmQgd3JpdGVzLlUBIC0gV2lsbCBiZSBzbGlnaHRseSBoZWF2aWVyIGlmIHRoZSBwcm9wb3NhbCBpcyBhcHByb3ZlZCAvIGRpc2FwcHJvdmVkIGFmdGVyIHRoZSB2b3RlLjAgIyA8L3dlaWdodD4AAABERWxlY3Rpb25zUGhyYWdtZW4AARgQdm90ZQgUdm90ZXM4VmVjPEFjY291bnRJZD4UdmFsdWVIQ29tcGFjdDxCYWxhbmNlT2Y+PAUBIFZvdGUgZm9yIGEgc2V0IG9mIGNhbmRpZGF0ZXMgZm9yIHRoZSB1cGNvbWluZyByb3VuZCBvZiBlbGVjdGlvbi4AUCBUaGUgYHZvdGVzYCBzaG91bGQ6SCAgIC0gbm90IGJlIGVtcHR5LqwgICAtIGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAF0BIFVwb24gdm90aW5nLCBgdmFsdWVgIHVuaXRzIG9mIGB3aG9gJ3MgYmFsYW5jZSBpcyBsb2NrZWQgYW5kIGEgYm9uZCBhbW91bnQgaXMgcmVzZXJ2ZWQuXQEgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gbm90IHBsYWNlIGFsbCBvZiB0aGVpciBiYWxhbmNlIGludG8gdGhlIGxvY2ugIGFuZCBrZWVwIHNvbWUgZm9yIGZ1cnRoZXIgdHJhbnNhY3Rpb25zLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGUwIFJlYWRzOiBPKDEpyCBXcml0ZXM6IE8oVikgZ2l2ZW4gYFZgIHZvdGVzLiBWIGlzIGJvdW5kZWQgYnkgMTYuMCAjIDwvd2VpZ2h0PjByZW1vdmVfdm90ZXIAHCEBIFJlbW92ZSBgb3JpZ2luYCBhcyBhIHZvdGVyLiBUaGlzIHJlbW92ZXMgdGhlIGxvY2sgYW5kIHJldHVybnMgdGhlIGJvbmQuACwgIyA8d2VpZ2h0PiwgIyMjIyBTdGF0ZTAgUmVhZHM6IE8oMSk0IFdyaXRlczogTygxKTAgIyA8L3dlaWdodD5QcmVwb3J0X2RlZnVuY3Rfdm90ZXIEGHRhcmdldBxBZGRyZXNzNF0BIFJlcG9ydCBgdGFyZ2V0YCBmb3IgYmVpbmcgYW4gZGVmdW5jdCB2b3Rlci4gSW4gY2FzZSBvZiBhIHZhbGlkIHJlcG9ydCwgdGhlIHJlcG9ydGVyIGlzXQEgcmV3YXJkZWQgYnkgdGhlIGJvbmQgYW1vdW50IG9mIGB0YXJnZXRgLiBPdGhlcndpc2UsIHRoZSByZXBvcnRlciBpdHNlbGYgaXMgcmVtb3ZlZCBhbmRcIHRoZWlyIGJvbmQgaXMgc2xhc2hlZC4AiCBBIGRlZnVuY3Qgdm90ZXIgaXMgZGVmaW5lZCB0byBiZTpNASAgIC0gYSB2b3RlciB3aG9zZSBjdXJyZW50IHN1Ym1pdHRlZCB2b3RlcyBhcmUgYWxsIGludmFsaWQuIGkuZS4gYWxsIG9mIHRoZW0gYXJlIG5vtCAgICAgbG9uZ2VyIGEgY2FuZGlkYXRlIG5vciBhbiBhY3RpdmUgbWVtYmVyLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGUVASBSZWFkczogTyhOTG9nTSkgZ2l2ZW4gTSBjdXJyZW50IGNhbmRpZGF0ZXMgYW5kIE4gdm90ZXMgZm9yIGB0YXJnZXRgLjQgV3JpdGVzOiBPKDEpMCAjIDwvd2VpZ2h0PkBzdWJtaXRfY2FuZGlkYWN5ADR4IFN1Ym1pdCBvbmVzZWxmIGZvciBjYW5kaWRhY3kuAGQgQSBjYW5kaWRhdGUgd2lsbCBlaXRoZXI67CAgIC0gTG9zZSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXJtIGFuZCBmb3JmZWl0IHRoZWlyIGRlcG9zaXQuLQEgICAtIFdpbiBhbmQgYmVjb21lIGEgbWVtYmVyLiBNZW1iZXJzIHdpbGwgZXZlbnR1YWxseSBnZXQgdGhlaXIgc3Rhc2ggYmFjay5VASAgIC0gQmVjb21lIGEgcnVubmVyLXVwLiBSdW5uZXJzLXVwcyBhcmUgcmVzZXJ2ZWQgbWVtYmVycyBpbiBjYXNlIG9uZSBnZXRzIGZvcmNlZnVsbHk0ICAgICByZW1vdmVkLgAsICMgPHdlaWdodD4sICMjIyMgU3RhdGWMIFJlYWRzOiBPKExvZ04pIEdpdmVuIE4gY2FuZGlkYXRlcy40IFdyaXRlczogTygxKTAgIyA8L3dlaWdodD5IcmVub3VuY2VfY2FuZGlkYWN5ACRRASBSZW5vdW5jZSBvbmUncyBpbnRlbnRpb24gdG8gYmUgYSBjYW5kaWRhdGUgZm9yIHRoZSBuZXh0IGVsZWN0aW9uIHJvdW5kLiAzIHBvdGVudGlhbEAgb3V0Y29tZXMgZXhpc3Q6QQEgLSBgb3JpZ2luYCBpcyBhIGNhbmRpZGF0ZSBhbmQgbm90IGVsZWN0ZWQgaW4gYW55IHNldC4gSW4gdGhpcyBjYXNlLCB0aGUgYm9uZCBpc/QgICB1bnJlc2VydmVkLCByZXR1cm5lZCBhbmQgb3JpZ2luIGlzIHJlbW92ZWQgYXMgYSBjYW5kaWRhdGUuWQEgLSBgb3JpZ2luYCBpcyBhIGN1cnJlbnQgcnVubmVyIHVwLiBJbiB0aGlzIGNhc2UsIHRoZSBib25kIGlzIHVucmVzZXJ2ZWQsIHJldHVybmVkIGFuZIQgICBvcmlnaW4gaXMgcmVtb3ZlZCBhcyBhIHJ1bm5lci5NASAtIGBvcmlnaW5gIGlzIGEgY3VycmVudCBtZW1iZXIuIEluIHRoaXMgY2FzZSwgdGhlIGJvbmQgaXMgdW5yZXNlcnZlZCBhbmQgb3JpZ2luIGlzWQEgICByZW1vdmVkIGFzIGEgbWVtYmVyLCBjb25zZXF1ZW50bHkgbm90IGJlaW5nIGEgY2FuZGlkYXRlIGZvciB0aGUgbmV4dCByb3VuZCBhbnltb3JlLmUBICAgU2ltaWxhciB0byBbYHJlbW92ZV92b3RlcmBdLCBpZiByZXBsYWNlbWVudCBydW5uZXJzIGV4aXN0cywgdGhleSBhcmUgaW1tZWRpYXRlbHkgdXNlZC40cmVtb3ZlX21lbWJlcgQMd2hvHEFkZHJlc3M0XQEgUmVtb3ZlIGEgcGFydGljdWxhciBtZW1iZXIgZnJvbSB0aGUgc2V0LiBUaGlzIGlzIGVmZmVjdGl2ZSBpbW1lZGlhdGVseSBhbmQgdGhlIGJvbmQgb2aAIHRoZSBvdXRnb2luZyBtZW1iZXIgaXMgc2xhc2hlZC4AWQEgSWYgYSBydW5uZXItdXAgaXMgYXZhaWxhYmxlLCB0aGVuIHRoZSBiZXN0IHJ1bm5lci11cCB3aWxsIGJlIHJlbW92ZWQgYW5kIHJlcGxhY2VzIHRoZfQgb3V0Z29pbmcgbWVtYmVyLiBPdGhlcndpc2UsIGEgbmV3IHBocmFnbWVuIHJvdW5kIGlzIHN0YXJ0ZWQuAEUBIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZGVzaWduYXRlZCBibG9jayBudW1iZXIgb2YgdGhlIG5leHQgZWxlY3Rpb24uACwgIyA8d2VpZ2h0PiwgIyMjIyBTdGF0ZVggUmVhZHM6IE8oZG9fcGhyYWdtZW4pXCBXcml0ZXM6IE8oZG9fcGhyYWdtZW4pMCAjIDwvd2VpZ2h0PgAAAExUZWNobmljYWxNZW1iZXJzaGlwAAEUKGFkZF9tZW1iZXIEDHdobyRBY2NvdW50SWQMfCBBZGQgYSBtZW1iZXIgYHdob2AgdG8gdGhlIHNldC4AtCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgQWRkT3JpZ2luYCBvciByb290LjRyZW1vdmVfbWVtYmVyBAx3aG8kQWNjb3VudElkDJAgUmVtb3ZlIGEgbWVtYmVyIGB3aG9gIGZyb20gdGhlIHNldC4AwCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgUmVtb3ZlT3JpZ2luYCBvciByb290Lixzd2FwX21lbWJlcggYcmVtb3ZlJEFjY291bnRJZAxhZGQkQWNjb3VudElkDMAgU3dhcCBvdXQgb25lIG1lbWJlciBgcmVtb3ZlYCBmb3IgYW5vdGhlciBgYWRkYC4AuCBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgU3dhcE9yaWdpbmAgb3Igcm9vdC40cmVzZXRfbWVtYmVycwQcbWVtYmVyczhWZWM8QWNjb3VudElkPhBZASBDaGFuZ2UgdGhlIG1lbWJlcnNoaXAgdG8gYSBuZXcgc2V0LCBkaXNyZWdhcmRpbmcgdGhlIGV4aXN0aW5nIG1lbWJlcnNoaXAuIEJlIG5pY2UgYW5kbCBwYXNzIGBtZW1iZXJzYCBwcmUtc29ydGVkLgC8IE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBSZXNldE9yaWdpbmAgb3Igcm9vdC4oY2hhbmdlX2tleQQMbmV3JEFjY291bnRJZAzYIFN3YXAgb3V0IHRoZSBzZW5kaW5nIG1lbWJlciBmb3Igc29tZSBvdGhlciBrZXkgYG5ld2AuAPQgTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFNpZ25lZGAgb3JpZ2luIG9mIGEgY3VycmVudCBtZW1iZXIuAAAAIFRyZWFzdXJ5AAEMNHByb3Bvc2Vfc3BlbmQIFHZhbHVlSENvbXBhY3Q8QmFsYW5jZU9mPixiZW5lZmljaWFyeRxBZGRyZXNzJC0BIFB1dCBmb3J3YXJkIGEgc3VnZ2VzdGlvbiBmb3Igc3BlbmRpbmcuIEEgZGVwb3NpdCBwcm9wb3J0aW9uYWwgdG8gdGhlIHZhbHVlNQEgaXMgcmVzZXJ2ZWQgYW5kIHNsYXNoZWQgaWYgdGhlIHByb3Bvc2FsIGlzIHJlamVjdGVkLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoZVQgcHJvcG9zYWwgaXMgYXdhcmRlZC4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuZCAtIExpbWl0ZWQgc3RvcmFnZSByZWFkcy6UIC0gT25lIERCIGNoYW5nZSwgb25lIGV4dHJhIERCIGVudHJ5LjAgIyA8L3dlaWdodD48cmVqZWN0X3Byb3Bvc2FsBCxwcm9wb3NhbF9pZFhDb21wYWN0PFByb3Bvc2FsSW5kZXg+HPwgUmVqZWN0IGEgcHJvcG9zZWQgc3BlbmQuIFRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgc2xhc2hlZC4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuZCAtIExpbWl0ZWQgc3RvcmFnZSByZWFkcy5AIC0gT25lIERCIGNsZWFyLjAgIyA8L3dlaWdodD5AYXBwcm92ZV9wcm9wb3NhbAQscHJvcG9zYWxfaWRYQ29tcGFjdDxQcm9wb3NhbEluZGV4PiBdASBBcHByb3ZlIGEgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIHByb3Bvc2FsIHdpbGwgYmUgYWxsb2NhdGVkIHRvIHRoZSBiZW5lZmljaWFyeawgYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLmQgLSBMaW1pdGVkIHN0b3JhZ2UgcmVhZHMuRCAtIE9uZSBEQiBjaGFuZ2UuMCAjIDwvd2VpZ2h0PgAAABhDbGFpbXMAAQgUY2xhaW0IEGRlc3QkQWNjb3VudElkSGV0aGVyZXVtX3NpZ25hdHVyZThFY2RzYVNpZ25hdHVyZQQ4IE1ha2UgYSBjbGFpbS4obWludF9jbGFpbQwMd2hvPEV0aGVyZXVtQWRkcmVzcxR2YWx1ZSRCYWxhbmNlT2ZAdmVzdGluZ19zY2hlZHVsZaRPcHRpb248KEJhbGFuY2VPZixCYWxhbmNlT2YsQmxvY2tOdW1iZXIpPgSIIEFkZCBhIG5ldyBjbGFpbSwgaWYgeW91IGFyZSByb290LgAAAChQYXJhY2hhaW5zAAEEJHNldF9oZWFkcwQUaGVhZHNYVmVjPEF0dGVzdGVkQ2FuZGlkYXRlPgQVASBQcm92aWRlIGNhbmRpZGF0ZSByZWNlaXB0cyBmb3IgcGFyYWNoYWlucywgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGlkLgAAADBBdHRlc3RhdGlvbnMAAQREbW9yZV9hdHRlc3RhdGlvbnMEFF9tb3JlQE1vcmVBdHRlc3RhdGlvbnMEFQEgUHJvdmlkZSBjYW5kaWRhdGUgcmVjZWlwdHMgZm9yIHBhcmFjaGFpbnMsIGluIGFzY2VuZGluZyBvcmRlciBieSBpZC4AAAAUU2xvdHMAARgsbmV3X2F1Y3Rpb24IIGR1cmF0aW9uUENvbXBhY3Q8QmxvY2tOdW1iZXI+SGxlYXNlX3BlcmlvZF9pbmRleFhDb21wYWN0PExlYXNlUGVyaW9kT2Y+FFggQ3JlYXRlIGEgbmV3IGF1Y3Rpb24uAFUBIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlcmUgaXNuJ3QgYWxyZWFkeSBhbiBhdWN0aW9uIGluIHByb2dyZXNzIGFuZCBtYXkgb25seSBiZSkBIGNhbGxlZCBieSB0aGUgcm9vdCBvcmlnaW4uIEFjY2VwdHMgdGhlIGBkdXJhdGlvbmAgb2YgdGhpcyBhdWN0aW9uIGFuZCB0aGVdASBgbGVhc2VfcGVyaW9kX2luZGV4YCBvZiB0aGUgaW5pdGlhbCBsZWFzZSBwZXJpb2Qgb2YgdGhlIGZvdXIgdGhhdCBhcmUgdG8gYmUgYXVjdGlvbmVkLgxiaWQUDHN1YjhDb21wYWN0PFN1YklkPjRhdWN0aW9uX2luZGV4VENvbXBhY3Q8QXVjdGlvbkluZGV4PihmaXJzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4kbGFzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4YYW1vdW50SENvbXBhY3Q8QmFsYW5jZU9mPkBNASBNYWtlIGEgbmV3IGJpZCBmcm9tIGFuIGFjY291bnQgKGluY2x1ZGluZyBhIHBhcmFjaGFpbiBhY2NvdW50KSBmb3IgZGVwbG95aW5nIGEgbmV3LCBwYXJhY2hhaW4uAF0BIE11bHRpcGxlIHNpbXVsdGFuZW91cyBiaWRzIGZyb20gdGhlIHNhbWUgYmlkZGVyIGFyZSBhbGxvd2VkIG9ubHkgYXMgbG9uZyBhcyBhbGwgYWN0aXZlQQEgYmlkcyBvdmVybGFwIGVhY2ggb3RoZXIgKGkuZS4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSkuIEJpZHMgY2Fubm90IGJlIHJlZGFjdGVkLgBZASAtIGBzdWJgIGlzIHRoZSBzdWItYmlkZGVyIElELCBhbGxvd2luZyBmb3IgbXVsdGlwbGUgY29tcGV0aW5nIGJpZHMgdG8gYmUgbWFkZSBieSAoYW5kdCBmdW5kZWQgYnkpIHRoZSBzYW1lIGFjY291bnQuUQEgLSBgYXVjdGlvbl9pbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBhdWN0aW9uIHRvIGJpZCBvbi4gU2hvdWxkIGp1c3QgYmUgdGhlIHByZXNlbnRsIHZhbHVlIG9mIGBBdWN0aW9uQ291bnRlcmAuTQEgLSBgZmlyc3Rfc2xvdGAgaXMgdGhlIGZpcnN0IGxlYXNlIHBlcmlvZCBpbmRleCBvZiB0aGUgcmFuZ2UgdG8gYmlkIG9uLiBUaGlzIGlzIHRoZQ0BIGFic29sdXRlIGxlYXNlIHBlcmlvZCBpbmRleCB2YWx1ZSwgbm90IGFuIGF1Y3Rpb24tc3BlY2lmaWMgb2Zmc2V0LkUBIC0gYGxhc3Rfc2xvdGAgaXMgdGhlIGxhc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlDQEgYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuTQEgLSBgYW1vdW50YCBpcyB0aGUgYW1vdW50IHRvIGJpZCB0byBiZSBoZWxkIGFzIGRlcG9zaXQgZm9yIHRoZSBwYXJhY2hhaW4gc2hvdWxkIHRoZcwgYmlkIHdpbi4gVGhpcyBhbW91bnQgaXMgaGVsZCB0aHJvdWdob3V0IHRoZSByYW5nZS4kYmlkX3JlbmV3EDRhdWN0aW9uX2luZGV4VENvbXBhY3Q8QXVjdGlvbkluZGV4PihmaXJzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4kbGFzdF9zbG90WENvbXBhY3Q8TGVhc2VQZXJpb2RPZj4YYW1vdW50SENvbXBhY3Q8QmFsYW5jZU9mPjxRASBNYWtlIGEgbmV3IGJpZCBmcm9tIGEgcGFyYWNoYWluIGFjY291bnQgZm9yIHJlbmV3aW5nIHRoYXQgKHByZS1leGlzdGluZykgcGFyYWNoYWluLgCoIFRoZSBvcmlnaW4gKm11c3QqIGJlIGEgcGFyYWNoYWluIGFjY291bnQuAF0BIE11bHRpcGxlIHNpbXVsdGFuZW91cyBiaWRzIGZyb20gdGhlIHNhbWUgYmlkZGVyIGFyZSBhbGxvd2VkIG9ubHkgYXMgbG9uZyBhcyBhbGwgYWN0aXZlQQEgYmlkcyBvdmVybGFwIGVhY2ggb3RoZXIgKGkuZS4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSkuIEJpZHMgY2Fubm90IGJlIHJlZGFjdGVkLgBRASAtIGBhdWN0aW9uX2luZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIGF1Y3Rpb24gdG8gYmlkIG9uLiBTaG91bGQganVzdCBiZSB0aGUgcHJlc2VudGwgdmFsdWUgb2YgYEF1Y3Rpb25Db3VudGVyYC5NASAtIGBmaXJzdF9zbG90YCBpcyB0aGUgZmlyc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlDQEgYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuRQEgLSBgbGFzdF9zbG90YCBpcyB0aGUgbGFzdCBsZWFzZSBwZXJpb2QgaW5kZXggb2YgdGhlIHJhbmdlIHRvIGJpZCBvbi4gVGhpcyBpcyB0aGUNASBhYnNvbHV0ZSBsZWFzZSBwZXJpb2QgaW5kZXggdmFsdWUsIG5vdCBhbiBhdWN0aW9uLXNwZWNpZmljIG9mZnNldC5NASAtIGBhbW91bnRgIGlzIHRoZSBhbW91bnQgdG8gYmlkIHRvIGJlIGhlbGQgYXMgZGVwb3NpdCBmb3IgdGhlIHBhcmFjaGFpbiBzaG91bGQgdGhlzCBiaWQgd2luLiBUaGlzIGFtb3VudCBpcyBoZWxkIHRocm91Z2hvdXQgdGhlIHJhbmdlLjxzZXRfb2ZmYm9hcmRpbmcEEGRlc3QcQWRkcmVzcxTIIFNldCB0aGUgb2ZmLWJvYXJkaW5nIGluZm9ybWF0aW9uIGZvciBhIHBhcmFjaGFpbi4AqCBUaGUgb3JpZ2luICptdXN0KiBiZSBhIHBhcmFjaGFpbiBhY2NvdW50LgAhASAtIGBkZXN0YCBpcyB0aGUgZGVzdGluYXRpb24gYWNjb3VudCB0byByZWNlaXZlIHRoZSBwYXJhY2hhaW4ncyBkZXBvc2l0LjxmaXhfZGVwbG95X2RhdGEQDHN1YjhDb21wYWN0PFN1YklkPhxwYXJhX2lkPENvbXBhY3Q8UGFyYUlkPiRjb2RlX2hhc2gQSGFzaERpbml0aWFsX2hlYWRfZGF0YRRCeXRlcxwtASBTZXQgdGhlIGRlcGxveSBpbmZvcm1hdGlvbiBmb3IgYSBzdWNjZXNzZnVsIGJpZCB0byBkZXBsb3kgYSBuZXcgcGFyYWNoYWluLgDIIC0gYG9yaWdpbmAgbXVzdCBiZSB0aGUgc3VjY2Vzc2Z1bCBiaWRkZXIgYWNjb3VudC6wIC0gYHN1YmAgaXMgdGhlIHN1Yi1iaWRkZXIgSUQgb2YgdGhlIGJpZGRlci4BASAtIGBwYXJhX2lkYCBpcyB0aGUgcGFyYWNoYWluIElEIGFsbG90dGVkIHRvIHRoZSB3aW5uaW5nIGJpZGRlci4dASAtIGBjb2RlX2hhc2hgIGlzIHRoZSBoYXNoIG9mIHRoZSBwYXJhY2hhaW4ncyBXYXNtIHZhbGlkYXRpb24gZnVuY3Rpb24u8CAtIGBpbml0aWFsX2hlYWRfZGF0YWAgaXMgdGhlIHBhcmFjaGFpbidzIGluaXRpYWwgaGVhZCBkYXRhLlRlbGFib3JhdGVfZGVwbG95X2RhdGEIHHBhcmFfaWQ8Q29tcGFjdDxQYXJhSWQ+EGNvZGUUQnl0ZXMwdCBOb3RlIGEgbmV3IHBhcmFjaGFpbidzIGNvZGUuAE0BIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYGZpeF9kZXBsb3lfZGF0YWAgYW5kIGBjb2RlYCBtdXN0IGJlIHRoZSBwcmVpbWFnZSBvZiB0aGXEIGBjb2RlX2hhc2hgIHBhc3NlZCB0aGVyZSBmb3IgdGhlIHNhbWUgYHBhcmFfaWRgLgBhASBUaGlzIG1heSBiZSBjYWxsZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFjaGFpbidzIGZpcnN0IGxlYXNlIHBlcmlvZC5FASBJZiBjYWxsZWQgYmVmb3JlIHRoZW4gdGhlIHBhcmFjaGFpbiB3aWxsIGJlY29tZSBhY3RpdmUgYXQgdGhlIGZpcnN0IGJsb2NrIG9mIGl0c2UBIHN0YXJ0aW5nIGxlYXNlIHBlcmlvZC4gSWYgYWZ0ZXIsIHRoZW4gaXQgd2lsbCBiZWNvbWUgYWN0aXZlIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgY2FsbC4AbCAtIGBfb3JpZ2luYCBpcyBpcnJlbGV2YW50LvwgLSBgcGFyYV9pZGAgaXMgdGhlIHBhcmFjaGFpbiBJRCB3aG9zZSBjb2RlIHdpbGwgYmUgZWxhYm9yYXRlZC4VASAtIGBjb2RlYCBpcyB0aGUgcHJlaW1hZ2Ugb2YgdGhlIHJlZ2lzdGVyZWQgYGNvZGVfaGFzaGAgb2YgYHBhcmFfaWRgLgAAACRSZWdpc3RyYXIAARw0cmVnaXN0ZXJfcGFyYRAIaWQ8Q29tcGFjdDxQYXJhSWQ+EGluZm8gUGFyYUluZm8QY29kZRRCeXRlc0Rpbml0aWFsX2hlYWRfZGF0YRRCeXRlcwiYIFJlZ2lzdGVyIGEgcGFyYWNoYWluIHdpdGggZ2l2ZW4gY29kZS6MIEZhaWxzIGlmIGdpdmVuIElEIGlzIGFscmVhZHkgdXNlZC48ZGVyZWdpc3Rlcl9wYXJhBAhpZDxDb21wYWN0PFBhcmFJZD4ElCBEZXJlZ2lzdGVyIGEgcGFyYWNoYWluIHdpdGggZ2l2ZW4gaWRAc2V0X3RocmVhZF9jb3VudAQUY291bnQMdTMyFEEBIFJlc2V0IHRoZSBudW1iZXIgb2YgcGFyYXRocmVhZHMgdGhhdCBjYW4gcGF5IHRvIGJlIHNjaGVkdWxlZCBpbiBhIHNpbmdsZSBibG9jay4AmCAtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgcGFyYXRocmVhZHMuAIQgTXVzdCBiZSBjYWxsZWQgZnJvbSBSb290IG9yaWdpbi5McmVnaXN0ZXJfcGFyYXRocmVhZAgQY29kZRRCeXRlc0Rpbml0aWFsX2hlYWRfZGF0YRRCeXRlcxCkIFJlZ2lzdGVyIGEgcGFyYXRocmVhZCBmb3IgaW1tZWRpYXRlIHVzZS4ATQEgTXVzdCBiZSBzZW50IGZyb20gYSBTaWduZWQgb3JpZ2luIHRoYXQgaXMgYWJsZSB0byBoYXZlIFBhcmF0aHJlYWREZXBvc2l0IHJlc2VydmVkLjkBIGBjb2RlYCBhbmQgYGluaXRpYWxfaGVhZF9kYXRhYCBhcmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBwYXJhdGhyZWFkJ3Mgc3RhdGUuRHNlbGVjdF9wYXJhdGhyZWFkDAxfaWQ8Q29tcGFjdDxQYXJhSWQ+JF9jb2xsYXRvcihDb2xsYXRvcklkKF9oZWFkX2hhc2gQSGFzaBQFASBQbGFjZSBhIGJpZCBmb3IgYSBwYXJhdGhyZWFkIHRvIGJlIHByb2dyZXNzZWQgaW4gdGhlIG5leHQgYmxvY2suAEEBIFRoaXMgaXMgYSBraW5kIG9mIHNwZWNpYWwgdHJhbnNhY3Rpb24gdGhhdCBzaG91bGQgYnkgaGVhdmlseSBwcmlvcml0aXplZCBpbiB0aGVdASB0cmFuc2FjdGlvbiBwb29sIGFjY29yZGluZyB0byB0aGUgYHZhbHVlYDsgb25seSBgVGhyZWFkQ291bnRgIG9mIHRoZW0gbWF5IGJlIHByZXNlbnRlZFQgaW4gYW55IHNpbmdsZSBibG9jay5UZGVyZWdpc3Rlcl9wYXJhdGhyZWFkABzIIERlcmVnaXN0ZXIgYSBwYXJhdGhyZWFkIGFuZCByZXRyaWV2ZSB0aGUgZGVwb3NpdC4AIQEgTXVzdCBiZSBzZW50IGZyb20gYSBgUGFyYWNoYWluYCBvcmlnaW4gd2hpY2ggaXMgY3VycmVudGx5IGEgcGFyYXRocmVhZC4AWQEgRW5zdXJlIHRoYXQgYmVmb3JlIGNhbGxpbmcgdGhpcyB0aGF0IGFueSBmdW5kcyB5b3Ugd2FudCBlbXB0aWVkIGZyb20gdGhlIHBhcmF0aHJlYWQnc0UBIGFjY291bnQgaXMgbW92ZWQgb3V0OyBhZnRlciB0aGlzIGl0IHdpbGwgYmUgaW1wb3NzaWJsZSB0byByZXRyaWV2ZSB0aGVtICh3aXRob3V0aCBnb3Zlcm5hbmNlIGludGVydmVudGlvbikuEHN3YXAEFG90aGVyPENvbXBhY3Q8UGFyYUlkPiBlASBTd2FwIGEgcGFyYWNoYWluIHdpdGggYW5vdGhlciBwYXJhY2hhaW4gb3IgcGFyYXRocmVhZC4gVGhlIG9yaWdpbiBtdXN0IGJlIGEgYFBhcmFjaGFpbmAuZQEgVGhlIHN3YXAgd2lsbCBoYXBwZW4gb25seSBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIG9wcG9zaXRlIHN3YXAgcGVuZGluZy4gSWYgdGhlcmUgaXMgbm90LF0BIHRoZSBzd2FwIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBwZW5kaW5nIHN3YXBzIG1hcCwgcmVhZHkgZm9yIGEgbGF0ZXIgY29uZmlybWF0b3J5IHN3YXAuAGEBIFRoZSBgUGFyYUlkYHMgcmVtYWluIG1hcHBlZCB0byB0aGUgc2FtZSBoZWFkIGRhdGEgYW5kIGNvZGUgc28gZXh0ZXJuYWwgY29kZSBjYW4gcmVseSBvbkEBIGBQYXJhSWRgIHRvIGJlIGEgbG9uZy10ZXJtIGlkZW50aWZpZXIgb2YgYSBub3Rpb25hbCAicGFyYWNoYWluIi4gSG93ZXZlciwgdGhlaXJZASBzY2hlZHVsaW5nIGluZm8gKGkuZS4gd2hldGhlciB0aGV5J3JlIGEgcGFyYXRocmVhZCBvciBwYXJhY2hhaW4pLCBhdWN0aW9uIGluZm9ybWF0aW9umCBhbmQgdGhlIGF1Y3Rpb24gZGVwb3NpdCBhcmUgc3dpdGNoZWQuAAAAFE5pY2tzAAEQIHNldF9uYW1lBBBuYW1lFEJ5dGVzQF0BIFNldCBhbiBhY2NvdW50J3MgbmFtZS4gVGhlIG5hbWUgc2hvdWxkIGJlIGEgVVRGLTgtZW5jb2RlZCBzdHJpbmcgYnkgY29udmVudGlvbiwgdGhvdWdoTCB3ZSBkb24ndCBjaGVjayBpdC4AYQEgVGhlIG5hbWUgbWF5IG5vdCBiZSBtb3JlIHRoYW4gYFQ6Ok1heExlbmd0aGAgYnl0ZXMsIG5vciBsZXNzIHRoYW4gYFQ6Ok1pbkxlbmd0aGAgYnl0ZXMuAF0BIElmIHRoZSBhY2NvdW50IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGEgbmFtZSwgdGhlbiBhIGZlZSBvZiBgUmVzZXJ2YXRpb25GZWVgIGlzIHJlc2VydmVkQCBpbiB0aGUgYWNjb3VudC4A0CBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALCAjIDx3ZWlnaHQ+ICAtIE8oMSkuhCAtIEF0IG1vc3Qgb25lIGJhbGFuY2Ugb3BlcmF0aW9uLmggLSBPbmUgc3RvcmFnZSByZWFkL3dyaXRlLjQgLSBPbmUgZXZlbnQuMCAjIDwvd2VpZ2h0PihjbGVhcl9uYW1lAChRASBDbGVhciBhbiBhY2NvdW50J3MgbmFtZSBhbmQgcmV0dXJuIHRoZSBkZXBvc2l0LiBGYWlscyBpZiB0aGUgYWNjb3VudCB3YXMgbm90IG5hbWVkLgDQIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsICMgPHdlaWdodD4gIC0gTygxKS5kIC0gT25lIGJhbGFuY2Ugb3BlcmF0aW9uLmggLSBPbmUgc3RvcmFnZSByZWFkL3dyaXRlLjQgLSBPbmUgZXZlbnQuMCAjIDwvd2VpZ2h0PiRraWxsX25hbWUEGHRhcmdldBxBZGRyZXNzNOQgUmVtb3ZlIGFuIGFjY291bnQncyBuYW1lIGFuZCB0YWtlIGNoYXJnZSBvZiB0aGUgZGVwb3NpdC4ASQEgRmFpbHMgaWYgYHdob2AgaGFzIG5vdCBiZWVuIG5hbWVkLiBUaGUgZGVwb3NpdCBpcyBkZWFsdCB3aXRoIHRocm91Z2ggYFQ6OlNsYXNoZWRgTCBpbWJhbGFuY2UgaGFuZGxlci4AMQEgVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfIG9yIG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuACwgIyA8d2VpZ2h0PiAgLSBPKDEpLtwgLSBPbmUgdW5iYWxhbmNlZCBoYW5kbGVyIChwcm9iYWJseSBhIGJhbGFuY2UgdHJhbnNmZXIpaCAtIE9uZSBzdG9yYWdlIHJlYWQvd3JpdGUuNCAtIE9uZSBldmVudC4wICMgPC93ZWlnaHQ+KGZvcmNlX25hbWUIGHRhcmdldBxBZGRyZXNzEG5hbWUUQnl0ZXMwyCBTZXQgYSB0aGlyZC1wYXJ0eSBhY2NvdW50J3MgbmFtZSB3aXRoIG5vIGRlcG9zaXQuAKAgTm8gbGVuZ3RoIGNoZWNraW5nIGlzIGRvbmUgb24gdGhlIG5hbWUuADEBIFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290XyBvciBtYXRjaCBgVDo6Rm9yY2VPcmlnaW5gLgAsICMgPHdlaWdodD4gIC0gTygxKS6EIC0gQXQgbW9zdCBvbmUgYmFsYW5jZSBvcGVyYXRpb24uaCAtIE9uZSBzdG9yYWdlIHJlYWQvd3JpdGUuNCAtIE9uZSBldmVudC4wICMgPC93ZWlnaHQ+AAAA' }; diff --git a/packages/extension-dapp/package.json b/packages/extension-dapp/package.json index 9a648244..6bbab40f 100644 --- a/packages/extension-dapp/package.json +++ b/packages/extension-dapp/package.json @@ -1,12 +1,12 @@ { "name": "@polkadot/extension-dapp", "description": "Provides an interfaces around the injected globals for ease of access by dapp developers.", - "version": "0.14.0-beta.9", + "version": "0.14.0", "author": "Jaco Greeff ", "license": "Apache-2", "dependencies": { "@babel/runtime": "^7.7.5", - "@polkadot/extension-inject": "^0.14.0-beta.9" + "@polkadot/extension-inject": "^0.14.0" }, "peerDependencies": { "@polkadot/api": "*" diff --git a/packages/extension-inject/package.json b/packages/extension-inject/package.json index ee78ba66..2d0119e8 100644 --- a/packages/extension-inject/package.json +++ b/packages/extension-inject/package.json @@ -1,7 +1,7 @@ { "name": "@polkadot/extension-inject", "description": "A generic injector (usable to any extension), that populates the base exposed interfaces to be used by dapps.", - "version": "0.14.0-beta.9", + "version": "0.14.0", "author": "Jaco Greeff ", "license": "Apache-2", "dependencies": { diff --git a/packages/extension-ui/package.json b/packages/extension-ui/package.json index 68b07656..9d00a9f5 100644 --- a/packages/extension-ui/package.json +++ b/packages/extension-ui/package.json @@ -1,7 +1,7 @@ { "name": "@polkadot/extension-ui", "description": "A sample signer extension for the @polkadot/api", - "version": "0.14.0-beta.9", + "version": "0.14.0", "author": "Jaco Greeff ", "license": "Apache-2", "dependencies": { diff --git a/packages/extension/package.json b/packages/extension/package.json index a0df5c4d..7c8b96ea 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -1,12 +1,12 @@ { "name": "@polkadot/extension", "description": "A sample signer extension for the @polkadot/api", - "version": "0.14.0-beta.9", + "version": "0.14.0", "author": "Jaco Greeff ", "license": "Apache-2", "dependencies": { - "@polkadot/api": "^0.99.0-beta.4", - "@polkadot/extension-ui": "^0.14.0-beta.9", + "@polkadot/api": "^0.99.0-beta.13", + "@polkadot/extension-ui": "^0.14.0", "@polkadot/ui-keyring": "^0.48.0-beta.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 737d8dfa..32d76cca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -667,9 +667,9 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-runtime@^7.4.0", "@babel/plugin-transform-runtime@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.5.tgz#b0bd98f54f10b068d66c55bf85c7ab29587627a6" - integrity sha512-X+w9wJRzOoAPBfTEcFJisVppQ8OTQMxrVgmi7ZLVWehqVd8ciHN09A1XjB91Iw+Sgf77Y9Oy7CfxKNr1tVkK7g== + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61" + integrity sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A== dependencies: "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" @@ -780,9 +780,9 @@ semver "^5.3.0" "@babel/preset-env@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.5.tgz#f28573ed493edb4ba763b37fb4fbb85601469370" - integrity sha512-wDPbiaZdGzsJuTWlpLHJxmwslwHGLZ8F5v69zX3oAWeTOFWdy4OJHoTKg26oAnFg052v+/LAPY5os9KB0LrOEA== + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.6.tgz#39ac600427bbb94eec6b27953f1dfa1d64d457b2" + integrity sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ== dependencies: "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" @@ -867,17 +867,17 @@ source-map-support "^0.5.16" "@babel/runtime-corejs2@^7.2.0": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.7.5.tgz#07cfd9e04d0c17328852bd174df241b8673a067e" - integrity sha512-cN5YmGR1PKMRIeOgwaxp7Y003BEGoUmtPQyECaSvXgwMW1Em2U1xuJSac9NGOJDBn7I82TRmJl0UGieCWkUYbQ== + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.7.6.tgz#50b7cd4eab929b4cb66167c4972d35eaceaa124b" + integrity sha512-QYp/8xdH8iMin3pH5gtT/rUuttVfIcOhWBC3wh9Eh/qs4jEe39+3DpCDLgWXhMQgiCTOH8mrLSvQ0OHOCcox9g== dependencies: core-js "^2.6.5" regenerator-runtime "^0.13.2" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.5.tgz#4b087f183f5d83647744d4157f66199081d17a00" - integrity sha512-UXhClKWTL7/vlYX49kETXti6VbpPJK/pdsIOqUMhUUES/lqThpNTsmC/0aU/IW4uozDUx17axjeqel7SCYF6EQ== + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f" + integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw== dependencies: regenerator-runtime "^0.13.2" @@ -2026,27 +2026,27 @@ dependencies: "@types/node" ">= 8" -"@polkadot/api-derive@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.99.0-beta.4.tgz#057b1babb1c2d8edabb5a96551f9a247a335a25b" - integrity sha512-vaxi0AlhARSeKf0zX7xFICGW+zFsY/9+6Tl/urrLoOYmw9AZa0inKzeprZGgcQD+LbIVmMffPi6YFZFM9rNHLQ== +"@polkadot/api-derive@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-0.99.0-beta.13.tgz#347ebc6ad7ca8a5491e2bff8c9045b8709484189" + integrity sha512-0D9dr3+KsFPvUZ3uQkL7a4nbfdtI3cmcIqGYXqPxmsiTacn0FQR1rN3j9yQa+rIHLIKPjBlpcQXXFAm2xxrPtA== dependencies: "@babel/runtime" "^7.7.5" - "@polkadot/api" "^0.99.0-beta.4" - "@polkadot/types" "^0.99.0-beta.4" + "@polkadot/api" "^0.99.0-beta.13" + "@polkadot/types" "^0.99.0-beta.13" -"@polkadot/api@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.99.0-beta.4.tgz#7386e7c99a05bd0acd0b444f10ef91ff30b284a4" - integrity sha512-CPy5slFqW8QEICzc5QlGJfIBF12sQVaEQkf2eRqvun39z5dI7gtMGlv6XnPXiIjo0SfBdWl/lTvSPZPDMg7MXQ== +"@polkadot/api@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-0.99.0-beta.13.tgz#eab4ee8d838f7fa000b14cb279b9aa50dd62f904" + integrity sha512-GOrvZvRkoiYIJy8I+9wGHdMsg7A4p5gsPphkTSViy0umeiKbGPg3yxLAm82DJsPoFiXaU1lf+CKQbT40YBYpyQ== dependencies: "@babel/runtime" "^7.7.5" - "@polkadot/api-derive" "^0.99.0-beta.4" + "@polkadot/api-derive" "^0.99.0-beta.13" "@polkadot/keyring" "^1.7.1" - "@polkadot/metadata" "^0.99.0-beta.4" - "@polkadot/rpc-core" "^0.99.0-beta.4" - "@polkadot/rpc-provider" "^0.99.0-beta.4" - "@polkadot/types" "^0.99.0-beta.4" + "@polkadot/metadata" "^0.99.0-beta.13" + "@polkadot/rpc-core" "^0.99.0-beta.13" + "@polkadot/rpc-provider" "^0.99.0-beta.13" + "@polkadot/types" "^0.99.0-beta.13" "@polkadot/util-crypto" "^1.7.1" "@polkadot/dev-react@^0.32.0-beta.17": @@ -2136,10 +2136,10 @@ typescript "^3.7.3" vuepress "^1.2.0" -"@polkadot/jsonrpc@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.99.0-beta.4.tgz#cd7c1fdfec9be05153d4b02782c52de25a4935fb" - integrity sha512-ZZSNDEne3kuU/FHdYULu6otqbCiGwEOipLv0+/CCFFTPg31pZicRBNYSvG+Mg4W025NIGPwfGUex46Zwh1Wl0A== +"@polkadot/jsonrpc@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/jsonrpc/-/jsonrpc-0.99.0-beta.13.tgz#8c92b9a7b3449601a6175fbfb0ab6aaa652bb580" + integrity sha512-mVfSWAeCihBj50IoNGPsPglqtPdE2ahy7dSbOoEhmHhnoOxnbmyd/izt/Nj0OakDWMeXOphXAfX/C9c5HM9KhQ== dependencies: "@babel/runtime" "^7.7.5" @@ -2152,13 +2152,13 @@ "@polkadot/util" "^1.7.1" "@polkadot/util-crypto" "^1.7.1" -"@polkadot/metadata@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-0.99.0-beta.4.tgz#a8cd72c6986296bbb26df110cd9946c7ea46cc21" - integrity sha512-T6VmYvDro0jg79Rt+Vq/dzTgFhl+Hmdgw0GcYbRowBMQToHis3M/le43Z79OeBJ/BUHMW/mNYYX6eLykSAviUA== +"@polkadot/metadata@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-0.99.0-beta.13.tgz#1f370a34aac9d1a03367659735ffc11b66a470ae" + integrity sha512-tTN3x+wmomq/bKxBEB0sJJCkiqr2nCymDDx9W/UbI+kPBhlWpdJ6OO3AGkDmdYwV8RSSK+71q3A57kTntB3n3Q== dependencies: "@babel/runtime" "^7.7.5" - "@polkadot/types" "^0.99.0-beta.4" + "@polkadot/types" "^0.99.0-beta.13" "@polkadot/util" "^1.7.1" "@polkadot/util-crypto" "^1.7.1" @@ -2187,25 +2187,25 @@ qrcode-generator "^1.4.4" react-qr-reader "^2.2.1" -"@polkadot/rpc-core@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.99.0-beta.4.tgz#49e151df3a91a0d5df649a830b55091acc4adaae" - integrity sha512-bWmgAhEXLh2CtEjel+XTZFmeCgKqRQcWTdqyWjPAXSDjIYQVTJM1fqkYtismK9hfY3caVjwjnem5uAr5HbtZ4A== +"@polkadot/rpc-core@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-0.99.0-beta.13.tgz#d2edcc86f35360c85b782951f5d2e5bcc2fd21cb" + integrity sha512-uORlJKZh4PvkLgiWcuZmsVYrSuXF04jd95wFzaB8VIxm60q0c7tu40rs9QyPkggSE/rj6xdhu4syjP58iD18cw== dependencies: "@babel/runtime" "^7.7.5" - "@polkadot/jsonrpc" "^0.99.0-beta.4" - "@polkadot/rpc-provider" "^0.99.0-beta.4" - "@polkadot/types" "^0.99.0-beta.4" + "@polkadot/jsonrpc" "^0.99.0-beta.13" + "@polkadot/rpc-provider" "^0.99.0-beta.13" + "@polkadot/types" "^0.99.0-beta.13" "@polkadot/util" "^1.7.1" rxjs "^6.5.3" -"@polkadot/rpc-provider@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.99.0-beta.4.tgz#33f27ee93e6cd5deaa27d87a83f897258ed6b303" - integrity sha512-KToP+gqLAUR11VPTkpgZDE7BYWo6fdN3OguK99ZcbFUA9p1SEe6D2PZWL6z5yH4G594eVR7O75ZTYKJ+ImanSw== +"@polkadot/rpc-provider@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-0.99.0-beta.13.tgz#00de8fab8b6c4089a95e9faf299246c9b32e0b35" + integrity sha512-yQxPtiLID9N4rjWjKg67UFpUzyZVH7ms3RQ82fVBfNXo7/y3N8e8P8o/6ny+yzMdkQ4Bz1J6jTwYjW2hx+CEGw== dependencies: "@babel/runtime" "^7.7.5" - "@polkadot/metadata" "^0.99.0-beta.4" + "@polkadot/metadata" "^0.99.0-beta.13" "@polkadot/util" "^1.7.1" "@polkadot/util-crypto" "^1.7.1" eventemitter3 "^4.0.0" @@ -2219,13 +2219,13 @@ dependencies: "@types/chrome" "^0.0.91" -"@polkadot/types@^0.99.0-beta.4": - version "0.99.0-beta.4" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.99.0-beta.4.tgz#6a57ff31423561e8c14ec41c1775e95e229d9314" - integrity sha512-NWrYPHsmhShnepERcjweE1bd5aKnrFCy6DNiCpwld/CSR88aZ62XMTVgivjEezXrM8jSxlFiCy21jZGwLe5B4Q== +"@polkadot/types@^0.99.0-beta.13": + version "0.99.0-beta.13" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-0.99.0-beta.13.tgz#a7332127109f3d9b09561622cd79f90519418d26" + integrity sha512-8hr6azJuqttDA1InDrTJDgLZbtplE7Fo2Dtfkm+YR7O6QosCKoBRxTZB62whqy9xc4vAv4wcR4ymdcGpIpXhyQ== dependencies: "@babel/runtime" "^7.7.5" - "@polkadot/metadata" "^0.99.0-beta.4" + "@polkadot/metadata" "^0.99.0-beta.13" "@polkadot/util" "^1.7.1" "@polkadot/util-crypto" "^1.7.1" "@types/memoizee" "^0.4.3" @@ -2349,9 +2349,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" - integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" @@ -2480,6 +2480,14 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.3.tgz#856c99cdc1551d22c22b18b5402719affec9839a" integrity sha512-cS5owqtwzLN5kY+l+KgKdRJ/Cee8tlmQoGQuIE9tWnSmS3JMKzmxo2HIAk2wODMifGwO20d62xZQLYz+RLfXmw== +"@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -2561,9 +2569,9 @@ "@types/node" "*" "@types/node@*", "@types/node@>= 8", "@types/node@^12.12.14": - version "12.12.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.14.tgz#1c1d6e3c75dba466e0326948d56e8bd72a1903d2" - integrity sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA== + version "12.12.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.17.tgz#191b71e7f4c325ee0fb23bc4a996477d92b8c39b" + integrity sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2602,9 +2610,9 @@ "@types/react" "*" "@types/react-native@*", "@types/react-native@^0.60.24": - version "0.60.24" - resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.24.tgz#0648aff3a910f29b8a892cecd0ec3199697bd31f" - integrity sha512-wI4C39mrEWpnx2JHCGsDKKcB22CNCKUWjLO6Mwt2yzgKD7crawuTjeHpBej/OiD/3df2X8rluuSmJ1xRcOZNAg== + version "0.60.25" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.25.tgz#65cb0bf5dd0631079215b63525458e4123c1c90e" + integrity sha512-827dIVvSTxSH5uTpsJJH7O4wpRuw0rm3yIzRL3a2yKawA0nyhgC1GPKTXHFIn2GfSdXn1Gty2dJ+k6uDZF3MWQ== dependencies: "@types/prop-types" "*" "@types/react" "*" @@ -2634,9 +2642,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^16.9.15": - version "16.9.15" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.15.tgz#aeabb7a50f96c9e31a16079ada20ede9ed602977" - integrity sha512-WsmM1b6xQn1tG3X2Hx4F3bZwc2E82pJXt5OPs2YJgg71IzvUoKOSSSYOvLXYCg1ttipM+UuA4Lj3sfvqjVxyZw== + version "16.9.16" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.16.tgz#4f12515707148b1f53a8eaa4341dae5dfefb066d" + integrity sha512-dQ3wlehuBbYlfvRXfF5G+5TbZF3xqgkikK7DWAsQXe2KnzV+kjD4W2ea+ThCrKASZn9h98bjjPzoTYzfRqyBkw== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -2672,10 +2680,11 @@ integrity sha512-ZPHnXkzmGMfk+pHqAGzTSpA9CbsHmJLgkvOl5w52LZ0XTxB1ZIHWZzQ7lEtjTNWScBbsQekg8TjApMXkMe4nkw== "@types/styled-components@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-4.4.0.tgz#15a3d59533fd3a5bd013db4a7c4422ec542c59d2" - integrity sha512-QFl+w3hQJNHE64Or3PXMFpC3HAQDiuQLi5o9m1XPEwYWfgCZtAribO5ksjxnO8U0LG8Parh0ESCgVxo4VfxlHg== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-4.4.1.tgz#bc40cf5ce0708032f4b148b04ab3c470d3e74026" + integrity sha512-cQXT4pkAkM0unk/s26UBrJx9RmJ2rNUn2aDTgzp1rtu+tTkScebE78jbxNWhlqkA43XF3d41CcDlyl9Ldotm2g== dependencies: + "@types/hoist-non-react-statics" "*" "@types/react" "*" "@types/react-native" "*" csstype "^2.2.0" @@ -2729,7 +2738,7 @@ "@typescript-eslint/typescript-estree" "2.10.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.10.0", "@typescript-eslint/typescript-estree@^2.4.0": +"@typescript-eslint/typescript-estree@2.10.0": version "2.10.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.10.0.tgz#89cdabd5e8c774e9d590588cb42fb9afd14dcbd9" integrity sha512-oOYnplddQNm/LGVkqbkAwx4TIBuuZ36cAQq9v3nFIU9FmhemHuVzAesMSXNQDdAzCa5bFgCrfD3JWhYVKlRN2g== @@ -2742,6 +2751,19 @@ semver "^6.3.0" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@^2.4.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.11.0.tgz#21ada6504274cd1644855926312c798fc697e9fb" + integrity sha512-HGY4+d4MagO6cKMcKfIKaTMxcAv7dEVnji2Zi+vi5VV8uWAM631KjAB5GxFcexMYrwKT0EekRiiGK1/Sd7VFGA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash.unescape "4.0.1" + semver "^6.3.0" + tsutils "^3.17.1" + "@vue/babel-helper-vue-jsx-merge-props@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" @@ -2826,9 +2848,9 @@ camelcase "^5.0.0" "@vue/component-compiler-utils@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.0.2.tgz#7daf8aaf0d5faa66e7c8a1f6fea315630e45fbc9" - integrity sha512-BSnY2PmW4QwU1AOcGSNYAmEPLjdQ9itl1YpLCWtpwMA5Jy/aqWNuzZ9+ZZ8h6yZJ53W95tVkEP6yrXJ/zUHdEA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.0.tgz#64cd394925f5af1f9c3228c66e954536f5311857" + integrity sha512-OJ7swvl8LtKtX5aYP8jHhO6fQBIRIGkU6rvWzK+CGJiNOnvg16nzcBkd9qMZzW8trI2AsqAKx263nv7kb5rhZw== dependencies: consolidate "^0.15.1" hash-sum "^1.0.2" @@ -4800,9 +4822,9 @@ copy-to-clipboard@^3: toggle-selection "^1.0.6" copy-webpack-plugin@^5.0.2, copy-webpack-plugin@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.5.tgz#731df6a837a2ef0f8f8e2345bdfe9b7c62a2da68" - integrity sha512-7N68eIoQTyudAuxkfPT7HzGoQ+TsmArN/I3HFwG+lVE3FNzqvZKIiaxtYh4o3BIznioxUvx9j26+Rtsc9htQUQ== + version "5.1.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.0.tgz#cd6bb506ffbbe830bf9ecb3d15cc4946b2edd011" + integrity sha512-0sNrj/Sx7/cWA0k7CVQa0sdA/dzCybqSb0+GbhKuQdOlAvnAwgC2osmbAFOAfha7ZXnreoQmCq5oDjG3gP4VHw== dependencies: cacache "^12.0.3" find-cache-dir "^2.1.0" @@ -4814,26 +4836,26 @@ copy-webpack-plugin@^5.0.2, copy-webpack-plugin@^5.0.5: normalize-path "^3.0.0" p-limit "^2.2.1" schema-utils "^1.0.0" - serialize-javascript "^2.1.0" + serialize-javascript "^2.1.2" webpack-log "^2.0.0" core-js-compat@^3.4.7: - version "3.4.7" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.4.7.tgz#39f8080b1d92a524d6d90505c42b9c5c1eb90611" - integrity sha512-57+mgz/P/xsGdjwQYkwtBZR3LuISaxD1dEwVDtbk8xJMqAmwqaxLOvnNT7kdJ7jYE/NjNptyzXi+IQFMi/2fCw== + version "3.4.8" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.4.8.tgz#f72e6a4ed76437ea710928f44615f926a81607d5" + integrity sha512-l3WTmnXHV2Sfu5VuD7EHE2w7y+K68+kULKt5RJg8ZJk3YhHF1qLD4O8v8AmNq+8vbOwnPFFDvds25/AoEvMqlQ== dependencies: - browserslist "^4.8.0" + browserslist "^4.8.2" semver "^6.3.0" core-js@^2.4.0, core-js@^2.6.5: - version "2.6.10" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" - integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== core-js@^3.1.4: - version "3.4.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.7.tgz#57c35937da80fe494fbc3adcf9cf3dc00eb86b34" - integrity sha512-qaPVGw30J1wQ0GR3GvoPqlGf9GZfKKF4kFC7kiHlcsPTqH3txrs9crCp3ZiMAXuSenhz89Jnl4GZs/67S5VOSg== + version "3.4.8" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.8.tgz#e0fc0c61f2ef90cbc10c531dbffaa46dfb7152dd" + integrity sha512-b+BBmCZmVgho8KnBUOXpvlqEMguko+0P+kXCwD4vIprsXC6ht1qgPxtb1OK6XgSlrySF71wkwBQ0Hv695bk9gQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4982,9 +5004,9 @@ css-loader@^2.1.1: schema-utils "^1.0.0" css-loader@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.1.tgz#62849b45a414b7bde0bfba17325a026471040eae" - integrity sha512-q40kYdcBNzMvkIImCL2O+wk8dh+RGwPPV9Dfz3n7XtOYPXqe2Z6VgtvoxjkLHz02gmhepG9sOAJOUlx+3hHsBg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.3.0.tgz#65f889807baec3197313965d6cda9899f936734d" + integrity sha512-x9Y1vvHe5RR+4tzwFdWExPueK00uqFTCw7mZy+9aE/X1SKWOArm5luaOrtJ4d05IpOwJ6S86b/tVcIdhw1Bu4A== dependencies: camelcase "^5.3.1" cssesc "^3.0.0" @@ -5240,7 +5262,7 @@ debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -6104,12 +6126,12 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-module-utils@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" - integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== +eslint-module-utils@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.0.tgz#cdf0b40d623032274ccd2abd7e64c4e524d6e19c" + integrity sha512-kCo8pZaNz2dsAW7nCUjuVoI11EBXXpIzfNxmaoLhXoRDOnqXLC4iSGVRdZPhOitfbdEfMEfKOiENaK6wDPZEGw== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" eslint-plugin-es@^2.0.0: @@ -6126,21 +6148,22 @@ eslint-plugin-eslint-plugin@^2.1.0: integrity sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg== eslint-plugin-import@^2.18.2: - version "2.18.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" - integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== + version "2.19.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448" + integrity sha512-x68131aKoCZlCae7rDXKSAQmbT5DQuManyXo2sK6fJJ0aK5CWAkv6A6HJZGgqC8IhjQxYPgo6/IY4Oz8AFsbBw== dependencies: array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-module-utils "^2.4.1" has "^1.0.3" minimatch "^3.0.4" object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.12.0" eslint-plugin-node@^10.0.0: version "10.0.0" @@ -7052,9 +7075,9 @@ get-caller-file@^2.0.1: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-own-enumerable-property-symbols@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz#6f7764f88ea11e0b514bd9bd860a132259992ca4" - integrity sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-pkg-repo@^1.0.0: version "1.4.0" @@ -10497,9 +10520,11 @@ normalize-url@^3.0.0, normalize-url@^3.3.0: integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" npm-lifecycle@^3.1.2: version "3.1.4" @@ -10515,6 +10540,11 @@ npm-lifecycle@^3.1.2: umask "^1.1.0" which "^1.3.1" +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" @@ -10526,9 +10556,9 @@ npm-lifecycle@^3.1.2: validate-npm-package-name "^3.0.0" npm-packlist@^1.1.6, npm-packlist@^1.4.4: - version "1.4.6" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== + version "1.4.7" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" + integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -12186,14 +12216,14 @@ read-cmd-shim@^1.0.1: graceful-fs "^4.1.2" "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.1.0" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.0.tgz#e3d42e6c35ea5ae820d9a03ab0c7291217fc51d5" - integrity sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A== + version "2.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" normalize-package-data "^2.0.0" - slash "^1.0.0" + npm-normalize-package-bin "^1.0.0" optionalDependencies: graceful-fs "^4.1.2" @@ -12660,7 +12690,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== @@ -12953,10 +12983,10 @@ serialize-javascript@^1.3.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== -serialize-javascript@^2.1.0, serialize-javascript@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.1.tgz#952907a04a3e3a75af7f73d92d15e233862048b2" - integrity sha512-MPLPRpD4FNqWq9tTIjYG5LesFouDhdyH0EPY3gVK4DRD5+g4aDqdNSzLIwceulo3Yj+PL1bPh6laE5+H6LTcrQ== +serialize-javascript@^2.1.1, serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== serve-index@^1.9.1: version "1.9.1" @@ -14254,9 +14284,9 @@ typedoc-plugin-no-inherit@^1.1.10: integrity sha512-BhSFAWlBTh9Bf6PSfruIqdQBM8gd/Gj8hVuRk5pVWkHu4I/SB24LzFr5gAo52ZlaQSeN72+VOkkRD6tNYl8Enw== typedoc@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.15.3.tgz#8f5a038cfc1160f70cbc57e37908653483dca689" - integrity sha512-RGX+dgnm9fyg5KHj81/ZhMiee0FfvJnjBXedhedhMWlrtM4YRv3pn8sYCWRt5TMi1Jli3/JG224pbFo3/3uaGw== + version "0.15.4" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.15.4.tgz#23f2c1e2be41af879c0f1358aeb76cd4d39d9aeb" + integrity sha512-XzrV8sM44j4nXGSKt99VOkFCPGLUH9DHGGvcgZJbvqdSG7/iR3HztNjpsLyTu1nybZLLjcClLRuWJDO3icXzYA== dependencies: "@types/minimatch" "3.0.3" fs-extra "^8.1.0" @@ -14294,9 +14324,9 @@ uglify-js@3.4.x: source-map "~0.6.1" uglify-js@^3.1.4: - version "3.7.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.1.tgz#35c7de17971a4aa7689cd2eae0a5b39bb838c0c5" - integrity sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g== + version "3.7.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.2.tgz#cb1a601e67536e9ed094a92dd1e333459643d3f9" + integrity sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA== dependencies: commander "~2.20.3" source-map "~0.6.1"