@parity/product-sdk-descriptors 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +215 -169
- package/chains/paseo-asset-hub/generated/dist/descriptors-DhUtfABq.js +25 -0
- package/chains/paseo-asset-hub/generated/dist/index.js +4 -4
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-D0TOPqAM.js +3 -0
- package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +121 -82
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-Bwy-Np0G.js +3 -0
- package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
- package/chains/paseo-individuality/generated/dist/common-types.d.ts +665 -1059
- package/chains/paseo-individuality/generated/dist/descriptors-BPDSgyWs.js +25 -0
- package/chains/paseo-individuality/generated/dist/index.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/index.js +5 -6
- package/chains/paseo-individuality/generated/dist/metadataTypes-B3fJT8lX.js +3 -0
- package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +566 -901
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CoVMbneS.js +3 -0
- package/chains/summit-asset-hub/.papi/polkadot-api.json +12 -0
- package/chains/summit-asset-hub/generated/dist/common-types.d.ts +16940 -0
- package/chains/summit-asset-hub/generated/dist/common.d.ts +1 -0
- package/chains/summit-asset-hub/generated/dist/descriptors-B8WL4bSQ.js +25 -0
- package/chains/summit-asset-hub/generated/dist/descriptors.d.ts +1 -0
- package/chains/summit-asset-hub/generated/dist/index.d.ts +10 -0
- package/chains/summit-asset-hub/generated/dist/index.js +116 -0
- package/chains/summit-asset-hub/generated/dist/metadataTypes-D0TOPqAM.js +3 -0
- package/chains/summit-asset-hub/generated/dist/metadataTypes.d.ts +2 -0
- package/chains/summit-asset-hub/generated/dist/summit_asset_hub.d.ts +16379 -0
- package/chains/summit-asset-hub/generated/dist/summit_asset_hub_metadata-Bwy-Np0G.js +3 -0
- package/chains/summit-asset-hub/generated/dist/summit_asset_hub_metadata.d.ts +2 -0
- package/chains/summit-bulletin/.papi/polkadot-api.json +12 -0
- package/chains/summit-bulletin/generated/dist/common-types.d.ts +4594 -0
- package/chains/summit-bulletin/generated/dist/common.d.ts +1 -0
- package/chains/summit-bulletin/generated/dist/descriptors-BDn18GWW.js +25 -0
- package/chains/summit-bulletin/generated/dist/descriptors.d.ts +1 -0
- package/chains/summit-bulletin/generated/dist/index.d.ts +10 -0
- package/chains/summit-bulletin/generated/dist/index.js +88 -0
- package/chains/summit-bulletin/generated/dist/metadataTypes-GA7L2eXx.js +3 -0
- package/chains/summit-bulletin/generated/dist/metadataTypes.d.ts +2 -0
- package/chains/summit-bulletin/generated/dist/summit_bulletin.d.ts +3976 -0
- package/chains/summit-bulletin/generated/dist/summit_bulletin_metadata-B9gNyCCl.js +3 -0
- package/chains/summit-bulletin/generated/dist/summit_bulletin_metadata.d.ts +2 -0
- package/chains/summit-individuality/.papi/polkadot-api.json +12 -0
- package/chains/summit-individuality/generated/dist/common-types.d.ts +11466 -0
- package/chains/summit-individuality/generated/dist/common.d.ts +1 -0
- package/chains/summit-individuality/generated/dist/descriptors-DihYusb9.js +25 -0
- package/chains/summit-individuality/generated/dist/descriptors.d.ts +1 -0
- package/chains/summit-individuality/generated/dist/index.d.ts +10 -0
- package/chains/summit-individuality/generated/dist/index.js +88 -0
- package/chains/summit-individuality/generated/dist/metadataTypes-CCylAJ0h.js +3 -0
- package/chains/summit-individuality/generated/dist/metadataTypes.d.ts +2 -0
- package/chains/summit-individuality/generated/dist/summit_individuality.d.ts +10952 -0
- package/chains/summit-individuality/generated/dist/summit_individuality_metadata-CFgPN8CP.js +3 -0
- package/chains/summit-individuality/generated/dist/summit_individuality_metadata.d.ts +2 -0
- package/package.json +13 -1
- package/chains/paseo-asset-hub/generated/dist/descriptors-CA_gMfTv.js +0 -25
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-CYGvJR-Y.js +0 -3
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-PRGpfPsz.js +0 -3
- package/chains/paseo-individuality/generated/dist/descriptors-CNt9InDi.js +0 -25
- package/chains/paseo-individuality/generated/dist/metadataTypes-WcLaeOWG.js +0 -3
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DOr2Tv6T.js +0 -3
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const binMeta = "bWV0YRA5DQAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGAGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAgQmFsYW5jZXMEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBADUAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE9yaWdpblJlc3RyaWN0aW9uLCBSdW50aW1lPgANABhBc3NldHMEANwBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRzLCBSdW50aW1lPgAOACRBc3NldFJhdGUEACkBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AEABEQ29sbGF0b3JTZWxlY3Rpb24EADEBAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBAA1AQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAEEBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAEUBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBAAZAwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAB0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAJQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEAIkDAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBACVAwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAmQMBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAIElkZW50aXR5BAClAwG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJZGVudGl0eSwgUnVudGltZT4AMgAYUGVvcGxlBABRBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZW9wbGUsIFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAGEEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1vYlJ1bGUsIFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEAGkEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb29mT2ZJbmssIFJ1bnRpbWU+ADUAEEdhbWUEAIUEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEdhbWUsIFJ1bnRpbWU+ADcAFFNjb3JlBACpBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY29yZSwgUnVudGltZT4AOAAgRHVtbXlEaW0EAM0EAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPER1bW15RGltLCBSdW50aW1lPgA7AChQZW9wbGVMaXRlBADlBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZW9wbGVMaXRlLCBSdW50aW1lPgA+ACRSZXNvdXJjZXMEAPUEAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJlc291cmNlcywgUnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQAAQUByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2h1bmtzTWFuYWdlciwgUnVudGltZT4AQAAcTWVtYmVycwQAEQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVycywgUnVudGltZT4AQwAcQ29pbmFnZQQAFQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29pbmFnZSwgUnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBABVBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzTm90aWZpZXIsIFJ1bnRpbWU+AEUAUE11bHRpQmxvY2tNaWdyYXRpb25zBABtBQHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrTWlncmF0aW9ucywgUnVudGltZT4AYgAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEsGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDwBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZRgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4oAAAFBgAsAAACMAAwAAAECBgYADQAAAIYADgAAAUFADwIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhRAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGF8AUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUgBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVQAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNYAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHQBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBPAROATgAEAEscGFyZW50X2hlYWRMASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDwBBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAEwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAUAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1QBREJUcmVlU2V0PFZlYzx1OD4+AABUBCBCVHJlZVNldAQEVAEYAAQANAAAAFgAAAJcAFwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaDwBMEhhc2g6Ok91dHB1dAABGG51bWJlcmABGE51bWJlcgABKHN0YXRlX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAARhkaWdlc3RkARhEaWdlc3QAAGAAAAY4AGQQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzaAE8VmVjPERpZ2VzdEl0ZW0+AABoAAACbABsEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHAAAAMEAAAADAB0BBhPcHRpb24EBFQBeAEIEE5vbmUAAAAQU29tZQQAeAAAAQAAeAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAHwMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzgAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOUAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGEAAgBNGZ1bGxfbWVzc2FnZXOIATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOMAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACECGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIgAAAKEAIwAAAKQAJAIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoPAE0c3BfY29yZTo6SDI1NgAAlAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZgACAE0ZnVsbF9tZXNzYWdlc6QBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6gBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJgAAAQInKAAnAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKAIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKQAAAKYAKgAAAKsAKwAAAQInJAAsAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e0ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutAAABigAuAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy68DDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZcABKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlwAEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWXAAShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlyAEQYm9vbAAEPAUBVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdGEBYW55IGxvY2tlZCwgcmVzZXJ2ZWQsIG9yIGV4aXN0ZW50aWFsIGRlcG9zaXRzICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuAKAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYWNjb3VudCB0byBiZSBraWxsZWQgKGZhbHNlKSwgb3JZASAgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQsIHdoaWNoIHdpbGwgZ3VhcmFudGVlIHRvnCAga2VlcCB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUgKHRydWUpLjxmb3JjZV91bnJlc2VydmUIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMQBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvzAFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWXAAShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbtABTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YcABKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVlwAEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmXIARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAbEAMQAAAUHAMgAAAUAAMwAAAIEANAMPHBhbGxldF9iYWxhbmNlcxR0eXBlc0xBZGp1c3RtZW50RGlyZWN0aW9uAAEIIEluY3JlYXNlAAAAIERlY3JlYXNlAAEAANQMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHnYAUxUOjpSZXN0cmljdGVkRW50aXR5AAEISQFBbGxvdyB0byBjbGVhbiB1c2FnZSBhc3NvY2lhdGVkIHdpdGggYW4gZW50aXR5IHdoZW4gaXQgaXMgemVybyBvciB3aGVuIHRoZXJlIGlzIG5vkGxvbmdlciBhbnkgYWxsb3dhbmNlIGZvciB0aGUgb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7YCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lQFJlc3RyaWN0ZWRFbnRpdHkAARg0UGVyc29uYWxBbGlhcwQACAEUQWxpYXMAAABAUGVyc29uYWxJZGVudGl0eQQAKAEMdTY0AAEARFJlZmVycmVkQ2FuZGlkYXRlBAAEASRBY2NvdW50SWQAAgBIQWNjb3VudFBhcnRpY2lwYW50BAAEASRBY2NvdW50SWQAAwBASW52aXRlZENhbmRpZGF0ZQQABAEkQWNjb3VudElkAAQAKExpdGVQZXJzb24EAAQBJEFjY291bnRJZAAFAADcDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZcQBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnTIARBib29sAAEsbWluX2JhbGFuY2XAAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnTAAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnTAAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnTAAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW7IARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2XAAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudMgBEGJvb2wAASRpc19mcm96ZW7IARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybsgBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZcQBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlyAEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzHQEByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7gECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LkASRKdW5jdGlvbnMAAOQQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA6AFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAABAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAFAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAJAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAANAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAARAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAVAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAZAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAOgAAAMBAAAA7ADsECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvwAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BADAARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT4ARhCb2R5SWQAARBwYXJ0/AEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAD0ASROZXR3b3JrSWQACQAA8AQYT3B0aW9uBARUAfQBCBBOb25lAAAAEFNvbWUEAPQAAAEAAPQQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uJE5ldHdvcmtJZAABICRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAPgQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAPwQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAAEBAAADAgAAAOwABQEAAAMDAAAA7AAJAQAAAwQAAADsAA0BAAADBQAAAOwAEQEAAAMGAAAA7AAVAQAAAwcAAADsABkBAAADCAAAAOwAHQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEhAQRTAAAEACUBARhWZWM8VD4AACEBDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2ZeABIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxlyAEQYm9vbAAAJQEAAAIhAQApAQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0EENhbGwEBFQAAQwYY3JlYXRlCAEoYXNzZXRfa2luZOABREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZS0BASRGaXhlZFUxMjgAABANAUluaXRpYWxpemUgYSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHVwZGF0ZQgBKGFzc2V0X2tpbmTgAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUtAQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZOABREJveDxUOjpBc3NldEtpbmQ+AAIQJQFSZW1vdmUgYW4gZXhpc3RpbmcgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKQQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4tAQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCRGaXhlZFUxMjgAAAQAxAEQdTEyOAAAMQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXfMAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmTEATBCYWxhbmNlT2Y8VD4AAhx4U2V0IHRoZSBjYW5kaWRhY3kgYm9uZCBhbW91bnQuAFEBSWYgdGhlIGNhbmRpZGFjeSBib25kIGlzIGluY3JlYXNlZCBieSB0aGlzIGNhbGwsIGFsbCBjdXJyZW50IGNhbmRpZGF0ZXMgd2hpY2ggaGF2ZSBhTQFkZXBvc2l0IGxvd2VyIHRoYW4gdGhlIG5ldyBib25kIHdpbGwgYmUga2lja2VkIGZyb20gdGhlIGxpc3QgYW5kIGdldCB0aGVpciBkZXBvc2l0cxRiYWNrLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLlRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAxBBAVJlZ2lzdGVyIHRoaXMgYWNjb3VudCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gVGhlIGFjY291bnQgbXVzdCAoYSkgYWxyZWFkeSBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cyBhbmQgKGIpIGJlIGFibGUgdG8gcmVzZXJ2ZSB0aGUgYENhbmRpZGFjeUJvbmRgLgDcVGhpcyBjYWxsIGlzIG5vdCBhdmFpbGFibGUgdG8gYEludnVsbmVyYWJsZWAgY29sbGF0b3JzLjBsZWF2ZV9pbnRlbnQABBRVAURlcmVnaXN0ZXIgYG9yaWdpbmAgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIE5vdGUgdGhhdCB0aGUgY29sbGF0b3IgY2FuIG9ubHkgbGVhdmUgb24NAXNlc3Npb24gY2hhbmdlLiBUaGUgYENhbmRpZGFjeUJvbmRgIHdpbGwgYmUgdW5yZXNlcnZlZCBpbW1lZGlhdGVseS4AGQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSB0b3RhbCBudW1iZXIgb2YgY2FuZGlkYXRlcyB3b3VsZCBkcm9wIGJlbG93XGBNaW5FbGlnaWJsZUNvbGxhdG9yc2AuQGFkZF9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABRBFAUFkZCBhIG5ldyBhY2NvdW50IGB3aG9gIHRvIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGB3aG9gIG11c3QgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuIElmIGB3aG9gIGlzIGEgY2FuZGlkYXRlLCB0aGV5IHdpbGwgYmUgcmVtb3ZlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5McmVtb3ZlX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAGEGEBUmVtb3ZlIGFuIGFjY291bnQgYHdob2AgZnJvbSB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgSW52dWxuZXJhYmxlc2AgbXVzdChiZSBzb3J0ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuLHVwZGF0ZV9ib25kBAEsbmV3X2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuNQEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5czkBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAs5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLgAdAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgABAS0gYG9yaWdpbmA6IFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC5VAS0gYGtleXNgOiBUaGUgbmV3IHNlc3Npb24ga2V5cyB0byBzZXQuIFRoZXNlIGFyZSB0aGUgcHVibGljIGtleXMgb2YgYWxsIHNlc3Npb25zIGtleXNcICBzZXR1cCBpbiB0aGUgcnVudGltZS5BAS0gYHByb29mYDogVGhlIHByb29mIHRoYXQgYG9yaWdpbmAgaGFzIGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBrZXlzIG9mIGBrZXlzYC4gU2VlTQEgIFtgaW1wbF9vcGFxdWVfa2V5c2BdKHNwX3J1bnRpbWU6OmltcGxfb3BhcXVlX2tleXMpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZTwgIHByb29mIGZvcm1hdC4ocHVyZ2Vfa2V5cwABIMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy45AQhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYT0BAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAA9ARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAABBAQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZZUBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeUkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz2QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZd0CAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h01QEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9u4AE0Qm94PExvY2F0aW9uPgABHHZlcnNpb244AShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbgkDAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uSQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbkkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeUkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz2QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeUkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRz2QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkyAEQYm9vbAAKEPRTZXQgb3IgdW5zZXQgdGhlIGdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u0C0gYHN1c3BlbmRlZGA6IGB0cnVlYCB0byBzdXNwZW5kLCBgZmFsc2VgIHRvIHJlc3VtZS48dHJhbnNmZXJfYXNzZXRzFAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAuEXQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCzQZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUsIG9yIHRocm91Z2ggdGVsZXBvcnRzLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZjUBaW5kZXggYGZlZV9hc3NldF9pdGVtYCAoaGVuY2UgcmVmZXJyZWQgdG8gYXMgYGZlZXNgKSwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3JBAWB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHQgaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhl3G9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AYQFgYXNzZXRzYCAoZXhjbHVkaW5nIGBmZWVzYCkgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBvdGhlcndpc2UgYmUgdGVsZXBvcnRhYmxlsHRvIGBkZXN0YCwgbm8gbGltaXRhdGlvbnMgaW1wb3NlZCBvbiBgZmVlc2AuTQEgLSBmb3IgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uIGNoYWluIGFuZE0BICAgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG9EICAgYGJlbmVmaWNpYXJ5YC5hASAtIGZvciBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0byBgZGVzdGAgY2hhaW5ZASAgIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmQgZGVwb3NpdCB0aGVtUCAgIHRvIGBiZW5lZmljaWFyeWAuXQEgLSBmb3IgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXNdASAgIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGAgdG8gbWludNQgICBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlEBIC0gZm9yIHRlbGVwb3J0czogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0byBtaW50L3RlbGVwb3J0sCAgIGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4tAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgWDIoUGFyZW50LFUBICBQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBYMShQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZGggIGZyb20gcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLjBjbGFpbV9hc3NldHMIARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AASxiZW5lZmljaWFyeUkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAwYVQFDbGFpbXMgYXNzZXRzIHRyYXBwZWQgb24gdGhpcyBwYWxsZXQgYmVjYXVzZSBvZiBsZWZ0b3ZlciBhc3NldHMgZHVyaW5nIFhDTSBleGVjdXRpb24uAKwtIGBvcmlnaW5gOiBBbnlvbmUgY2FuIGNhbGwgdGhpcyBleHRyaW5zaWMuXQEtIGBhc3NldHNgOiBUaGUgZXhhY3QgYXNzZXRzIHRoYXQgd2VyZSB0cmFwcGVkLiBVc2UgdGhlIHZlcnNpb24gdG8gc3BlY2lmeSB3aGF0IHZlcnNpb26Yd2FzIHRoZSBsYXRlc3Qgd2hlbiB0aGV5IHdlcmUgdHJhcHBlZC5FAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGxvY2F0aW9uL2FjY291bnQgd2hlcmUgdGhlIGNsYWltZWQgYXNzZXRzIHdpbGwgYmUgZGVwb3NpdGVkLox0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbhwBEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABUGFzc2V0c190cmFuc2Zlcl90eXBlDQMBREJveDxUcmFuc2ZlclR5cGU+AAE4cmVtb3RlX2ZlZXNfaWQRAwFUQm94PFZlcnNpb25lZEFzc2V0SWQ+AAFIZmVlc190cmFuc2Zlcl90eXBlDQMBREJveDxUcmFuc2ZlclR5cGU+AAFIY3VzdG9tX3hjbV9vbl9kZXN0lQEBVEJveDxWZXJzaW9uZWRYY208KCk+PgABMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAANwFUBVHJhbnNmZXIgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB1c2luZyBleHBsaWNpdCB0cmFuc2Zlcmh0eXBlcyBmb3IgYXNzZXRzIGFuZCBmZWVzLgBZAWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3IgbWF5IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuIENhbGxlciBtdXN07HByb3ZpZGUgdGhlIGBhc3NldHNfdHJhbnNmZXJfdHlwZWAgdG8gYmUgdXNlZCBmb3IgYGFzc2V0c2A6UQEgLSBgVHJhbnNmZXJUeXBlOjpMb2NhbFJlc2VydmVgOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6RGVzdGluYXRpb25SZXNlcnZlYDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6UmVtb3RlUmVzZXJ2ZShyZXNlcnZlKWA6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byBgcmVzZXJ2ZWBhASAgIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXJVASAgIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLiBUeXBpY2FsbHmUICAgdGhlIHJlbW90ZSBgcmVzZXJ2ZWAgaXMgQXNzZXQgSHViLkUBIC0gYFRyYW5zZmVyVHlwZTo6VGVsZXBvcnRgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRv6CAgIG1pbnQvdGVsZXBvcnQgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AVQFPbiB0aGUgZGVzdGluYXRpb24gY2hhaW4sIGFzIHdlbGwgYXMgYW55IGludGVybWVkaWFyeSBob3BzLCBgQnV5RXhlY3V0aW9uYCBpcyB1c2VkIHRvIQFidXkgZXhlY3V0aW9uIHVzaW5nIHRyYW5zZmVycmVkIGBhc3NldHNgIGlkZW50aWZpZWQgYnkgYHJlbW90ZV9mZWVzX2lkYC5ZAU1ha2Ugc3VyZSBlbm91Z2ggb2YgdGhlIHNwZWNpZmllZCBgcmVtb3RlX2ZlZXNfaWRgIGFzc2V0IGlzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiBsaXN0YQFvZiBgYXNzZXRzYC4gYHJlbW90ZV9mZWVzX2lkYCBzaG91bGQgYmUgZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBFAWByZW1vdGVfZmVlc19pZGAgbWF5IHVzZSBkaWZmZXJlbnQgdHJhbnNmZXIgdHlwZSB0aGFuIHJlc3Qgb2YgYGFzc2V0c2AgYW5kIGNhbiBiZZxzcGVjaWZpZWQgdGhyb3VnaCBgZmVlc190cmFuc2Zlcl90eXBlYC4AYQFUaGUgY2FsbGVyIG5lZWRzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSB0cmFuc2ZlcnJlZCBhc3NldHMgb25jZSB0aGV5IHJlYWNoQQF0aGUgYGRlc3RgIGNoYWluLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCB0aGUgYGN1c3RvbV94Y21fb25fZGVzdGAgcGFyYW1ldGVyLCB3aGljaPxjb250YWlucyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGV4ZWN1dGUgb24gYGRlc3RgIGFzIGEgZmluYWwgc3RlcC58ICBUaGlzIGlzIHVzdWFsbHkgYXMgc2ltcGxlIGFzOlEBICBgWGNtKHZlYyFbRGVwb3NpdEFzc2V0IHsgYXNzZXRzOiBXaWxkKEFsbENvdW50ZWQoYXNzZXRzLmxlbigpKSksIGJlbmVmaWNpYXJ5IH1dKWAsMQEgIGJ1dCBjb3VsZCBiZSBzb21ldGhpbmcgbW9yZSBleG90aWMgbGlrZSBzZW5kaW5nIHRoZSBgYXNzZXRzYCBldmVuIGZ1cnRoZXIuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb209ASAgcmVsYXkgdG8gcGFyYWNoYWluLCBvciBgKHBhcmVudHM6IDIsIChHbG9iYWxDb25zZW5zdXMoLi4pLCAuLikpYCB0byBzZW5kIGZyb230ICBwYXJhY2hhaW4gYWNyb3NzIGEgYnJpZGdlIHRvIGFub3RoZXIgZWNvc3lzdGVtIGRlc3RpbmF0aW9uLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy49AS0gYGFzc2V0c190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgYXNzZXRzYC4hAS0gYHJlbW90ZV9mZWVzX2lkYDogT25lIG9mIHRoZSBpbmNsdWRlZCBgYXNzZXRzYCB0byBiZSB1c2VkIHRvIHBheSBmZWVzLkkBLSBgZmVlc190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgZmVlc2AgYXNzZXRzLlkBLSBgY3VzdG9tX3hjbV9vbl9kZXN0YDogVGhlIFhDTSB0byBiZSBleGVjdXRlZCBvbiBgZGVzdGAgY2hhaW4gYXMgdGhlIGxhc3Qgc3RlcCBvZiB0aGVZASAgdHJhbnNmZXIsIHdoaWNoIGFsc28gZGV0ZXJtaW5lcyB3aGF0IGhhcHBlbnMgdG8gdGhlIGFzc2V0cyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5QYWRkX2F1dGhvcml6ZWRfYWxpYXMIARxhbGlhc2VySQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARxleHBpcmVzFQMBLE9wdGlvbjx1NjQ+AA4sXQFBdXRob3JpemUgYW5vdGhlciBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC4pAVRoZSBgYWxpYXNlcmAgaXMgb25seSBhdXRob3JpemVkIHVudGlsIHRoZSBwcm92aWRlZCBgZXhwaXJ5YCBibG9jayBudW1iZXIuSQFUaGUgY2FsbCBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBhbGlhcyBpbiBvcmRlciB0byB1cGRhdGUgaXRzWGBleHBpcnlgIGJsb2NrIG51bWJlci4AUQFVc3VhbGx5IHVzZWZ1bCB0byBhbGxvdyB5b3VyIGxvY2FsIGFjY291bnQgdG8gYmUgYWxpYXNlZCBpbnRvIGZyb20gYSByZW1vdGUgbG9jYXRpb270YWxzbyB1bmRlciB5b3VyIGNvbnRyb2wgKGxpa2UgeW91ciBhY2NvdW50IG9uIGFub3RoZXIgY2hhaW4pLgBRAVdBUk5JTkc6IG1ha2Ugc3VyZSB0aGUgY2FsbGVyIGBvcmlnaW5gICh5b3UpIHRydXN0cyB0aGUgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFjdCBpblkBdGhlaXIveW91ciBuYW1lLiBPbmNlIGF1dGhvcml6ZWQgdXNpbmcgdGhpcyBjYWxsLCB0aGUgYGFsaWFzZXJgIGNhbiBmcmVlbHkgaW1wZXJzb25hdGXUYG9yaWdpbmAgaW4gWENNIHByb2dyYW1zIGV4ZWN1dGVkIG9uIHRoZSBsb2NhbCBjaGFpbi5ccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMEARxhbGlhc2VySQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADwhdAVJlbW92ZSBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmAgZnJvbSB0aGUgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBjYW4gYWxpYXMgaW50b5B0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC50cmVtb3ZlX2FsbF9hdXRob3JpemVkX2FsaWFzZXMAEAhJAVJlbW92ZSBhbGwgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYHMgdGhhdCBjYW4gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmBEbWFraW5nIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMwQATQEBRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BABhAQEwdjQ6OkxvY2F0aW9uAAQACFY1BADgATB2NTo6TG9jYXRpb24ABQAATQEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3JRAQEkSnVuY3Rpb25zAABRARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAVQEBIEp1bmN0aW9uAAEACFgyCABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgACAAhYMwwAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgADAAhYNBAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAAQACFg1FABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAFAAhYNhgAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAGAAhYNxwAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAAcACFg4IABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAIAABVARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya1kBAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3JrWQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya1kBAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAMABEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZPgBGEJvZHlJZAABEHBhcnT8ASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAF0BASROZXR3b3JrSWQACQAAWQEEGE9wdGlvbgQEVAFdAQEIEE5vbmUAAAAQU29tZQQAXQEAAAEAAF0BEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAGEBECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3JlAQEkSnVuY3Rpb25zAABlARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBABpAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAB5AQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAB9AQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACBAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BACFAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BACJAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BACNAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BACRAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAGkBAAADAQAAAG0BAG0BECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmtxAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya3EBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmtxAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BADAARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT4ARhCb2R5SWQAARBwYXJ0/AEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAB1AQEkTmV0d29ya0lkAAkAAHEBBBhPcHRpb24EBFQBdQEBCBBOb25lAAAAEFNvbWUEAHUBAAABAAB1ARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAHkBAAADAgAAAG0BAH0BAAADAwAAAG0BAIEBAAADBAAAAG0BAIUBAAADBQAAAG0BAIkBAAADBgAAAG0BAI0BAAADBwAAAG0BAJEBAAADCAAAAG0BAJUBCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAmQEBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAARAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAF0CAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAACZAQwMeGNtCHYzDFhjbQQQQ2FsbAAABACdAQFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAnQEAAAKhAQChAQwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAKUBASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAKUBASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAClAQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlxQEBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVy8QEBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzpQEBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnlNAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmT1AQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3TVAQEYV2VpZ2h0AAEQY2FsbPkBAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAFEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAP0BAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5TQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwECAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdE0BATRNdWx0aUxvY2F0aW9uAAEMeGNtmQEBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUBAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnSlAQEsTXVsdGlBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cwECAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZU0BATRNdWx0aUxvY2F0aW9uAAEMeGNtmQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwECAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdE0BATRNdWx0aUxvY2F0aW9uAAEMeGNtmQEBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm/9AQFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzrQEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJkBASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJkBASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzpQEBLE11bHRpQXNzZXRzAAEYdGlja2V0TQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h01QEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAClAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAKUBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAPEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAMkBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQA6QEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb/0BAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAP0BAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAVQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrXQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uUQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0rQEBKE11bHRpQXNzZXQAASB1bmxvY2tlck0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXStAQEoTXVsdGlBc3NldAABGHRhcmdldE0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXStAQEoTXVsdGlBc3NldAABFG93bmVyTQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARhsb2NrZXJNAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd8gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAE0BATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbvEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAApQEQDHhjbQh2MyhtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEAKkBATxWZWM8TXVsdGlBc3NldD4AAKkBAAACrQEArQEQDHhjbQh2MyhtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlksQEBHEFzc2V0SWQAAQxmdW61AQEsRnVuZ2liaWxpdHkAALEBEAx4Y20IdjMobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBABNAQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQACAEgW3U4OyAzMl0AAQAAtQEQDHhjbQh2MyhtdWx0aWFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBADAARB1MTI4AAAALE5vbkZ1bmdpYmxlBAC5AQE0QXNzZXRJbnN0YW5jZQABAAC5ARAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAMABEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAvQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAwQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAL0BAAADCAAAAAwAwQEAAAMQAAAADADFAQwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAClAQEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EANkBAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQA6QEBOE1heWJlRXJyb3JDb2RlAAUAAMkBBBhPcHRpb24EBFQBzQEBCBBOb25lAAAAEFNvbWUEAM0BAAABAADNAQAABAg40QEA0QEQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBADVAQEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAADVAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAANkBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB3QEEUwAABADlAQEYVmVjPFQ+AADdAQwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZeEBAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l4QEBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADhAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOUBAAAC3QEA6QEMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBADtAQGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAO0BAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAADtAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAPEBBBhPcHRpb24EBFQBTQEBCBBOb25lAAAAEFNvbWUEAE0BAAABAAD1AQwMeGNtCHYzKE9yaWdpbktpbmQAARAYTmF0aXZlAAAAQFNvdmVyZWlnbkFjY291bnQAAQAkU3VwZXJ1c2VyAAIADFhjbQADAAD5AQwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AAD9AQwMeGNtCHYzRFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbk0BATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodNUBARhXZWlnaHQAAAECEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAClAQEsTXVsdGlBc3NldHMAAAAQV2lsZAQABQIBOFdpbGRNdWx0aUFzc2V0AAEAAAUCEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZLEBARxBc3NldElkAAEMZnVuCQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWSxAQEcQXNzZXRJZAABDGZ1bgkCATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAAJAhAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAA0CDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEANUBARhXZWlnaHQAAQAAEQIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAAVAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAFQIAAAIZAgAZAgwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAHQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAB0CARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAHQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2U1AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h01QEBGFdlaWdodAABHHF1ZXJpZXJJAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzHQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5YQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzHQIBGEFzc2V0cwABEGRlc3RhAQEgTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N01QEBGFdlaWdodAABEGNhbGz5AQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABlAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQATQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1ECASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5YQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVRAgEsQXNzZXRGaWx0ZXIAARB3YW50HQIBGEFzc2V0cwABHG1heGltYWzIARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZWEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9NAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcyUCARRBc3NldAABMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAEQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAEQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHMdAgEYQXNzZXRzAAEYdGlja2V0YQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAHQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAHQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAEkCAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9NAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABNAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAG0BASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya3UBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbmUBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQlAgEUQXNzZXQAASB1bmxvY2tlcmEBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0JQIBFEFzc2V0AAEYdGFyZ2V0YQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQlAgEUQXNzZXQAARRvd25lcmEBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQlAgEUQXNzZXQAARhsb2NrZXJhAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABhAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luSQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAHQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABAAhAgEoVmVjPEFzc2V0PgAAIQIAAAIlAgAlAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkKQIBHEFzc2V0SWQAAQxmdW4tAgEsRnVuZ2liaWxpdHkAACkCECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAGEBASBMb2NhdGlvbgAALQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBADAARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAxAgE0QXNzZXRJbnN0YW5jZQABAAAxAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAMABEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAvQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAwQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAADUCDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAHQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAMkBAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAOQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BADpAQE4TWF5YmVFcnJvckNvZGUABQAAOQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE9AgRTAAAEAEUCARhWZWM8VD4AAD0CDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWVBAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZUECAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAQQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFAgAAAj0CAEkCBBhPcHRpb24EBFQBYQEBCBBOb25lAAAAEFNvbWUEAGEBAAABAABNAgwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uYQEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodNUBARhXZWlnaHQAAFECECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAHQIBGEFzc2V0cwAAABBXaWxkBABVAgEkV2lsZEFzc2V0AAEAAFUCECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWQpAgEcQXNzZXRJZAABDGZ1blkCATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkKQIBHEFzc2V0SWQAAQxmdW5ZAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAWQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABdAgwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAGECAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AABhAgAAAmUCAGUCDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BABpAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAaQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABpAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZYECASBSZXNwb25zZQABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAEccXVlcmllcqECAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNpAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c2kCARhBc3NldHMAARBkZXN04AEgTG9jYXRpb24AAQx4Y21dAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h0pQIBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbPkBAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAOQBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAKkCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOtAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHOtAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y21dAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2Za0CASxBc3NldEZpbHRlcgABEHdhbnRpAgEYQXNzZXRzAAEcbWF4aW1hbMgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOtAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl4AEgTG9jYXRpb24AAQx4Y21dAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+pAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHOtAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc3ECARRBc3NldAABMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAXQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAXQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNpAgEYQXNzZXRzAAEYdGlja2V04AEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h01QEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABpAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BABpAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAoQIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQA6QEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb6kCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAKkCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA7AEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv0ASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbuQBQEludGVyaW9yTG9jYXRpb24AAQx4Y21dAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldHECARRBc3NldAABIHVubG9ja2Vy4AEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldHECARRBc3NldAABGHRhcmdldOABIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRxAgEUQXNzZXQAARRvd25lcuABIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldHECARRBc3NldAABGGxvY2tlcuABIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3yAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luoQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0cQIBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEscmVtb3RlX2ZlZXO5AgFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luyAEQYm9vbAABGGFzc2V0c8ECAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y21dAgEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2luyQIBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbV0CASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c80CAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAAaQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0GEFzc2V0cwAABABtAgEoVmVjPEFzc2V0PgAAbQIAAAJxAgBxAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQUQXNzZXQAAAgBCGlkdQIBHEFzc2V0SWQAAQxmdW55AgEsRnVuZ2liaWxpdHkAAHUCECxzdGFnaW5nX3hjbQh2NRRhc3NldBxBc3NldElkAAAEAOABIExvY2F0aW9uAAB5AhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAMABEHUxMjgAAAAsTm9uRnVuZ2libGUEAH0CATRBc3NldEluc3RhbmNlAAEAAH0CECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAwAEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BAC9AQEcW3U4OyA4XQADABxBcnJheTE2BADBAQEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAgQIMLHN0YWdpbmdfeGNtCHY1IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBABpAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBACRAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAOkBAThNYXliZUVycm9yQ29kZQAFAACFAgQYT3B0aW9uBARUAYkCAQgQTm9uZQAAABBTb21lBACJAgAAAQAAiQIAAAQIOI0CAI0CEAx4Y20IdjUYdHJhaXRzFEVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkBADVAQEYV2VpZ2h0ACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAACRAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZUCBFMAAAQAnQIBGFZlYzxUPgAAlQIMLHN0YWdpbmdfeGNtCHY1KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZZkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lmQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAACZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAJ0CAAAClQIAoQIEGE9wdGlvbgQEVAHgAQgQTm9uZQAAABBTb21lBADgAAABAAClAgQYT3B0aW9uBARUAdUBAQgQTm9uZQAAABBTb21lBADVAQAAAQAAqQIMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodNUBARhXZWlnaHQAAK0CECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAaQIBGEFzc2V0cwAAABBXaWxkBACxAgEkV2lsZEFzc2V0AAEAALECECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWR1AgEcQXNzZXRJZAABDGZ1brUCATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkdQIBHEFzc2V0SWQAAQxmdW61AgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAtQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAC5AgQYT3B0aW9uBARUAb0CAQgQTm9uZQAAABBTb21lBAC9AgAAAQAAvQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEAK0CASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQArQIBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQArQIBLEFzc2V0RmlsdGVyAAIAAMECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBvQIEUwAABADFAgEYVmVjPFQ+AADFAgAAAr0CAMkCBBhPcHRpb24EBFQB5AEIEE5vbmUAAAAQU29tZQQA5AAAAQAAzQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRAgRTAAAEANUCARhWZWM8VD4AANECDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9u4AEgTG9jYXRpb24AAAAA1QIAAALRAgDZAggMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQApQEBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQAHQIBKHY0OjpBc3NldHMABAAIVjUEAGkCASh2NTo6QXNzZXRzAAUAAN0CCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQA4QIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BADxAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAP0CAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAADhAgwMeGNtCHYzDFhjbQQQQ2FsbAAABADlAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAA5QIAAALpAgDpAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAKUBASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAKUBASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAClAQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlxQEBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVy8QEBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzpQEBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnlNAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmT1AQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3TVAQEYV2VpZ2h0AAEQY2FsbO0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAFEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAP0BAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5TQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwECAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdE0BATRNdWx0aUxvY2F0aW9uAAEMeGNtmQEBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUBAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnSlAQEsTXVsdGlBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cwECAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZU0BATRNdWx0aUxvY2F0aW9uAAEMeGNtmQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwECAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdE0BATRNdWx0aUxvY2F0aW9uAAEMeGNtmQEBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm/9AQFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzrQEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAOECASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAOECASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzpQEBLE11bHRpQXNzZXRzAAEYdGlja2V0TQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h01QEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAClAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAKUBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAPEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAMkBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQA6QEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb/0BAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAP0BAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAVQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrXQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uUQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0rQEBKE11bHRpQXNzZXQAASB1bmxvY2tlck0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXStAQEoTXVsdGlBc3NldAABGHRhcmdldE0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXStAQEoTXVsdGlBc3NldAABFG93bmVyTQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARhsb2NrZXJNAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd8gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAE0BATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbvEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAA7QIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAA8QIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAD1AgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAA9QIAAAL5AgD5Agwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAHQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAB0CARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAHQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2U1AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h01QEBGFdlaWdodAABHHF1ZXJpZXJJAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzHQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5YQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzHQIBGEFzc2V0cwABEGRlc3RhAQEgTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N01QEBGFdlaWdodAABEGNhbGztAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABlAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQATQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1ECASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5YQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVRAgEsQXNzZXRGaWx0ZXIAARB3YW50HQIBGEFzc2V0cwABHG1heGltYWzIARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZWEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9NAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcyUCARRBc3NldAABMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA8QIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA8QIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHMdAgEYQXNzZXRzAAEYdGlja2V0YQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAHQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAHQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAEkCAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9NAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABNAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAG0BASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya3UBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbmUBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQlAgEUQXNzZXQAASB1bmxvY2tlcmEBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0JQIBFEFzc2V0AAEYdGFyZ2V0YQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQlAgEUQXNzZXQAARRvd25lcmEBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQlAgEUQXNzZXQAARhsb2NrZXJhAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABhAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luSQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAA/QIMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAABAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAAQMAAAIFAwAFAwwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAaQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAGkCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAaQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h01QEBGFdlaWdodAABHHF1ZXJpZXKhAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzaQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNpAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodKUCAThPcHRpb248V2VpZ2h0PgABEGNhbGztAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACpAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWtAgEsQXNzZXRGaWx0ZXIAARB3YW50aQIBGEFzc2V0cwABHG1heGltYWzIARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNxAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAP0CASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAP0CASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzaQIBGEFzc2V0cwABGHRpY2tldOABIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAaQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAaQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+pAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACpAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAOwBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr9AEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27kAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRxAgEUQXNzZXQAASB1bmxvY2tlcuABIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRxAgEUQXNzZXQAARh0YXJnZXTgASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0cQIBFEFzc2V0AAEUb3duZXLgASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRxAgEUQXNzZXQAARhsb2NrZXLgASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd8gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOABIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqECAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldHECARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzuQIBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbsgBEGJvb2wAARhhc3NldHPBAgHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtXQIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbskCAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y239AgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHPNAgGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAAkDBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAADQMQUHN0YWdpbmdfeGNtX2V4ZWN1dG9yGHRyYWl0czhhc3NldF90cmFuc2ZlcjBUcmFuc2ZlclR5cGUAARAgVGVsZXBvcnQAAAAwTG9jYWxSZXNlcnZlAAEASERlc3RpbmF0aW9uUmVzZXJ2ZQACADRSZW1vdGVSZXNlcnZlBABJAQFEVmVyc2lvbmVkTG9jYXRpb24AAwAAEQMIDHhjbUBWZXJzaW9uZWRBc3NldElkAAEMCFYzBACxAQEsdjM6OkFzc2V0SWQAAwAIVjQEACkCASx2NDo6QXNzZXRJZAAEAAhWNQQAdQIBLHY1OjpBc3NldElkAAUAABUDBBhPcHRpb24EBFQBKAEIEE5vbmUAAAAQU29tZQQAKAAAAQAAGQMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4dAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbiEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl01QEBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4hAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACcARhQYXJhSWQAAgAAJQMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHMpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXgtAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHMpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2luMQMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxscykDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHTVAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbjEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pAwAAAiAALQMAAAUEADEDCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lME9yaWdpbkNhbGxlcgABLBhzeXN0ZW0EADUDAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAACxQb2xrYWRvdFhjbQQAOQMBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAA9AwFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAYUGVvcGxlBABBAwFsaW5kaXZfcGFsbGV0X3Blb3BsZTo6T3JpZ2luADMAKFByb29mT2ZJbmsEAE0DAahpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpPcmlnaW48UnVudGltZT4ANQAQR2FtZQQAUQMBiGluZGl2X3BhbGxldF9nYW1lOjpPcmlnaW48UnVudGltZT4ANwAUU2NvcmUEAFUDAYxpbmRpdl9wYWxsZXRfc2NvcmU6Ok9yaWdpbjxSdW50aW1lPgA4AChQZW9wbGVMaXRlBABZAwGkaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpPcmlnaW48UnVudGltZT4APgAkUmVzb3VyY2VzBABdAwF4aW5kaXZfcGFsbGV0X3Jlc291cmNlczo6T3JpZ2luAD8AHE1lbWJlcnMEAGUDAZRpbmRpdl9wYWxsZXRfbWVtYmVyczo6T3JpZ2luPFJ1bnRpbWU+AEMAHENvaW5hZ2UEAG0DAZRpbmRpdl9wYWxsZXRfY29pbmFnZTo6T3JpZ2luPFJ1bnRpbWU+AEQAADUDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAAA5AwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQA4AEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAOABIExvY2F0aW9uAAEAAD0DDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBACcARhQYXJhSWQAAQAAQQMMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0GE9yaWdpbgABCEBQZXJzb25hbElkZW50aXR5BAAoAShQZXJzb25hbElkAAAANFBlcnNvbmFsQWxpYXMEAEUDAVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAEAAEUDEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5WFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAAwBIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYUkDATxDb250ZXh0dWFsQWxpYXMAAEkDEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5PENvbnRleHR1YWxBbGlhcwAACAEUYWxpYXMIARRBbGlhcwABHGNvbnRleHQIARxDb250ZXh0AABNAwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQYT3JpZ2luBARUAAEMWEF1dGhvcml6ZWRBcHBseVdpdGhTaWcEAAQBMFQ6OkFjY291bnRJZAAAAERSZWZlcnJlZENhbmRpZGF0ZQQABAEwVDo6QWNjb3VudElkAAEAQEludml0ZWRDYW5kaWRhdGUEAAQBMFQ6OkFjY291bnRJZAACAABRAwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0GE9yaWdpbgQEVAABBBxJbnZpdGVkBAAEATBUOjpBY2NvdW50SWQAAAAAVQMMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQYT3JpZ2luBARUAAEESEFjY291bnRQYXJ0aWNpcGFudAQABAEwVDo6QWNjb3VudElkAAAAAFkDDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0GE9yaWdpbgQEVAABCChMaXRlUGVyc29uBAAEATBUOjpBY2NvdW50SWQAAAAkTGl0ZUFsaWFzBABFAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwABAABdAwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQYT3JpZ2luAAEMSEZyaWVuZFJlcXVlc3RBbGlhcwQACAEUQWxpYXMAAAA4U3RtdFN0b3JlQWxpYXMEAAgBFEFsaWFzAAEAUExvbmdUZXJtU3RvcmFnZUNsYWltCAAIARRBbGlhcwAAYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAIAAGEDDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChMaXRlUGVvcGxlAAEAAGUDDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQYT3JpZ2luBARUAWkDAQgsTWVtYmVyQWxpYXMIAAgBKElkZW50aWZpZXIAAEUDAVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAAALFNlbGZJbmNsdWRlBAAIASxNZW1iZXJPZjxUPgABAABpAwhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZRxSdW50aW1lAAAAAG0DDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQYT3JpZ2luBARUAWkDAQwQQ29pbggBHGNvaW5faWQEATBUOjpBY2NvdW50SWQAARBjb2lucQMBEENvaW4AAAAsVW5sb2FkVG9rZW4MATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABKHByb3Zlbl9tc2cIASBbdTg7IDMyXQABDGZlZYUDASRVbmxvYWRGZWUAAQBYSW5mYWxsaWJsZVVucGFpZFNpZ25lZAQBDHdobwQBMFQ6OkFjY291bnRJZAACAABxAwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0EENvaW4AAAgBFHZhbHVldQMBJENvaW5WYWx1ZQABDGFnZS0DAQx1MTYAAHUDAAAFCQB5AwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAX0DBFMAAAQAgQMBGFZlYzxUPgAAfQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACBAwAAAn0DAIUDDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQkVW5sb2FkRmVlAAEIHFByZXBhaWQAAAAoRnJvbU91dHB1dAgBSGZlZV9yZWN5Y2xlcl92YWx1ZXUDASRDb2luVmFsdWUAAUhmZWVfcmVjeWNsZXJfaW5kZXg4ASRSaW5nSW5kZXgAAQAAiQMMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzzAFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGQtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXPMAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludI0DAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAGoVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAD0BKipJZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzIG1ldCAoaW5jbHVkaW5nIHRoZSBzZW5kZXIncyBhcHByb3ZhbCksIHRoaXMgd2lsbEUBaW1tZWRpYXRlbHkgZXhlY3V0ZSB0aGUgY2FsbC4qKiBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBleGVjdXRlIGEgbXVsdGlzaWcgY2FsbCAtwGBhcHByb3ZlX2FzX211bHRpYCB3aWxsIG5ldmVyIHRyaWdnZXIgZXhlY3V0aW9uLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgBNAU5PVEU6IEZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIChub3QgdGhlIGZpbmFsIGFwcHJvdmFsKSwgeW91IHNob3VsZCBnZW5lcmFsbHkgdXNlRQFgYXBwcm92ZV9hc19tdWx0aWAgaW5zdGVhZCwgc2luY2UgaXQgb25seSByZXF1aXJlcyBhIGhhc2ggb2YgdGhlIGNhbGwgYW5kIGlzIG1vcmUoZWZmaWNpZW50LgBZAVJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdCBpZiBgdGhyZXNob2xkYCBpcyBleGFjdGx5IGAxYC4gT3RoZXJ3aXNlVQFvbiBzdWNjZXNzLCByZXN1bHQgaXMgYE9rYCBhbmQgdGhlIHJlc3VsdCBmcm9tIHRoZSBpbnRlcmlvciBjYWxsLCBpZiBpdCB3YXMgZXhlY3V0ZWQs3G1heSBiZSBmb3VuZCBpbiB0aGUgZGVwb3NpdGVkIGBNdWx0aXNpZ0V4ZWN1dGVkYCBldmVudC4ANCMjIENvbXBsZXhpdHlQLSBgTyhTICsgWiArIENhbGwpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC4hAS0gT25lIGNhbGwgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFopYCB3aGVyZSBgWmAgaXMgdHgtbGVuLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5sLSBUaGUgd2VpZ2h0IG9mIHRoZSBgY2FsbGAuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLkBhcHByb3ZlX2FzX211bHRpFAEkdGhyZXNob2xkLQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzzAFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnSNAwGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h01QEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZC0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50kQMBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xkLQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzzAFEVmVjPFQ6OkFjY291bnRJZD4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQAENPRQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBleGlzdGluZyBtdWx0aXNpZyBvcGVyYXRpb24uAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgdGhlIG9yaWdpbmFsIGRlcG9zaXRvciBvZlx0aGUgbXVsdGlzaWcgb3BlcmF0aW9uLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AGQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBuZWVkZWQgZm9yIHRoaXMgbXVsdGlzaWcuPQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlLCAgbXVsdGlzaWcuBQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0aGlzIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZm9yLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQMEGE9wdGlvbgQEVAGRAwEIEE5vbmUAAAAQU29tZQQAkQMAAAEAAJEDCDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgE4AAgBGGhlaWdodDgBLEJsb2NrTnVtYmVyAAEUaW5kZXg4AQx1MzIAAJUDDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h01QEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkDDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASwUcHJveHkMARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlnQMBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACRNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuJGFkZF9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAIcqFVucmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOiUBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIHJlbW92ZSBhcyBhIHByb3h5LkEBLSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBjdXJyZW50bHkgZW5hYmxlZCBmb3IgdGhlIHJlbW92ZWQgcHJveHkgYWNjb3VudC44cmVtb3ZlX3Byb3hpZXMAAxi0VW5yZWdpc3RlciBhbGwgcHJveHkgYWNjb3VudHMgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AXQFXQVJOSU5HOiBUaGlzIG1heSBiZSBjYWxsZWQgb24gYWNjb3VudHMgY3JlYXRlZCBieSBgY3JlYXRlX3B1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXgtAwEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABFGluZGV4LQMBDHUxNgABGGhlaWdodGABREJsb2NrTnVtYmVyRm9yPFQ+AAEkZXh0X2luZGV4YAEMdTMyAAVAoFJlbW92ZXMgYSBwcmV2aW91c2x5IHNwYXduZWQgcHVyZSBwcm94eS4ASQFXQVJOSU5HOiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKiBBbnkgZnVuZHMgaGVsZCBpbiBpdCB3aWxsIGJlNGluYWNjZXNzaWJsZS4AWQFSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbiwgYW5kIHRoZSBzZW5kZXIgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGEgY2FsbCB0b7BgY3JlYXRlX3B1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgBVAS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBjcmVhdGVfcHVyZWAgdG8gY3JlYXRlIHRoaXMgYWNjb3VudC5VAS0gYGluZGV4YDogVGhlIGRpc2FtYmlndWF0aW9uIGluZGV4IG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuIFByb2JhYmx5IGAwYC4JAS0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLkUBLSBgaGVpZ2h0YDogVGhlIGhlaWdodCBvZiB0aGUgY2hhaW4gd2hlbiB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuUQEtIGBleHRfaW5kZXhgOiBUaGUgZXh0cmluc2ljIGluZGV4IGluIHdoaWNoIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZfhhY2NvdW50IHdob3NlIGBjcmVhdGVfcHVyZWAgY2FsbCBoYXMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLiBhbm5vdW5jZQgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAcocFJlbW92ZSBhIGdpdmVuIGFubm91bmNlbWVudC4AWQFNYXkgYmUgY2FsbGVkIGJ5IGEgcHJveHkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoZXkgcHJldmlvdXNseSBhbm5vdW5jZWQgYW5kIHJldHVybjB0aGUgZGVwb3NpdC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZWplY3RfYW5ub3VuY2VtZW50CAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4ACCiwUmVtb3ZlIHRoZSBnaXZlbiBhbm5vdW5jZW1lbnQgb2YgYSBkZWxlZ2F0ZS4AYQFNYXkgYmUgY2FsbGVkIGJ5IGEgdGFyZ2V0IChwcm94aWVkKSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhhdCBvbmUgb2YgdGhlaXIgZGVsZWdhdGVzJQEoYGRlbGVnYXRlYCkgaGFzIGFubm91bmNlZCB0aGV5IHdhbnQgdG8gZXhlY3V0ZS4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBwcmV2aW91c2x5IGFubm91bmNlZCB0aGUgY2FsbC68LSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZS48cHJveHlfYW5ub3VuY2VkEAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGWdAwFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcml6ZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAKhSZW1vdmVzIGFueSBjb3JyZXNwb25kaW5nIGFubm91bmNlbWVudChzKS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LjBwb2tlX2RlcG9zaXQACiBJAVBva2UgLyBBZGp1c3QgZGVwb3NpdHMgbWFkZSBmb3IgcHJveGllcyBhbmQgYW5ub3VuY2VtZW50cyBiYXNlZCBvbiBjdXJyZW50IHZhbHVlcy4NAVRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gcG9zc2libHkgbG93ZXIgdGhlaXIgbG9ja2VkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLp0DBBhPcHRpb24EBFQBoQMBCBBOb25lAAAAEFNvbWUEAKEDAAABAAChAwhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZSRQcm94eVR5cGUAARgMQW55AAAALE5vblRyYW5zZmVyAAEALENhbmNlbFByb3h5AAIAIElkZW50aXR5AAMARElkZW50aXR5SnVkZ2VtZW50AAQAIENvbGxhdG9yAAUAAKUDDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkYcGFsbGV0EENhbGwEBFQAAXg0YWRkX3JlZ2lzdHJhcgQBHGFjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAHHhBZGQgYSByZWdpc3RyYXIgdG8gdGhlIHN5c3RlbS4A/FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBUOjpSZWdpc3RyYXJPcmlnaW5gLgCoLSBgYWNjb3VudGA6IHRoZSBhY2NvdW50IG9mIHRoZSByZWdpc3RyYXIuAJRFbWl0cyBgUmVnaXN0cmFyQWRkZWRgIGlmIHN1Y2Nlc3NmdWwuMHNldF9pZGVudGl0eQQBEGluZm+pAwFsQm94PFQ6OklkZW50aXR5SW5mb3JtYXRpb24+AAEoKQFTZXQgYW4gYWNjb3VudCdzIGlkZW50aXR5IGluZm9ybWF0aW9uIGFuZCByZXNlcnZlIHRoZSBhcHByb3ByaWF0ZSBkZXBvc2l0LgBVAUlmIHRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGlkZW50aXR5IGluZm9ybWF0aW9uLCB0aGUgZGVwb3NpdCBpcyB0YWtlbiBhcyBwYXJ0IHBheW1lbnRQZm9yIHRoZSBuZXcgZGVwb3NpdC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgCMLSBgaW5mb2A6IFRoZSBpZGVudGl0eSBpbmZvcm1hdGlvbi4AiEVtaXRzIGBJZGVudGl0eVNldGAgaWYgc3VjY2Vzc2Z1bC4gc2V0X3N1YnMEARBzdWJzJQQBZFZlYzwoVDo6QWNjb3VudElkLCBEYXRhKT4AAiSMU2V0IHRoZSBzdWItYWNjb3VudHMgb2YgdGhlIHNlbmRlci4AVQFQYXltZW50OiBBbnkgYWdncmVnYXRlIGJhbGFuY2UgcmVzZXJ2ZWQgYnkgcHJldmlvdXMgYHNldF9zdWJzYCBjYWxscyB3aWxsIGJlIHJldHVybmVkLQFhbmQgYW4gYW1vdW50IGBTdWJBY2NvdW50RGVwb3NpdGAgd2lsbCBiZSByZXNlcnZlZCBmb3IgZWFjaCBpdGVtIGluIGBzdWJzYC4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkJGlkZW50aXR5LgCwLSBgc3Vic2A6IFRoZSBpZGVudGl0eSdzIChuZXcpIHN1Yi1hY2NvdW50cy44Y2xlYXJfaWRlbnRpdHkAAyA5AUNsZWFyIGFuIGFjY291bnQncyBpZGVudGl0eSBpbmZvIGFuZCBhbGwgc3ViLWFjY291bnRzIGFuZCByZXR1cm4gYWxsIGRlcG9zaXRzLgDsUGF5bWVudDogQWxsIHJlc2VydmVkIGJhbGFuY2VzIG9uIHRoZSBhY2NvdW50IGFyZSByZXR1cm5lZC4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkJGlkZW50aXR5LgCYRW1pdHMgYElkZW50aXR5Q2xlYXJlZGAgaWYgc3VjY2Vzc2Z1bC5EcmVxdWVzdF9qdWRnZW1lbnQIASRyZWdfaW5kZXhgAThSZWdpc3RyYXJJbmRleAABHG1heF9mZWXAATBCYWxhbmNlT2Y8VD4ABECUUmVxdWVzdCBhIGp1ZGdlbWVudCBmcm9tIGEgcmVnaXN0cmFyLgBVAVBheW1lbnQ6IEF0IG1vc3QgYG1heF9mZWVgIHdpbGwgYmUgcmVzZXJ2ZWQgZm9yIHBheW1lbnQgdG8gdGhlIHJlZ2lzdHJhciBpZiBqdWRnZW1lbnQYZ2l2ZW4uADUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGFQcmVnaXN0ZXJlZCBpZGVudGl0eS4AHQEtIGByZWdfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBqdWRnZW1lbnQgaXMgcmVxdWVzdGVkLlUBLSBgbWF4X2ZlZWA6IFRoZSBtYXhpbXVtIGZlZSB0aGF0IG1heSBiZSBwYWlkLiBUaGlzIHNob3VsZCBqdXN0IGJlIGF1dG8tcG9wdWxhdGVkIGFzOgAwYGBgbm9jb21waWxluFNlbGY6OnJlZ2lzdHJhcnMoKS5nZXQocmVnX2luZGV4KS51bndyYXAoKS5mZWUMYGBgAKRFbWl0cyBgSnVkZ2VtZW50UmVxdWVzdGVkYCBpZiBzdWNjZXNzZnVsLjhjYW5jZWxfcmVxdWVzdAQBJHJlZ19pbmRleDgBOFJlZ2lzdHJhckluZGV4AAUoaENhbmNlbCBhIHByZXZpb3VzIHJlcXVlc3QuAPhQYXltZW50OiBBIHByZXZpb3VzbHkgcmVzZXJ2ZWQgZGVwb3NpdCBpcyByZXR1cm5lZCBvbiBzdWNjZXNzLgA1AVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhUHJlZ2lzdGVyZWQgaWRlbnRpdHkuAEUBLSBgcmVnX2luZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UganVkZ2VtZW50IGlzIG5vIGxvbmdlciByZXF1ZXN0ZWQuAKxFbWl0cyBgSnVkZ2VtZW50VW5yZXF1ZXN0ZWRgIGlmIHN1Y2Nlc3NmdWwuHHNldF9mZWUIARRpbmRleGABOFJlZ2lzdHJhckluZGV4AAEMZmVlwAEwQmFsYW5jZU9mPFQ+AAYcGQFTZXQgdGhlIGZlZSByZXF1aXJlZCBmb3IgYSBqdWRnZW1lbnQgdG8gYmUgcmVxdWVzdGVkIGZyb20gYSByZWdpc3RyYXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgYWNjb3VudKBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGluZGV4IGlzIGBpbmRleGAuAPQtIGBpbmRleGA6IHRoZSBpbmRleCBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGZlZSBpcyB0byBiZSBzZXQuVC0gYGZlZWA6IHRoZSBuZXcgZmVlLjhzZXRfYWNjb3VudF9pZAgBFGluZGV4YAE4UmVnaXN0cmFySW5kZXgAAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAHHLxDaGFuZ2UgdGhlIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIGEgcmVnaXN0cmFyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIGFjY291bnSgb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBpbmRleCBpcyBgaW5kZXhgLgD0LSBgaW5kZXhgOiB0aGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBmZWUgaXMgdG8gYmUgc2V0LnAtIGBuZXdgOiB0aGUgbmV3IGFjY291bnQgSUQuKHNldF9maWVsZHMIARRpbmRleGABOFJlZ2lzdHJhckluZGV4AAEYZmllbGRzKAEpATxUOjpJZGVudGl0eUluZm9ybWF0aW9uIGFzIElkZW50aXR5SW5mb3JtYXRpb25Qcm92aWRlcj46OgpGaWVsZHNJZGVudGlmaWVyAAgcqFNldCB0aGUgZmllbGQgaW5mb3JtYXRpb24gZm9yIGEgcmVnaXN0cmFyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIGFjY291bnSgb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBpbmRleCBpcyBgaW5kZXhgLgD0LSBgaW5kZXhgOiB0aGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBmZWUgaXMgdG8gYmUgc2V0Lg0BLSBgZmllbGRzYDogdGhlIGZpZWxkcyB0aGF0IHRoZSByZWdpc3RyYXIgY29uY2VybnMgdGhlbXNlbHZlcyB3aXRoLkRwcm92aWRlX2p1ZGdlbWVudBABJHJlZ19pbmRleGABOFJlZ2lzdHJhckluZGV4AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRqdWRnZW1lbnQtBAFcSnVkZ2VtZW50PEJhbGFuY2VPZjxUPj4AASBpZGVudGl0eTwBHFQ6Okhhc2gACTy4UHJvdmlkZSBhIGp1ZGdlbWVudCBmb3IgYW4gYWNjb3VudCdzIGlkZW50aXR5LgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIGFjY291bnSwb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBpbmRleCBpcyBgcmVnX2luZGV4YC4AIQEtIGByZWdfaW5kZXhgOiB0aGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBqdWRnZW1lbnQgaXMgYmVpbmcgbWFkZS5VAS0gYHRhcmdldGA6IHRoZSBhY2NvdW50IHdob3NlIGlkZW50aXR5IHRoZSBqdWRnZW1lbnQgaXMgdXBvbi4gVGhpcyBtdXN0IGJlIGFuIGFjY291bnR0ICB3aXRoIGEgcmVnaXN0ZXJlZCBpZGVudGl0eS5JAS0gYGp1ZGdlbWVudGA6IHRoZSBqdWRnZW1lbnQgb2YgdGhlIHJlZ2lzdHJhciBvZiBpbmRleCBgcmVnX2luZGV4YCBhYm91dCBgdGFyZ2V0YC5dAS0gYGlkZW50aXR5YDogVGhlIGhhc2ggb2YgdGhlIFtgSWRlbnRpdHlJbmZvcm1hdGlvblByb3ZpZGVyYF0gZm9yIHRoYXQgdGhlIGp1ZGdlbWVudCBpcywgIHByb3ZpZGVkLgCwTm90ZTogSnVkZ2VtZW50cyBkbyBub3QgYXBwbHkgdG8gYSB1c2VybmFtZS4AlEVtaXRzIGBKdWRnZW1lbnRHaXZlbmAgaWYgc3VjY2Vzc2Z1bC40a2lsbF9pZGVudGl0eQQBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAowQQFSZW1vdmUgYW4gYWNjb3VudCdzIGlkZW50aXR5IGFuZCBzdWItYWNjb3VudCBpbmZvcm1hdGlvbiBhbmQgc2xhc2ggdGhlIGRlcG9zaXRzLgBhAVBheW1lbnQ6IFJlc2VydmVkIGJhbGFuY2VzIGZyb20gYHNldF9zdWJzYCBhbmQgYHNldF9pZGVudGl0eWAgYXJlIHNsYXNoZWQgYW5kIGhhbmRsZWQgYnlFAWBTbGFzaGAuIFZlcmlmaWNhdGlvbiByZXF1ZXN0IGRlcG9zaXRzIGFyZSBub3QgcmV0dXJuZWQ7IHRoZXkgc2hvdWxkIGJlIGNhbmNlbGxlZIBtYW51YWxseSB1c2luZyBgY2FuY2VsX3JlcXVlc3RgLgD4VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgbWF0Y2ggYFQ6OkZvcmNlT3JpZ2luYC4AVQEtIGB0YXJnZXRgOiB0aGUgYWNjb3VudCB3aG9zZSBpZGVudGl0eSB0aGUganVkZ2VtZW50IGlzIHVwb24uIFRoaXMgbXVzdCBiZSBhbiBhY2NvdW50dCAgd2l0aCBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuAJRFbWl0cyBgSWRlbnRpdHlLaWxsZWRgIGlmIHN1Y2Nlc3NmdWwuHGFkZF9zdWIIAQxzdWIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRhdGGtAwEQRGF0YQALHKxBZGQgdGhlIGdpdmVuIGFjY291bnQgdG8gdGhlIHNlbmRlcidzIHN1YnMuAF0BUGF5bWVudDogQmFsYW5jZSByZXNlcnZlZCBieSBhIHByZXZpb3VzIGBzZXRfc3Vic2AgY2FsbCBmb3Igb25lIHN1YiB3aWxsIGJlIHJlcGF0cmlhdGVkOHRvIHRoZSBzZW5kZXIuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZFhzdWIgaWRlbnRpdHkgb2YgYHN1YmAuKHJlbmFtZV9zdWIIAQxzdWIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRhdGGtAwEQRGF0YQAMEMxBbHRlciB0aGUgYXNzb2NpYXRlZCBuYW1lIG9mIHRoZSBnaXZlbiBzdWItYWNjb3VudC4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkWHN1YiBpZGVudGl0eSBvZiBgc3ViYC4ocmVtb3ZlX3N1YgQBDHN1YgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA0cwFJlbW92ZSB0aGUgZ2l2ZW4gYWNjb3VudCBmcm9tIHRoZSBzZW5kZXIncyBzdWJzLgBdAVBheW1lbnQ6IEJhbGFuY2UgcmVzZXJ2ZWQgYnkgYSBwcmV2aW91cyBgc2V0X3N1YnNgIGNhbGwgZm9yIG9uZSBzdWIgd2lsbCBiZSByZXBhdHJpYXRlZDh0byB0aGUgc2VuZGVyLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWRYc3ViIGlkZW50aXR5IG9mIGBzdWJgLiBxdWl0X3N1YgAOKIxSZW1vdmUgdGhlIHNlbmRlciBhcyBhIHN1Yi1hY2NvdW50LgBdAVBheW1lbnQ6IEJhbGFuY2UgcmVzZXJ2ZWQgYnkgYSBwcmV2aW91cyBgc2V0X3N1YnNgIGNhbGwgZm9yIG9uZSBzdWIgd2lsbCBiZSByZXBhdHJpYXRlZLR0byB0aGUgc2VuZGVyICgqbm90KiB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yKS4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkPHN1cGVyLWlkZW50aXR5LgBFAU5PVEU6IFRoaXMgc2hvdWxkIG5vdCBub3JtYWxseSBiZSB1c2VkLCBidXQgaXMgcHJvdmlkZWQgaW4gdGhlIGNhc2UgdGhhdCB0aGUgbm9uLREBY29udHJvbGxlciBvZiBhbiBhY2NvdW50IGlzIG1hbGljaW91c2x5IHJlZ2lzdGVyZWQgYXMgYSBzdWItYWNjb3VudC5YYWRkX3VzZXJuYW1lX2F1dGhvcml0eQwBJGF1dGhvcml0eQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYc3VmZml4GAEcVmVjPHU4PgABKGFsbG9jYXRpb244AQx1MzIADxRVAUFkZCBhbiBgQWNjb3VudElkYCB3aXRoIHBlcm1pc3Npb24gdG8gZ3JhbnQgdXNlcm5hbWVzIHdpdGggYSBnaXZlbiBgc3VmZml4YCBhcHBlbmRlZC4ARQFUaGUgYXV0aG9yaXR5IGNhbiBncmFudCB1cCB0byBgYWxsb2NhdGlvbmAgdXNlcm5hbWVzLiBUbyB0b3AgdXAgdGhlIGFsbG9jYXRpb24gb3JJAWNoYW5nZSB0aGUgYWNjb3VudCB1c2VkIHRvIGdyYW50IHVzZXJuYW1lcywgdGhpcyBjYWxsIGNhbiBiZSB1c2VkIHdpdGggdGhlIHVwZGF0ZWTMcGFyYW1ldGVycyB0byBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uZHJlbW92ZV91c2VybmFtZV9hdXRob3JpdHkIARhzdWZmaXgYARxWZWM8dTg+AAEkYXV0aG9yaXR5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEATEUmVtb3ZlIGBhdXRob3JpdHlgIGZyb20gdGhlIHVzZXJuYW1lIGF1dGhvcml0aWVzLkBzZXRfdXNlcm5hbWVfZm9yEAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASB1c2VybmFtZRgBHFZlYzx1OD4AASRzaWduYXR1cmUxBAFwT3B0aW9uPFQ6Ok9mZmNoYWluU2lnbmF0dXJlPgABOHVzZV9hbGxvY2F0aW9uyAEQYm9vbAARNA0BU2V0IHRoZSB1c2VybmFtZSBmb3IgYHdob2AuIE11c3QgYmUgY2FsbGVkIGJ5IGEgdXNlcm5hbWUgYXV0aG9yaXR5LgBZAUlmIGB1c2VfYWxsb2NhdGlvbmAgaXMgc2V0LCB0aGUgYXV0aG9yaXR5IG11c3QgaGF2ZSBhIHVzZXJuYW1lIGFsbG9jYXRpb24gYXZhaWxhYmxlIHRvRQFzcGVuZC4gT3RoZXJ3aXNlLCB0aGUgYXV0aG9yaXR5IHdpbGwgbmVlZCB0byBwdXQgdXAgYSBkZXBvc2l0IGZvciByZWdpc3RlcmluZyB0aGUkdXNlcm5hbWUuALBVc2VycyBjYW4gZWl0aGVyIHByZS1zaWduIHRoZWlyIHVzZXJuYW1lcyBvckhhY2NlcHQgdGhlbSBsYXRlci4APFVzZXJuYW1lcyBtdXN0OtggIC0gT25seSBjb250YWluIGxvd2VyY2FzZSBBU0NJSSBjaGFyYWN0ZXJzIG9yIGRpZ2l0cy41ASAgLSBXaGVuIGNvbWJpbmVkIHdpdGggdGhlIHN1ZmZpeCBvZiB0aGUgaXNzdWluZyBhdXRob3JpdHkgYmUgX2xlc3MgdGhhbl8gdGhlYCAgICBgTWF4VXNlcm5hbWVMZW5ndGhgLjxhY2NlcHRfdXNlcm5hbWUEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgASDE0BQWNjZXB0IGEgZ2l2ZW4gdXNlcm5hbWUgdGhhdCBhbiBgYXV0aG9yaXR5YCBncmFudGVkLiBUaGUgY2FsbCBtdXN0IGluY2x1ZGUgdGhlIGZ1bGxVAXVzZXJuYW1lLCBhcyBpbiBgdXNlcm5hbWUuc3VmZml4YC4gQXV0aG9yaXRpZXMgY2Fubm90IGdyYW50IHVzZXJuYW1lcyB0byBwZW9wbGUsIG9ubHlQdG8gcmVndWxhciBhY2NvdW50cy5ccmVtb3ZlX2V4cGlyZWRfYXBwcm92YWwEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgATDGEBUmVtb3ZlIGFuIGV4cGlyZWQgdXNlcm5hbWUgYXBwcm92YWwuIFRoZSB1c2VybmFtZSB3YXMgYXBwcm92ZWQgYnkgYW4gYXV0aG9yaXR5IGJ1dCBuZXZlclUBYWNjZXB0ZWQgYnkgdGhlIHVzZXIgYW5kIG11c3Qgbm93IGJlIGJleW9uZCBpdHMgZXhwaXJhdGlvbi4gVGhlIGNhbGwgbXVzdCBpbmNsdWRlIHRoZZxmdWxsIHVzZXJuYW1lLCBhcyBpbiBgdXNlcm5hbWUuc3VmZml4YC5Qc2V0X3ByaW1hcnlfdXNlcm5hbWUEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAUDEUBU2V0IGEgZ2l2ZW4gdXNlcm5hbWUgYXMgdGhlIHByaW1hcnkuIFRoZSB1c2VybmFtZSBzaG91bGQgaW5jbHVkZSB0aGUgc3VmZml4LiBPbmx5WQFyZWd1bGFyIGFjY291bnRzIGNhbiBzZXQgdGhlaXIgcHJpbWFyeSB1c2VybmFtZSwgYXMgcGVvcGxlIGNhbiBvbmx5IGhhdmUgb25lIHVzZXJuYW1lLJBncmFudGVkIHRocm91Z2ggYSBzeXN0ZW0gYWxsb2NhdGlvbi48dW5iaW5kX3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFQxZAVN0YXJ0IHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIGEgdXNlcm5hbWUgYnkgcGxhY2luZyBpdCBpbiB0aGUgdW5iaW5kaW5nIHVzZXJuYW1lcyBtYXAuIQFPbmNlIHRoZSBncmFjZSBwZXJpb2QgaGFzIHBhc3NlZCwgdGhlIHVzZXJuYW1lIGNhbiBiZSBkZWxldGVkIGJ5IGNhbGxpbmfAW3JlbW92ZV91c2VybmFtZV0oY3JhdGU6OkNhbGw6OnJlbW92ZV91c2VybmFtZSkuPHJlbW92ZV91c2VybmFtZQQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABYIYQFQZXJtYW5lbnRseSBkZWxldGUgYSB1c2VybmFtZSB3aGljaCBoYXMgYmVlbiB1bmJpbmRpbmcgZm9yIGxvbmdlciB0aGFuIHRoZSBncmFjZSBwZXJpb2QuSQFDYWxsZXIgaXMgcmVmdW5kZWQgdGhlIGZlZSBpZiB0aGUgdXNlcm5hbWUgZXhwaXJlZCBhbmQgdGhlIHJlbW92YWwgd2FzIHN1Y2Nlc3NmdWwuNGtpbGxfdXNlcm5hbWUEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAXCF0BQ2FsbCB3aXRoIFtGb3JjZU9yaWdpbl0oY3JhdGU6OkNvbmZpZzo6Rm9yY2VPcmlnaW4pIHByaXZpbGVnZXMgd2hpY2ggZGVsZXRlcyBhIHVzZXJuYW1lrGFuZCBzbGFzaGVzIGFueSBkZXBvc2l0IGFzc29jaWF0ZWQgd2l0aCBpdC5Uc2V0X3BlcnNvbmFsX2lkZW50aXR5DAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABJHNpZ25hdHVyZTUEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABgsXQFTZXRzIHRoZSB1c2VybmFtZSBhbmQgb24tY2hhaW4gYWNjb3VudCBmb3IgYSBwZXJzb24sIGFsb25nIHdpdGggYW4gZW1wdHkgaWRlbnRpdHkgd2hpY2hhAWNhbiBvbmx5IGJlIHBvcHVsYXRlZCB1c2luZyBhbiBvcmFjbGUgdGhyb3VnaCB0aGUgc29jaWFsIGNyZWRlbnRpYWwgdmVyaWZpY2F0aW9uIHN5c3RlbS6cVGhlIGNob3NlbiB1c2VybmFtZSBtdXN0IGJlIGRvbWFpbmxlc3MuAEkBVGhlIHNlbmRlciBtdXN0IHNpZ24gdGhlIGFsaWFzIHVzaW5nIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBvbi1jaGFpbmxhY2NvdW50IHRvIHByb3ZlIG93bmVyc2hpcC4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY29udGV4dHVhbCBhbGlhcyBvZiB0aGUgcGVyc29uIGFuZCB0aGURAXNlbmRlciBtdXN0IG5vdCBoYXZlIGFscmVhZHkgcmVnaXN0ZXJlZCB0aGVpciBpZGVudGl0eSBhbmQgdXNlcm5hbWUuAKhFbWl0cyBgUGVyc29uYWxJZGVudGl0eVNldGAgaWYgc3VjY2Vzc2Z1bC6Mc3VibWl0X3BlcnNvbmFsX2NyZWRlbnRpYWxfZXZpZGVuY2UEAShjcmVkZW50aWFsRQQBGFNvY2lhbAAZGA0BT3BlbiBhIGNhc2UgZm9yIGFuIG9yYWNsZSB0byBqdWRnZSBhIHNvY2lhbCBjcmVkZW50aWFsIG9mIGEgcGVyc29uLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjb250ZXh0dWFsIGFsaWFzIG9mIHRoZSBwZXJzb24gYW5kIHRoZZxzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCBpZGVudGl0eS4AoEVtaXRzIGBFdmlkZW5jZVN1Ym1pdHRlZGAgaWYgc3VjY2Vzc2Z1bC5ocGVyc29uYWxfY3JlZGVudGlhbF9qdWRnZWQMARh0aWNrZXQ4AURPcmFjbGVUaWNrZXRPZjxUPgABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEkanVkZ2VtZW50SQQBPE9yYWNsZUp1ZGdlbWVudAAaCFkBQ2FsbGJhY2sgdG8gZW5mb3JjZSB0aGUganVkZ2VtZW50IG9mIGEgc29jaWFsIGNyZWRlbnRpYWwuIFRoaXMgaXMgdG8gYmUgY2FsbGVkIG9ubHkgYnmAdGhlIG9yYWNsZSB0aGF0IGp1ZGdlZCB0aGUgY2FzZS5cY2xlYXJfcGVyc29uYWxfaWRlbnRpdHkAGxxRAUNsZWFyIGEgcGVyc29uJ3MgaWRlbnRpdHkgaW5mby4gVGhlIHNlbmRlciBtdXN0IHBheSBhIHBlbmFsdHkgdGhyb3VnaCB0aGUgYXNzb2NpYXRlZKBhbGlhcyBhY2NvdW50IGZvciByZW1vdmluZyB0aGUgaWRlbnRpdHkuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGNvbnRleHR1YWwgYWxpYXMgb2YgdGhlIHBlcnNvbiBhbmQgdGhlnHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkIGlkZW50aXR5LgC4RW1pdHMgYElkZW50aXR5UGVyc29uYWxDbGVhcmVkYCBpZiBzdWNjZXNzZnVsLjxyZXBvcnRfdXNlcm5hbWUEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAcFOxSZXBvcnQgYSB1c2VybmFtZSBhcyBpbnZhbGlkL29mZmVuc2l2ZS93cm9uZy9hbnl0aGluZyBlbHNlLgD0VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYSBzaWduZWQgZXh0cmluc2ljLgCoLSBgdXNlcm5hbWVgOiBUaGUgdXNlcm5hbWUgdG8gYmUgcmVwb3J0ZWQuYHJlcG9ydGVkX3VzZXJuYW1lX2p1ZGdlZAwBGHRpY2tldDgBYGNyYXRlOjpPcmFjbGVUaWNrZXRPZjxUPgABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEkanVkZ2VtZW50SQQBPE9yYWNsZUp1ZGdlbWVudAAdJORHaXZlbiBqdWRnZW1lbnQgb24gYSBwcmV2aW91c2x5IHJlcG9ydGVkIHVzZXJuYW1lIGVpdGhlcjqQMS4gSW4gY2FzZSB1c2VybmFtZSB3YXMgZm91bmQgdmFsaWQ6vC0gc2xhc2hlcyB0aGUgYW1vdW50IGRlcG9zaXRlZCBieSB0aGUgcmVwb3J0ZXIs8C0gZG9lcyBub3RoaW5nIHRvIHRoZSBpZGVudGl0eSBiZWhpbmQgdGhlIHJlcG9ydGVkIHVzZXJuYW1lLJgyLiBJbiBjYXNlIHVzZXJuYW1lIHdhcyBmb3VuZCBpbnZhbGlkOrgtIHJldHVybnMgdGhlIGRlcG9zaXRlZCBmdW5kcyB0byB0aGUgcmVwb3J0ZXIsxC0gYmFucyB0aGUgaWRlbnRpdHkgYmVoaW5kIHRoZSByZXBvcnRlZCB1c2VybmFtZS78U2VydmVzIGFzIGEgY2FsbGJhY2sgdXNlZCB1cG9uIGp1ZGdlbWVudCByZXF1ZXN0IHRvIHRoZSBvcmFjbGUuqE11c3Qgb25seSBiZSB1c2VkIGJ5IHRoZSBzdGF0ZW1lbnQgb3JhY2xlLgRwSWRlbnRpdHkgcGFsbGV0IGRlY2xhcmF0aW9uLqkDDGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lGHBlb3BsZTBJZGVudGl0eUluZm8AACgBHGRpc3BsYXmtAwEQRGF0YQABFGxlZ2FsrQMBEERhdGEAAQx3ZWKtAwEQRGF0YQABGG1hdHJpeK0DARBEYXRhAAEUZW1haWytAwEQRGF0YQABPHBncF9maW5nZXJwcmludCEEAUBPcHRpb248W3U4OyAyMF0+AAEUaW1hZ2WtAwEQRGF0YQABHHR3aXR0ZXKtAwEQRGF0YQABGGdpdGh1Yq0DARBEYXRhAAEcZGlzY29yZK0DARBEYXRhAACtAwxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzEERhdGEAAZgQTm9uZQAAABBSYXcwBACxAwAAAQAQUmF3MQQAtQMAAAIAEFJhdzIEALkDAAADABBSYXczBAC9AwAABAAQUmF3NAQAcAAABQAQUmF3NQQAwQMAAAYAEFJhdzYEAMUDAAAHABBSYXc3BADJAwAACAAQUmF3OAQAvQEAAAkAEFJhdzkEAM0DAAAKABRSYXcxMAQA0QMAAAsAFFJhdzExBADVAwAADAAUUmF3MTIEANkDAAANABRSYXcxMwQA3QMAAA4AFFJhdzE0BADhAwAADwAUUmF3MTUEAOUDAAAQABRSYXcxNgQAwQEAABEAFFJhdzE3BADpAwAAEgAUUmF3MTgEAO0DAAATABRSYXcxOQQA8QMAABQAFFJhdzIwBAAcAAAVABRSYXcyMQQA9QMAABYAFFJhdzIyBAD5AwAAFwAUUmF3MjMEAP0DAAAYABRSYXcyNAQAAQQAABkAFFJhdzI1BAAFBAAAGgAUUmF3MjYEAAkEAAAbABRSYXcyNwQADQQAABwAFFJhdzI4BAARBAAAHQAUUmF3MjkEABUEAAAeABRSYXczMAQAGQQAAB8AFFJhdzMxBAAdBAAAIAAUUmF3MzIEAAgAACEALEJsYWtlVHdvMjU2BAAIAAAiABhTaGEyNTYEAAgAACMAJEtlY2NhazI1NgQACAAAJAAsU2hhVGhyZWUyNTYEAAgAACUAALEDAAADAAAAAAwAtQMAAAMBAAAADAC5AwAAAwIAAAAMAL0DAAADAwAAAAwAwQMAAAMFAAAADADFAwAAAwYAAAAMAMkDAAADBwAAAAwAzQMAAAMJAAAADADRAwAAAwoAAAAMANUDAAADCwAAAAwA2QMAAAMMAAAADADdAwAAAw0AAAAMAOEDAAADDgAAAAwA5QMAAAMPAAAADADpAwAAAxEAAAAMAO0DAAADEgAAAAwA8QMAAAMTAAAADAD1AwAAAxUAAAAMAPkDAAADFgAAAAwA/QMAAAMXAAAADAABBAAAAxgAAAAMAAUEAAADGQAAAAwACQQAAAMaAAAADAANBAAAAxsAAAAMABEEAAADHAAAAAwAFQQAAAMdAAAADAAZBAAAAx4AAAAMAB0EAAADHwAAAAwAIQQEGE9wdGlvbgQEVAEcAQgQTm9uZQAAABBTb21lBAAcAAABAAAlBAAAAikEACkEAAAECAStAwAtBAxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzJEp1ZGdlbWVudAQcQmFsYW5jZQHEASAcVW5rbm93bgAAABxGZWVQYWlkBADEARxCYWxhbmNlAAEAKFJlYXNvbmFibGUAAgAkS25vd25Hb29kAAMAJE91dE9mRGF0ZQAEAChMb3dRdWFsaXR5AAUAJEVycm9uZW91cwAGACBFeHRlcm5hbAAHAAAxBAQYT3B0aW9uBARUATUEAQgQTm9uZQAAABBTb21lBAA1BAAAAQAANQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAOQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BAA5BAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAA9BAFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAD0EAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAADkEAAADQAAAAAwAPQQAAANBAAAADABBBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEUEFDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5IGlkZW50aXR5GFNvY2lhbAABDBxUd2l0dGVyBAEgdXNlcm5hbWVBBAEQRGF0YQAAABhHaXRodWIEASB1c2VybmFtZUEEARBEYXRhAAEAHERpc2NvcmQEATxkaXNwbGF5X2FuZF90YWdBBAEQRGF0YQACAABJBBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSRKdWRnZW1lbnQAAQgUVHJ1dGgEAE0EARRUcnV0aAAAACBDb250ZW1wdAABAABNBBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eRRUcnV0aAABCBBUcnVlAAAAFEZhbHNlAAEAAFEEDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBBDYWxsBARUAAEgLHVuZGVyX2FsaWFzBAEQY2FsbCABtEJveDw8VCBhcyBmcmFtZV9zeXN0ZW06OkNvbmZpZz46OlJ1bnRpbWVDYWxsPgAAEBUBRGlzcGF0Y2ggYSBjYWxsIHVuZGVyIGFuIGFsaWFzIHVzaW5nIHRoZSBgYWNjb3VudCA8LT4gYWxpYXNgIG1hcHBpbmcuAEUBVGhpcyBpcyBhIGNhbGwgdmVyc2lvbiBvZiB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGBBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudGAuJQFJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBpbnN0ZWFkIHdoZW4gc3VpdGFibGUuRHNldF9hbGlhc19hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABNGNhbGxfdmFsaWRfYXQ4AURCbG9ja051bWJlckZvcjxUPgABJC0BVGhpcyB0cmFuc2FjdGlvbiBpcyByZWZ1bmRlZCBpZiBzdWNjZXNzZnVsIGFuZCBubyBhbGlhcyB3YXMgcHJldmlvdXNseSBzZXQuALBUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGBjYWxsX3ZhbGlkX2F0YCB1bnRpbLxgY2FsbF92YWxpZF9hdCArIGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgLh0BYGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgIGlzIGEgY29uc3RhbnQgYXZhaWxhYmxlIGluIHRoZSBtZXRhZGF0YS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5MdW5zZXRfYWxpYXNfYWNjb3VudAACBBUBUmVtb3ZlIHRoZSBtYXBwaW5nIGZyb20gYSBwYXJ0aWN1bGFyIGFsaWFzIHRvIGl0cyByZWdpc3RlcmVkIGFjY291bnQuaGZvcmNlX3JlY29nbml6ZV9wZXJzb25ob29kBAEYcGVvcGxlVQQBQFZlYzxNZW1iZXJPZjxUPj4AAxDgUmVjb2duaXplIGEgc2V0IG9mIHBlb3BsZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNoZWNrcy4AUQFUaGUgcGVvcGxlIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwcm92aWRlZCBsaXN0IG9mIGtleXMgYW5kIHdpbGwgZWFjaCBiZSBhc3NpZ25lZCwgaW6Yb3JkZXIsIHRoZSBuZXh0IGF2YWlsYWJsZSBwZXJzb25hbCBJRC5cc2V0X3BlcnNvbmFsX2lkX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE0Y2FsbF92YWxpZF9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAQ8aFNldCBhIHBlcnNvbmFsIGlkIGFjY291bnQuAE0BVGhlIGFjY291bnQgY2FuIHRoZW4gYmUgdXNlZCB0byBzaWduIHRyYW5zYWN0aW9ucyBvbiBiZWhhbGYgb2YgdGhlIHBlcnNvbmFsIGlkLCBhbmSkcHJvdmlkZSByZXBsYXkgcHJvdGVjdGlvbiB3aXRoIHRoZSBub25jZS4AUQFUaGlzIHRyYW5zYWN0aW9uIGlzIHJlZnVuZGVkIGlmIHN1Y2Nlc3NmdWwgYW5kIG5vIGFjY291bnQgd2FzIHByZXZpb3VzbHkgc2V0IGZvciB0aGUwcGVyc29uYWwgaWQuALBUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGBjYWxsX3ZhbGlkX2F0YCB1bnRpbLxgY2FsbF92YWxpZF9hdCArIGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgLh0BYGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgIGlzIGEgY29uc3RhbnQgYXZhaWxhYmxlIGluIHRoZSBtZXRhZGF0YS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5kdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudAAFBHhVbnNldCB0aGUgcGVyc29uYWwgaWQgYWNjb3VudC5gY3JlYXRlX3Blb3BsZV9jb2xsZWN0aW9uAAYodENyZWF0ZSB0aGUgcGVvcGxlIGNvbGxlY3Rpb24uACkBVGhpcyBjYWxsIGlzIHZhbGlkIG9ubHkgaWYgdGhlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCB5ZXQuIE9uY2UgY3JlYXRlZCyMdGhpcyBjYWxsIGNhbm5vdCBiZSBleGVjdXRlZCBhZ2Fpbi4A1FRoZSBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBhIGZpeGVkIGNvbmZpZ3VyYXRpb246uC0gT3duZXI6IENvbmZpZ3VyZWQgdmlhIGBDb2xsZWN0aW9uT3duZXJgIHR5cGXALSBPbmJvYXJkaW5nIHNpemU6IGBQRU9QTEVfT05CT0FSRElOR19TSVpFYCAoMTApSC0gTW9kZTogYEZsZXhpYmxlYEwtIFJpbmcgc2l6ZTogYFIyZTlgWGNsZWFuX3VwX3N0YWxlX2FsaWFzZXMEARxhbGlhc2VzWQQB3EJvdW5kZWRWZWM8Q29udGV4dHVhbEFsaWFzLCBDb25zdFUzMjxNQVhfQlVMS19DTEVBTlVQPj4AB1CgUmVtb3ZlIHN0YWxlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmdzLgBgQSBtYXBwaW5nIGlzIHN0YWxlIHdoZW46LQEtIGl0cyBjb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBbYENvbmZpZzo6QWNjb3VudENvbnRleHRzYF0gKGdvdmVybmFuY2WoICByZWNvbmZpZ3VyYXRpb24sIGVuZGVkIGFpcmRyb3AgZXRjLiksIG9ycC0gaXRzIHJpbmcgaGFzIGJlZW4gZGVsZXRlZC4AHQFSZXZpc2lvbiBtaXNtYXRjaGVzIGRvIG5vdCByZW5kZXIgYW4gYWxpYXMgc3RhbGUuIFRoZSB1c2VyIGNhbiBjb250aW51ZRUBdHJhbnNhY3RpbmcgdmlhIGBBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWRgIHdpdGhvdXQgaGF2aW5nIHRvTHJlZG8gYWNjb3VudCBzZXR1cC4A/FR5cGljYWxseSBzdWJtaXR0ZWQgYnkgdGhlIE9DVywgYnV0IHRoZSBkaXNwYXRjaCBkb2VzIG5vdCB0cnVzdKh0aGUgY2FsbGVyLiBFYWNoIGFsaWFzIGlzIHJlLXZhbGlkYXRlZCB2aWH0W2BTZWxmOjplbnN1cmVfYWxpYXNfaXNfc3RhbGVgXTsgdGhvc2UgdGhhdCBhcmUgbm90IHN0YWxlIGFyZSBza2lwcGVkLgDwQXQgbW9zdCBbYE1BWF9CVUxLX0NMRUFOVVBgXSBhbGlhc2VzIGFyZSBwcm9jZXNzZWQgcGVyIGNhbGwuAAEBVGhlIHRyYW5zYWN0aW9uIHNvdXJjZSBtdXN0IGJlIGxvY2FsIG9yIGluLWJsb2NrLiBUaHVzLCBleHRlcm5hbHhpbnZvY2F0aW9ucyBhcmUgbm90IHBlcm1pdHRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQQAAAIIAFkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBSQMEUwAABABdBAEYVmVjPFQ+AABdBAAAAkkDAGEEDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0EENhbGwEBFQAAUQQdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARxvcGluaW9uSQQBJEp1ZGdlbWVudAAABOBGZWVsZXNzIG9uIHN1Y2Nlc3MgKGRldGVybWluZWQgb25seSBieSB0b3AgdGhyZWUgbGluZXMpLihjbG9zZV9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABAChjbGVhbl92b3RlCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABFHZvdGVyCAEUQWxpYXMAAgwlAU9yaWdpbiBtdXN0IGJlIGBOb25lYC4gVGhlIHRyYW5zYWN0aW9uIGlzIHZhbGlkYXRlZCBpbiBgVmFsaWRhdGVVbnNpZ25lZGBhAXdoZW4gdGhlIHNvdXJjZSBpcyBsb2NhbCAoZS5nLiBmcm9tIHRoZSBvZmZjaGFpbiB3b3JrZXIpLiBGb3IgZXh0ZXJuYWwgdHJhbnNhY3Rpb25zLCB1c2VQYGNsZWFuX3ZvdGVfc2lnbmVkYC4kcmVhcF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAADACRpbnRlcnZlbmUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcdmVyZGljdEkEASRKdWRnZW1lbnQABAAoY2xhaW1fdm90ZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgABQghAUEgcGVyc29uIGNsYWltcyB0aGUgbW9iIGNyZWRpdCBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLmBUaGUgY2FzZSBtdXN0IGJlIGBEb25lYC44cGF5b3V0X3Jld2FyZHMEASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAGBAkBQSBwZXJzb24gY29udmVydHMgdGhlaXIgY2xhaW1lZCBtb2IgY3JlZGl0IGludG8gYSBkaXJlY3QgdHJhbnNmZXIuLGNsYWltX3ZvdGVzBAEwY2FzZV9pbmRpY2VzZQQBOFZlYzxDYXNlSW5kZXg+AAcINQFBIHBlcnNvbiBjbGFpbXMgbXVsdGlwbGUgbW9iIGNyZWRpdHMgYXNzb2NpYXRlZCBhIGNvcnJlY3Qgdm90ZSBvbiBhIGNhc2UuIFRoZVBjYXNlIG11c3QgYmUgYERvbmVgLkhzdGFydF9wYXlvdXRfcm91bmQACABYc2NoZWR1bGVfcGF5b3V0X3JvdW5kcwwBGGFtb3VudMQBMEJhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ACQBYcmVtb3ZlX3BheW91dF9zY2hlZHVsZQQBFGluZGV4OAEMdTMyAAoAMGNsYWltX2NyZWRpdAALADBjbGVhbl9wb2ludHMIARRyb3VuZDgBKFJvdW5kSW5kZXgAARR2b3RlcggBFEFsaWFzAAwAQGZvcmNlX3JpcGVuX2Nhc2UEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AA0AKHRvdWNoX2Nhc2UEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AA4AUGNsZWFyX3ZvdGluZ19wZW5hbHR5AA8ARGNsZWFuX3ZvdGVfc2lnbmVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABFHZvdGVyCAEUQWxpYXMAEARYT3JpZ2luIG11c3QgYmUgc2lnbmVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5lBAAAAjgAaQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0EENhbGwEBFQAAVgUYXBwbHkAAAyQLSBEZWNsYXJlIGludGVudGlvbiB0byBnZXQgYSB0YXR0b28uTC0gRGVwb3NpdCBpcyB0YWtlbi64LSBgSW5rVHlwZWAgbWF5IG5vdCBiZSBgUHJvY2VkdXJhbERlcml2YXRpdmVgLjxzdWJtaXRfZXZpZGVuY2UEASBldmlkZW5jZQgBMEV2aWRlbmNlSGFzaAABELwtIE9wZW4gYSBqdWRpY2lhbCBjYXNlIHRvIGp1ZGdlIHRoZSBgZXZpZGVuY2VgLtQtIENhbGxzIEp1ZGljaWFsL2BKdWRnZVN0YXRlbWVudChQT0lfSEFTSCwgZXZpZGVuY2UpYFEBLSBOZWVkcyBgU2lnbmVkRXh0ZW5zaW9uYCB0byBhdm9pZCB1cGZyb250IHJlcXVpcmVtZW50IGZvciBmZWUgaWYgYGp1ZGdlbWVudHMgPT0gMGAuOQEtIElmIGBqdWRnZW1lbnRzID4gMGAsIHRoZW4gYW4gYWRkaXRpb25hbCBmZWUgc2hvdWxkIGJlIGNoYXJnZWQgaW50byBUcmVhc3VyeS4YanVkZ2VkDAEYdGlja2V0OAFET3JhY2xlVGlja2V0T2Y8VD4AARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABJGp1ZGdlbWVudEkEASRKdWRnZW1lbnQAAgToSXMgY2FsbGVkIGJ5IHRoZSBPcmFjbGUgd2hlbiB0aGUgZXZpZGVuY2UgaGFzIGJlZW4ganVkZ2VkLkRyZWdpc3Rlcl9yZWZlcnJlZAwBDGtleQgBLE1lbWJlck9mPFQ+AAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAAUhwcm9vZl9vZl9vd25lcnNoaXA5BAGwPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUAAyRQLSBHZXRzIGEgbmV3IGBpbmRleGB4LSBQdXRzIGFuIGVudHJ5IGludG8gYFBlb3BsZWAumC0gQ2FsbHMgUGVvcGxlL2BuZXdQZXJzb24oaW5kZXgsIGtleSlgACwjIEFyZ3VtZW50c7AqIGBrZXlgIC0gVGhlIHBlcnNvbmFsIGlkZW50aXR5IHRvIHJlZ2lzdGVyLiEBKiBgZGVzdGluYXRpb25gIC0gVGhlIGFjY291bnQgcmVjZWl2aW5nIHRoZSBjYW5kaWRhdGUncyByZWZlcnJhbCByZXdhcmQuSQEqIGBwcm9vZl9vZl9vd25lcmhzaXBgIC0gVGhlIHNpZ25hdHVyZSBvZiBwcmVkZWZpbmVkIHByZWZpeCBgInBvcCByZWdpc3RlciB1c2luZyJgqCAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIHNlbmRlciBhY2NvdW50IGlkLlRyZWdpc3Rlcl9ub25fcmVmZXJyZWQMAQxrZXkIASxNZW1iZXJPZjxUPgABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAFIcHJvb2Zfb2Zfb3duZXJzaGlwOQQBsDxUOjpDcnlwdG8gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAQ4UC0gR2V0cyBhIG5ldyBgaW5kZXhgeC0gUHV0cyBhbiBlbnRyeSBpbnRvIGBQZW9wbGVgLpgtIENhbGxzIFBlb3BsZS9gbmV3UGVyc29uKGluZGV4LCBrZXkpYAAsIyBBcmd1bWVudHOwKiBga2V5YCAtIFRoZSBwZXJzb25hbCBpZGVudGl0eSB0byByZWdpc3Rlci7AKiBgZGVzdGluYXRpb25gIC0gVGhlIGFjY291bnQgcmVjZWl2aW5nIHJld2FyZHMuSQEqIGBwcm9vZl9vZl9vd25lcmhzaXBgIC0gVGhlIHNpZ25hdHVyZSBvZiBwcmVkZWZpbmVkIHByZWZpeCBgInBvcCByZWdpc3RlciB1c2luZyJgqCAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIHNlbmRlciBhY2NvdW50IGlkLgAoIyBXYXJuaW5nOgA5AVRoaXMgY2FsbCBjYW4gcGF5IHR3byByZXdhcmRzIHRvIHRoZSBzYW1lIGFjY291bnQgZm9yIG5vbi1yZWZlcnJlZCBjYW5kaWRhdGVzLikBVGhlIGFwcCBpcyByZXNwb25zaWJsZSBmb3IgYW55IGFkZGl0aW9uYWwgcHJpdmFjeSBoYW5kbGluZyBhZnRlciB0cmFuc2Zlci4YcmVyb2xsAAUAGGNvbW1pdAgBGGNob2ljZW0EASRJbmtDaG9pY2UAAShyZXF1aXJlX2lkFQMBSE9wdGlvbjxQZXJzb25hbElkPgAGFEkBQ29tbWl0IHRvIGEgZGVzaWduIGFuZCBhdXRob3JpemUgdGhlIHN0b3JhZ2UgZm9yIChwb3NzaWJseSBqdXN0IGluaXRpYWwpIGV2aWRlbmNlLgBVAUlmIGEgc3BlY2lmaWMgcGVyc29uYWwgaWRlbnRpdHkgaXMgcmVxdWlyZWQsIHRoZW4gdGhpcyBjYW4gYmUgcGxhY2VkIGluIGByZXF1aXJlX2lkYC5BAVRoaXMgY2FuIGJlIGFueSB1bnVzZWQvdW5yZXNlcnZlZCBwZXJzb25hbCBpZGVudGl0eSBubyBncmVhdGVyIHRoYW4gdGhlIGBOZXh0SWRgIGNvdW50ZXIuNGFsbG9jYXRlX2Z1bGwABwAcdGltZW91dAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQACAw5AU9uY2UgYSB0aW1lb3V0IHBhc3NlcywgcmVtb3ZlcyBhIGNhbmRpZGF0ZSB3aG8gaXMgc2VsZWN0ZWQgYnV0IG5vdCB5ZXQgcHJvdmVuLlkBSWYgdGhlIGNhbmRpZGF0ZSB3YXMgcmVmZXJyZWQgdGhlbiByZWZlcnJhbCBpcyBiYWQsIGlmIGNhbmRpZGF0ZSBhcHBsaWVkIHdpdGggZGVwb3NpdCxMZGVwb3NpdCBpcyBzbGFzaGVkLiBmbGFrZW91dAAJBLRSZW1vdmUgYSBjYW5kaWRhdGUgd2hvIGhhcyBub3QgeWV0IGNvbW1pdHRlZC5QYXBwbHlfd2l0aF9zaWduYXR1cmUMASByZWZlcnJlcigBKFBlcnNvbmFsSWQAASRzaWduYXR1cmU1BAFIVDo6VGlja2V0U2lnbmF0dXJlAAEYdGlja2V0BAEkVDo6VGlja2V0AAoQdFV0aWxpemUgYSByZWZlcnJhbCBzaWduYXR1cmUuAF0BVGhlIHBheWxvYWQgdG8gYmUgc2lnbmVkIGJ5IHRoZSByZWZlcnJlciB1c2luZyB0aGVpciByZWdpc3RlcmVkIGtleSBwYWlyIGlzIHRoZSBlbmNvZGVkpGJ5dGVzIG9mIHRoZSBhY2NvdW50IElEIG9mIHRoZSBjYW5kaWRhdGUuVGFwcGx5X3dpdGhfaW52aXRhdGlvbgwBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASxUaWNrZXRPZjxUPgABJHNpZ25hdHVyZTUEAUhUOjpUaWNrZXRTaWduYXR1cmUAExDUQXBwbHkgdG8gdGhlIFByb29mLW9mLUluayBwcm9jZXNzIHdpdGggYW4gaW52aXRhdGlvbi4AWQFUaGUgcGF5bG9hZCB0byBiZSBzaWduZWQgYnkgdGhlIGludml0ZXIgdXNpbmcgdGhlaXIgcmVnaXN0ZXJlZCBrZXkgcGFpciBpcyB0aGUgZW5jb2RlZKRieXRlcyBvZiB0aGUgYWNjb3VudCBJRCBvZiB0aGUgY2FuZGlkYXRlLkRhZGRfZGVzaWduX2ZhbWlseQwBFGluZGV4LQMBLEZhbWlseUluZGV4AAEQa2luZHEEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAALBPBBZGQgYSBkZXNpZ24gZmFtaWx5LiBNdXN0IGhhdmUgcHJpdmlsZWdlZCBhY2Nlc3MgdG8gZG8gdGhpcy5Mc2V0X3JlZmVycmFsX3RpY2tldAQBGHRpY2tldAQBJFQ6OlRpY2tldAAMGLxBZGQgYSByZWZlcnJhbCB0aWNrZXQgYXNzb2NpYXRlZCB3aXRoIGEgcGVyc29uLgBVAU9ubHkgb25lIHJlZmVycmFsIHRpY2tldCBtYXkgYmUgYWN0aXZlIGF0IGFueSBnaXZlbiB0aW1lIGZvciBvbmUgcGVyc29uLiBDYWxsaW5nIHRoaXMlAWV4dHJpbnNpYyB3aGlsZSBhIHZhbGlkIHRpY2tldCBpcyBzZXQgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHRpY2tldC4AOQFJZiBhbnkgcGVuZGluZyByZWZlcnJhbCByZXdhcmRzIGFyZSBwcmVzZW50LCB0aGV5IG5lZWQgdG8gYmUgcmVnaXN0ZXJlZCBmaXJzdC5YY2FuY2VsX3JlZmVycmFsX3RpY2tldAQBGHRpY2tldAQBJFQ6OlRpY2tldAANBMhDYW5jZWwgYSByZWZlcnJhbCB0aWNrZXQgYXNzb2NpYXRlZCB3aXRoIGEgcGVyc29uLoxyZWdpc3Rlcl9zdWNjZXNzZnVsX3JlZmVycmFsX3Jld2FyZAQBLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAA4ANGdyYW50X2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIADxjkR3JhbnRzIGludml0ZXMgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBkaXN0cmlidXRlIHRoZW0uAJhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0YXRpb25zT3JpZ2luLgCwLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdpdmUgaW52aXRlcyB0by6kLSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGludml0ZXMgdG8gZ2l2ZS6QcmVtb3ZlX2F2YWlsYWJsZV9hbmRfcGVuZGluZ19pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGxpbWl0OAEMdTMyABAYnFJlbW92ZSBhbGwgaW52aXRlcyBnaXZlbiB0byBhbiBhY2NvdW50LgCcVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGF0aW9uc09yaWdpbmAuANAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBpbnZpdGVzIGZyb20u7C0gYGxpbWl0YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBlbmRpbmcgaW52aXRlcyB0byByZW1vdmUuRHNldF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AERRISW52aXRlIGFuIGFjY291bnQuAA0BVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgaW52aXRlcyBsZWZ0LgCULSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gc2V0LlBjYW5jZWxfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+ABIUVENhbmNlbCBhbiBpbnZpdGF0aW9uLgAhAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSB0aWNrZXQgdG8gY2FuY2VsLgCgLSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gY2FuY2VsLkRzZXRfY29uZmlndXJhdGlvbgQBGGNvbmZpZ3UEAXxDb25maWdSZWNvcmQ8QmxvY2tOdW1iZXJGb3I8VD4+ADIEFQFTZXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVjb3JkLiBNdXN0IGhhdmUgcHJpdmlsZWdlZCBhY2Nlc3MgdG8gZG8gdGhpcy5gc2V0X3JlaW1idXJzZW1lbnRfdmFsdWVzCAE8cmVmZXJyZWRfdmFsdWVzeQQB6EJvdW5kZWRWZWM8KEJhbGFuY2VPZjxUPiwgdTMyKSwgVDo6TWF4UmVpbWJ1cnNlbWVudFZhbHVlcz4AATxyZWZlcnJlcl92YWx1ZXN5BAHoQm91bmRlZFZlYzwoQmFsYW5jZU9mPFQ+LCB1MzIpLCBUOjpNYXhSZWltYnVyc2VtZW50VmFsdWVzPgAzKE0BU2V0IHRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBjYW5kaWRhdGVzIGFzIHdlbGwgYXMgdGhlaXJNAXJlZmVycmVycywgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHJlaW1idXJzZW1lbnRzIGZvciBlYWNoIHZhbHVlLiBUaGVzZSB2YWx1ZXMgYXJlJHN0b3JlZCBpblEBcmV2ZXJzZSBvcmRlciBvZiB0aGVpciBwcmlvcml0eSwgc28gdGhlIGxhc3QgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lSQF0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4gVGhlIGxlbmd0aCBvZiB0aGUgdHdvIGxpc3RzIG11c3QgYmUgZXF1YWwuACBXQVJOSU5HIQBNAUFmdGVyIHRoZSBudW1iZXIgb2YgcmVpbWJ1cnNlbWVudHMgaXMgZXhoYXVzdGVkIGZvciBhIHZhbHVlIGluIHRoZSBsaXN0LCB0aGUgcGFsbGV09HN0YXJ0cyB1c2luZyB0aGUgbmV4dCB2YWx1ZSBpbW1lZGlhdGVseSBmb3IgZnV0dXJlIHRyYW5zZmVycy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0JElua0Nob2ljZQABFEBEZXNpZ25lZEVsZWN0aXZlCAAtAwEsRmFtaWx5SW5kZXgAAC0DASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAQALQMBLEZhbWlseUluZGV4AAEASFByb2NlZHVyYWxQZXJzb25hbAQALQMBLEZhbWlseUluZGV4AAIAKFByb2NlZHVyYWwIAC0DASxGYW1pbHlJbmRleAAADAEwVmFyaWFudEluZGV4AAMAUFByb2NlZHVyYWxEZXJpdmF0aXZlCAAoAShQZXJzb25hbElkAAAVAwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAQAAHEEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChGYW1pbHlLaW5kAAEQIERlc2lnbmVkBAEUY291bnQtAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsAAIAKFByb2NlZHVyYWwEARRyYW5nZQwBMFZhcmlhbnRJbmRleAADAAB1BAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQwQ29uZmlnUmVjb3JkBCxCbG9ja051bWJlcgE4ACABOHJlcm9sbF90aW1lb3V0OAEsQmxvY2tOdW1iZXIAATxmYXN0dHJhY2tfY291bnQ4AQx1MzIAARxtYXhpbXVtOAEMdTMyAAE4ZnVsbF9hbGxvY19sZW4oAQx1NjQAAUBmdWxsX2FsbG9jX2NvdW50OAEMdTMyAAE4aW5pdF9hbGxvY19sZW4oAQx1NjQAAUBpbml0X2FsbG9jX2NvdW50OAEMdTMyAAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAB5BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAX0EBFMAAAQAgQQBGFZlYzxUPgAAfQQAAAQIxDgAgQQAAAJ9BACFBAxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0EENhbGwEBFQAAURMc2lnbl91cF93aXRoX2ludml0ZQQBOGlkZW50aWZpZXJfa2V5PQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAAg0FNpZ24gdXAgZm9yIHRoZSBnYW1lIHVzaW5nIGFuIGFjY291bnQgYW5kIGFuIGludml0ZS4AFQFUaGlzIGlzIGZvciBuZXcgcGxheWVycyBvciBhcmNoaXZlZCBwbGF5ZXJzLCBvdGhlciBwbGF5ZXJzIHNob3VsZCB1c2WoW2BQYWxsZXQ6OnNpZ25fdXBfd2l0aF9hY2NvdW50YF0gZm9yIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50BAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASSYU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudC4APQFJZiB0aGUgcGxheWVyIGlzIG5ldyBvciBhcmNoaXZlZCwgdGhlbiBhIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIubE90aGVyd2lzZSB0aGUgY2FsbCBpcyBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4AMQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQsIG9yLCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi5Ic2lnbl91cF93aXRoX2FsaWFzDAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAAURzdGF0ZW1lbnRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABDHNpZzUEAUxUOjpBY2NvdW50U2lnbmF0dXJlAAJIVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC4YcmVwb3J0BAEsZnVsbF9yZXBvcnSJBAE0RnVsbFJlcG9ydDxUPgADLJRBZnRlciB0aGUgZ2FtZSwgc2VuZCB0aGUgZnVsbCByZXBvcnQuANBUaGUgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZXBvcnRpbmcgcGhhc2UuAFUBVGhlIG9yaWdpbiBtdXN0IGJlIGFuIGFsaWFzLCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCwgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uAEkBQWZ0ZXIgdGhlIHZvdGVzIGZyb20gdGhlIHJlcG9ydCBhcmUgY291bnRlZCwgdGhlIHJlcG9ydGVyIGFuZCBlYWNoIG9mIHRoZSByZXBvcnRlZEUBcGxheWVycyB3aG9zZSBhdHRlbmRhbmNlIGNhbiBub3cgYmUgZGV0ZXJtaW5lZCBhcmUgcHJvY2Vzc2VkIGVhcmx5LiBUaGlzIGxldHMgdGhlTQFnYW1lIHNraXAgdGhlIHBsYXllci1wcm9jZXNzIHBoYXNlIGVudGlyZWx5IHdoZW4gZXZlcnkgcGxheWVyIGhhcyBiZWVuIHByb2Nlc3NlZCBieVR0aGUgZW5kIG9mIHJlcG9ydGluZy4gb2ZmYm9hcmQABByAT2ZmYm9hcmQgYSBwbGF5ZXIgZnJvbSB0aGUgZ2FtZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4AXQFUaGVyZSBtdXN0IGJlIG5vIGdhbWUgb3IgdGhlIGV4aXN0aW5nIGdhbWUgbXVzdCBiZSBpbiByZWdpc3RyYXRpb24gcGhhc2UgYW5kIHRoZSBwbGF5ZXKUbXVzdCBoYXZlIG5vdCBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLhxraWNrb3V0BAEYcGxheWVyBAEwVDo6QWNjb3VudElkAAUYMQFLaWNrb3V0IGEga2lja2FibGUgcGxheWVyIHRoYXQgaXMgbm90IHBsYXlpbmcgYWZ0ZXIgYE5vblBsYXlpbmdLaWNrb3V0VGltZWAuAKBUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQuACEBLSBgcGxheWVyYDogVGhlIHBsYXllciB0byBraWNrb3V0LiBJdCBtdXN0IGJlIGFyY2hpdmVkIGFuZCBraWNrYWJsZSB3aXRo2CAgYGFyY2hpdmVkX3NpbmNlYCBvbGRlciB0aGFuIGBOb25QbGF5aW5nS2lja291dFRpbWVgLjRncmFudF9pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAYY9EdyYW50IHNvbWUgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AiFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRlSXNzdWVyYC4AtC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBncmFudCBpbnZpdGVzIHRvLqgtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBncmFudC6QcmVtb3ZlX2F2YWlsYWJsZV9hbmRfcGVuZGluZ19pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGxpbWl0OAEMdTMyAAcYmENsZWFyIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAIhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0ZUlzc3VlcmAuANAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBpbnZpdGVzIGZyb20u7C0gYGxpbWl0YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBlbmRpbmcgaW52aXRlcyB0byByZW1vdmUuRHNldF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4ACBRISW52aXRlIGFuIGFjY291bnQuAA0BVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgaW52aXRlcyBsZWZ0LgCULSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gc2V0LlBjYW5jZWxfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+AAkURENhbmNlbCBhbiBpbnZpdGUuACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuOHNjaGVkdWxlX2dhbWVzBAE8Z2FtZXNfc2NoZWR1bGVznQQBRFZlYzxHYW1lU2NoZWR1bGU+AAoI0FNjaGVkdWxlcyBuZXcgZ2FtZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHNjaGVkdWxlcy5dAVNjaGVkdWxlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIsIGFuZCBhZnRlciB0aGUgb25nb2luZyBnYW1lIChpZiB0aGVyZSBpcyBhbnkpLlRyZW1vdmVfc2NoZWR1bGVkX2dhbWUEAThnYW1lX3BsYXlfdGltZTgBDHUzMgALAEBzZXRfcGxheV9kZXBvc2l0BAEYYW1vdW50xAFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEFQFVcGRhdGUgdGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IGFtb3VudCBmb3IgZnV0dXJlIGFjY291bnQgc2lnbnVwcy5sdGVzdG5ldF9mb3JjZV9zdGFydF9zaHVmZmxlAGUM1EZvcmNlIHN0YXJ0IHRoZSBzaHVmZmxlIGJlZm9yZSBpdHMgbm9ybWFsIHN0YXJ0IHRpbWUuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy5sdGVzdG5ldF9mb3JjZV9lbmRfcmVwb3J0aW5nAGYM+EZvcmNlIGVuZCBhIGdhbWUncyByZXBvcnRpbmcgcGhhc2UgYmVmb3JlIGl0cyBub3JtYWwgZW5kIHRpbWUuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy48c2V0X2dhbWVfcGhhc2VzBAEYcGhhc2VzpQQBTFBoYXNlRHVyYXRpb25WYWx1ZXMADiyIT3ZlcnJpZGUgdGhlIGdhbWUgcGhhc2UgZHVyYXRpb25zLgApAVJlc3RyaWN0ZWQgdG8gW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXSAob3Igcm9vdCkuIFVudGlsIHJlc2V0LCBhbGwgZnV0dXJlNQFnYW1lIHNjaGVkdWxlcyB1c2UgdGhlc2UgcGhhc2VzIGluc3RlYWQgb2YgW2BDb25maWc6OkRlZmF1bHRQaGFzZUR1cmF0aW9uc2BdLg0BVG8gcmV2ZXJ0LCB0aGUgbWFuYWdlciByZS1pc3N1ZXMgdGhlIGNhbGwgd2l0aCB0aGUgZGVzaXJlZCBleHBsaWNpdMB2YWx1ZXMg4oCUIHRoZXJlIGlzIG5vIHNlcGFyYXRlIGNsZWFyIGV4dHJpbnNpYy4AGQFPbmx5IGNhbGxhYmxlIHdoaWxlIG5vIGdhbWUgZXhpc3RzIG9yIHRoZSBjdXJyZW50IGdhbWUgaXMgc3RpbGwgaW4gaXRzKQFSZWdpc3RyYXRpb24gcGhhc2U7IG90aGVyd2lzZSBmYWlscyB3aXRoIFtgRXJyb3I6OkludmFsaWRHYW1lU3RhdGVgXS4gVGhpcx0BcHJldmVudHMgY2hhbmdpbmcgcGhhc2UgZHVyYXRpb25zIG9uY2UgcGxheWVycyBoYXZlIGNvbW1pdHRlZCB0byBhIGdhbWWId2hvc2UgdGltaW5nIGlzIGFscmVhZHkgbG9ja2VkIGluLkRraWxsX2N1cnJlbnRfZ2FtZQAPEOhLaWxsIHRoZSBjdXJyZW50IGdhbWUsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggcGhhc2UgaXQgaXMgaW4uAC0BUmVzdHJpY3RlZCB0byBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIChvciByb290KS4gSW50ZW5kZWQgYXMgYW4gZW1lcmdlbmN5EQFyZWNvdmVyeSBsZXZlciB3aGVuIGEgZ2FtZSBpcyBzdHVjayBvciBpdHMgc3RhdGUgaGFzIGJlZW4gY29ycnVwdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6JBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0EBFMAAAQAmQQBGFZlYzxUPgAAjQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGRBARTAAAEAJUEARhWZWM8VD4AAJEEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhSZXBvcnQAAQgYUGVyc29uAAAAJE5vdFBlcnNvbgABAACVBAAAApEEAJkEAAACjQQAnQQAAAKhBAChBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMwR2FtZVNjaGVkdWxlAAAMAThnYW1lX3BsYXlfdGltZTgBDHUzMgABGHJvdW5kcwwBCHU4AAE4bWF4X2dyb3VwX3NpemU4AQx1MzIAAKUEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0xQaGFzZUR1cmF0aW9uVmFsdWVzAAAUATByZWdpc3RyYXRpb244AQx1MzIAARxzaHVmZmxlOAEMdTMyAAFMcG9zdF9zaHVmZmxlX21hcmdpbjgBDHUzMgABJHJlcG9ydGluZzgBDHUzMgABOHBsYXllcl9wcm9jZXNzOAEMdTMyAACpBAxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBBDYWxsBARUAAEkWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnTEATBCYWxhbmNlT2Y8VD4AARRjb3VudDgBDHUzMgABIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQxcU2NoZWR1bGUgcGF5b3V0IHJvdW5kcy4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LlhyZW1vdmVfcGF5b3V0X3NjaGVkdWxlBAEUaW5kZXg4AQx1MzIAAgyAUmVtb3ZlIGEgc2NoZWR1bGVkIHBheW91dCByb3VuZC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LkB0cmFuc2l0aW9uX3JvdW5kBAEscm91bmRfaW5kZXg4AQx1MzIAAxhIU3RhcnQgYSBuZXcgcm91bmQuAFEBVGhpcyBpcyB2YWxpZCBpZiB0aGUgY3VycmVudCByb3VuZCBpcyBmaW5pc2hlZCwgb3IgaWYgdGhlIGN1cnJlbnQgcm91bmQgZG9lc24ndCBoYXZlqHBsYW5uaW5nIGFuZCBhIHNjaGVkdWxlIGV4aXN0cyB0byBwbGFuIGl0LgC8VGhpcyBpcyBhIHRhc2ssIGFuZCBjYW4gYmUgY2FsbGVkIGZyb20gYW55Ym9keS5Qb3BlcmF0ZV9wYXlvdXRfcm91bmQIASxyb3VuZF9pbmRleDgBKFJvdW5kSW5kZXgAARRsaW1pdDgBDHUzMgAEPHhPcGVyYXRlIHNvbWUgcm91bmQgcGF5aW5nIG91dC4AUQFEcmFpbnMgcm91bmQncyBwYXJ0aWNpcGFudHMsIHVwIHRvIGEgbGltaXQuIEZvciBlYWNoIHBhcnRpY2lwYW50LCBhZGQgdGhlIGNhbGN1bGF0ZWQVAXJld2FyZCAoYGJhc2VfcmV3YXJkICsgcmVtYWluZGVyX3BvcnRpb25gKSB0byB0aGVpciBgY3JlZGl0YCBiYWxhbmNlLgBhAVRoZW4sIG1vdmVzIGZ1bmRzIG9uIHRoZSBwb3QgYWNjb3VudCBmcm9tIFBheW91dCB0byBDcmVkaXQsIHNvIHRoZXkgYXJlIG93ZWQgdG8gc3BlY2lmaWOgcGFydGljaXBhbnRzIHJhdGhlciB0aGFuIHRoZSByb3VuZCBwb29sLgBFAUZpbmFsbHksIHJlbGVhc2UgdGhlIGxlZnRvdmVyIGZyb20gdGhlIFBheW91dCBob2xkIGJhY2sgdG8gdGhlIHBvdCdzIGZyZWUgYmFsYW5jZVQoZnVuZHMgYXJlIHJlY3ljbGVkKS4AvFRoaXMgaXMgYSB0YXNrLCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueWJvZHkuAMQqIHJvdW5kX2luZGV4OiBUaGUgaW5kZXggb2YgdGhlIHJvdW5kIHRvIG9wZXJhdGUuEQEqIGxpbWl0OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFydGljaXBhbnRzIHRvIG9wZXJhdGUgaW4gdGhpcyBjYWxsLiBjYXNoX291dAAFJFkBQ2FzaCBvdXQgaGFsZiBvZiB0aGUgc2NvcmUsIHJvdW5kZWQgdXAuIENvbnZlcnRzIHRoZSBzY29yZSBpbnRvIHBvaW50cyBmb3IgdGhlIGN1cnJlbnQlAXBheW91dCByb3VuZC4gQ2FsbGVyIG11c3QgaGF2ZSBuZXZlciByZWFjaGVkIHBlcnNvbmhvb2Qgc2luY2Ugb25ib2FyZGluZy4AtEl0IGNhbiBiZSBjYWxsZWQgb25jZSBwZXIgZ2FtZSBzZXNzaW9uIChlcmEpLgA9AU9yaWdpbiBtdXN0IGJlIHNpZ25lZCBvciBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpYyB1c2luZyBTY29yZUFzUGFydGljaXBhbnRYdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKQDMQWxpYXMgb3JpZ2luIGlzIG5vdCBhbGxvd2VkIGFzIHRoZXkgY2FuJ3QgY2FzaCBvdXQuNHJlZGVlbV9jcmVkaXQEASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAGGFEBUmVkZWVtIGZ1bGwgYWNjdW11bGF0ZWQgY3JlZGl0LCB0cmFuc2ZlcnJpbmcgaXQgdG8gdGhlIHByb3ZpZGVkIGRlc3RpbmF0aW9uIGFjY291bnQuAORDcmVkaXQgaXMgY29udmVydGVkIGZyb20gcG9pbnRzIGR1cmluZyBwYXlvdXQgcHJvY2Vzc2luZy4ASQFPcmlnaW4gbXVzdCBiZSBhIHBlcnNvbiBhbGlhcywgYSBzaWduZWQgYWNjb3VudCBvciBhIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljwHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudCB0cmFuc2FjdGlvbiBleHRlbnNpb24pLiByZWdpc3RlcgQBDGtlea0EAQ0BT3B0aW9uPChNZW1iZXJPZjxUPiw8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZSkKPgAHNPBSZWdpc3RlciBhcyBhIHBlcnNvbiwgb3IgcmVzdW1lIHBlcnNvbmhvb2QgYWZ0ZXIgc3VzcGVuc2lvbi4AJQFSZXF1aXJlcyBzY29yZSA+PSBwZXJzb25ob29kIHRocmVzaG9sZCAob3IgaGF2aW5nIHByZXZpb3VzbHkgcmVhY2hlZCBpdCkuAGEBSWYgdGhlIHBhcnRpY2lwYW50IHdhcyBwcmV2aW91c2x5IHJlY29nbmlzZWQgYW5kIGlzIG5vdyBzdXNwZW5kZWQsIHRoZXkgbXVzdCBub3QgcHJvdmlkZYhhIGtleS4gVGhlIGV4aXN0aW5nIGtleSBpcyByZXVzZWQuAD0BSWYgdGhlIHBhcnRpY2lwYW50IHdhcyBuZXZlciByZWNvZ25pc2VkLCB0aGV5IG11c3QgcHJvdmlkZSBhIGtleSBhbmQgYSBwcm9vZiBvZhkBb3duZXJzaGlwIChga2V5YCBwYXJhbWV0ZXIpOiBhIHNpZ25hdHVyZSBvdmVyIGAicG9wIHJlZ2lzdGVyIHVzaW5nIiB8fExzZW5kZXJfYWNjb3VudF9pZGAuAEUBT3JpZ2luIG11c3QgYmUgc2lnbmVkIG9yIGEgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWMgdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50XHRyYW5zYWN0aW9uIGV4dGVuc2lvbikuaHNldF9hYnNlbmNlX2dyYWNlX3NjaGVkdWxlBAEgc2NoZWR1bGW1BAFEQWJzZW5jZUdyYWNlVGllcnMACDh8U2V0IHRoZSBhYnNlbmNlIGdyYWNlIHNjaGVkdWxlLgApAUV2ZXJ5IHRpZXIgbXVzdCBzYXRpc2Z5OiBgMCA8PSB3aW5kb3cgPD0gOGAgYW5kIGBhbGxvd2VkX21pc3NlcyA8IHdpbmRvd2AuFQFgYWxsb3dlZF9taXNzZXMgPSAwYCBkaXNhYmxlcyBncmFjZSBlbnRpcmVseSAoYW55IGFic2VuY2UgaW1tZWRpYXRlbHkoc3VzcGVuZHMpLgAlAVRpZXJzIG11c3QgYmUgcHJvdmlkZWQgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC4A/EFuIGVtcHR5IHNjaGVkdWxlIGRpc2FibGVzIHRoZSBncmFjZSBwZXJpb2QgZW50aXJlbHkgKGltbWVkaWF0ZR0Bc3VzcGVuc2lvbiBvbiBhbnkgbWlzc2VkIGdhbWUpLiBUaGUgbmV3IHJhdGlvIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQJAW9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9uIHdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlc1BgQWJzZW5jZUdyYWNlUmF0aW9gLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuhHNldF9wZXJzb25ob29kX3RocmVzaG9sZF9zY2hlZHVsZQQBIHNjaGVkdWxlwQQBYFBlcnNvbmhvb2RUaHJlc2hvbGRUaWVycwAJQJhTZXQgdGhlIHBlcnNvbmhvb2QtdGhyZXNob2xkIHNjaGVkdWxlLgA4VGllcnMgbXVzdCBiZTowLSBub24tZW1wdHksyC0gc29ydGVkIGFzY2VuZGluZyBieSBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAsGQEtIGNhcHBlZCBieSBhIGZpbmFsIHRpZXIgd2l0aCBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZCA9PSB1MzI6Ok1BWGAsFQEtIHBlci10aWVyOiBgMCA8IHNjb3JlX3RocmVzaG9sZCA8PSBNQVhfUEVSU09OSE9PRF9USFJFU0hPTERgICg9IDIxKSzULSBoYXZlIG5vbi1kZWNyZWFzaW5nIGBzY29yZV90aHJlc2hvbGRgIGFjcm9zcyB0aWVycy4ACQFUaGUgbmV3IGN1cnZlIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb274d2hlbiBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcmVjYWxjdWxhdGVzIGBQZXJzb25ob29kVGhyZXNob2xkYC4AAQFBbHJlYWR5LXJlY29nbml6ZWQgcGFydGljaXBhbnRzIGFyZSBOT1QgcmV0cm9hY3RpdmVseSBzdXNwZW5kZWQ6EQF0aGUgbmV3IGJhciBvbmx5IGdhdGVzIGZ1dHVyZSBzY29yZSBldmFsdWF0aW9ucyBpbiBgc2V0X2F0dGVuZGFuY2VgLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLq0EBBhPcHRpb24EBFQBsQQBCBBOb25lAAAAEFNvbWUEALEEAAABAACxBAAABAgIOQQAtQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5BARTAAAEAL0EARhWZWM8VD4AALkEDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNAQWJzZW5jZUdyYWNlVGllcgAADAFkcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZDgBDHUzMgABGHdpbmRvdwwBCHU4AAE4YWxsb3dlZF9taXNzZXMMAQh1OAAAvQQAAAK5BADBBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcUEBFMAAAQAyQQBGFZlYzxUPgAAxQQMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlc1xQZXJzb25ob29kVGhyZXNob2xkVGllcgAACAFkcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZDgBDHUzMgABPHNjb3JlX3RocmVzaG9sZDgBDHUzMgAAyQQAAALFBADNBAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQQQ2FsbAQEVAABICxyZXNlcnZlX2lkcwQBFGNvdW50OAEMdTMyAAAEhFJlc2VydmUgYSBudW1iZXIgb2YgcGVyc29uYWwgSURzLlByZW5ld19pZF9yZXNlcnZhdGlvbgQBCGlkKAEoUGVyc29uYWxJZAABBLxSZW5ldyBhIHBlcnNvbmFsIElELiBUaGUgSUQgbXVzdCBub3QgYmUgaW4gdXNlLlRjYW5jZWxfaWRfcmVzZXJ2YXRpb24EAQhpZCgBKFBlcnNvbmFsSWQAAgSEQ2FuY2VsIGEgcGVyc29uYWwgSUQgcmVzZXJ2YXRpb24uUHJlY29nbml6ZV9wZXJzb25ob29kBAEwaWRzX2FuZF9rZXlz0QQB8EJvdW5kZWRWZWM8KFBlcnNvbmFsSWQsIE1lbWJlck9mPFQ+KSwgVDo6TWF4UGVyc29uQmF0Y2hTaXplPgADBCkBR3JhbnQgcGVyc29uaG9vZCBmb3IgYSBsaXN0IG9mIGNhbmRpZGF0ZXMgdGhhdCBoYXZlIHJlc2VydmVkIHBlcnNvbmFsIElEcy5Ic3VzcGVuZF9wZXJzb25ob29kBAEMaWRz3QQBtEJvdW5kZWRWZWM8UGVyc29uYWxJZCwgVDo6TWF4UGVyc29uQmF0Y2hTaXplPgAECF0BU3VzcGVuZCB0aGUgcGVyc29uaG9vZCBvZiBhIGxpc3Qgb2YgcmVjb2duaXplZCBwZW9wbGUuIFRoZSBwZW9wbGUgbXVzdCBub3QgY3VycmVudGx5IGJlKHN1c3BlbmRlZC5EcmVzdW1lX3BlcnNvbmhvb2QEAQhpZCgBKFBlcnNvbmFsSWQABQQRAVJlc3VtZSBzb21lb25lJ3MgcGVyc29uaG9vZC4gVGhlIHBlcnNvbiBtdXN0IGN1cnJlbnRseSBiZSBzdXNwZW5kZWQuWHN0YXJ0X211dGF0aW9uX3Nlc3Npb24ABghdAVN0YXJ0IGEgbXV0YXRpb24gc2Vzc2lvbiBpbiB0aGUgdW5kZXJseWluZyBgUGVvcGxlYCBpbnRlcmZhY2UuIFRoaXMgY2FsbCBkb2VzIG5vdCBjaGVjayUBd2hldGhlciBhIG11dGF0aW9uIHNlc3Npb24gaXMgYWxyZWFkeSBvbmdvaW5nIGFuZCBjYW4gc3RhcnQgbmV3IHNlc3Npb25zLlBlbmRfbXV0YXRpb25fc2Vzc2lvbgAHEF0BRW5kIGEgbXV0YXRpb24gc2Vzc2lvbiBpbiB0aGUgdW5kZXJseWluZyBgUGVvcGxlYCBpbnRlcmZhY2UuIFRoaXMgY2FsbCBjYW4gZW5kIG11bHRpcGxl4G11dGF0aW9uIHNlc3Npb25zLCBldmVuIG9uZXMgbm90IHN0YXJ0ZWQgYnkgdGhpcyBwYWxsZXQuANhUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIG5vIG11dGF0aW9uIHNlc3Npb24gaXMgb25nb2luZy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu0QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHVBARTAAAEANkEARhWZWM8VD4AANUEAAAECCgIANkEAAAC1QQA3QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEoBFMAAAQA4QQBGFZlYzxUPgAA4QQAAAIoAOUEDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0EENhbGwEBFQAARh4aW5jcmVhc2VfYXR0ZXN0YXRpb25fYWxsb3dhbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAAYJQFHcmFudCBzb21lIGF0dGVzdGF0aW9uIGFsbG93YW5jZSB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGF0dGVzdCBwZW9wbGUuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuAMgtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ3JhbnQgYXR0ZXN0YXRpb25zIHRvLrwtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgYXR0ZXN0YXRpb25zIHRvIGdyYW50LmxjbGVhcl9hdHRlc3RhdGlvbl9hbGxvd2FuY2UEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUvENsZWFyIGFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgZm9yIGFuIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuAOQtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBhdHRlc3RhdGlvbnMgZnJvbS4YYXR0ZXN0FAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZTUEAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABMHJpbmdfdnJmX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwOQQBOFNpZ25hdHVyZU9mPFQ+AAFUY29uc3VtZXJfcmVnaXN0cmF0aW9u6QQBrE9wdGlvbjxMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXNPZjxUPj4AAoRIQXR0ZXN0IGFuIGFjY291bnQuAEUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGxlZnQuAPBUaGUgYXV0aG9yaXR5IHdpbGwgaGF2ZSB0byBnZXQgdHdvIHNpZ25hdHVyZXMgZnJvbSB0aGUgdXNlcjpNAS0gb25lIGNyZWF0ZWQgdXNpbmcgdGhlaXIgYWNjb3VudCBrZXkgYXR0ZXN0aW5nIHRvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGBjYW5kaWRhdGVgKCAgYWNjb3VudDtdAS0gb25lIGNyZWF0ZWQgdXNpbmcgdGhlaXIgcmluZy12cmYga2V5IGF0dGVzdGluZyB0byB0aGUgb3duZXJzaGlwIG9mIHRoZSBgcmluZ192cmZfa2V5YBggIGtleS4AYQFUaGUgbWVzc2FnZSB0byBiZSBzaWduZWQgYnkgYm90aCBrZXlzIGZyb20gd2hpY2ggdGhlIHNpZ25hdHVyZXMgYXJlIGdlbmVyYXRlZCBpcyBjcmVhdGVkVQFieSBjb25jYXRlbmF0aW5nIHRoZSBieXRlcyAicG9wOnBlb3BsZS1saXRlOnJlZ2lzdGVyIHVzaW5nIiB3aXRoIHRoZSBlbmNvZGVkIGJ5dGVzIG9mLQF0aGUgdXNlcidzIGFjY291bnQgKGBjYW5kaWRhdGVgKSwgYW5kIHRoZSBlbmNvZGVkIGJ5dGVzIG9mIHRoZSByaW5nIFZSRiBrZXlEKGByaW5nX3ZyZl9rZXlgKS4AWE9uIHN1Y2Nlc3MsIHRoaXMgY2FsbDrALSBzdG9yZXMgbGl0ZSByZWdpc3RyYXRpb24gZGF0YSBpbiBgTGl0ZVBlb3BsZWAs9C0gYWRkcyB0aGUgdXNlcidzIHJpbmcgVlJGIGtleSB0byB0aGUgbGl0ZSBtZW1iZXIgY29sbGVjdGlvbi4ALQFUaGUgbGl0ZSBtZW1iZXIgY29sbGVjdGlvbiBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGJ5IGBvbl9wb2xsYC4A/C0gYGNhbmRpZGF0ZWA6IFRoZSBjYW5kaWRhdGUgdG8gYmUgcmVjb2duaXplZCBhcyBhIGxpdGUgcGVyc29uLmEBLSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUsIHByb3ZpZGVkIGJ5IHRoZSBjYW5kaWRhdGUsIHRvIGFsbG93IHRoZSBhdHRlc3RlctwgIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBvbiB0aGVpciBiZWhhbGYuJQEtIGByaW5nX3ZyZl9rZXlgOiBUaGUgcmluZyBWUkYga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGl0ZSBwZXJzb24uXQEtIGByaW5nX3ZyZl9rZXlfc2lnbmF0dXJlYDogVGhlIHJpbmcgVlJGIHNpZ25hdHVyZSwgcHJvdmlkZWQgYnkgdGhlIGNhbmRpZGF0ZSwgdG8gYWxsb3dVASAgdGhlIGF0dGVzdGVyIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhpcyBhbHNvIHByb3ZlIHRoZSBvd25lcnNoaXAgb2aQICB0aGUgcmluZyBWUkYga2V5IGJ5IHRoZSBjYW5kaWRhdGUuXQEtIGNvbnN1bWVyX3JlZ2lzdHJhdGlvbjogT3B0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGNhbiBjb250YWluIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb25dASAgdG8gZm9yd2FyZCBhIGNvbnN1bWVyIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHRvIHRoZSBgTGl0ZUNvbnN1bWVyUmVnaXN0cmFyYCBzZXJ2aWNlLiBJZlEBICBwcmVzZW50LCBpdCBhbHNvIGNvbnRhaW5zIGEgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIHVzZXIgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlJQEgIGludGVudC4gTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgc2lnbmluZyBwYXlsb2FkIGdlbmVyYXRpb24gYXZhaWxhYmxlIGlu7CAgW3R5cGVzOjpMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXM6OnNpZ25pbmdfcGF5bG9hZF0uSGRpc3BhdGNoX2FzX3NpZ25lcgQBEGNhbGwgAUxCb3g8VDo6UnVudGltZUNhbGw+AAUARHNldF9hbGlhc19hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHZhbGlkX2F0X2Jsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABhC0U2V0IHRoZSBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCBhIGxpdGUgYWxpYXMuALRUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGB2YWxpZF9hdF9ibG9ja2AgdW50aWzEYHZhbGlkX2F0X2Jsb2NrICsgYWNjb3VudF9zZXR1cF9ibG9ja190b2xlcmFuY2VgLkx1bnNldF9hbGlhc19hY2NvdW50AAcABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukEBBhPcHRpb24EBFQB7QQBCBBOb25lAAAAEFNvbWUEAO0EAAABAADtBAxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzeExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtcwgkQWNjb3VudElkAQQkU2lnbmF0dXJlATUEABQBJHNpZ25hdHVyZTUEASRTaWduYXR1cmUAARxhY2NvdW50BAEkQWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASB1c2VybmFtZUEEASBVc2VybmFtZQABRHJlc2VydmVkX3VzZXJuYW1l8QQBQE9wdGlvbjxVc2VybmFtZT4AAPEEBBhPcHRpb24EBFQBQQQBCBBOb25lAAAAEFNvbWUEAEEEAAABAAD1BAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQQQ2FsbAQEVAABNFByZWdpc3Rlcl9saXRlX3BlcnNvbgwBOGlkZW50aWZpZXJfa2V5PQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAEgdXNlcm5hbWVBBAEgVXNlcm5hbWUAAURyZXNlcnZlZF91c2VybmFtZfEEAUBPcHRpb248VXNlcm5hbWU+AAAElFJlZ2lzdGVyIGEgbGl0ZSBwZXJzb24gYXMgYSBjb25zdW1lci48cmVnaXN0ZXJfcGVyc29uDAFQbGlua2VkX2xpdGVfaWRlbnRpdHkEATBUOjpBY2NvdW50SWQAAUxsaXRlX2lkZW50aXR5X3Byb29mNQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAE8dXNlcm5hbWVfY2hvaWNl+QQBWFBlcnNvbmFsVXNlcm5hbWVDaG9pY2UAASScUmVnaXN0ZXIgYSBwcm92ZW4gcGVyc29uIGFzIGEgY29uc3VtZXIuAF0BVGhlIHBlcnNvbiBtdXN0IGxpbmsgYSBwcmV2aW91c2x5IHJlY29nbml6ZWQgbGl0ZSBpZGVudGl0eSwgd2hpY2ggd2lsbCBiZSB1cGdyYWRlZCB0byBhWQFmdWxsIHBlcnNvbiBjb25zdW1lci4gSW4gb3JkZXIgdG8gcHJvdmUgdGhleSBob2xkIHRoZSBsaXRlIGlkZW50aXR5IHRoZXkgd2FudCB0byBsaW5rLGEBdXNlcnMgbXVzdCBwcm92aWRlIGEgYGxpdGVfaWRlbnRpdHlfcHJvb2ZgIHNpZ25hdHVyZSwgY3JlYXRlZCBieSBzaWduaW5nIHRoZSBhbGlhcyBieXRlc4h1c2luZyB0aGVpciBsaXRlIGNvbnN1bWVyIGFjY291bnQuADkBVGhlIGNvbnN1bWVyIGNhbiBjaG9vc2UgaWYgdGhleSB3YW50IHRvIGhhdmUgYSBuZXcgdXNlcm5hbWUgb3IgdXNlIGFuIGV4aXN0aW5nFQFyZXNlcnZhdGlvbiBtYWRlIGluIHRoZSBuYW1lIG9mIHRoZSBsaXRlIGNvbnN1bWVyIHdobyB3aWxsIGJlIGxpbmtlZC5odG91Y2hfcGVyc29uX2F1dGhvcml6YXRpb24AAhBJAVVwZGF0ZSBhIHBlcnNvbidzIGF1dGhvcml6YXRpb24gYnkgZW5zdXJpbmcgdGhleSBjYW4gc3RpbGwgYXV0aGVudGljYXRlIGFzIHBlb3BsZS4AUQFUaGlzIGNhbGwgbXVzdCBiZSBwZXJmb3JtZWQgYXQgbGVhc3QgYE1pblBlcnNvbkF1dGhVcGRhdGVJbnRlcnZhbGAgc2Vjb25kcyBhZnRlciB0aGWUbGFzdCB1cGRhdGUgaW4gb3JkZXIgdG8gcHJldmVudCBzcGFtLoxyZW1vdmVfZXhwaXJlZF91c2VybmFtZV9yZXNlcnZhdGlvbggBIHVzZXJuYW1lQQQBIFVzZXJuYW1lAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADIDkBUmVtb3ZlIGFuIGV4cGlyZWQgZW50cnkgZnJvbSBhIHVzZXJuYW1lIHJlc2VydmF0aW9uIHF1ZXVlLiBUaGUgdGFyZ2V0IGVudHJ5IGlzAQFpZGVudGlmaWVkIGJ5IGBhY2NvdW50YCBhbmQgY2FuIGJlIGF0IGFueSBwb3NpdGlvbiBpbiB0aGUgcXVldWUuHQFFYWNoIGNhbGwgcmVtb3ZlcyBleGFjdGx5IG9uZSBlbnRyeSwgc28gaXQgbXVzdCBiZSBjYWxsZWQgcmVwZWF0ZWRseSB0b5BjbGVhciBtdWx0aXBsZSBleHBpcmVkIHJlc2VydmF0aW9ucy4ALQFUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuIFRoZSBgYWNjb3VudGAxAXBhcmFtZXRlciBpcyBhbHNvIHVzZWQgZm9yIHRyYW5zYWN0aW9uIHBvb2wgZGVkdXBsaWNhdGlvbiwgYWxsb3dpbmcgcGFyYWxsZWwRAXN1Ym1pc3Npb25zIHRoYXQgdGFyZ2V0IGRpZmZlcmVudCBleHBpcmVkIGVudHJpZXMgaW4gdGhlIHNhbWUgcXVldWUuVHVwZGF0ZV9pZGVudGlmaWVyX2tleQQBOGlkZW50aWZpZXJfa2V5PQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAQQ2FVwZGF0ZSB0aGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVyIGtleSBvZiBhIGNvbnN1bWVyLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSB0aGUgYWNjb3VudCByZWdpc3RlcmVkIGZvciB0aGF0IGNvbnN1bWVyLCByZWdhcmRsZXNzIG9mIHRoZWlyMGNyZWRpYmlsaXR5LoRzZXRfdXNlcm5hbWVfcmVzZXJ2YXRpb25fZHVyYXRpb24EASBkdXJhdGlvbigBDHU2NAAFDB0BU2V0IHRoZSBkdXJhdGlvbiBmb3Igd2hpY2ggYSB1c2VybmFtZSByZXNlcnZhdGlvbiBpcyB2YWxpZCwgaW4gc2Vjb25kcy4AYFRoZSBvcmlnaW4gbXVzdCBiZSByb290LkxkZW1vdGVfYXV0aF9leHBpcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAHDDEBRGVtb3RlIGEgZnVsbCBwZXJzb24gdG8gYSBsaXRlIHBlcnNvbiBhZnRlciB0aGVpciBhdXRob3JpemF0aW9uIGhhcyBleHBpcmVkLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLsRzZXRfZnJpZW5kX3JlcXVlc3Rfc3RhdGVtZW50X2FjY291bnRfZm9yX3NlcXVlbmNlCAEkcmVmZXJlbmNl/QQBWEZyaWVuZFJlcXVlc3RSZWZlcmVuY2UAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAhAFQFBc3NvY2lhdGUgYSBzdGF0ZW1lbnQgYWNjb3VudCB3aXRoIGEgZnJpZW5kIHJlcXVlc3QgY29udGV4dCBzZXF1ZW5jZS4AWQFUaGUgYXNzb2NpYXRlZCBhY2NvdW50IGNhbiBzdWJtaXQgc3RhdGVtZW50cyB3aGlsZSB0aGlzIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbiBpcxxhY3RpdmUuNQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6RnJpZW5kUmVxdWVzdEFsaWFzYCwgY3JlYXRlZCBieSB0aGUgYEFzUmVzb3VyY2VzYFEBKGBSZWdpc3RlckZyaWVuZFJlcXVlc3RXaXRoUHJvb2YoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHByb29mIHZhbGlkYXRpb24uHQFPbiBzdWNjZXNzLCBpbmNyZWFzZXMgc3RhdGVtZW50IGFsbG93YW5jZSBhbmQgc3RvcmVzIHJlZ2lzdHJhdGlvbiBzdGF0ZWhge2FjY291bnRfaWQsIHJlZmVyZW5jZX1gLgAsUGFyYW1ldGVyczrMKiBgcmVmZXJlbmNlYDogZnJpZW5kIHJlcXVlc3QgcGVyaW9kL3NlcXVlbmNlIHBhaXIuMQEgIC0gYHJlZmVyZW5jZS5wZXJpb2RgIG11c3QgYmUgaW4gdGhlIGFjY2VwdGVkIHBlcmlvZCB3aW5kb3c6IGBbcGVyaW9kKG5vdyAttCAgICBGcmllbmRSZXF1ZXN0R3JhY2VXaW5kb3cpLCBwZXJpb2Qobm93KV1gLgUBICAtIGByZWZlcmVuY2Uuc2VxYCBtdXN0IGJlIGluIGAwLi49RnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kYC5NASogYGFjY291bnRfaWRgOiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhdXRob3JpemUuIE11c3Qgbm90IGFscmVhZHkgYmUgdXNlZCBieSBhbm90aGVyeCAgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uLpRjbGVhcl9leHBpcmVkX2ZyaWVuZF9yZXF1ZXN0X3NlcXVlbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABDHNlcQwBCHU4AAkoNQFDbGVhciBhIHN0YWxlIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbiBhbmQgcmV2b2tlIGl0cyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiEBU3VjY2VlZHMgb25seSB3aGVuIHRoZSByZWdpc3RyYXRpb24ncyBwZXJpb2QtZGVyaXZlZCBleHBpcnkgaGFzIGVsYXBzZWQuYQFPbiBzdWNjZXNzLCByZW1vdmVzIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbiBzdGF0ZSBhbmQgZGVjcmVhc2VzIHN0YXRlbWVudCBhbGxvd2FuY2UuACxQYXJhbWV0ZXJzOmEBKiBgYWNjb3VudGA6IHN0YXRlbWVudCBhY2NvdW50IHByZXZpb3VzbHkgYXNzb2NpYXRlZCB3aXRoIGEgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uLlkBKiBgc2VxYDogZnJpZW5kIHJlcXVlc3Qgc2VxdWVuY2UgdG8gY2xlYXIuIE11c3QgbWF0Y2ggc3RvcmVkIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZSBhbmSoICBiZSBpbiBgMC4uPUZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZGAubHNldF9zdGF0ZW1lbnRfc3RvcmVfYWNjb3VudAwBGHBlcmlvZDgBDHUzMgABDHNlcTgBDHUzMgABOHRhcmdldF9hY2NvdW50BAEwVDo6QWNjb3VudElkAAosCQFDbGFpbSBhbiBhbm9ueW1vdXMgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZSBmb3IgYSB0YXJnZXQgYWNjb3VudC4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6U3RtdFN0b3JlQWxpYXNgLCBwcm9kdWNlZCBieSB0aGUgYEFzUmVzb3VyY2VzYFUBKGBSZWdpc3RlclN0YXRlbWVudFN0b3JlQWxsb3dhbmNlKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciBwcm9vZiB2YWxpZGF0aW9uLkUBT24gc3VjY2VzcywgaW5jcmVhc2VzIHRoZSBzdGF0ZW1lbnQgYWxsb3dhbmNlIGZvciBgdGFyZ2V0X2FjY291bnRgIGFuZCBzdG9yZXMgdGhlmG1hcHBpbmcgaW4gYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AuACxQYXJhbWV0ZXJzOj0BKiBgcGVyaW9kYDogZGF5IG51bWJlciBzaW5jZSBVbml4IGVwb2NoLiBNdXN0IGJlIGluIHRoZSBhY2NlcHRlZCBwZXJpb2Qgd2luZG93LkUBKiBgc2VxYDogc2xvdCBudW1iZXIgd2l0aGluIHRoZSBwZXJpb2QsIGJvdW5kZWQgYnkgdGhlIGNvbGxlY3Rpb24tc3BlY2lmaWMgbGltaXQuzCogYHRhcmdldF9hY2NvdW50YDogc3RhdGVtZW50IGFjY291bnQgdG8gYXV0aG9yaXplLoxjbGVhcl9leHBpcmVkX3N0bXRfc3RvcmVfYWxsb3dhbmNlcwgBGHBlcmlvZDgBDHUzMgABLGZpcnN0X2VudHJ5CAEUQWxpYXMACxTwUmVtb3ZlIGV4cGlyZWQgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZXMgZm9yIGEgcGFzdCBwZXJpb2QuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuRQFSZW1vdmVzIHVwIHRvIGBTdG10U3RvcmVDbGVhbnVwTGltaXRgIGVudHJpZXMgZnJvbSBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzYCBmb3JBAXRoZSBnaXZlbiBgcGVyaW9kYCwgZGVjcmVhc2luZyB0aGUgc3RhdGVtZW50IGFsbG93YW5jZSBmb3IgZWFjaCByZW1vdmVkIGFjY291bnQuXGNsYWltX2xvbmdfdGVybV9zdG9yYWdlDAEYcGVyaW9kOAEMdTMyAAEcY291bnRlcgwBCHU4AAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAMMDkBQ2xhaW0gbG9uZy10ZXJtIHN0b3JhZ2Ugb24gYSByZW1vdGUgY2hhaW4gdXNpbmcgYW4gYW5vbnltb3VzIG1lbWJlcnNoaXAgcHJvb2YuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OkxvbmdUZXJtU3RvcmFnZUNsYWltKGFsaWFzLCBjb2xsZWN0aW9uKWAsIGNyZWF0ZWQgYnkgdGhlVQFgQXNSZXNvdXJjZXNgIChgQ2xhaW1Mb25nVGVybVN0b3JhZ2UoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHJpbmctVlJGIHByb29mLHZhbGlkYXRpb24uACxQYXJhbWV0ZXJzOkkBKiBgcGVyaW9kYDogdGhlIGNsYWltaW5nIHBlcmlvZC4gTXVzdCBiZSB0aGUgY3VycmVudCBwZXJpb2Qgb3IgdGhlIHByZXZpb3VzIG9uZSBpZmggIHdpdGhpbiB0aGUgZ3JhY2Ugd2luZG93Lg0BKiBgY291bnRlcmA6IHRoZSBjbGFpbSBjb3VudGVyIHdpdGhpbiB0aGUgcGVyaW9kLiBNdXN0IGJlIGxlc3MgdGhhbi0BICBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYC4gRWFjaCBjb3VudGVyIHByb2R1Y2VzIGEgZGlzdGluY3QgYWxpYXMuJQEqIGBhY2NvdW50X2lkYDogdGhlIGFjY291bnQgdG8gYXV0aG9yaXplIGZvciBzdG9yYWdlIG9uIHRoZSByZW1vdGUgY2hhaW4unGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlcwgBGHBlcmlvZDgBDHUzMgABFGxpbWl0OAEMdTMyAA0g8ENsZWFyIHNwZW50IGxvbmctdGVybSBzdG9yYWdlIGFsaWFzZXMgZm9yIGFuIGV4cGlyZWQgcGVyaW9kLgBFAVRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsIGF1dGhvcml6ZWQgdmlhIHRoZSBgYXV0aG9yaXplYCBhdHRyaWJ1dGUuIEl0IGNhbiBiZSUBY2FsbGVkIGJ5IGFueW9uZSBvbmNlIGEgcGVyaW9kIGhhcyBmdWxseSBleHBpcmVkIChwYXN0IHRoZSBncmFjZSB3aW5kb3cpLgAsUGFyYW1ldGVyczrQKiBgcGVyaW9kYDogdGhlIGV4cGlyZWQgcGVyaW9kIHRvIGNsZWFyIGFsaWFzZXMgZm9yLgEBKiBgbGltaXRgOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0byByZW1vdmUgaW4gdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy75BAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1hQZXJzb25hbFVzZXJuYW1lQ2hvaWNlAAEIKFN0YW5kYWxvbmUEAEEEASBVc2VybmFtZQAAACxSZXNlcnZhdGlvbgQAQQQBIFVzZXJuYW1lAAEAAP0EDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzWEZyaWVuZFJlcXVlc3RSZWZlcmVuY2UAAAgBGHBlcmlvZDgBDHUzMgABDHNlcQwBCHU4AAABBQxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBBDYWxsBARUAAEIKGFkZF9jaHVua3MMATRyaW5nX2V4cG9uZW50BQUBMFJpbmdFeHBvbmVudAABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAThlbmNvZGVkX2NodW5rcwkFAZhCb3VuZGVkVmVjPHU4LCBNYXhFbmNvZGVkQ2h1bmtzTGVuPFQ+PgAAEGhBZGRzIGEgbmV3IHBhZ2Ugb2YgY2h1bmtzLgBBAVRoZSBoYXNoIG9mIHRoZSBjaHVua3MgbXVzdCBtYXRjaCB0aGUgaGFzaCBzdG9yZWQgb24tY2hhaW4gaW4gYENodW5rUGFnZUhhc2hlc2Au3FRoZSBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5IGV4aXN0cyBvbi1jaGFpbi5Uc2V0X2NodW5rX3BhZ2VfaGFzaGVzCAE0cmluZ19leHBvbmVudAUFATBSaW5nRXhwb25lbnQAASxwYWdlX2hhc2hlcw0FAcxCb3VuZGVkVmVjPENodW5rUGFnZUhhc2gsIENvbnN0VTMyPE1BWF9QQUdFX0NPVU5UPj4AARgNAVNldHMgdGhlIGV4cGVjdGVkIGhhc2hlcyBmb3IgY2h1bmsgcGFnZXMgZm9yIGEgZ2l2ZW4gcmluZyBleHBvbmVudC4AIQFBbGxvd3Mgc2V0dGluZyB0aGUgZXhwZWN0ZWQgaGFzaGVzIHRoYXQgY2h1bmtzIG11c3QgbWF0Y2ggd2hlbiBhZGRlZCB2aWE0YGFkZF9jaHVua3NgLgCsVGhlIG9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FBRA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAAAJBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAA0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AABEFDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQQQ2FsbAQEVAABNCxtZXJnZV9yaW5ncwwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8YmFzZV9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAFEdGFyZ2V0X3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAAxRAU1lcmdlIHRoZSBtZW1iZXJzIGluIHR3byByaW5ncyBpbnRvIGEgc2luZ2xlLCBuZXcgcmluZy4gSW4gb3JkZXIgZm9yIHRoZSByaW5ncyB0byBiZTUBZWxpZ2libGUgZm9yIG1lcmdpbmcsIHRoZXkgbXVzdCBiZSBiZWxvdyAxLzIgb2YgbWF4IGNhcGFjaXR5LCBoYXZlIG5vIHBlbmRpbmfgc3VzcGVuc2lvbnMgYW5kIG5vdCBiZSB0aGUgdG9wIHJpbmcgdXNlZCBmb3Igb25ib2FyZGluZy5Mc2V0X29uYm9hcmRpbmdfc2l6ZQgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8b25ib2FyZGluZ19zaXplOAEMdTMyAAEETQFGb3JjZSBzZXQgdGhlIG9uYm9hcmRpbmcgc2l6ZSBmb3IgYSBjb2xsZWN0aW9uLiBUaGlzIGNhbGwgcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzLjBzZWxmX2luY2x1ZGUMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABGG1lbWJlcggBLE1lbWJlck9mPFQ+AAE0Y2FsbF92YWxpZF9hdCgBDHU2NAACKEEBQWxsb3cgYSBtZW1iZXIgd2FpdGluZyBpbiB0aGUgb25ib2FyZGluZyBxdWV1ZSB0byBpbmNsdWRlIHRoZW1zZWx2ZXMgaW50byBhIHJpbmdNAWFmdGVyIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQuIFRoaXMgYnlwYXNzZXMgdGhlIG5vcm1hbCBjb2hvcnQtYmFzZWQgb25ib2FyZGluZyBzaXplMHJlcXVpcmVtZW50LgA5AVRoaXMgY2FsbCBtdXN0IGJlIGRpc3BhdGNoZWQgd2l0aCBhIGBTZWxmSW5jbHVkZWAgb3JpZ2luLCBhdXRoZW50aWNhdGVkIGJ5IHRoZSEBYEFzTWVtYmVyYCB0cmFuc2FjdGlvbiBleHRlbnNpb24uIFRoZSByaW5ncyBtdXN0IGJlIGluIGFwcGVuZC1vbmx5IG1vZGUuAE0BVGhlIGBjYWxsX3ZhbGlkX2F0YCBwYXJhbWV0ZXIgZGljdGF0ZXMgdGhlIHRpbWUgd2luZG93IGluIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb24gaXNNAXZhbGlkIGFuZCByZXByZXNlbnRzIHRoZSB0aW1lc3RhbXAgKGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2gpIHdoZW4gdGhpcyBjYWxsOGJlY29tZXMgdmFsaWQuVGJ1aWxkX3JpbmdfYXV0aG9yaXplZBQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfZXhwb25lbnQFBQEwUmluZ0V4cG9uZW50AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEodG9faW5jbHVkZTgBDHUzMgBkGNhCdWlsZCBhIHJpbmcgcm9vdCBmb3IgYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4A2FN1Ym1pdHRlZCBieSB0aGUgT0NXIHdpdGggYSBgdG9faW5jbHVkZWAgc25hcHNob3QgZnJvbSkBW2BTZWxmOjpzaG91bGRfYnVpbGRfcmluZ2BdLiBMZWZ0b3ZlcnMgZnJvbSBsYXRlciBvbmJvYXJkaW5nIGFyZSBwaWNrZWQgdXAZAW9uIHRoZSBuZXh0IE9DVyB0aWNrLCBvciBieSB0aGUgbWVtYmVyIHZpYSBbYFNlbGY6OnNlbGZfaW5jbHVkZWBdIHdoZW6AY29ob3J0IGdhdGluZyBzdGFsbHMgb25ib2FyZGluZy5ob25ib2FyZF9tZW1iZXJzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARBoZWFkOAEkUGFnZUluZGV4AGUMEQFPbmJvYXJkIG1lbWJlcnMgZnJvbSB0aGUgb25ib2FyZGluZyBxdWV1ZSBmb3IgYSBzcGVjaWZpYyBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIucG1lcmdlX3F1ZXVlX3BhZ2VzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABMGluaXRpYWxfaGVhZDgBJFBhZ2VJbmRleAABIG5ld19oZWFkOAEkUGFnZUluZGV4AGYMDQFNZXJnZSB0aGUgdG9wIHR3byBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2VzIGZvciBhIHNwZWNpZmljIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AcmVtb3ZlX3N1c3BlbmRlZF9rZXlzX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAZwzsUmVtb3ZlIHN1c3BlbmRlZCBrZXlzIGZyb20gYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLmxkZWxldGVfcmluZ19wYWdlX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGgMyERlbGV0ZSBhIHBhZ2UgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AZW5xdWV1ZV9yaW5nX2RlbGV0aW9uX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaRzsRW5xdWV1ZSBhIHJpbmcgZm9yIGRlbGV0aW9uIGFzIHBhcnQgb2YgY29sbGVjdGlvbiBkZWxldGlvbi4AIQFBcmNoaXZlcyB0aGUgcmluZyByb290LCBub3RpZmllcyBzdWJzY3JpYmVycywgcmVtb3ZlcyByaW5nIG1ldGFkYXRhLCBhbmT4ZW5xdWV1ZXMgcmluZyBwYWdlcyBpbnRvIGBSaW5nRGVsZXRpb25RdWV1ZWAgZm9yIHByb2Nlc3NpbmcgYnl4YGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZGAuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZGVsZXRlX29uYm9hcmRpbmdfcXVldWVfcGFnZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGoc/ERlbGV0ZSBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIGBNZW1iZXJzYCBlbnRyaWVzIGZvciB0aGUgbWVtYmVycyBpbiB0aGUgcGFnZSwgdGhlbiByZW1vdmVzJQF0aGUgcGFnZSBpdHNlbGYuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MgYW5kIHJpbmcgcGFnZXMgaGF2ZSBiZWVuOGZ1bGx5IGRlbGV0ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZmluYWxpemVfY29sbGVjdGlvbl9kZWxldGlvbl9hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAaxx0RmluYWxpemUgY29sbGVjdGlvbiBkZWxldGlvbi4AHQFSZW1vdmVzIGFsbCByZW1haW5pbmcgcGVyLWNvbGxlY3Rpb24gc3RvcmFnZSBhbmQgdGhlIG93bmVyJ3MgaWRlbnRpZmllchkBcmVmZXJlbmNlLiBDYW4gb25seSBwcm9jZWVkIHdoZW4gYWxsIHJpbmdzLCByaW5nIHBhZ2VzLCBhbmQgb25ib2FyZGluZ5BxdWV1ZSBwYWdlcyBoYXZlIGJlZW4gZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLmhtYXJrX3Jpbmdfc3RhbGVfYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABsGPBNYXJrIGEgcmluZyBhcyBzdGFsZSBzbyB0aGUgb2ZmY2hhaW4gd29ya2VyIHdpbGwgcmVidWlsZCBpdC4AHQFBbnlvbmUgY2FuIHN1Ym1pdCB0aGlzIHRyYW5zYWN0aW9uIGlmIHRoZSByaW5nIGhhcyBtZW1iZXJzIHRoYXQgYXJlIG5vdCUBeWV0IGluY2x1ZGVkIGluIHRoZSByb290IChgdG90YWwgPiBpbmNsdWRlZGApIGFuZCB0aGUgcmluZyBpcyBub3QgYWxyZWFkeSUBbWFya2VkIHN0YWxlLiBUaGlzIGlzIGEgcmVjb3ZlcnkgbWVjaGFuaXNtIGluIGNhc2UgdGhlIGBTdGFsZVJpbmdzYCBlbnRyeWx3YXMgbG9zdCBvciBuZXZlciBpbnNlcnRlZC50Y2xlYW5fdXBfb2xkX3Jvb3RzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARRsaW1pdDgBDHUzMgBtIIBDbGVhbiB1cCBleHBpcmVkIG9sZCByaW5nIHJvb3RzLgARAVJlbW92ZXMgdXAgdG8gYGxpbWl0YCBvbGQgcmluZyByb290cyBmb3IgdGhlIGdpdmVuIHJpbmcgaW4gdGhlIGdpdmVuLGNvbGxlY3Rpb24uANBUaGUgdHJhbnNhY3Rpb24gc291cmNlIG11c3QgYmUgYExvY2FsYCBvciBgSW5CbG9ja2AuAPRUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhUFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQQQ2FsbAQEVAABXBRzcGxpdAQBKHNwbGl0X2ludG8ZBQFpAUJvdW5kZWRWZWM8KENvaW5WYWx1ZSwgQm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFNwbGl0T3V0cHV0cz4pLApUOjpNYXhTcGxpdE91dHB1dHMsPgAAUIRTcGxpdCBhIGNvaW4gaW50byBtdWx0aXBsZSBjb2lucy4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4A1FRoZSBjYWxsIGlzIGZyZWUgYW5kIGFnZXMgdGhlIHJlc3VsdGluZyBjb2lucyBieSBvbmUuAEkBVGhlIGBzcGxpdF9pbnRvYCBwYXJhbWV0ZXIgY29udGFpbnMgYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgY29pblUBdmFsdWUgYW5kIGEgbGlzdCBvZiBkZXN0aW5hdGlvbiBhY2NvdW50IGlkcy4gRm9yIGVhY2ggcGFpciwgYSBuZXcgY29pbiB3aXRoIHRoZSBnaXZlbsR2YWx1ZSBpcyBjcmVhdGVkIGZvciBlYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgaWQuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uTQEqIFRoZSBjb2luIHZhbHVlIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uLQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mIHRoZSBvcmlnaW4gY29pbi4JASogVGhlIG51bWJlciBvZiBvdXRwdXRzIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhTcGxpdE91dHB1dHNdLiUBKiBUaGUgYWdlIG9mIHRoZSBuZXcgY29pbnMgaXMgc2V0IHRvIHRoZSBhZ2Ugb2YgdGhlIG9yaWdpbiBjb2luIHBsdXMgb25lLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLiB0cmFuc2ZlcgQBCHRvBAEwVDo6QWNjb3VudElkAAEsjFRyYW5zZmVyIGEgY29pbiB0byBhbm90aGVyIGFjY291bnQuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvblhleHRlbnNpb24gW0FzQ29pbmFnZV0uANBUaGUgY2FsbCBpcyBmcmVlIGFuZCBhZ2VzIHRoZSByZXN1bHRpbmcgY29pbiBieSBvbmUuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp3CogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi7gKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS5cbG9hZF9yZWN5Y2xlcl93aXRoX2NvaW4IAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXA5BAE4U2lnbmF0dXJlT2Y8VD4AAkRoTG9hZCBjb2luIGludG8gYSByZWN5Y2xlci4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4ARFRoZSBjYWxsIGlzIGZyZWUuAFkBVGhlIGBtZW1iZXJfa2V5YCBwYXJhbWV0ZXIgaXMgdGhlIG1lbWJlciBrZXkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlY3ljbGVyLCBhbmQgd2hvc2WoYWxpYXMgaXMgdXNlZCB0byB1bmxvYWQgZnJvbSB0aGUgcmVjeWNsZXIuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQpAQEqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIu0CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIChpLmUuIHdlbGwgZm9ybWVkKS5RASogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIGNvaW4ncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4FASogVGhlIHJlY3ljbGVyIGNvbGxlY3Rpb24gZm9yIHRoZSBjb2luJ3MgdmFsdWUgbXVzdCBhbHJlYWR5IGV4aXN0hGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldBABMHByZXNlcnZhdGlvbikFAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVldQMBJENvaW5WYWx1ZQABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcDkEAThTaWduYXR1cmVPZjxUPgADcJBMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlci4AjFRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBvcmlnaW4uAIBUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkLgBFAVRoZSBgcHJlc2VydmF0aW9uYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIGhvdyB0aGUgYXNzZXQgdHJhbnNmZXIgc2hvdWxkIHByZXNlcnZlIHRoZURzaWduZXIncyBhY2NvdW50LgA5AVRoZSBgdmFsdWVgIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIGNvaW4gdmFsdWUgdG8gYmUgbG9hZGVkIGludG8gdGhlIHJlY3ljbGVyLj0BVGhlIGVxdWl2YWxlbnQgYW1vdW50IG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIHNpZ25lciB0b0x0aGUgcGFsbGV0IGFjY291bnQuAFkBVGhlIGBtZW1iZXJfa2V5YCBwYXJhbWV0ZXIgaXMgdGhlIG1lbWJlciBrZXkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlY3ljbGVyLCBhbmQgd2hvc2WoYWxpYXMgaXMgdXNlZCB0byB1bmxvYWQgZnJvbSB0aGUgcmVjeWNsZXIuAFUBVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIHBhcmFtZXRlciBpcyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTRgbWVtYmVyX2tleWAuADRSZXF1aXJlbWVudHM6AQEqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIu0CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIChpLmUuIHdlbGwgZm9ybWVkKS5BASogVGhlIGB2YWx1ZWAgbXVzdCBiZSB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kcCAgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS5VASogVGhlIHNpZ25lciBtdXN0IGhhdmUgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnSIICBhbW91bnQgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlLlkBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVyJ3MgYWNjb3VudCBpZCBieSB0aGU0YG1lbWJlcl9rZXlgLqBsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkEAEwcHJlc2VydmF0aW9uKQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwOQQBOFNpZ25hdHVyZU9mPFQ+AA9ELQFMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlciAoaW5mYWxsaWJsZSwgdmFsaWRhdGVkIHVucGFpZCB2YXJpYW50KS4ATQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZQkBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnQgW0FzQ29pbmFnZTo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0uANxUaGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhbGlkYXRpb24gcGhhc2UgbXVzdCBlbnN1cmU6FQEtIFRoZSBgbWVtYmVyX2tleWAgaXMgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci5FAS0gVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4tAS0gVGhlIGB2YWx1ZWAgaXMgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZEEBICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLCBhbmQgY2FuIGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudC5ZAS0gVGhlIHNpZ25lciBoYXMgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnQgYW1vdW503CAgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlIChyZXNwZWN0aW5nIGBwcmVzZXJ2YXRpb25gKS6sLSBUaGUgbm9uY2UgaXMgdmFsaWQgZm9yIHJlcGxheSBwcm90ZWN0aW9uLtQtIFRoZSByZWN5Y2xlciBjb2xsZWN0aW9uIGZvciBgdmFsdWVgIGFscmVhZHkgZXhpc3RzLgBEVGhlIGNhbGwgaXMgZnJlZS64bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZF9iYXRjaAQBFGl0ZW1zLQUB1EJvdW5kZWRWZWM8VW5wYWlkTG9hZElucHV0PFQ+LCBUOjpNYXhCYXRjaFVucGFpZExvYWQ+ABA0GQFCYXRjaGVkIHZhcmlhbnQgb2YgW2BTZWxmOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkYF0uAE0BVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGVBAXRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YXJpYW50IFtBc0NvaW5hZ2U6OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLiBUaGUgZXh0ZW5zaW9uUQF2YWxpZGF0ZXMgZWFjaCBpbm5lciBpdGVtIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdpdGhpbi1iYXRjaCBtZW1iZXIta2V5IHVuaXF1ZW5lc3MhAWFuZCB0aGF0IHRoZSBzaWduZXIncyBiYWxhbmNlIGNvdmVycyB0aGUgc3VtIG9mIGFsbCBpbm5lciBhc3NldCBhbW91bnRzLgBBAVRoaXMgY2FsbCBkaXNwYXRjaGVzIGVhY2ggaW5uZXIgbG9hZCBieSByZS1ydW5uaW5nIHRoZSBzYW1lIGNoZWNrcyB0aGUgZXh0ZW5zaW9uUQFqdXN0IHBlcmZvcm1lZCAoc2VlIFtgUmVjeWNsZXJNYW5hZ2VyOjpsb2FkYF0pLiBUaGUgcmVkdW5kYW5jeSBtYXRjaGVzIHRoZSBkZWZlbnNpdmVNAXBhdHRlcm4gdXNlZCBieSBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXTogYSBkaXNwYXRjaCBwYXRoRQF0aGF0IGZhaWxzIGFueSBvZiB0aGVzZSBjaGVja3MgaXMgYSBsb2dpYyBidWcgaW4gdGhlIGV4dGVuc2lvbiwgbm90IGEgdXNlciBlcnJvci4ARFRoZSBjYWxsIGlzIGZyZWUuZHVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW4UARxhbGlhc2VzOQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAAEZJRVbmxvYWQgYSByZWN5Y2xlciB0byBtaW50IGEgbmV3IGNvaW4uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYCwgd2hpY2ggY2FuIGJlQQFvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW0FzQ29pbmFnZV0gdXNpbmcgYEFzVW5sb2FkVG9rZW5QZW9wbGVgLOxgQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGVgLCBvciBgQXNVbmxvYWRUb2tlblBhaWRgIHZhcmlhbnRzLgBJAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byBwcm92ZSB0aGV5IG93biBvbmUgb3IgbW9yZSBjb2lucyBpbiBhIHJlY3ljbGVyIHJpbmddAXdpdGhvdXQgcmV2ZWFsaW5nIHdoaWNoIHNwZWNpZmljIGNvaW5zIHRoZXkgb3duLiBJdCBjb25zb2xpZGF0ZXMgb25lIG9yIG11bHRpcGxlIGlucHV0c2hpbnRvIGEgc2luZ2xlIG91dHB1dCBjb2luLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLsQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgbmV3IGNvaW4uADRSZXF1aXJlbWVudHM6KQEqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMuFQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIGZyb20gdGhpcyByZWN5Y2xlci68KiBUaGUgbnVtYmVyIG9mIGFsaWFzZXMgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by41ASogVGhlIHJlc3VsdGluZyBjb25zb2xpZGF0ZWQgdmFsdWUgbXVzdCBub3QgZXhjZWVkIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0ujHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0FAEcYWxpYXNlczkFAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVldQMBJENvaW5WYWx1ZQABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQABWDwVW5sb2FkIGEgcmVjeWNsZXIgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4AXQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OlByZXBhaWRdICh2aWEgZnJlZSBvciBwYWlkIHVubG9hZCB0b2tlbiksIG5vIGZlZSBpcyBkZWR1Y3RlZC5RAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgdW5sb2FkZWQgYXNzZXRzLgAxAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byB3aXRoZHJhdyB0aGVpciBjb2lucyBiYWNrIGludG8gdGhlIHVuZGVybHlpbmdkYXNzZXQgKGUuZy4sIHN0YWJsZWNvaW4pLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLuQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgdW5kZXJseWluZyBhc3NldC4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLlkBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCAoZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lIHdoZW4gYGZlZWAVASAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHdoaWNoIHdhcyBwcmUtbWFya2VkIGluIHRoZSBleHRlbnNpb24pLqxwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwOQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABlQpAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyBhIGNvaW4uAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvblhleHRlbnNpb24gW0FzQ29pbmFnZV0uAEkBVGhlIGNvaW4gaXMgY29uc3VtZWQuIFRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgY29pbidzIHZhbHVlIGFuZCB0cmFuc2ZlcnJlZCB0bx0BW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLiBUaGUgcmVtYWluaW5nIHZhbHVlIG9mIHRoZSBjb2luIGlzIGRlc3Ryb3llZC4A1ElmIHRoZSBjYWxsIGZhaWxzLCB0aGUgb3JpZ2luIGNvaW4gaXMgc3RpbGwgY29uc3VtZWQuAF0BVG8gcHJvdGVjdCB0aGUgdXNlciBhZ2FpbnN0IHZhcnlpbmcgZmVlcywgaWYgdGhlIGNvaW4ncyB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGZlZSwgdGhl6GNhbGwgaXMgaW52YWxpZCAoYW4gaW52YWxpZCBjYWxsIG5ldmVyIGdvZXMgaW50byBhIGJsb2NrKS4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4ANFJlcXVpcmVtZW50czrgKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS7UKiBUaGUgY29pbiB2YWx1ZSBtdXN0IGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGZlZS7YKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQutHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX25hdGl2ZQgBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcDkEAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAc8XQFQYXkgdGhlIGZlZSB0byByZWdpc3RlciBhIG1lbWJlciBrZXkgZm9yIGEgcGFpZCB1bmxvYWQgdG9rZW4gdXNpbmcgdGhlIG5hdGl2ZSBjdXJyZW5jeS4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAEUBVGhpcyBhZGRzIHRoZSBgbWVtYmVyX2tleWAgdG8gYSAicGFpZCB1bmxvYWQgdG9rZW4gcmluZyIuIEJlaW5nIHBhcnQgb2YgdGhpcyByaW5nSQFhbGxvd3MgdGhlIHVzZXIgdG8gbGF0ZXIgZ2VuZXJhdGUgYW4gYW5vbnltb3VzIGBVbmxvYWRUb2tlbmAgdG8gdW5sb2FkIGEgcmVjeWNsZXIuAA0BVGhlIGZlZSBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBjYWxsZXIgdG8gW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgA0UmVxdWlyZW1lbnRzOtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC60cGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfc3RhYmxlCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwOQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUACEBdAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyB0aGUgdW5kZXJseWluZyBhc3NldFBpLmUuIHRoZSBzdGFibGVjb2luLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ARQFUaGlzIGFkZHMgdGhlIGBtZW1iZXJfa2V5YCB0byBhICJwYWlkIHVubG9hZCB0b2tlbiByaW5nIi4gQmVpbmcgcGFydCBvZiB0aGlzIHJpbmdJAWFsbG93cyB0aGUgdXNlciB0byBsYXRlciBnZW5lcmF0ZSBhbiBhbm9ueW1vdXMgYFVubG9hZFRva2VuYCB0byB1bmxvYWQgYSByZWN5Y2xlci4ADQFUaGUgZmVlIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIGNhbGxlciB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM62CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLsB1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9hbmRfdm91Y2hlcnMcARxhbGlhc2VzOQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABMG5ld192b3VjaGVycz0FAeBCb3VuZGVkVmVjPChDb2luVmFsdWUsIE1lbWJlck9mPFQ+KSwgVDo6TWF4U3BsaXRPdXRwdXRzPgAJjAkBVW5sb2FkIGEgcmVjeWNsZXIgaW50byBhIG1peCBvZiBleHRlcm5hbCBhc3NldCBhbmQgZnJlc2ggdm91Y2hlcnMuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4AWQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gb2ZmYm9hcmQgcGFydCBvZiB0aGUgdW5sb2FkZWQgdmFsdWUgaW50byB0aGUgdW5kZXJseWluZ+hhc3NldCB3aGlsZSByZW1pbnRpbmcgdGhlIHJlc3QgYXMgZnJlc2ggcmVjeWNsZXIgdm91Y2hlcnMuAEUBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgYXMtaXMuNQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIHNwZWNpZmllZAUBYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAsIHNvIHRoZSByZWNpcGllbnQgcmVjZWl2ZXMgdGhlIHJlbWFpbmRlci4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLvgqIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXMgcHJvb2ZzLvwqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgZXh0ZXJuYWwgYXNzZXQgcG9ydGlvbi5dASogYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGA6IHRoZSBncm9zcyBhc3NldCBwb3J0aW9uIHRvIG9mZmJvYXJkIGZyb20gdGhlIHVubG9hZGVkIHZhbHVlLmEBKiBgbmV3X3ZvdWNoZXJzYDogdGhlIGZyZXNoIHJlY3ljbGVyIHZvdWNoZXJzIHRvIG1pbnQgZnJvbSB0aGUgcmVtYWluaW5nIHVubG9hZGVkIHZhbHVlLgBZAVRoZSB0b3RhbCB1bmxvYWRlZCB2YWx1ZSBtdXN0IGFsd2F5cyBlcXVhbCB0aGUgYXNzZXQgcG9ydGlvbiBwbHVzIHRoZSB2b3VjaGVyIHBvcnRpb24uVQFJbiBgRnJvbU91dHB1dGAgbW9kZSwgdGhlIGFzc2V0IHBvcnRpb24gbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gY292ZXIgdGhlIHVubG9hZCBmZWUuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS7wKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi5ZASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgKGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9uZSB3aGVuIGBmZWVgFQEgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB3aGljaCB3YXMgcHJlLW1hcmtlZCBpbiB0aGUgZXh0ZW5zaW9uKS5FASogYG5ld192b3VjaGVyc2AgbXVzdCBub3QgYmUgZW1wdHksIGFuZCBhbGwgdm91Y2hlciBtZW1iZXIga2V5cyBtdXN0IGJlIHZhbGlkIGFuZCQgIHVudXNlZC5hASogVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgZXF1YWwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgcGx1cyB0aGUgdG90YWwgYXNzZXQgdmFsdWVQICBvZiBgbmV3X3ZvdWNoZXJzYC5FASogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgbXVzdCBjb3ZlciB0aGUgZmVlLsR1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzEAEUaW5wdXRJBQGgVW5sb2FkUmVjeWNsZXJJbnB1dDxUOjpNYXhDb25zb2xpZGF0aW9uPgABMGFsaWFzX3Byb29mc3kDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3lNBQEsRmVlQ3VycmVuY3kACxgxAVVubG9hZCBhIHJlY3ljbGVyIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0IChub24tYW5vbnltb3VzKS4AVQFDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXNddGZvciB0aGUgc2luZ2xlLXJlY3ljbGVyIGNhc2UuAFkBU2VlIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91c10gZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi7IdW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMQARhpbnB1dHNRBQG0VmVjPFVubG9hZFJlY3ljbGVySW5wdXQ8VDo6TWF4Q29uc29saWRhdGlvbj4+AAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeU0FASxGZWVDdXJyZW5jeQAMWFEBVW5sb2FkIG11bHRpcGxlIHJlY3ljbGVycyB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAD0BVGhpcyBpcyBhIG5vbi1hbm9ueW1vdXMgdmVyc2lvbiBvZiBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0XUEBd2hlcmUgdGhlIGZlZSBpcyBwYWlkIGV4cGxpY2l0bHkgYnkgdGhlIHNpZ25lciByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZSBhbm9ueW1vdXO4dW5sb2FkIHRva2VuIHJpbmcsIGFuZCBmb3IgbXVsdGlwbGUgcmVjeWNsZXJzLgAxAVRoZSBmZWUgY2hhcmdlZCBpcyBvbmUgdW5sb2FkIHRva2VuIGZlZSBwZXIgcmVjeWNsZXIgKGkuZS4sIGBpbnB1dHMubGVuKClgKS4ALFBhcmFtZXRlcnM6MQEqIGBpbnB1dHNgOiBBIGxpc3Qgb2YgaW5wdXRzLCBzcGVjaWZ5aW5nIHRoZSByZWN5Y2xlciBhbmQgYWxpYXNlcyB0byB1bmxvYWQuVQEqIGBhbGlhc19wcm9vZnNgOiB0aGUgcHJvb2ZzIGZvciBhbGwgYWxpYXNlcyBhY3Jvc3MgYWxsIGlucHV0cywgc2lnbmVkIG92ZXIgYSBtZXNzYWdlVQEgIHRoYXQgaW5jbHVkZXMgdGhlIHNpZ25lci4gVGhlIHByb29mcyBtdXN0IGNvcnJlc3BvbmQgc2VxdWVudGlhbGx5IHRvIHRoZSBhbGlhc2VzIGluLCAgYGlucHV0c2AuuCogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBhc3NldC4xASogYGZlZV9jdXJyZW5jeWA6IHdoZXRoZXIgdG8gcGF5IHRoZSBmZWUgaW4gbmF0aXZlIGN1cnJlbmN5IG9yIHN0YWJsZSBhc3NldC4ANFJlcXVpcmVtZW50czpwKiBUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLpQqIEFsbCBzcGVjaWZpZWQgcmVjeWNsZXJzIG11c3QgZXhpc3QuLQEqIFRoZSBhbGlhcyBwcm9vZnMgbXVzdCBjb3JyZXNwb25kIHNlcXVlbnRpYWxseSB0byB0aGUgYWxpYXNlcyBpbiBgaW5wdXRzYC45ASogYGlucHV0c2AgbXVzdCBub3QgYmUgZW1wdHkgYW5kIGVhY2ggZWxlbWVudCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGFsaWFzLkEBKiBUaGUgc2lnbmVyIG11c3QgaGF2ZSBzdWZmaWNpZW50IGJhbGFuY2UgdG8gcGF5IHRoZSBmZWUgKG9uZSBmZWUgcGVyIHJlY3ljbGVyKS5odW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbnMYARxhbGlhc2VzOQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShzcGxpdF9pbnRvGQUBaQFCb3VuZGVkVmVjPChDb2luVmFsdWUsIEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTcGxpdE91dHB1dHM+KSwKVDo6TWF4U3BsaXRPdXRwdXRzLD4AARxtYXhfZmVlxAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AA201FVubG9hZCBhIHJlY3ljbGVyIHRvIG1pbnQgbXVsdGlwbGUgbmV3IGNvaW5zIChzcGxpdCkuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYC4ARQFUaGlzIGZ1bmN0aW9uIGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luXSBhbmRFAVtTZWxmOjpzcGxpdF0gaW4gYSBzaW5nbGUgYXRvbWljIG9wZXJhdGlvbi4gVGhlIHJlc3VsdGluZyBjb2lucycgYWdlIGlzIDEgYmVjYXVzZUUBdGhlIGFjdGlvbiBvZiBzcGxpdHRpbmcgYWdlIGNvaW5zLiBUaGlzIGlzIGFsc28gaW1wb3J0YW50IGJlY2F1c2UgcmVzdWx0aW5nIGNvaW5z6GFyZSBub3QgZW50aXJlbHkgZnJlc2gsIHRoZXkgY2FuIGJlIGxpbmtlZCB0byBvdGhlciBjb2lucy4AWQFVbmxpa2UgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5dLCB0aGlzIGNhbGwgZG9lcyAqKm5vdCoqIHJlcXVpcmUgdGhlIG51bWJlciBvZnRhbGlhc2VzIHRvIGJlIGEgcG93ZXIgb2YgdHdvLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu+CogYHJldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMuSQEqIGBzcGxpdF9pbnRvYDogYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgY29pbiB2YWx1ZSBhbmQgYSBsaXN0IG9maCAgZGVzdGluYXRpb24gYWNjb3VudCBpZHMuWQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gZmVlIHRoZSBjYWxsZXIgaXMgd2lsbGluZyB0byBwYXksIGV4cHJlc3NlZCBpbiB0aGUgdW5kZXJseWluZ0kBICBhc3NldCBiYWxhbmNlLiBJdCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRvdGFsIHZhbHVlIG9mIHRoZTkBICB1bmxvYWRlZCBjb2lucyBhbmQgdGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgZGVmaW5lZCBpbiBgc3BsaXRfaW50b2AuAMggIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6UHJlcGFpZF0sIHRoaXMgbXVzdCBiZSAwLkUBICBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGlzIGFtb3VudCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBpbnB1dDogdGhlVQEgIG5ldHdvcmsgZmVlIGlzIHRyYW5zZmVycmVkIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXSBhbmQgYW55IHJlbWFpbmRlciBpcyBidXJuZWQuQQEgIFRoZSBjYWxsZXIgY2FuIHF1ZXJ5IGBnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0YCB0byBlc3RpbWF0ZSB0aGUgZmVlLgBhASAgVGhpcyBwYXJhbWV0ZXIgc2VydmVzIGFzIGEgc2FmZWd1YXJkOiB0aGUgdHJhbnNhY3Rpb24gaXMgcmVqZWN0ZWQgYXQgdmFsaWRhdGlvbiBpZiB0aGVBASAgYWN0dWFsIG5ldHdvcmsgZmVlIGV4Y2VlZHMgYG1heF9mZWVgLCBwcm90ZWN0aW5nIHRoZSBjYWxsZXIgZnJvbSBleGNlc3NpdmUgZmVlXQEgIGluY3JlYXNlcyB0aGF0IHdvdWxkIHJlbmRlciB0aGUgYXJndW1lbnQgYHNwbGl0X2ludG9gIGludmFsaWQgKHVubG9hZGVkIGZ1bmRzIG11c3QgYmWYICBoaWdoZXIgdGhhbiB0aGUgc3BsaXQgcGx1cyB0aGUgZmVlKS4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMuYQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIGRlZmluZWQgaW4gYHNwbGl0X2ludG9gIHBsdXMgYG1heF9mZWVgIG11c3QgZXF1YWwgdGhlkCAgdG90YWwgdmFsdWUgb2YgdGhlIHVubG9hZGVkIGNvaW5zLlUBKiBgbWF4X2ZlZWAgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBtaW5pbXVtIGNvaW4uIChUaGlzIGlzIGltcGxpZWQgYnkgdGhlIGNvbmRpdGlvbiQgIGFib3ZlKS7gKiBFYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi7cKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgbWF4X2ZlZWAgbXVzdCBiZSAwLi0BKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgbWF4X2ZlZWAgbXVzdCBjb3ZlciB0aGUgbmV0d29yayBmZWUuoGRpcmVjdF9vZmZib2FyZF9jb2luX2ludG9fZXh0ZXJuYWxfYXNzZXQEAQh0bwQBMFQ6OkFjY291bnRJZAAOOCUBRGlyZWN0bHkgb2ZmYm9hcmQgYSBmcmVzaCwgMC1hZ2UgY29pbiBpbnRvIHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0LgBFAVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCBvYnRhaW5lZCB0aHJvdWdoIFtBc0NvaW5hZ2VdIHVzaW5nIGBBc0NvaW5gLgANAUJlY2F1c2UgdGhlIGNvaW4gbXVzdCBiZSBmcmVzaCAoYGFnZSA9PSAwYCksIHRoaXMgY2FsbCBieXBhc3NlcyB0aGVJAXJlY3ljbGVyL3VubG9hZC10b2tlbiBvZmZib2FyZGluZyBmbG93IGFuZCByZWxlYXNlcyB0aGUgdW5kZXJseWluZyBhc3NldCBkaXJlY3RseS4ALFBhcmFtZXRlcnM6PQEqIGB0b2A6IGRlc3RpbmF0aW9uIGFjY291bnQgdGhhdCByZWNlaXZlcyB0aGUgcmVsZWFzZWQgdW5kZXJseWluZyBhc3NldCBhbW91bnQuADRSZXF1aXJlbWVudHM6kCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkNvaW5dLqgqIFRoZSBjb2luIG11c3QgYmUgZnJlc2g6IGBjb2luLmFnZSA9PSAwYC4JASogVGhlIGNvaW4gdmFsdWUgbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIHVuZGVybHlpbmctYXNzZXQgYW1vdW50LlxzZXRfdW5kZXJseWluZ19hc3NldF9pZAQBIGFzc2V0X2lk4AFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAokvFNldCB0aGUgdW5kZXJseWluZyBhc3NldCBpZCB1c2VkIGJ5IHRoZSBwYWxsZXQuAC0BVGhlIG9yaWdpbiBtdXN0IHNhdGlzZnkgW2BDb25maWc6OlVuZGVybHlpbmdBc3NldElkTWFuYWdlcmBdLiBUaGUgc2V0dGVyIGlzIQEqKnNpbmdsZS11c2UqKjogY2FsbGluZyBpdCBhZ2FpbiBhZnRlciB0aGUgYXNzZXQgaWQgaGFzIGJlZW4gc2V0IHJldHVybnNNAVtgRXJyb3I6OkFzc2V0SWRBbHJlYWR5U2V0YF0uIENoYW5naW5nIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGFmdGVyIGNvaW5zIGV4aXN0IHdvdWxkNQFvcnBoYW4gdGhlIGhlbGQgYmFsYW5jZXMgb2YgZXZlcnkgaW4tZmxpZ2h0IGNvaW4sIHNvIHRoZSBvbi1jaGFpbiBkZWNpc2lvbiBpc1xpbnRlbnRpb25hbGx5IG9uZS1zaG90LgDkVGhlIGFzc2V0IGlkIG11c3QgYWxyZWFkeSBleGlzdCBpbiBbYENvbmZpZzo6RnVuZ2libGVzYF0uOGNsZWFuX3JlY3ljbGVyBAEUdmFsdWV1AwEkQ29pblZhbHVlAGUcdENsZWFuIHVwIGFuIGV4cGlyZWQgcmVjeWNsZXIuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS4ADQFUaGlzIHJlbW92ZXMgYW4gb2xkIHJlY3ljbGVyIHRoYXQgaGFzIGV4Y2VlZGVkIGl0cyBleHBpcmF0aW9uIHRpbWUuSQFBbnkgcmVtYWluaW5nIChub3QgdW5sb2FkZWQpIHZhbHVlIGluIHRoZSByZWN5Y2xlciBpcyBjb25zaWRlcmVkIGxvc3QgYW5kIGFkZGVkIHRvdFtUb3RhbFZhbHVlT2ZEZXN0cm95ZWRDb2luc10uZGNsZWFuX2NvbnN1bWVkX2ZyZWVfdG9rZW4EARhwZXJpb2Q4ARhQZXJpb2QAZgz8Q2xlYW51cCBzdG9yYWdlIGZvciBjb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgb2Ygb2xkIHBlcmlvZHMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZwgBGHBlcmlvZDgBGFBlcmlvZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaBgJAUNsZWFuIHVwIGEgc2luZ2xlIHJpbmcgaW4gYW4gZXhwaXJlZCBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuKQFSaW5ncyBtdXN0IGJlIGNsZWFuZWQgc2VxdWVudGlhbGx5IChyaW5nIDAgZmlyc3QsIHRoZW4gMSwgZXRjLikgYmVmb3JlIHRoZXRjb2xsZWN0aW9uIGNhbiBiZSBkZWxldGVkIHZpYY0BW2BkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uYF0oU2VsZjo6ZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbikuTGNsZWFuX3JlY3ljbGVyX2R1c3QAaRRwQ2xlYW4gdXAgZHVzdCBmb3IgcmVjeWNsZXJzLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuSQFSZW1vdmVzIHVwIHRvIERVU1RfQ0xFQU5VUF9CQVRDSF9TSVpFIHVubG9hZGVkIGFsaWFzIGVudHJpZXMgcGVyIGNhbGwgdG8gYm91bmQgdGhlKG9wZXJhdGlvbi5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fZHVzdABqDJRDbGVhbiB1cCBkdXN0IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6sZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbgQBGHBlcmlvZDgBGFBlcmlvZABrGEUBRGVsZXRlIGFuIGV4cGlyZWQgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBhZnRlciBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6QQWxsIHJpbmdzIG11c3QgaGF2ZSBiZWVuIGNsZWFuZWQgdmlhQQFbYGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmdgXShTZWxmOjpjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nKSBiZWZvcmUgdGhpczhjYW4gYmUgY2FsbGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4ZBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAR0FBFMAAAQAJQUBGFZlYzxUPgAAHQUAAAQIdQMhBQAhBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABADMARhWZWM8VD4AACUFAAACHQUAKQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldERDb2RlY1ByZXNlcnZhdGlvbgABDChFeHBlbmRhYmxlAAAAHFByb3RlY3QAAQAgUHJlc2VydmUAAgAALQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAExBQRTAAAEADUFARhWZWM8VD4AADEFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQ8VW5wYWlkTG9hZElucHV0BARUAAAQATBwcmVzZXJ2YXRpb24pBQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZXUDASRDb2luVmFsdWUAAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXA5BAE4U2lnbmF0dXJlT2Y8VD4AADUFAAACMQUAOQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAVQQBGFZlYzxUPgAAPQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFBBQRTAAAEAEUFARhWZWM8VD4AAEEFAAAECHUDCABFBQAAAkEFAEkFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXRMVW5sb2FkUmVjeWNsZXJJbnB1dAQwQWxpYXNlc0JvdW5kAAAQARR2YWx1ZXUDASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABHGFsaWFzZXM5BQF8Qm91bmRlZFZlYzxBbGlhcywgQWxpYXNlc0JvdW5kPgAATQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldCxGZWVDdXJyZW5jeQABCBhOYXRpdmUAAAAYU3RhYmxlAAEAAFEFAAACSQUAVQUMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBBDYWxsBARUAAEcJHN1YnNjcmliZQwBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lknAEYUGFyYUlkAAFMbWVtYmVyc19jb2xsZWN0aW9uc1kFAR0BQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyLD4AATBwYWxsZXRfaW5kZXgMAQh1OAAALKBSZWdpc3RlcnMgdGhlIHBhcmFjaGFpbiBhcyBhIHN1YnNjcmliZXIu0FRoZSBpbml0aWFsIHN0YXRlIHdpbGwgYmUgc2VudCBvdmVyIHNob3J0bHkgdmlhIFhDTS4AJCMjIE9yaWdpbqhSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYCAoZ292ZXJuYW5jZS9yb290KS4ANCMjIFBhcmFtZXRlcnMVAS0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJpbmcgcGFyYWNoYWluLkUBLSBgbWVtYmVyc19jb2xsZWN0aW9uc2A6IExpc3Qgb2YgY29sbGVjdGlvbiBpZGVudGlmaWVycyB0byBzdWJzY3JpYmUgdG8gYW5kIHRoZWlycCAgcmVzcGVjdGl2ZSByaW5nIGV4cG9uZW50cy41AS0gYHBhbGxldF9pbmRleGA6IFBhbGxldCBpbmRleCBvZiBtZW1iZXJzLXN1YnNjcmliZXIgb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uLHVuc3Vic2NyaWJlBAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRlBQE4T3B0aW9uPFBhcmFJZD4AASRkVW5zdWJzY3JpYmVzIGEgcGFyYWNoYWluLgAkIyMgT3JpZ2luPQEtICoqU2VsZi11bnN1YnNjcmliZSoqOiBTdWJzY3JpYmVyIHBhcmFjaGFpbiB2aWEgWENNIChgRW5zdXJlU3Vic2NyaWJlck9yaWdpbmAp1C0gKipHb3Zlcm5hbmNlIHVuc3Vic2NyaWJlKio6IFJlcXVpcmVzIGBNYW5hZ2VPcmlnaW5gADQjIyBQYXJhbWV0ZXJzYQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgdG8gdW5zdWJzY3JpYmUuIFJlcXVpcmVkIGZvciBnb3Zlcm5hbmNlLCBpZ25vcmVkxCAgZm9yIHNlbGYtdW5zdWJzY3JpYmUgKGRlcml2ZWQgZnJvbSBYQ00gb3JpZ2luKS44cmVxdWVzdF9yZXBsYXkMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAFEcmluZ19yb290X2luZGljZXNpBQGwQm91bmRlZFZlYzxSaW5nSW5kZXgsIFQ6Ok1heFVwZGF0ZXNQZXJCYXRjaD4AAiScUmVxdWVzdHMgcmVwbGF5IG9mIHNwZWNpZmljIHJpbmcgcm9vdHMuADUBUGVybWlzc2lvbmxlc3Mg4oCUIGFueSBzaWduZWQgb3JpZ2luIGNhbiByZXF1ZXN0IGEgcmVwbGF5IGZvciBhbnkgc3Vic2NyaWJlci5JAVRoZSBzdWJzY3JpYmVyIHBhcmFjaGFpbiBpcyBpZGVudGlmaWVkIGJ5IHRoZSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgIHBhcmFtZXRlci4ALFBhcmFtZXRlcnM66C0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJlci6YLSBgaWRlbnRpZmllcmA6IENvbGxlY3Rpb24gaWRlbnRpZmllci5ZAS0gYHJpbmdfcm9vdF9pbmRpY2VzYDogTGlzdCBvZiByaW5nIHJvb3QgaW5kaWNlcywgbXVzdCBiZSBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuPGVucXVldWVfdXBkYXRlcwQBJHNlbmRfcGFnZS0DAQx1MTYAAwz4RW5xdWV1ZXMgcGVuZGluZyB1cGRhdGVzIGludG8gYSBzZWFsZWQgYmF0Y2ggZm9yIGRpc3RyaWJ1dGlvbi4AxEF1dGhvcml6ZWQgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4oc2VuZF9iYXRjaAgBHHBhcmFfaWScARhQYXJhSWQAASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAQMxFNlbmRzIHRoZSBjdXJyZW50IGJhdGNoIHRvIGEgc3BlY2lmaWMgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci44c2VuZF9pbml0X3BhZ2UMARxwYXJhX2lknAEYUGFyYUlkAAFgY3VycmVudF9jb2xsZWN0aW9uX2luZGV4OAEMdTMyAAFAYWZ0ZXJfcmluZ19pbmRleAkDAURPcHRpb248UmluZ0luZGV4PgAFDNhTZW5kcyBvbmUgcGFnZSBvZiBpbml0aWFsaXphdGlvbiBkYXRhIHRvIGEgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci5MYWJhbmRvbl9zdHVja19iYXRjaAAGFORBYmFuZG9ucyBhIHN0dWNrIGJhdGNoIHRoYXQgZXhjZWVkZWQgYFN0dWNrQmF0Y2hUaW1lb3V0YC4xAVN1YnNjcmliZXJzIHRoYXQgZGlkIG5vdCByZWNlaXZlIHRoZSBiYXRjaCBjYW4gcmVjb3ZlciB2aWEgYHJlcXVlc3RfcmVwbGF5YC4ANQFBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIgd2hlbiBhIGJhdGNoIGhhc7BiZWVuIGFjdGl2ZSBsb25nZXIgdGhhbiBgU3R1Y2tCYXRjaFRpbWVvdXRgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5ZBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAV0FBFMAAAQAYQUBGFZlYzxUPgAAXQUAAAQICAUFAGEFAAACXQUAZQUEGE9wdGlvbgQEVAGcAQgQTm9uZQAAABBTb21lBACcAAABAABpBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABlBAEYVmVjPFQ+AABtBQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0EENhbGwEBFQAARBAZm9yY2Vfc2V0X2N1cnNvcgQBGGN1cnNvcnEFAUxPcHRpb248Q3Vyc29yT2Y8VD4+AAAUXQFBbGxvd3Mgcm9vdCB0byBzZXQgYSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydCwgc3RvcCBvciBmb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ASQFTaG91bGQgbm9ybWFsbHkgbm90IGJlIG5lZWRlZCBhbmQgaXMgb25seSBpbiBwbGFjZSBhcyBlbWVyZ2VuY3kgbWVhc3VyZS4gTm90ZSB0aGF0BQFyZXN0YXJ0aW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpbiB0aGlzIG1hbm5lciB3aWxsIG5vdCBjYWxsIHRoZS0BW2BNaWdyYXRpb25TdGF0dXNIYW5kbGVyOjpzdGFydGVkYF0gaG9vayBvciBlbWl0IGFuIGBVcGdyYWRlU3RhcnRlZGAgZXZlbnQuXGZvcmNlX3NldF9hY3RpdmVfY3Vyc29yDAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3KBBQFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXQJAwFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABGFkBQWxsb3dzIHJvb3QgdG8gc2V0IGFuIGFjdGl2ZSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydC9mb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ARQFUaGlzIGlzIGFuIGVkZ2UtY2FzZSB2ZXJzaW9uIG9mIFtgU2VsZjo6Zm9yY2Vfc2V0X2N1cnNvcmBdIHRoYXQgYWxsb3dzIHRvIHNldCB0aGVhAWBzdGFydGVkX2F0YCB2YWx1ZSB0byB0aGUgbmV4dCBibG9jayBudW1iZXIuIE90aGVyd2lzZSB0aGlzIHdvdWxkIG5vdCBiZSBwb3NzaWJsZSwgc2luY2VFAWBmb3JjZV9zZXRfY3Vyc29yYCB0YWtlcyBhbiBhYnNvbHV0ZSBibG9jayBudW1iZXIuIFNldHRpbmcgYHN0YXJ0ZWRfYXRgIHRvIGBOb25lYAEBaW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIHBsdXMgb25lIHNob3VsZCBiZSB1c2VkLkhmb3JjZV9vbmJvYXJkX21ibXMAAhCgRm9yY2VzIHRoZSBvbmJvYXJkaW5nIG9mIHRoZSBtaWdyYXRpb25zLgBdAVRoaXMgcHJvY2VzcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgb24gYSBydW50aW1lIHVwZ3JhZGUuIEl0IGlzIGluIHBsYWNlIGFzIGFuIGVtZXJnZW5jefxtZWFzdXJlbWVudC4gVGhlIGN1cnNvciBuZWVkcyB0byBiZSBgTm9uZWAgZm9yIHRoaXMgdG8gc3VjY2VlZC44Y2xlYXJfaGlzdG9yaWMEASBzZWxlY3RvcoUFAaBIaXN0b3JpY0NsZWFudXBTZWxlY3RvcjxJZGVudGlmaWVyT2Y8VD4+AAMUaENsZWFycyB0aGUgYEhpc3RvcmljYCBzZXQuAA0BYG1hcF9jdXJzb3JgIG11c3QgYmUgc2V0IHRvIHRoZSBsYXN0IHZhbHVlIHRoYXQgd2FzIHJldHVybmVkIGJ5IHRoZV0BYEhpc3RvcmljQ2xlYXJlZGAgZXZlbnQuIFRoZSBmaXJzdCB0aW1lIGBOb25lYCBjYW4gYmUgdXNlZC4gYGxpbWl0YCBtdXN0IGJlIGNob3NlbiBpbiBhqHdheSB0aGF0IHdpbGwgcmVzdWx0IGluIGEgc2Vuc2libGUgd2VpZ2h0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5xBQQYT3B0aW9uBARUAXUFAQgQTm9uZQAAABBTb21lBAB1BQAAAQAAdQUIRHBhbGxldF9taWdyYXRpb25zPE1pZ3JhdGlvbkN1cnNvcggYQ3Vyc29yAXkFLEJsb2NrTnVtYmVyATgBCBhBY3RpdmUEAH0FAYRBY3RpdmVDdXJzb3I8Q3Vyc29yLCBCbG9ja051bWJlcj4AAAAUU3R1Y2sAAQAAeQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB9BQhEcGFsbGV0X21pZ3JhdGlvbnMwQWN0aXZlQ3Vyc29yCBhDdXJzb3IBeQUsQmxvY2tOdW1iZXIBOAAMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvcoEFAThPcHRpb248Q3Vyc29yPgABKHN0YXJ0ZWRfYXQ4ASxCbG9ja051bWJlcgAAgQUEGE9wdGlvbgQEVAF5BQEIEE5vbmUAAAAQU29tZQQAeQUAAAEAAIUFCERwYWxsZXRfbWlncmF0aW9uc1xIaXN0b3JpY0NsZWFudXBTZWxlY3RvcgQISWQBiQUBCCBTcGVjaWZpYwQAjQUBHFZlYzxJZD4AAAAgV2lsZGNhcmQIARRsaW1pdAkDASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvcpEFATxPcHRpb248VmVjPHU4Pj4AAQAAiQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACNBQAAAokFAJEFBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAAlQUMgGluZGl2X3BhbGxldF92YWx1ZV90cmFuc2Zlcl9hdXRoJGV4dGVuc2lvblhBdXRob3JpemVWYWx1ZVRyYW5zZmVyCARUAARQAAAEAJkFAYxPcHRpb248c3BfY29yZTo6ZWQyNTUxOTo6U2lnbmF0dXJlPgAAmQUEGE9wdGlvbgQEVAE5BAEIEE5vbmUAAAAQU29tZQQAOQQAAAEAAJ0FDFxwYWxsZXRfdmVyaWZ5X3NpZ25hdHVyZSRleHRlbnNpb248VmVyaWZ5U2lnbmF0dXJlBARUAAEIIERpc2FibGVkAAAAGFNpZ25lZAgBJHNpZ25hdHVyZTUEATBUOjpTaWduYXR1cmUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEAAKEFDExpbmRpdl9wYWxsZXRfcGVvcGxlJGV4dGVuc2lvbiBBc1BlcnNvbgQEVAAABAClBQFcT3B0aW9uPEFzUGVyc29uSW5mbzxUPj4AAKUFBBhPcHRpb24EBFQBqQUBCBBOb25lAAAAEFNvbWUEAKkFAAABAACpBQxMaW5kaXZfcGFsbGV0X3Blb3BsZSRleHRlbnNpb24wQXNQZXJzb25JbmZvBARUAAEUaEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50BAA4ASBUOjpOb25jZQAAAGBBc1BlcnNvbmFsQWxpYXNXaXRoUHJvb2YMAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQAAQBsQXNQZXJzb25hbElkZW50aXR5V2l0aFByb29mCAA5BAE4U2lnbmF0dXJlT2Y8VD4AACgBKFBlcnNvbmFsSWQAAgB0QXNQZXJzb25hbElkZW50aXR5V2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAMAhEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBAAOAEgVDo6Tm9uY2UAAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQABAAArQUMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmskZXh0ZW5zaW9uXEFzUHJvb2ZPZklua1BhcnRpY2lwYW50BARUAAAEALEFAZhPcHRpb248QXNQcm9vZk9mSW5rUGFydGljaXBhbnRJbmZvPFQ+PgAAsQUEGE9wdGlvbgQEVAG1BQEIEE5vbmUAAAAQU29tZQQAtQUAAAEAALUFDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rJGV4dGVuc2lvbmxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudEluZm8EBFQAAQw4QXNBcHBseVdpdGhTaWcEADgBIFQ6Ok5vbmNlAAAAKEFzUmVmZXJyZWQEADgBIFQ6Ok5vbmNlAAEAJEFzSW52aXRlZAQAOAEgVDo6Tm9uY2UAAgAAuQUMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25IU2NvcmVBc1BhcnRpY2lwYW50BARUAAAEAL0FAaBPcHRpb248U2NvcmVBc1BhcnRpY2lwYW50RGF0YTxUOjpOb25jZT4+AAC9BQQYT3B0aW9uBARUAcEFAQgQTm9uZQAAABBTb21lBADBBQAAAQAAwQUMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25YU2NvcmVBc1BhcnRpY2lwYW50RGF0YQQUTm9uY2UBOAAEARRub25jZTgBFE5vbmNlAADFBQxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uNEdhbWVBc0ludml0ZWQEBFQAAAQAyQUBcE9wdGlvbjxHYW1lQXNJbnZpdGVkRGF0YTxUPj4AAMkFBBhPcHRpb24EBFQBzQUBCBBOb25lAAAAEFNvbWUEAM0FAAABAADNBQxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uREdhbWVBc0ludml0ZWREYXRhBARUAAAQARRub25jZTgBIFQ6Ok5vbmNlAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJlNQQBSFQ6OlRpY2tldFNpZ25hdHVyZQAA0QUMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZSRleHRlbnNpb244UGVvcGxlTGl0ZUF1dGgEBFQAAAQA1QUBfE9wdGlvbjxQZW9wbGVMaXRlQXV0aERhdGFPZjxUPj4AANUFBBhPcHRpb24EBFQB2QUBCBBOb25lAAAAEFNvbWUEANkFAAABAADZBQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlJGV4dGVuc2lvbkhQZW9wbGVMaXRlQXV0aERhdGEIFE5vbmNlATgUUHJvb2YBfQMBEDBBc0xpdGVQZXJzb24EADgBFE5vbmNlAAAAWEFzTGl0ZUFsaWFzV2l0aEFjY291bnQEADgBFE5vbmNlAAEAUEFzTGl0ZUFsaWFzV2l0aFByb29mDAB9AwEUUHJvb2YAADgBJFJpbmdJbmRleAAACAEcQ29udGV4dAACAHRBc0xpdGVBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBAAOAEUTm9uY2UAAH0DARRQcm9vZgAAOAEkUmluZ0luZGV4AAAIARxDb250ZXh0AAMAAN0FDFBpbmRpdl9wYWxsZXRfbWVtYmVycyRleHRlbnNpb24gQXNNZW1iZXIEBFQAAAQA4QUBXE9wdGlvbjxBc01lbWJlckluZm88VD4+AADhBQQYT3B0aW9uBARUAeUFAQgQTm9uZQAAABBTb21lBADlBQAAAQAA5QUMUGluZGl2X3BhbGxldF9tZW1iZXJzJGV4dGVuc2lvbjBBc01lbWJlckluZm8EBFQAAQQsU2VsZkluY2x1ZGUEADkEAThTaWduYXR1cmVPZjxUPgAAAADpBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UkZXh0ZW5zaW9uJEFzQ29pbmFnZQQEVAAABADtBQFgT3B0aW9uPEFzQ29pbmFnZUluZm88VD4+AADtBQQYT3B0aW9uBARUAfEFAQgQTm9uZQAAABBTb21lBADxBQAAAQAA8QUMUGluZGl2X3BhbGxldF9jb2luYWdlJGV4dGVuc2lvbjRBc0NvaW5hZ2VJbmZvBARUAAEYGEFzQ29pbgAAAExBc1VubG9hZFRva2VuUGVvcGxlEAEUcHJvb2b1BQGgPFQ6OlBlb3BsZVByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABAFxBc1VubG9hZFRva2VuTGl0ZVBlb3BsZRABFHByb29m+QUBsDxUOjpMaXRlUGVvcGxlUHJvb2YgYXMgVmFsaWRhdGVQcm9vZj46OlByb29mAAEYcGVyaW9kOAEYUGVyaW9kAAEcY291bnRlcjgBDHUzMgABMGFsaWFzX3Byb29mc3kDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAIAREFzVW5sb2FkVG9rZW5QYWlkFAEUcHJvb2Z9AwEoUHJvb2ZPZjxUPgABGHBlcmlvZDgBGFBlcmlvZAABVHBhaWRfdG9rZW5fcmluZ19pbmRleDgBDHUzMgABYHBhaWRfdG9rZW5fcmluZ19yZXZpc2lvbjgBDHUzMgABMGFsaWFzX3Byb29mc3kDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAMAXEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0EAFIZmVlX3JlY3ljbGVyX3ZhbHVldQMBJENvaW5WYWx1ZQABSGZlZV9yZWN5Y2xlcl9pbmRleDgBJFJpbmdJbmRleAABVGZlZV9yZWN5Y2xlcl9yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgAEAFhJbmZhbGxpYmxlVW5wYWlkU2lnbmVkBAEUbm9uY2U4ASBUOjpOb25jZQAFAAD1BQxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZRhwZW9wbGUsUGVvcGxlUHJvb2YAAAgBFHByb29mfQMB4DxCYW5kZXJzbmF0Y2hWcmZWZXJpZmlhYmxlIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlByb29mAAEQcmluZzgBJFJpbmdJbmRleAAA+QUMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUYcGVvcGxlPExpdGVQZW9wbGVQcm9vZgAACAEUcHJvb2Z9AwHgPEJhbmRlcnNuYXRjaFZyZlZlcmlmaWFibGUgYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6UHJvb2YAARByaW5nOAEkUmluZ0luZGV4AAD9BQxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcyRleHRlbnNpb24sQXNSZXNvdXJjZXMEBFQAAAQAAQYBaE9wdGlvbjxBc1Jlc291cmNlc0luZm88VD4+AAABBgQYT3B0aW9uBARUAQUGAQgQTm9uZQAAABBTb21lBAAFBgAAAQAABQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uPEFzUmVzb3VyY2VzSW5mbwQEVAABEHhSZWdpc3RlckZyaWVuZFJlcXVlc3RXaXRoUHJvb2YIAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAACIUmVnaXN0ZXJGcmllbmRSZXF1ZXN0Rm9yQ29sbGVjdGlvbgwAfQMBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAEAfFJlZ2lzdGVyU3RhdGVtZW50U3RvcmVBbGxvd2FuY2UMAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAGEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAFBDbGFpbUxvbmdUZXJtU3RvcmFnZRAAfQMBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAMAAAkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAA0GCHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOFJlc3RyaWN0T3JpZ2luBARUAAAEAMgBEGJvb2wAABEGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAABUGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAAZBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAAAdBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAIQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABAAlBgEMRXJhAAAlBhAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AACkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAAAtBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAADEGCFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwwAEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWShAgFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AADUGCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBOQYAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YTkGASxBY2NvdW50RGF0YQAAOQYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQHEABABEGZyZWXEARxCYWxhbmNlAAEgcmVzZXJ2ZWTEARxCYWxhbmNlAAEYZnJvemVuxAEcQmFsYW5jZQABFGZsYWdzPQYBKEV4dHJhRmxhZ3MAAD0GDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABADEARB1MTI4AABBBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAdUBAAwBGG5vcm1hbNUBAQRUAAEsb3BlcmF0aW9uYWzVAQEEVAABJG1hbmRhdG9yedUBAQRUAABFBgAAAkkGAEkGCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBTQYEVAE8AAwBFHBoYXNlUQcBFFBoYXNlAAEUZXZlbnRNBgEERQABGHRvcGljc1UHARhWZWM8VD4AAE0GCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAABkBhTeXN0ZW0EAFEGAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAeQYBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAIEJhbGFuY2VzBACBBgF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAK0GAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACwBIU2tpcEZlZWxlc3NQYXltZW50BACxBgGscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50OjpFdmVudDxSdW50aW1lPgAMAERPcmlnaW5SZXN0cmljdGlvbgQAtQYBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkV2ZW50PFJ1bnRpbWU+AA0AGEFzc2V0cwQAuQYBdHBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWU+AA4AMEFzc2V0c0hvbGRlcgQAvQYBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFdmVudDxSdW50aW1lPgAPACRBc3NldFJhdGUEAMEGAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXZlbnQ8UnVudGltZT4AEAA4QXNzZXRUeFBheW1lbnQEAMUGAZxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4AEQBEQ29sbGF0b3JTZWxlY3Rpb24EAMkGAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBADNBgF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQA0QYBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADVBgFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQA5QYBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBADpBgGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACIAHFV0aWxpdHkEAPEGAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAKAAgTXVsdGlzaWcEAPkGAXxwYWxsZXRfbXVsdGlzaWc6OkV2ZW50PFJ1bnRpbWU+ACkAEFN1ZG8EAP0GAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4AKgAUUHJveHkEAAUHAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACwAIElkZW50aXR5BAANBwGUaW5kaXZfcGFsbGV0X2lkZW50aXR5OjpFdmVudDxSdW50aW1lPgAyABhQZW9wbGUEABEHAYxpbmRpdl9wYWxsZXRfcGVvcGxlOjpFdmVudDxSdW50aW1lPgAzABxNb2JSdWxlBAAVBwGUaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpFdmVudDxSdW50aW1lPgA0AChQcm9vZk9mSW5rBAAZBwGkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6RXZlbnQ8UnVudGltZT4ANQAQR2FtZQQAHQcBhGluZGl2X3BhbGxldF9nYW1lOjpFdmVudDxSdW50aW1lPgA3ABRTY29yZQQAJQcBiGluZGl2X3BhbGxldF9zY29yZTo6RXZlbnQ8UnVudGltZT4AOAAgRHVtbXlEaW0EACkHAZhpbmRpdl9wYWxsZXRfZHVtbXlfZGltOjpFdmVudDxSdW50aW1lPgA7AChQZW9wbGVMaXRlBAAtBwGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFdmVudDxSdW50aW1lPgA+ACRSZXNvdXJjZXMEADEHAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFdmVudDxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBAA1BwGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFdmVudDxSdW50aW1lPgBAABxNZW1iZXJzBAA5BwGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkV2ZW50PFJ1bnRpbWU+AEMAHENvaW5hZ2UEAD0HAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXZlbnQ8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBABBBwG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkV2ZW50PFJ1bnRpbWU+AEUAVFN0b3JhZ2VJbml0aWFsaXphdGlvbgQARQcBzGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uOjpFdmVudDxSdW50aW1lPgA8AGRTdG9yYWdlSW5pdGlhbGl6YXRpb25MaXRlBABJBwHgaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb25fbGl0ZTo6RXZlbnQ8UnVudGltZT4AQQBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAE0HAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4AYgAAUQYMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm9VBgFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9yYQYBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZvVQYBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uyAEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvcmEGATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LlUGCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodNUBARhXZWlnaHQAARRjbGFzc1kGATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWVdBgEQUGF5cwAAWQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAF0GDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAAGEGCChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEAGUGASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBABpBgEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBABtBgE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAHEGAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQAdQYBJFRyaWVFcnJvcgAOAABlBggoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAGkGCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAG0GCDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAAcQYIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAHUGDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAAB5Bgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWTVAQEYV2VpZ2h0AAEgZG1xX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaH0GATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldH0GBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAgQYMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2XEAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWXEAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXOFBgEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50xAEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50xAEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50xAEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudMQBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGTEAShUOjpCYWxhbmNlAAEMbmV3xAEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb26JBgFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb26JBgFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb26JBgFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbokGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZMQBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbokGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAKkGAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUGFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAiQYIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AARwcU2Vzc2lvbgQAjQYBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBACRBgFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfABxNb2JSdWxlBACVBgGEaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpIb2xkUmVhc29uADQAKFByb29mT2ZJbmsEAJkGAZRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpIb2xkUmVhc29uADUAEEdhbWUEAJ0GAXRpbmRpdl9wYWxsZXRfZ2FtZTo6SG9sZFJlYXNvbgA3ABRTY29yZQQAoQYBeGluZGl2X3BhbGxldF9zY29yZTo6SG9sZFJlYXNvbgA4ABxDb2luYWdlBAClBgGAaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkhvbGRSZWFzb24ARAAAjQYMOHBhbGxldF9zZXNzaW9uGHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAkQYMKHBhbGxldF94Y20YcGFsbGV0KEhvbGRSZWFzb24AAQQ4QXV0aG9yaXplQWxpYXMAAAAAlQYMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQoSG9sZFJlYXNvbgABCBhQYXlvdXQAAAAYQ3JlZGl0AAEAAJkGDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChIb2xkUmVhc29uAAEEKFByb29mT2ZJbmsAAAAAnQYMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldChIb2xkUmVhc29uAAEELFBsYXlEZXBvc2l0AAAAAKEGDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAAClBgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQQcV3JhcHBlZAAAAACpBgw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAArQYMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlxAEwQmFsYW5jZU9mPFQ+AAEMdGlwxAEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLEGDGxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEEKEZlZVNraXBwZWQEARhvcmlnaW4xAwHAPFQ6OlJ1bnRpbWVPcmlnaW4gYXMgT3JpZ2luVHJhaXQ+OjpQYWxsZXRzT3JpZ2luAAAEeEEgdHJhbnNhY3Rpb24gZmVlIHdhcyBza2lwcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLUGDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHnYAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS5Bgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2XEAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZOABKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW7IARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWTgAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2XEAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABIHJlc2VydmVzJQEBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0vQYMUHBhbGxldF9hc3NldHNfaG9sZGVyGHBhbGxldBRFdmVudAgEVAAESQABDBBIZWxkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYcmVhc29uiQYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYcmVhc29uiQYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50xAEoVDo6QmFsYW5jZQABBMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAuGEJ1cm5lZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGHJlYXNvbokGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAgS4YHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgYnVybmVkIGJ5IGBhbW91bnRgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMEGDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmTgATBUOjpBc3NldEtpbmQAARByYXRlLQEBJEZpeGVkVTEyOAAAAEBBc3NldFJhdGVSZW1vdmVkBAEoYXNzZXRfa2luZOABMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZOABMFQ6OkFzc2V0S2luZAABDG9sZC0BASRGaXhlZFUxMjgAAQxuZXctAQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0xQYMXHBhbGxldF9hc3NldF90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWXEAURBc3NldEJhbGFuY2VPZjxUPgABDHRpcMQBREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWShAgFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTJBgxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXPMAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50xAEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zQYMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV00QYMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV01QYMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWXZBgFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARxtZXNzYWdlXQIBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbuABIExvY2F0aW9uAAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABFGVycm9y4QYBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW7gASBMb2NhdGlvbgABFGVycm9yjQIBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZYECASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h01QEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHTVAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbqECAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRz2QIBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbuABIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3KNAgEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uSQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVy4AEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllcqECAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ+ABIExvY2F0aW9uAAEQZmVlc2kCARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu4AEgTG9jYXRpb24AARhhc3NldHPZAgE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AARhleHBpcnkVAwEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2Vy4AEgTG9jYXRpb24AARh0YXJnZXTgASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldOABIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNkGECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWTVAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2Vk1QEBGFdlaWdodAABFGVycm9y3QYBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAN0GAUBJbnN0cnVjdGlvbkVycm9yAAIAAN0GECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3KNAgEURXJyb3IAAOEGEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAAOUGDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AANkGARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTpBgxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbiEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9y7QYBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbiEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2Vk1QEBGFdlaWdodATASG93IG11Y2ggd2VpZ2h0IHdhcyB1c2VkIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuARxzdWNjZXNzyAEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldO0GEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEANUBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAA8QYMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcmEGATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcmEGATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHT1BgE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcmEGATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPUGBBhSZXN1bHQIBFQBEARFAWEGAQgIT2sEABAAAAAADEVycgQAYQYAAAEAAPkGDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50kQMBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnSRAwFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHT1BgE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludJEDAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9BgwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHT1BgE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZAEHAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHT1BgE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0AQcEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAAFBwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx09QYBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXgtAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4LQMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZAkHASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABgQJAUEgZGVwb3NpdCBzdG9yZWQgZm9yIHByb3hpZXMgb3IgYW5ub3VuY2VtZW50cyB3YXMgcG9rZWQgLyB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkHCDBwYWxsZXRfcHJveHksRGVwb3NpdEtpbmQAAQgcUHJveGllcwAAADRBbm5vdW5jZW1lbnRzAAEAAA0HDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkYcGFsbGV0FEV2ZW50BARUAAGALElkZW50aXR5U2V0BAEMd2hvBAEwVDo6QWNjb3VudElkAAAE7EEgbmFtZSB3YXMgc2V0IG9yIHJlc2V0ICh3aGljaCB3aWxsIHJlbW92ZSBhbGwganVkZ2VtZW50cykuPElkZW50aXR5Q2xlYXJlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4AAQTMQSBuYW1lIHdhcyBjbGVhcmVkLCBhbmQgdGhlIGdpdmVuIGJhbGFuY2UgcmV0dXJuZWQuOElkZW50aXR5S2lsbGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgACBMRBIG5hbWUgd2FzIHJlbW92ZWQgYW5kIHRoZSBnaXZlbiBiYWxhbmNlIHNsYXNoZWQuSEp1ZGdlbWVudFJlcXVlc3RlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABPHJlZ2lzdHJhcl9pbmRleDgBOFJlZ2lzdHJhckluZGV4AAMEnEEganVkZ2VtZW50IHdhcyBhc2tlZCBmcm9tIGEgcmVnaXN0cmFyLlBKdWRnZW1lbnRVbnJlcXVlc3RlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABPHJlZ2lzdHJhcl9pbmRleDgBOFJlZ2lzdHJhckluZGV4AAQEiEEganVkZ2VtZW50IHJlcXVlc3Qgd2FzIHJldHJhY3RlZC44SnVkZ2VtZW50R2l2ZW4IARh0YXJnZXQEATBUOjpBY2NvdW50SWQAATxyZWdpc3RyYXJfaW5kZXg4AThSZWdpc3RyYXJJbmRleAAFBJRBIGp1ZGdlbWVudCB3YXMgZ2l2ZW4gYnkgYSByZWdpc3RyYXIuOFJlZ2lzdHJhckFkZGVkBAE8cmVnaXN0cmFyX2luZGV4OAE4UmVnaXN0cmFySW5kZXgABgRYQSByZWdpc3RyYXIgd2FzIGFkZGVkLkBTdWJJZGVudGl0eUFkZGVkDAEMc3ViBAEwVDo6QWNjb3VudElkAAEQbWFpbgQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABwT0QSBzdWItaWRlbnRpdHkgd2FzIGFkZGVkIHRvIGFuIGlkZW50aXR5IGFuZCB0aGUgZGVwb3NpdCBwYWlkLkBTdWJJZGVudGl0aWVzU2V0DAEQbWFpbgQBMFQ6OkFjY291bnRJZAABOG51bWJlcl9vZl9zdWJzOAEMdTMyAAEsbmV3X2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4ACAS8QW4gYWNjb3VudCdzIHN1Yi1pZGVudGl0aWVzIHdlcmUgc2V0IChpbiBidWxrKS5IU3ViSWRlbnRpdHlSZW5hbWVkCAEMc3ViBAEwVDo6QWNjb3VudElkAAEQbWFpbgQBMFQ6OkFjY291bnRJZAAJBCEBQSBnaXZlbiBzdWItYWNjb3VudCdzIGFzc29jaWF0ZWQgbmFtZSB3YXMgY2hhbmdlZCBieSBpdHMgc3VwZXItaWRlbnRpdHkuSFN1YklkZW50aXR5UmVtb3ZlZAwBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAoECQFBIHN1Yi1pZGVudGl0eSB3YXMgcmVtb3ZlZCBmcm9tIGFuIGlkZW50aXR5IGFuZCB0aGUgZGVwb3NpdCBmcmVlZC5IU3ViSWRlbnRpdHlSZXZva2VkDAEMc3ViBAEwVDo6QWNjb3VudElkAAEQbWFpbgQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4ACwgZAUEgc3ViLWlkZW50aXR5IHdhcyBjbGVhcmVkLCBhbmQgdGhlIGdpdmVuIGRlcG9zaXQgcmVwYXRyaWF0ZWQgZnJvbSB0aGXIbWFpbiBpZGVudGl0eSBhY2NvdW50IHRvIHRoZSBzdWItaWRlbnRpdHkgYWNjb3VudC44QXV0aG9yaXR5QWRkZWQEASRhdXRob3JpdHkEATBUOjpBY2NvdW50SWQADAR8QSB1c2VybmFtZSBhdXRob3JpdHkgd2FzIGFkZGVkLkBBdXRob3JpdHlSZW1vdmVkBAEkYXV0aG9yaXR5BAEwVDo6QWNjb3VudElkAA0EhEEgdXNlcm5hbWUgYXV0aG9yaXR5IHdhcyByZW1vdmVkLixVc2VybmFtZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AA4EdEEgdXNlcm5hbWUgd2FzIHNldCBmb3IgYHdob2AuOFVzZXJuYW1lUXVldWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AAShleHBpcmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4ADwQZAUEgdXNlcm5hbWUgd2FzIHF1ZXVlZCwgYnV0IGB3aG9gIG11c3QgYWNjZXB0IGl0IHByaW9yIHRvIGBleHBpcmF0aW9uYC5IUHJlYXBwcm92YWxFeHBpcmVkBAEUd2hvc2UEATBUOjpBY2NvdW50SWQAEAQ5AUEgcXVldWVkIHVzZXJuYW1lIHBhc3NlZCBpdHMgZXhwaXJhdGlvbiB3aXRob3V0IGJlaW5nIGNsYWltZWQgYW5kIHdhcyByZW1vdmVkLkhQcmltYXJ5VXNlcm5hbWVTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgARBAEBQSB1c2VybmFtZSB3YXMgc2V0IGFzIGEgcHJpbWFyeSBhbmQgY2FuIGJlIGxvb2tlZCB1cCBmcm9tIGB3aG9gLlxEYW5nbGluZ1VzZXJuYW1lUmVtb3ZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABIIXQFBIGRhbmdsaW5nIHVzZXJuYW1lIChhcyBpbiwgYSB1c2VybmFtZSBjb3JyZXNwb25kaW5nIHRvIGFuIGFjY291bnQgdGhhdCBoYXMgcmVtb3ZlZCBpdHNsaWRlbnRpdHkpIGhhcyBiZWVuIHJlbW92ZWQuPFVzZXJuYW1lVW5ib3VuZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABMEcEEgdXNlcm5hbWUgaGFzIGJlZW4gdW5ib3VuZC48VXNlcm5hbWVSZW1vdmVkBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFARwQSB1c2VybmFtZSBoYXMgYmVlbiByZW1vdmVkLjhVc2VybmFtZUtpbGxlZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABUEbEEgdXNlcm5hbWUgaGFzIGJlZW4ga2lsbGVkLkBVc2VybmFtZVJlcG9ydGVkCAEgcmVwb3J0ZXIEATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAWBHRBIHVzZXJuYW1lIGhhcyBiZWVuIHJlcG9ydGVkLkxQZXJzb25hbElkZW50aXR5U2V0DAEUYWxpYXMIARRBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAXBJhBbiBpZGVudGl0eSBmb3IgYSBwZXJzb24gaGFzIGJlZW4gc2V0LkRFdmlkZW5jZVN1Ym1pdHRlZAQBFGFsaWFzCAEUQWxpYXMAGATkRXZpZGVuY2UgZm9yIGEgY3JlZGVudGlhbCBoYXMgYmVlZCBzdWJtaXR0ZWQgYnkgYSBwZXJzb24uSENyZWRlbnRpYWxBY2NlcHRlZAQBFGFsaWFzCAEUQWxpYXMAGQScQSBjcmVkZW50aWFsIHdhcyBhY2NlcHRlZCBmb3IgYSBwZXJzb24uSENyZWRlbnRpYWxSZWplY3RlZAQBFGFsaWFzCAEUQWxpYXMAGgScQSBjcmVkZW50aWFsIHdhcyByZWplY3RlZCBmb3IgYSBwZXJzb24uMFBlcnNvbkJhbm5lZAQBFGFsaWFzCAEUQWxpYXMAGwTQUGVyc29uIHdhcyBiYW5uZWQgZm9yIHNlbmRpbmcgY29udGVtcHR1b3VzIGV2aWRlbmNlLlxQZXJzb25hbElkZW50aXR5Q2xlYXJlZAQBFGFsaWFzCAEUQWxpYXMAHASAQSBwZXJzb25hbCBpZGVudGl0eSB3YXMgY2xlYXJlZC5sUmVwb3J0ZWRVc2VybmFtZUp1ZGdlZFZhbGlkBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AHQSUQSByZXBvcnRlZCB1c2VybmFtZSB3YXMganVkZ2VkIHZhbGlkLnRSZXBvcnRlZFVzZXJuYW1lSnVkZ2VkSW52YWxpZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AB4EnEEgcmVwb3J0ZWQgdXNlcm5hbWUgd2FzIGp1ZGdlZCBpbnZhbGlkLphSZXBvcnRlZFVzZXJuYW1lV2Vha09yVW5jbGVhckp1ZGdlbWVudAgBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AAEkanVkZ2VtZW50SQQBPE9yYWNsZUp1ZGdlbWVudAAfBBEBVGhlIGp1ZGdtZW50IHJlZ2FyZGluZyBhIHJlcG9ydGVkIHVzZXJuYW1lIHdhcyB1bmNsZWFyIG9yIHVuY2VydGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQRBwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXZlbnQEBFQAAShQUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAT4QW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhbmQgaW5kZXhlZC5AUGVyc29uT25ib2FyZGluZwgBDHdobygBKFBlcnNvbmFsSWQAAQxrZXkIASxNZW1iZXJPZjxUPgABBBEBQW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhZ2FpbiBhbmQgaW5kZXhlZC48QWxpYXNEaXNwYXRjaGVkCAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJRBIGNhbGwgd2FzIGRpc3BhdGNoZWQgdW5kZXIgYW4gYWxpYXMuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFzSQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc0kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5QUGVyc29uYWxJZEFjY291bnRTZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBNBBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuWFBlcnNvbmFsSWRBY2NvdW50VW5zZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBLRBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5EQ29sbGVjdGlvbkNyZWF0ZWQABwSIVGhlIHBlb3BsZSBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkLmRGb3JjZVBlcnNvbmhvb2RSZWNvZ25pemVkBAEYcGVvcGxlVQQBQFZlYzxNZW1iZXJPZjxUPj4ACAS0UGVyc29uaG9vZCB3YXMgZm9yY2VmdWxseSByZWNvZ25pemVkIGJ5IHJvb3QuOEFsaWFzQ2xlYW5lZFVwCAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAJBKxBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0FQcMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQURXZlbnQEBFQAAUQsQ2FzZUNyZWF0ZWQEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BIBUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjcmVhdGVkLgAEYEEgY2FzZSBoYXMgYmVlbiBjcmVhdGVkLiBDYWxsYmFjawQBGHJlc3VsdPUGAThEaXNwYXRjaFJlc3VsdARsVGhlIHJlc3VsdCBvZiB0aGUgY2FsbGJhY2suAQScQSBjYWxsYmFjayB3YXMgdHJpZ2dlcmVkIGZyb20gbW9iLXJ1bGUuNENhbGxiYWNrRXJyb3IAAgTwVGhlcmUgd2FzIGEgY29kZWMgZXJyb3Igd2hlbiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgY2FsbGJhY2suKENhc2VDbG9zZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BHxUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjbG9zZWQuARx2ZXJkaWN0SQQBJEp1ZGdlbWVudAR8VGhlIHZlcmRpY3Qgb2YgdGhlIGNsb3NlZCBjYXNlLgMEzFRoZSBjYXNlIGhhcyBiZWVuIGNsb3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcmVzdWx0LhRWb3RlZAwBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuARxvcGluaW9uSQQBJEp1ZGdlbWVudARkVGhlIG9waW5pb24gb2YgdGhlIHZvdGVyLgQEhEEgdm90ZSBoYXMgYmVlbiBwbGFjZWQgb24gYSBjYXNlLixWb3RlQ2xlYW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuBQRgQSB2b3RlIGhhcyBiZWVuIGNsZWFuZWQuLENhc2VSZW1vdmVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleARIVGhlIGNhc2Ugdm90ZWQgb24uBgRgQSBjYXNlIGhhcyBiZWVuIHJlbW92ZWQuOENhc2VJbnRlcnZlbmVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLgEcdmVyZGljdEkEASRKdWRnZW1lbnQEgFRoZSB2ZXJkaWN0IGFwcGxpZWQgdG8gdGhlIGNhc2UuBwRsQSBjYXNlIGhhcyBiZWVuIGludGVydmVuZWQuMFZvdGVzQ2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEwY2FzZV9pbmRpY2VzZQQBOFZlYzxDYXNlSW5kZXg+BIhUaGUgY2FzZSB0aGF0IGhhcyBiZWVuIGludGVydmVuZWQuCASQQ3JlZGl0cyBmb3Igdm90ZXMgaGF2ZSBiZWVuIGNsYWltZWQuMFJld2FyZFBheW91dAwBFHZvdGVyCAEUQWxpYXMEfFRoZSBhbGlhcyB0aGF0IGVhcm5lZCBhIHJld2FyZC4BLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkBJxUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHBheW91dC4BGGFtb3VudMQBMEJhbGFuY2VPZjxUPgScVGhlIHBheW91dCBhbW91bnQgdGhhdCB3YXMgdHJhbnNmZXJyZWQuCQSAQSByZXdhcmQgdGhhdCBoYXMgYmVlbiBwYWlkIG91dC5IUGF5b3V0Um91bmRTdGFydGVkDAEUcm91bmQ4AShSb3VuZEluZGV4BIhUaGUgaW5kZXggb2YgdGhlIG5ldyBwYXlvdXQgcm91bmQuATxpbml0aWFsX2JhbGFuY2XEATBCYWxhbmNlT2Y8VD4EsFRoZSBpbml0aWFsIGJhbGFuY2UgYWxsb2NhdGVkIGZvciB0aGUgcm91bmQuATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQExFRvdGFsIGFjY3VtdWxhdGVkIHBvaW50cyBjbGFpbWFibGUgaW4gdGhpcyByb3VuZC4KBJBBIG5ldyBwYXlvdXQgcm91bmQgaGFzIGJlZW4gc3RhcnRlZC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW50xAEwQmFsYW5jZU9mPFQ+BHhUaGUgYW1vdW50IG9mIGZ1bmRzIHBlciByb3VuZC4BFGNvdW50OAEMdTMyBHxUaGUgbnVtYmVyIG9mIHJvdW5kcyBzY2hlZHVsZWQuARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgS4VGhlIG1pbmltdW0gcGVyaW9kIChpbiBibG9ja3MpIGJldHdlZW4gcm91bmRzLgsEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4MBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLjRDcmVkaXRDbGFpbWVkCAEUdm90ZXIIARRBbGlhcwSMVGhlIGFsaWFzIG9mIHRoZSB2b3RlciB3aG8gY2xhaW1lZC4BGGFtb3VudMQBMEJhbGFuY2VPZjxUPgR0VGhlIGFtb3VudCBvZiBjcmVkaXQgY2xhaW1lZC4NBNRDcmVkaXQgaGFzIGJlZW4gY2xhaW1lZCBmcm9tIHRoZSBwYXlvdXQgZGlzdHJpYnV0aW9uLjRQb2ludHNDbGVhbmVkCAEUcm91bmQ4AShSb3VuZEluZGV4BLxUaGUgcm91bmQgaW5kZXggZnJvbSB3aGljaCBwb2ludHMgd2VyZSByZW1vdmVkLgEUdm90ZXIIARRBbGlhcwSQVGhlIGFsaWFzIHdob3NlIHBvaW50cyB3ZXJlIHJlbW92ZWQuDgSYU3RhbGUgdm90aW5nIHBvaW50cyBoYXZlIGJlZW4gY2xlYW5lZC4sQ2FzZVRvdWNoZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BGhUaGUgY2FzZSB0aGF0IHdhcyB0b3VjaGVkLgEccmlwZW5lZMgBEGJvb2wEpFdoZXRoZXIgdGhlIGNhc2Ugd2FzIHJpcGVuZWQgYXMgYSByZXN1bHQuDwScQSBjYXNlIGhhcyBiZWVuIHRvdWNoZWQgKHJlLWV2YWx1YXRlZCkuUFZvdGluZ1BlbmFsdHlDbGVhcmVkBAEMd2hvCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwZW5hbHR5IHdhcyBjbGVhcmVkLhAEiEEgdm90aW5nIHBlbmFsdHkgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQZBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQURXZlbnQEBFQAAVxAQ2FuZGlkYXRlQXBwbGllZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAASMQ2FuZGlkYXRlIGFwcGxpZWQgZm9yIHZlcmlmaWNhdGlvbi5ISnVkZ2VtZW50UmVxdWVzdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBAUBQ2FuZGlkYXRlIG9wZW5lZCBhIGp1ZGljaWFsIGNhc2UgZm9yIHRoZWlyIHZlcmlmaWNhdGlvbiBldmlkZW5jZS5ESnVkZ2VtZW50UHJvdmlkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEkanVkZ2VtZW50SQQBJEp1ZGdlbWVudAACBNhPcmFjbGUgaGFzIHByb3ZpZGVkIHRoZSBqdWRnZW1lbnQgZm9yIGEganVkaWNpYWwgY2FzZS4wUmV0cnlHcmFudGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIGZhaWx1cmVzOAEMdTMyAAMIRQFBIGNhbmRpZGF0ZSBoYXMgYmVlbiBncmFudGVkIGEgZnJlZSByZXRyeSBhdHRlbXB0IGFmdGVyIGEgZmFpbHVyZSB0byB2ZXJpZnkgdGhlaXIkZXZpZGVuY2UuQFBlcnNvblJlZ2lzdGVyZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscGVyc29uYWxfaWQoAShQZXJzb25hbElkAAQEgFJlZ2lzdGVyIGFuIGFjY291bnQgYXMgYSBwZXJzb24uRENhbmRpZGF0ZVJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEgcmVmZXJyZWQEATBUOjpBY2NvdW50SWQABQRsUGVyc29uIHJlZmVycmVkIGFuIGFjY291bnQuIFJlcm9sbGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAGBLRFbnRyb3B5IGZvciBhIGNhbmRpZGF0ZSBjaGFuZ2VkIGFmdGVyIGV4cGlyeS48RGVzaWduQ29tbWl0dGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHJlc2VydmVkX2lkKAEoUGVyc29uYWxJZAAHBJRDYW5kaWRhdGUgY29tbWl0dGVkIHRvIGFuIGluayBkZXNpZ24uOEZ1bGx5QWxsb2NhdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIBLxTdG9yYWdlIGZ1bGx5IGFsbG9jYXRlZCBmb3IgYSBjb21taXR0ZWQgZGVzaWduLiBUaW1lZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQSAQ2FuZGlkYXRlIHJlbW92ZWQgYWZ0ZXIgdGltZW91dC4kRmxha2VkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAKBHhVbmNvbW1pdHRlZCBjYW5kaWRhdGUgcmVtb3ZlZC44VGlja2V0UmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQACwTsUmVmZXJyYWwgdGlja2V0IGNyZWF0ZWQgYnkgc3RvcmluZyB0aGUgcHVibGljIGtleSBvbiBjaGFpbi48VGlja2V0Q2FuY2VsbGVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAwEGQFSZWZlcnJhbCB0aWNrZXQgcmVtb3ZlZCBieSByZW1vdmluZyB0aGUgcHVibGljIGtleSBmcm9tIGNoYWluIHN0b3JhZ2UuNFRpY2tldEFwcGxpZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgcmVmZXJyZXIoAShQZXJzb25hbElkAA0EqENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGEgcmVmZXJyYWwgdGlja2V0LixGYW1pbHlBZGRlZAwBFGluZGV4LQMBLEZhbWlseUluZGV4AAEQa2luZHEEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAAOBFBEZXNpZ24gZmFtaWx5IGFkZGVkLkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABAEDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuXEludml0ZWRDYW5kaWRhdGVBcHBsaWVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAARBJhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhbiBpbnZpdGF0aW9uLmRSZWZlcnJhbFZvdWNoZXJSZWdpc3RlcmVkBAEgcmVmZXJyZXIoAShQZXJzb25hbElkABIEwEEgcmVmZXJyZXIncyByZXdhcmQgdm91Y2hlciBoYXMgYmVlbiByZWdpc3RlcmVkLjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgATBKBJbnZpdGVzIGhhdmUgYmVlbiBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFAR4QW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFQSQQW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBjYW5jZWxsZWQuQENvbmZpZ3VyYXRpb25TZXQEARhjb25maWd1BAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAWBKhUaGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQdBwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEV2ZW50BARUAAFEHE5ld0dhbWUMAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAAEXEEgbmV3IGdhbWUgaXMgc3RhcnRpbmcuJEdhbWVFbmRlZAQBFGluZGV4OAEMdTMyAAEEoFRoZSBnYW1lIGFuZCBpdHMgcG9zdC1wcm9jZXNzIGhhcyBlbmRlZC4oR2FtZUtpbGxlZAQBFGluZGV4OAEMdTMyAAIE/FRoZSBjdXJyZW50IGdhbWUgd2FzIGZvcmNlLWtpbGxlZCBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLjRHYW1lUGhhc2VzU2V0BAEYcGhhc2VzpQQBTFBoYXNlRHVyYXRpb25WYWx1ZXMAAwQZAVRoZSBnYW1lIHBoYXNlIGR1cmF0aW9ucyB3ZXJlIG92ZXJyaWRkZW4gYnkgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4gU2lnbmVkVXAEAQx3aG8hBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4ABASAQSBwbGF5ZXIgc2lnbmVkIHVwIGZvciB0aGUgZ2FtZS48UmVwb3J0U3VibWl0dGVkCAEMd2hvIQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEoZ2FtZV9pbmRleDgBDHUzMgAFBIBBIHBsYXllciBzdWJtaXR0ZWQgdGhlaXIgcmVwb3J0LihPZmZib2FyZGVkBAEMd2hvIQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAYEiEEgcGxheWVyIG9mZmJvYXJkZWQgZnJvbSB0aGUgZ2FtZS4kS2lja2VkT3V0BAEYcGxheWVyIQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAcEiEFuIGFyY2hpdmVkIHBsYXllciB3YXMga2lja2VkIG91dC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIACASMSW52aXRlcyB3ZXJlIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0BAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAJBGRBbiBpbnZpdGUgdGlja2V0IHdhcyBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQACgR8QW4gaW52aXRlIHRpY2tldCB3YXMgY2FuY2VsbGVkLjhHYW1lc1NjaGVkdWxlZAQBFGNvdW50OAEMdTMyAAsEVEdhbWVzIHdlcmUgc2NoZWR1bGVkLlBTY2hlZHVsZWRHYW1lUmVtb3ZlZAQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAwEdEEgc2NoZWR1bGVkIGdhbWUgd2FzIHJlbW92ZWQuQFN0bXRVc2FnZVJlbW92ZWQEAQx3aG8IASBbdTg7IDMyXQANBLhTdGF0ZW1lbnQgc3RvcmUgdXNhZ2UgcmVtb3ZlZCBmb3IgdGhlIGFjY291bnQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAOBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy44UGxheURlcG9zaXRTZXQEARhhbW91bnTEAUhOYXRpdmVCYWxhbmNlT2Y8VD4AEASgVGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IHdhcyB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEHDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXM8QWNjb3VudE9yUGVyc29uBCRBY2NvdW50SWQBBAEIHEFjY291bnQEAAQBJEFjY291bnRJZAAAABhQZXJzb24EAAgBFEFsaWFzAAEAACUHDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0FEV2ZW50BARUAAEkNENyZWRpdENsYWltZWQMAQx3aG8hBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EeFRoZSBwZXJzb24gd2hvIGNsYWltZWQgY3JlZGl0LgEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQEvERlc3RpbmF0aW9uIGFjY291bnQgdGhhdCByZWNlaXZlZCB0aGUgdHJhbnNmZXIuARhhbW91bnTEATBCYWxhbmNlT2Y8VD4ETEFtb3VudCB0cmFuc2ZlcnJlZC4ABHBBIHBlcnNvbiBoYXMgY2xhaW1lZCBjcmVkaXQuUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvIQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BLBUaGUgYWNjb3VudCB3aG9zZSBwZXJzb25ob29kIHdhcyByZWNvZ25pemVkLgEccmVzdW1lZMgBEGJvb2wEEQFXaGV0aGVyIHRoaXMgd2FzIHJlc3VtaW5nIGZyb20gc3VzcGVuc2lvbiBvciBmaXJzdC10aW1lIHJlY29nbml0aW9uLgEEpFBlcnNvbmhvb2Qgd2FzIHJlY29nbml6ZWQgZm9yIGFuIGFjY291bnQuVFBheW91dFJvdW5kc1NjaGVkdWxlZAwBGGFtb3VudMQBMEJhbGFuY2VPZjxUPgRUVGhlIGFtb3VudCBwZXIgcm91bmQuARRjb3VudDgBDHUzMgRUVGhlIG51bWJlciBvZiByb3VuZHMuASBkdXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+BIRUaGUgZHVyYXRpb24gcGVyIHJvdW5kIGluIGJsb2Nrcy4CBIhQYXlvdXQgcm91bmRzIGhhdmUgYmVlbiBzY2hlZHVsZWQuVFBheW91dFNjaGVkdWxlUmVtb3ZlZAQBFGluZGV4OAEMdTMyBIhUaGUgaW5kZXggb2YgdGhlIHJlbW92ZWQgc2NoZWR1bGUuAwSMQSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gcmVtb3ZlZC5EUm91bmRUcmFuc2l0aW9uZWQEASxyb3VuZF9pbmRleDgBKFJvdW5kSW5kZXgEmFRoZSByb3VuZCBpbmRleCB0aGF0IHdhcyB0cmFuc2l0aW9uZWQuBAR4QSByb3VuZCBoYXMgYmVlbiB0cmFuc2l0aW9uZWQuTFBheW91dFJvdW5kT3BlcmF0ZWQEASxyb3VuZF9pbmRleDgBKFJvdW5kSW5kZXgEiFRoZSByb3VuZCBpbmRleCB0aGF0IHdhcyBvcGVyYXRlZC4FBBkBQSBwYXlvdXQgcm91bmQgaGFzIGJlZW4gb3BlcmF0ZWQgKGNyZWRpdCBkaXN0cmlidXRlZCB0byBwYXJ0aWNpcGFudHMpLiRDYXNoZWRPdXQEAQx3aG8hBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EfFRoZSBwYXJ0aWNpcGFudCB3aG8gY2FzaGVkIG91dC4GBLhBIHBhcnRpY2lwYW50IGhhcyBjYXNoZWQgb3V0IHNjb3JlIGZvciBwb2ludHMueFBlcnNvbmhvb2RUaHJlc2hvbGRTY2hlZHVsZVNldAAHBLxUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgaGFzIGJlZW4gc2V0LlxBYnNlbmNlR3JhY2VTY2hlZHVsZVNldAAIBKBUaGUgYWJzZW5jZS1ncmFjZSBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQcMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0FEV2ZW50BARUAAEgLElkc1Jlc2VydmVkBAEUY291bnQ4AQx1MzIAAAR0QSBudW1iZXIgb2YgSURzIHdhcyByZXNlcnZlZC4kSWRSZW5ld2VkBAEIaWQoAShQZXJzb25hbElkAAEESEFuIElEIHdhcyByZW5ld2VkLjBJZFVucmVzZXJ2ZWQEAQhpZCgBKFBlcnNvbmFsSWQAAgRoQSByZXNlcnZlZCBJRCB3YXMgcmVtb3ZlZC5AUGVvcGxlUmVnaXN0ZXJlZAQBFGNvdW50OAEMdTMyAAMEZFJlZ2lzdGVyIG11bHRpcGxlIHBlb3BsZS48UGVvcGxlU3VzcGVuZGVkBAEUY291bnQ4AQx1MzIABARsU3VzcGVuZCBhIG51bWJlciBvZiBwZW9wbGUuRFBlcnNvbmhvb2RSZXN1bWVkBAEIaWQoAShQZXJzb25hbElkAAUEhFNvbWVvbmUncyBwZXJzb25ob29kIHdhcyByZXN1bWVkLkhTdXNwZW5zaW9uc1N0YXJ0ZWQABgR8VGhlIHBhbGxldCBlbmFibGVkIHN1c3BlbnNpb25zLkBTdXNwZW5zaW9uc0VuZGVkAAcEgFRoZSBwYWxsZXQgZGlzYWJsZWQgc3VzcGVuc2lvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQcMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXZlbnQEBFQAARh4QWxsQXR0ZXN0YXRpb25BbGxvd2FuY2VDbGVhcmVkBAEgdmVyaWZpZXIEATBUOjpBY2NvdW50SWQAAATwQWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBoYXMgYmVlbiByZW1vdmVkIGZvciB0aGUgdmVyaWZpZXIudEF0dGVzdGF0aW9uQWxsb3dhbmNlSW5jcmVhc2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAEELQFBdHRlc3RhdGlvbiBhbGxvd2FuY2Ugd2FzIGluY3JlYXNlZCBmb3IgYW4gYWNjb3VudCBieSBgY291bnRgIGF0dGVzdGF0aW9ucy44UGVyc29uQXR0ZXN0ZWQIASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAASB2ZXJpZmllcgQBMFQ6OkFjY291bnRJZAACBNRBIG5ldyBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCB0aHJvdWdoIGF0dGVzdGF0aW9uLkhDb25zdW1lclJlZ2lzdGVyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMErEEgbGl0ZSBwZXJzb24gd2FzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci48QWxpYXNBY2NvdW50U2V0CAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBLxBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHNldCBvciB1cGRhdGVkLkRBbGlhc0FjY291bnRVbnNldAgBFGFsaWFzSQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQSgQW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyByZW1vdmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDEHDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBRFdmVudAQEVAABOEBQZXJzb25SZWdpc3RlcmVkCAEUYWxpYXMIARRBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAASYQSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5QTGl0ZVBlcnNvblJlZ2lzdGVyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEErEEgbGl0ZSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5kRnJpZW5kUmVxdWVzdFN0bXRVc2FnZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgQBAUZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiBhc3NpZ25lZCBmb3IgYSBzZXF1ZW5jZS50RnJpZW5kUmVxdWVzdFN0bXRVc2FnZVJlbW92ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEwEZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiByZW1vdmVkLmhQZXJzb25BdXRob3JpemF0aW9uVG91Y2hlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABASUQSBwZXJzb24ncyBhdXRob3JpemF0aW9uIHdhcyB0b3VjaGVkLoRFeHBpcmVkVXNlcm5hbWVSZXNlcnZhdGlvblJlbW92ZWQIASB1c2VybmFtZUEEASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQSwQW4gZXhwaXJlZCB1c2VybmFtZSByZXNlcnZhdGlvbiB3YXMgcmVtb3ZlZC5QSWRlbnRpZmllcktleVVwZGF0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAYEoEEgY29uc3VtZXIncyBpZGVudGlmaWVyIGtleSB3YXMgdXBkYXRlZC54VXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uU2V0BAEgZHVyYXRpb24oAQx1NjQABwSoVGhlIHVzZXJuYW1lIHJlc2VydmF0aW9uIGR1cmF0aW9uIHdhcyBzZXQuVFN0bXRTdG9yZUFsbG93YW5jZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAgEzEFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHdhcyBncmFudGVkLmhTdG10U3RvcmVBbGxvd2FuY2VzQ2xlYXJlZAwBGHBlcmlvZDgBDHUzMgABJGZpcnN0X2tleQgBFEFsaWFzAAEUY291bnQ4AQx1MzIACQTMRXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyB3ZXJlIGNsZWFuZWQgdXAuNFBlcnNvbkRlbW90ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAoE3EEgZnVsbCBwZXJzb24gd2FzIGRlbW90ZWQgZHVlIHRvIGV4cGlyZWQgYXV0aG9yaXphdGlvbi5YTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEoY29sbGVjdGlvbmEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgALBMhMb25nLXRlcm0gc3RvcmFnZSBoYXMgYmVlbiBjbGFpbWVkIGZvciBhbiBhY2NvdW50LnxMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uRmFpbGVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9uYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAwIWQFBIGxvbmctdGVybSBzdG9yYWdlIGNsYWltIHdhcyBhY2NlcHRlZCBidXQgdGhlIGRvd25zdHJlYW0gYWxsb2NhdGlvbiBmYWlsZWQuIFRoZSBhbGlhc5RpcyBzdGlsbCBtYXJrZWQgc3BlbnQgZm9yIHRoZSBwZXJpb2QudExvbmdUZXJtU3RvcmFnZUFsaWFzZXNDbGVhcmVkCAEYcGVyaW9kOAEMdTMyAAEUY291bnQ4AQx1MzIADQQFAUV4cGlyZWQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBoYXZlIGJlZW4gY2xlYXJlZCBmb3IgYSBwZXJpb2QuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0NQcMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXZlbnQEBFQAAQhoQ2h1bmtQYWdlSGFzaGVzSW5pdGlhbGl6ZWQIATRyaW5nX2V4cG9uZW50BQUBMFJpbmdFeHBvbmVudAABLHRvdGFsX3BhZ2VzOAEMdTMyAAAEGQFBIG5ldyBjaHVuayBwYWdlIGhhc2ggc2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIChlLmcuLCBkdXJpbmcgZ2VuZXNpcykuLENodW5rc0FkZGVkDAE0cmluZ19leHBvbmVudAUFATBSaW5nRXhwb25lbnQAASxzdGFydF9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAEEIQFOZXcgY2h1bmtzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gYW4gZXhpc3Rpbmcgb3IgbmV3IGNodW5rIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5BwxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0FEV2ZW50BARUAAEoLE1lbWJlckFkZGVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAToQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZWNvZ25pc2VkIGFuZCBpbmRleGVkLjRNZW1iZXJSZW1vdmVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQSsQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZXZva2VkLmxDb2xsZWN0aW9uTWFya2VkRm9yRGVsZXRpb24EAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgACBKhBIGNvbGxlY3Rpb24gaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi5EQ29sbGVjdGlvbkRlbGV0ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgADBJBBIGNvbGxlY3Rpb24gaGFzIGJlZW4gZnVsbHkgZGVsZXRlZC4kUmluZ0J1aWx0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAQEWEEgcmluZyByb290IHdhcyBidWlsdC5ATWVtYmVyc09uYm9hcmRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAUEXE1lbWJlcnMgd2VyZSBvbmJvYXJkZWQuLFJpbmdzTWVyZ2VkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxiYXNlX3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAUR0YXJnZXRfcmluZ19pbmRleDgBJFJpbmdJbmRleAAGBFhUd28gcmluZ3Mgd2VyZSBtZXJnZWQuRE9uYm9hcmRpbmdTaXplU2V0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxvbmJvYXJkaW5nX3NpemU4AQx1MzIABwS0VGhlIG9uYm9hcmRpbmcgc2l6ZSB3YXMgc2V0IGZvciBhIGNvbGxlY3Rpb24uSE1lbWJlclNlbGZJbmNsdWRlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEMa2V5CAEsTWVtYmVyT2Y8VD4ACASMQSBtZW1iZXIgc2VsZi1pbmNsdWRlZCBpbnRvIGEgcmluZy5AT2xkUm9vdENsZWFuZWRVcAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAEMdTMyAAkEpEFuIG9sZCByb290IHJldmlzaW9uIGhhcyBiZWVuIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQcMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFdmVudAQEVAABYCRDb2luU3BsaXQEATBvdXRwdXRfY291bnQ4AQx1MzIAAAA8Q29pblRyYW5zZmVycmVkDAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAARxuZXdfYWdlLQMBDHUxNgABAFhSZWN5Y2xlckxvYWRlZFdpdGhDb2luBAEUdmFsdWV1AwEkQ29pblZhbHVlAAIAfFJlY3ljbGVyTG9hZGVkV2l0aEV4dGVybmFsQXNzZXQMAQx3aG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAARhhbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AAwBgUmVjeWNsZXJVbmxvYWRlZEludG9Db2luEAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF92YWx1ZXUDASRDb2luVmFsdWUAATBvdXRwdXRfdmFsdWV1AwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIABACEUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0EAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAFALBSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXRBbmRWb3VjaGVycxQBCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIAAVRleHRlcm5hbF9hc3NldF9hbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATR2b3VjaGVyX2NvdW50OAEMdTMyAAYAhFBhaWRVbmxvYWRUb2tlblJlZ2lzdGVyZWRXaXRoQ29pbggBDGZlZcQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABJGRlc3Ryb3llZMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAHAIxQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aE5hdGl2ZQgBDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZcQBSE5hdGl2ZUJhbGFuY2VPZjxUPgAIAIxQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aFN0YWJsZQgBDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZcQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAJAHRQZW9wbGVGcmVlVW5sb2FkVG9rZW5Db25zdW1lZAQBGHBlcmlvZDgBGFBlcmlvZAAKAIRMaXRlUGVvcGxlRnJlZVVubG9hZFRva2VuQ29uc3VtZWQEARhwZXJpb2Q4ARhQZXJpb2QACwBkUmVjeWNsZXJzVW5sb2FkZWRJbnRvQ29pbgwBCHRvBAEwVDo6QWNjb3VudElkAAEwb3V0cHV0X3ZhbHVldQMBJENvaW5WYWx1ZQABLGlucHV0X2NvdW50OAEMdTMyAAwAiFJlY3ljbGVyc1VubG9hZGVkSW50b0V4dGVybmFsQXNzZXQMAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AA0AuFJlY3ljbGVyc1VubG9hZGVkSW50b0V4dGVybmFsQXNzZXROb25Bbm9ueW1vdXMUAQx3aG8EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwZmVlX2N1cnJlbmN5TQUBLEZlZUN1cnJlbmN5AA4AZFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbnMEATBvdXRwdXRfY291bnQ4AQx1MzIADwB8Q29pbk9mZmJvYXJkZWRJbnRvRXh0ZXJuYWxBc3NldAwBCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABAAPFJlY3ljbGVyQ2xlYW5lZAwBFHZhbHVldQMBJENvaW5WYWx1ZQABPHJlbWFpbmluZ19jb2luczgBDHUzMgABQGRlc3Ryb3llZF9hbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEQBkQ29uc3VtZWRGcmVlVG9rZW5zQ2xlYW5lZAQBGHBlcmlvZDgBGFBlcmlvZAASAGhQYWlkVW5sb2FkVG9rZW5SaW5nQ2xlYW5lZAgBGHBlcmlvZDgBGFBlcmlvZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAEwBMUmVjeWNsZXJEdXN0Q2xlYW5lZAAUAGhQYWlkVW5sb2FkVG9rZW5EdXN0Q2xlYW5lZAAVAJxFeHBpcmVkUGFpZFVubG9hZFRva2VuQ29sbGVjdGlvbkRlbGV0ZWQEARhwZXJpb2Q4ARhQZXJpb2QAFgBQVW5kZXJseWluZ0Fzc2V0SWRTZXQEASBhc3NldF9pZOABVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgAXAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEHDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXZlbnQEBFQAARgoU3Vic2NyaWJlZAQBHHBhcmFfaWScARhQYXJhSWQAAARcQSBwYXJhY2hhaW4gc3Vic2NyaWJlZC4wVW5zdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAABBGRBIHBhcmFjaGFpbiB1bnN1YnNjcmliZWQuLFVwZGF0ZXNTZW50CAEccGFyYV9pZJwBGFBhcmFJZAABMHVwZGF0ZV9jb3VudDgBDHUzMgACBIBVcGRhdGUgYmF0Y2ggc2VudCB0byBzdWJzY3JpYmVyLkBVcGRhdGVTZW5kRmFpbGVkBAEccGFyYV9pZJwBGFBhcmFJZAADBMRTZW5kaW5nIHJpbmcgcm9vdCB1cGRhdGVzIHRvIGEgc3Vic2NyaWJlciBmYWlsZWQuPFJlcGxheVJlcXVlc3RlZAwBHHBhcmFfaWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABNGluZGljZXNfY291bnQ4AQx1MzIABAS8UmVwbGF5IG9mIHJpbmcgcm9vdHMgcmVxdWVzdGVkIGJ5IGEgc3Vic2NyaWJlci44QmF0Y2hBYmFuZG9uZWQEASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAUEzEEgc3R1Y2sgYmF0Y2ggd2FzIGFiYW5kb25lZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEUHDIxpbmRpdl9wYWxsZXRfc3RvcmFnZV9pbml0aWFsaXphdGlvbhhwYWxsZXQURXZlbnQEBFQAAUAwQXNzZXRDcmVhdGVkAAAE0FRoZSBmb3JlaWduIGFzc2V0IHdhcyBjcmVhdGVkIGFuZCByZXNlcnZlcyB3ZXJlIHNldC5QWGNtRnVuZHNUcmFuc2ZlclNlbnQAAQSwQW4gWENNIGZ1bmRzIHRyYW5zZmVyIHdhcyBzZW50IHRvIEFzc2V0IEh1Yi5gWGNtRnVuZHNUcmFuc2ZlclRpbWVkT3V0AAIEvFRoZSBYQ00gdHJhbnNmZXIgdGltZWQgb3V0IGFuZCB3aWxsIGJlIHJldHJpZWQuNEZ1bmRzVmVyaWZpZWQAAwSUVHJhbnNmZXJyZWQgZnVuZHMgaGF2ZSBiZWVuIHZlcmlmaWVkLihQb3RzRnVuZGVkAAQEaEFsbCBwb3RzIGhhdmUgYmVlbiBmdW5kZWQuXE1vYlJ1bGVQYXlvdXRzU2NoZWR1bGVkAAUEmE1vYiBSdWxlIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuVFNjb3JlUGF5b3V0c1NjaGVkdWxlZAAGBIxTY29yZSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gc2V0LnRPblBvbGxJbml0aWFsaXphdGlvbkNvbXBsZXRlZAAHBMhUaGUgb25lLXRpbWUgb25fcG9sbCBpbml0aWFsaXphdGlvbiBoYXMgY29tcGxldGVkLmRNaWdyYXRpb25QZW9wbGVSZWNvZ25pemVkAAgEvE1pZ3JhdGlvbjogaW5pdGlhbCBwZW9wbGUgaGF2ZSBiZWVuIHJlY29nbml6ZWQuaE1pZ3JhdGlvbk9uYm9hcmRpbmdTaXplU2V0AAkEoE1pZ3JhdGlvbjogb25ib2FyZGluZyBzaXplIGhhcyBiZWVuIHNldC54TWlncmF0aW9uUHJvb2ZPZklua0luaXRpYWxpemVkAAoE0E1pZ3JhdGlvbjogUHJvb2Ytb2YtSW5rIHBhbGxldCBoYXMgYmVlbiBpbml0aWFsaXplZC5cTWlncmF0aW9uR2FtZXNTY2hlZHVsZWQACwSUTWlncmF0aW9uOiBnYW1lcyBoYXZlIGJlZW4gc2NoZWR1bGVkLlxNaWdyYXRpb25JbnZpdGVzR3JhbnRlZAAMBJRNaWdyYXRpb246IGludml0ZXMgaGF2ZSBiZWVuIGdyYW50ZWQufE1pZ3JhdGlvblJlaW1idXJzZW1lbnRWYWx1ZXNTZXQADQTsTWlncmF0aW9uOiBQcm9vZi1vZi1JbmsgcmVpbWJ1cnNlbWVudCB2YWx1ZXMgaGF2ZSBiZWVuIHNldC6ETWlncmF0aW9uQXR0ZXN0YXRpb25BbGxvd2FuY2VzU2V0AA4E8E1pZ3JhdGlvbjogUGVvcGxlIExpdGUgYXR0ZXN0YXRpb24gYWxsb3dhbmNlcyBoYXZlIGJlZW4gc2V0LkhNaWdyYXRpb25Db21wbGV0ZWQADwQZAU1pZ3JhdGlvbiBoYXMgY29tcGxldGVkIGFuZCBvbl9wb2xsIGluaXRpYWxpemF0aW9uIGhhcyBiZWVuIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJBwygaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb25fbGl0ZRhwYWxsZXQURXZlbnQEBFQAAQRcSW5pdGlhbGl6YXRpb25Db21wbGV0ZWQAAAQRAUF0dGVzdGF0aW9uIGFsbG93YW5jZXMgaGF2ZSBiZWVuIHNldCBhbmQgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQcMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3KRBQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRBwgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAFUHAAACPABZBwAAAl0HAF0HAAAECDg4AGEHCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZWUHAURDb3c8J3N0YXRpYywgc3RyPgAAZQcEDENvdwQEVAFpBwAEAGkHAAAAaQcAAAUCAG0HCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbsgBEGJvb2wAAHEHDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja9UBARhXZWlnaHQAASRtYXhfYmxvY2vVAQEYV2VpZ2h0AAEkcGVyX2NsYXNzdQcBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAdQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAF5BwAMARhub3JtYWx5BwEEVAABLG9wZXJhdGlvbmFseQcBBFQAASRtYW5kYXRvcnl5BwEEVAAAeQcMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY9UBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljpQIBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFspQIBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWSlAgE4T3B0aW9uPFdlaWdodD4AAH0HDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXiBBwFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXplCQMBLE9wdGlvbjx1MzI+AACBBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAIUHCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AACJBwgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lZQcBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lZQcBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzjQcBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAjQcEDENvdwQEVAGRBwAEAJEHAAAAkQcAAAKVBwCVBwAABAi9ATgAmQcMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0nQcMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAAKEHEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGlBwAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNztQcBOFZlYzxFeHRyaW5zaWM+AAClBxAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQE1BBRFeHRyYQGpBwAEABgAAACpBwh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBrQcABACtBwEEUwAArQcAAAQosQcNBhEGFQYZBh0GIQYpBi0GMQYAsQcAAAQslQWdBaEFrQW5BcUF0QXdBekF/QUJBgC1BwAAAqUHALkHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleAkDASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHTVAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXgJAwEsT3B0aW9uPHUzMj4AAgAAvQcAAAYtAwDBBwAAAsUHAMUHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRoyQcBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaN0HASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzhBwGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAMkHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ80HAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAzQcEIEJUcmVlTWFwCARLAZwEVgHRBwAEANUHAAAA0QcMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAA1QcAAALZBwDZBwAABAic0QcA3QcEGE9wdGlvbgQEVAE8AQgQTm9uZQAAABBTb21lBAA8AAABAADhBwQYT3B0aW9uBARUAeUHAQgQTm9uZQAAABBTb21lBADlBwAAAQAA5QcMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAADpBwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBPAAMATh1c2VkX2JhbmR3aWR0aMkHATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmsJAwGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzhBwGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAO0HBBhPcHRpb24EBFQB8QcBCBBOb25lAAAAEFNvbWUEAPEHAAABAADxBwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAAD1Bwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0efkHAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHP9BwGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc/0HAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAD5Bwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAP0HAAACAQgAAQgAAAQInAUIAAUIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZN0HATBPcHRpb248SGFzaD4AAAkIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zDQgBSEFzeW5jQmFja2luZ1BhcmFtcwAADQgQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAEQgIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAAAVCAQgQlRyZWVNYXAIBEsBnARWAREIAAQAGQgAAAAZCAAAAh0IAB0IAAAECJwRCAAhCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAACUIAAACKQgAKQgIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAC0ICHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50czEIASxWZWM8UGFyYUlkPgAAMQgAAAKcADUIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkIDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBPQgEUwAABABFCAEYVmVjPFQ+AAA9CAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAcQADAEIaWS9AQE4TG9ja0lkZW50aWZpZXIAARhhbW91bnTEARxCYWxhbmNlAAEccmVhc29uc0EIARxSZWFzb25zAABBCAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAEUIAAACPQgASQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNCARTAAAEAFEIARhWZWM8VD4AAE0IDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAb0BHEJhbGFuY2UBxAAIAQhpZL0BAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudMQBHEJhbGFuY2UAAFEIAAACTQgAVQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZCARTAAAEAF0IARhWZWM8VD4AAFkIFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBiQYcQmFsYW5jZQHEAAgBCGlkiQYBCElkAAEYYW1vdW50xAEcQmFsYW5jZQAAXQgAAAJZCABhCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUIBFMAAAQAaQgBGFZlYzxUPgAAZQgUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAEQHEJhbGFuY2UBxAAIAQhpZBABCElkAAEYYW1vdW50xAEcQmFsYW5jZQAAaQgAAAJlCABtCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQucQgIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAAB1CBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBeQgABAB5CAEEVAAAeQgYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCAcQYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50xAEEQgAAfQgMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlAcQsQmxvY2tOdW1iZXIBOAAIARB1c2VkxAEcQmFsYW5jZQABIGF0X2Jsb2NrOAEsQmxvY2tOdW1iZXIAAIEIDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFcnJvcgQEVAABCBxOb1VzYWdlAAAEgFRoZSBvcmlnaW4gaGFzIG5vIHVzYWdlIHRyYWNrZWQuHE5vdFplcm8AAQRYVGhlIHVzYWdlIGlzIG5vdCB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6FCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBxCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQHEADABFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAEYc3VwcGx5xAEcQmFsYW5jZQABHGRlcG9zaXTEAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlxAEcQmFsYW5jZQABNGlzX3N1ZmZpY2llbnTIARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c4kIASxBc3NldFN0YXR1cwAAiQgMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAACNCAAABAjgBACRCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBxDhEZXBvc2l0QmFsYW5jZQHEFEV4dHJhARAkQWNjb3VudElkAQQAEAEcYmFsYW5jZcQBHEJhbGFuY2UAARhzdGF0dXOVCAE0QWNjb3VudFN0YXR1cwABGHJlYXNvbpkIAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACVCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAACZCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBxCRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAMQBHEJhbGFuY2UAAgA8RGVwb3NpdFJlZnVuZGVkAAMALERlcG9zaXRGcm9tCAAEASRBY2NvdW50SWQAAMQBHEJhbGFuY2UABAAAnQgAAAQM4AQEAKEIDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAcQ4RGVwb3NpdEJhbGFuY2UBxAAIARhhbW91bnTEARxCYWxhbmNlAAEcZGVwb3NpdMQBOERlcG9zaXRCYWxhbmNlAAClCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQHENEJvdW5kZWRTdHJpbmcBqQgAFAEcZGVwb3NpdMQBOERlcG9zaXRCYWxhbmNlAAEQbmFtZakIATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sqQgBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuyAEQYm9vbAAAqQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACtCAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQgEGE9wdGlvbgQEVAGFCAEIEE5vbmUAAAAQU29tZQQAhQgAAAEAALUIBBhPcHRpb24EBFQBxAEIEE5vbmUAAAAQU29tZQQAxAAAAQAAuQgEGE9wdGlvbgQEVAGlCAEIEE5vbmUAAAAQU29tZQQApQgAAAEAAL0IDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsEIDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7FCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABADMARhWZWM8VD4AAMkIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQgEUwAABADRCAEYVmVjPFQ+AADNCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQHEAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXTEARxCYWxhbmNlAADRCAAAAs0IANUICDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAL0BARxbdTg7IDhdAADZCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXJyb3IEBFQAAUREVG9vTWFueUNhbmRpZGF0ZXMAAASMVGhlIHBhbGxldCBoYXMgdG9vIG1hbnkgY2FuZGlkYXRlcy5cVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQSsTGVhdmluZyB3b3VsZCByZXN1bHQgaW4gdG9vIGZldyBjYW5kaWRhdGVzLkBBbHJlYWR5Q2FuZGlkYXRlAAIEfEFjY291bnQgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZS4wTm90Q2FuZGlkYXRlAAMEbEFjY291bnQgaXMgbm90IGEgY2FuZGlkYXRlLlBUb29NYW55SW52dWxuZXJhYmxlcwAEBIRUaGVyZSBhcmUgdG9vIG1hbnkgSW52dWxuZXJhYmxlcy5MQWxyZWFkeUludnVsbmVyYWJsZQAFBIxBY2NvdW50IGlzIGFscmVhZHkgYW4gSW52dWxuZXJhYmxlLjxOb3RJbnZ1bG5lcmFibGUABgR8QWNjb3VudCBpcyBub3QgYW4gSW52dWxuZXJhYmxlLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAAHBJxBY2NvdW50IGhhcyBubyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRC5YVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAAIBIxWYWxpZGF0b3IgSUQgaXMgbm90IHlldCByZWdpc3RlcmVkLmxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQACQScQ291bGQgbm90IGluc2VydCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QudFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAoEpENvdWxkIG5vdCByZW1vdmUgZnJvbSB0aGUgY2FuZGlkYXRlIGxpc3QuNERlcG9zaXRUb29Mb3cACwT0TmV3IGRlcG9zaXQgYW1vdW50IHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLmRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAwEkENvdWxkIG5vdCB1cGRhdGUgdGhlIGNhbmRpZGF0ZSBsaXN0LkBJbnN1ZmZpY2llbnRCb25kAA0EKQFEZXBvc2l0IGFtb3VudCBpcyB0b28gbG93IHRvIHRha2UgdGhlIHRhcmdldCdzIHNsb3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LlBUYXJnZXRJc05vdENhbmRpZGF0ZQAOBC0BVGhlIHRhcmdldCBhY2NvdW50IHRvIGJlIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBub3QgYSBjYW5kaWRhdGUuQElkZW50aWNhbERlcG9zaXQADwQNAVRoZSB1cGRhdGVkIGRlcG9zaXQgYW1vdW50IGlzIGVxdWFsIHRvIHRoZSBhbW91bnQgYWxyZWFkeSByZXNlcnZlZC5ASW52YWxpZFVucmVzZXJ2ZQAQBD0BQ2Fubm90IGxvd2VyIGNhbmRpZGFjeSBib25kIHdoaWxlIG9jY3VweWluZyBhIGZ1dHVyZSBjb2xsYXRvciBzbG90IGluIHRoZSBsaXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dCAAAAuEIAOEIAAAECAQ5AQDlCAAAAukIAOkIAAAECDjtCADtCAwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABADxCAEcUGVyYmlsbAAA8QgMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAA9QgAAAQI+QgYAPkIDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQAcAEcW3U4OyA0XQAA/QgMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC4BCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAT0BBFMAAAQABQkBGFZlYzxUPgAABQkAAAI9AQAJCQhIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAKAEMdTY0AAANCQAABAgJCTgAEQkMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAZwEUwAABAAVCQEsQlRyZWVTZXQ8VD4AABUJBCBCVHJlZVNldAQEVAGcAAQAMQgAAAAZCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAR0JBFMAAAQAKQkBGFZlYzxUPgAAHQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVYT3V0Ym91bmRDaGFubmVsRGV0YWlscwAAGAEkcmVjaXBpZW50nAEYUGFyYUlkAAEUc3RhdGUhCQE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3TIARBib29sAAEsZmlyc3RfaW5kZXgtAwEMdTE2AAEobGFzdF9pbmRleC0DAQx1MTYAARRmbGFncyUJAVBPdXRib3VuZENoYW5uZWxGbGFncwAAIQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAJQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAACkJAAACHQkALQkAAAQInC0DADEJDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAANQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAAOQkMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQkMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlckkBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXJBCQFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeUUJAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbkkBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZcgBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZU0JAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAQQkEGE9wdGlvbgQEVAFJAQEIEE5vbmUAAAAQU29tZQQASQEAAAEAAEUJBBhPcHRpb24EBFQBSQkBCBBOb25lAAAAEFNvbWUEAEkJAAABAABJCQAABAgMDABNCQgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBADFAQEwdjM6OlJlc3BvbnNlAAMACFY0BAA1AgEwdjQ6OlJlc3BvbnNlAAQACFY1BACBAgEwdjU6OlJlc3BvbnNlAAUAAFEJAAAECDhJAQBVCQAABAwo1QE4AFkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBXQkEUwAABABhCQEYVmVjPFQ+AABdCQAABAhJATgAYQkAAAJdCQBlCQwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBACRBQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAGkJAAAEDDgEEQMAbQkMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudMQBEHUxMjgAARRvd25lckkBAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlckkBAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc3EJAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AABxCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUJBFMAAAQAeQkBGFZlYzxUPgAAdQkAAAQIEMQAeQkAAAJ1CQB9CQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEJBFMAAAQAhQkBGFZlYzxUPgAAgQkAAAQIxEkBAIUJAAACgQkAiQkIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AY0JDE1BWAGRCQAIASBhbGlhc2Vyc5UJAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXSNCQEYVGlja2V0AACNCRA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZSBEaXNhYmxlZAAAAACRCQwocGFsbGV0X3hjbRhwYWxsZXRQTWF4QXV0aG9yaXplZEFsaWFzZXMAAAAAlQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCQRTAAAEAJ0JARhWZWM8VD4AAJkJDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlczRPcmlnaW5BbGlhc2VyAAAIASBsb2NhdGlvbkkBAURWZXJzaW9uZWRMb2NhdGlvbgABGGV4cGlyeRUDASxPcHRpb248dTY0PgAAnQkAAAKZCQChCQwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9ypQkBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqUJDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAKkJCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BIQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnOtCQGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAAK0JBBhPcHRpb24EBFQBsQkBCBBOb25lAAAAEFNvbWUEALEJAAABAACxCQhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgEhAwAIARBwcmV2IQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0IQMBNE1lc3NhZ2VPcmlnaW4AALUJAAAECCEDOAC5CQhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwvQkBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAvQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADBCQxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsUJDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LskJAAAECAQIAM0JCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQHEJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbpEDAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdMQBHEJhbGFuY2UAASRkZXBvc2l0b3IEASRBY2NvdW50SWQAASRhcHByb3ZhbHPRCQGMQm91bmRlZFZlYzxBY2NvdW50SWQsIE1heEFwcHJvdmFscz4AANEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAMwBGFZlYzxUPgAA1QkMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7ZCQwscGFsbGV0X3N1ZG8YcGFsbGV0FEVycm9yBARUAAEELFJlcXVpcmVTdWRvAAAEgFNlbmRlciBtdXN0IGJlIHRoZSBTdWRvIGFjY291bnQuBGhFcnJvciBmb3IgdGhlIFN1ZG8gcGFsbGV0Lt0JAAAECOEJxADhCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeUJBFMAAAQA6QkBGFZlYzxUPgAA5QkIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQGhAyxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZaEDASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAADpCQAAAuUJAO0JAAAECPEJxADxCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfUJBFMAAAQA+QkBGFZlYzxUPgAA9QkIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBPCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2g8ARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAPkJAAAC9QkA/QkMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgEKDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkUdHlwZXMwUmVnaXN0cmF0aW9uDBxCYWxhbmNlAcQ0TWF4SnVkZ2VtZW50cwAwSWRlbnRpdHlJbmZvAakDAAwBKGp1ZGdlbWVudHMFCgH8Qm91bmRlZFZlYzwoUmVnaXN0cmFySW5kZXgsIEp1ZGdlbWVudDxCYWxhbmNlPiksIE1heEp1ZGdlbWVudHM+AAEcZGVwb3NpdMQBHEJhbGFuY2UAARBpbmZvqQMBMElkZW50aXR5SW5mbwAABQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEJCgRTAAAEAA0KARhWZWM8VD4AAAkKAAAECDgtBAANCgAAAgkKABEKAAAECMTRCQAVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARkKBFMAAAQAIQoBGFZlYzxUPgAAGQoEGE9wdGlvbgQEVAEdCgEIEE5vbmUAAAAQU29tZQQAHQoAAAEAAB0KDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkUdHlwZXM0UmVnaXN0cmFySW5mbwwcQmFsYW5jZQHEJEFjY291bnRJZAEEHElkRmllbGQBKAAMARxhY2NvdW50BAEkQWNjb3VudElkAAEMZmVlxAEcQmFsYW5jZQABGGZpZWxkcygBHElkRmllbGQAACEKAAACGQoAJQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAApCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzTEF1dGhvcml0eVByb3BlcnRpZXMEHEFjY291bnQBBAAIAShhY2NvdW50X2lkBAEcQWNjb3VudAABKGFsbG9jYXRpb244AShBbGxvY2F0aW9uAAAtCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzTFVzZXJuYW1lSW5mb3JtYXRpb24IHEFjY291bnQBBBxCYWxhbmNlAcQACAEUb3duZXIEARxBY2NvdW50AAEgcHJvdmlkZXIxCgFEUHJvdmlkZXI8QmFsYW5jZT4AADEKDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkUdHlwZXMgUHJvdmlkZXIEHEJhbGFuY2UBxAEMKEFsbG9jYXRpb24AAABAQXV0aG9yaXR5RGVwb3NpdAQAxAEcQmFsYW5jZQABABhTeXN0ZW0AAgAANQoAAAQMBDgxCgA5CgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzQFBlcnNvbmFsSWRlbnRpdHkQJEFjY291bnRJZAEELEp1ZGdlbWVudElkATg0TWF4SnVkZ2VtZW50cwAsQmxvY2tOdW1iZXIBOAAQARxhY2NvdW50BAEkQWNjb3VudElkAAFIcGVuZGluZ19qdWRnZW1lbnRzPQoBwEJvdW5kZWRWZWM8KFNvY2lhbCwgSnVkZ2VtZW50SWQpLCBNYXhKdWRnZW1lbnRzPgABGGJhbm5lZMgBEGJvb2wAAWR1c2VybmFtZV9sYXN0X3JlcG9ydGVkX2F0CQMBTE9wdGlvbjxCbG9ja051bWJlcj4AAD0KDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQoEUwAABABFCgEYVmVjPFQ+AABBCgAABAhFBDgARQoAAAJBCgBJCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzOFVzZXJuYW1lUmVwb3J0DCRBY2NvdW50SWQBBCBVc2VybmFtZQFBBBhUaWNrZXQBOAAMASByZXBvcnRlcgQBJEFjY291bnRJZAABIHVzZXJuYW1lQQQBIFVzZXJuYW1lAAEcY2FzZV9pZDgBGFRpY2tldAAATQoMVGluZGl2X3BhbGxldF9pZGVudGl0eRhwYWxsZXQURXJyb3IEBFQAAaRIVG9vTWFueVN1YkFjY291bnRzAAAEXFRvbyBtYW55IHN1YnMtYWNjb3VudHMuHE5vQWxpYXMAAQR4Tm8gYWxpYXMgZm91bmQgZm9yIGFuIGFjY291bnQuIE5vdEZvdW5kAAIEUEFjY291bnQgaXNuJ3QgZm91bmQuIE5vdE5hbWVkAAMEUEFjY291bnQgaXNuJ3QgbmFtZWQuKEVtcHR5SW5kZXgABAQwRW1wdHkgaW5kZXguKEZlZUNoYW5nZWQABQQ8RmVlIGlzIGNoYW5nZWQuKE5vSWRlbnRpdHkABgRITm8gaWRlbnRpdHkgZm91bmQuPFN0aWNreUp1ZGdlbWVudAAHBERTdGlja3kganVkZ2VtZW50LjhKdWRnZW1lbnRHaXZlbgAIBEBKdWRnZW1lbnQgZ2l2ZW4uQEludmFsaWRKdWRnZW1lbnQACQRISW52YWxpZCBqdWRnZW1lbnQuMEludmFsaWRJbmRleAAKBFRUaGUgaW5kZXggaXMgaW52YWxpZC40SW52YWxpZFRhcmdldAALBFhUaGUgdGFyZ2V0IGlzIGludmFsaWQuRFRvb01hbnlSZWdpc3RyYXJzAAwE6E1heGltdW0gYW1vdW50IG9mIHJlZ2lzdHJhcnMgcmVhY2hlZC4gQ2Fubm90IGFkZCBhbnkgbW9yZS44QWxyZWFkeUNsYWltZWQADQRwQWNjb3VudCBJRCBpcyBhbHJlYWR5IG5hbWVkLjxBbHJlYWR5UmVwb3J0ZWQADgSMVXNlcm5hbWUgaGFzIGFscmVhZHkgYmVlbiByZXBvcnRlZC4YTm90U3ViAA8EcFNlbmRlciBpcyBub3QgYSBzdWItYWNjb3VudC4gTm90T3duZWQAEASIU3ViLWFjY291bnQgaXNuJ3Qgb3duZWQgYnkgc2VuZGVyLnRKdWRnZW1lbnRGb3JEaWZmZXJlbnRJZGVudGl0eQARBNBUaGUgcHJvdmlkZWQganVkZ2VtZW50IHdhcyBmb3IgYSBkaWZmZXJlbnQgaWRlbnRpdHkuWEp1ZGdlbWVudFBheW1lbnRGYWlsZWQAEgT4RXJyb3IgdGhhdCBvY2N1cnMgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSBwYXlpbmcgZm9yIGp1ZGdlbWVudC40SW52YWxpZFN1ZmZpeAATBIBUaGUgcHJvdmlkZWQgc3VmZml4IGlzIHRvbyBsb25nLlBOb3RVc2VybmFtZUF1dGhvcml0eQAUBOBUaGUgc2VuZGVyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBpc3N1ZSBhIHVzZXJuYW1lLjBOb0FsbG9jYXRpb24AFQTEVGhlIGF1dGhvcml0eSBjYW5ub3QgYWxsb2NhdGUgYW55IG1vcmUgdXNlcm5hbWVzLkBJbnZhbGlkU2lnbmF0dXJlABYEqFRoZSBzaWduYXR1cmUgb24gYSB1c2VybmFtZSB3YXMgbm90IHZhbGlkLkRSZXF1aXJlc1NpZ25hdHVyZQAXBAkBU2V0dGluZyB0aGlzIHVzZXJuYW1lIHJlcXVpcmVzIGEgc2lnbmF0dXJlLCBidXQgbm9uZSB3YXMgcHJvdmlkZWQuPEludmFsaWRVc2VybmFtZQAYBLBUaGUgdXNlcm5hbWUgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLjRVc2VybmFtZVRha2VuABkEeFRoZSB1c2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLihOb1VzZXJuYW1lABoEmFRoZSByZXF1ZXN0ZWQgdXNlcm5hbWUgZG9lcyBub3QgZXhpc3QuZE5vdFN5c3RlbVByb3ZpZGVkVXNlcm5hbWUAGwTUVGhlIHJlcG9ydGVkIHVzZXJuYW1lIHdhcyBub3QgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4oTm90RXhwaXJlZAAcBC0BVGhlIHVzZXJuYW1lIGNhbm5vdCBiZSBmb3JjZWZ1bGx5IHJlbW92ZWQgYmVjYXVzZSBpdCBjYW4gc3RpbGwgYmUgYWNjZXB0ZWQuIFRvb0Vhcmx5AB0EGQFUaGUgdXNlcm5hbWUgY2Fubm90IGJlIHJlbW92ZWQgYmVjYXVzZSBpdCdzIHN0aWxsIGluIHRoZSBncmFjZSBwZXJpb2QuME5vdFVuYmluZGluZwAeBOxUaGUgdXNlcm5hbWUgY2Fubm90IGJlIHJlbW92ZWQgYmVjYXVzZSBpdCBpcyBub3QgdW5iaW5kaW5nLkBBbHJlYWR5VW5iaW5kaW5nAB8E/FRoZSB1c2VybmFtZSBjYW5ub3QgYmUgdW5ib3VuZCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdW5iaW5kaW5nLlhJbnN1ZmZpY2llbnRQcml2aWxlZ2VzACAIRQFUaGUgYWN0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgYmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyAoZS5nLiBhdXRob3JpdHnQdHJ5aW5nIHRvIHVuYmluZCBhIHVzZXJuYW1lIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0pLihCYWRDb250ZXh0ACEE5FRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBhbGlhcyB3YXMgdXNlZCBpcyBub3Qgc3VwcG9ydGVkLkxVbmV4cGVjdGVkSnVkZ2VtZW50ACIExE5vIGFzc29jaWF0ZWQgcmVxdWVzdCBmb3IgdGhlIGp1ZGdlbWVudCByZWNlaXZlZC4wTm90U3VwcG9ydGVkACMEXQFUaGUgc29jaWFsIGNyZWRlbnRpYWwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY29uZmlndXJlZCBpZGVudGl0eSBpbmZvcm1hdGlvbiBwcm92aWRlci4YQmFubmVkACQE2FRoZSBwZXJzb24gaXMgYmFubmVkIGFuZCBjYW5ub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uLkRBbHJlYWR5UmVnaXN0ZXJlZAAlBB0BVGhlIHBlcnNvbiBhbHJlYWR5IGhhcyBhIHBlcnNvbmFsIGlkZW50aXR5IGFzc29jaWF0ZWQgd2l0aCB0aGVpciBhbGlhcy5ESnVkZ2VtZW50TGlzdEZ1bGwAJgT4VGhlIGxpc3Qgb2YganVkZ2VtZW50cyBvbmdvaW5nIG9uIGEgcGVyc29uYWwgaWRlbnRpdHkgaXMgZnVsbC5sTGFzdFVzZXJuYW1lUmVwb3J0VG9vUmVjZW50ACcEsFRoZSB1c2VybmFtZSBoYXMgYmVlbiByZXBvcnRlZCB0b28gcmVjZW50bHkuYFVzZXJuYW1lSnVkZ2VtZW50T25nb2luZwAoBBEBVGhlIHVzZXJuYW1lIGhhcyBiZWVuIHJlcG9ydGVkIGFuZCBpcyB1bmRlcmdvaW5nIHZhbGlkaXR5IGp1ZGdlbWVudC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQoMTGluZGl2X3BhbGxldF9wZW9wbGUUdHlwZXMwUGVyc29uUmVjb3JkCBhNZW1iZXIBCCRBY2NvdW50SWQBBAAIAQxrZXkIARhNZW1iZXIAARxhY2NvdW50AQcBRE9wdGlvbjxBY2NvdW50SWQ+AABVCgxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXJyb3IEBFQAAZQkTm90UGVyc29uAAAE0FRoZSBzdXBwbGllZCBpZGVudGlmaWVyIGRvZXMgbm90IHJlcHJlc2VudCBhIHBlcnNvbi4UTm9LZXkAAQScVGhlIGdpdmVuIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBrZXkuOEludmFsaWRDb250ZXh0AAIEKQFUaGUgY29udGV4dCBpcyBub3QgYSBtZW1iZXIgb2YgdGhvc2UgYWxsb3dlZCB0byBoYXZlIGFjY291bnQgYWxpYXNlcyBoZWxkLjhJbnZhbGlkQWNjb3VudAADBGRUaGUgYWNjb3VudCBpcyBub3Qga25vd24uMEFjY291bnRJblVzZQAEBMhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZSB1bmRlciBhbm90aGVyIGFsaWFzLjBJbnZhbGlkUHJvb2YABQRUVGhlIHByb29mIGlzIGludmFsaWQuQEludmFsaWRTaWduYXR1cmUABgRkVGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkLiROb01lbWJlcnMABwTQVGhlcmUgYXJlIG5vdCB5ZXQgYW55IG1lbWJlcnMgb2Ygb3VyIHBlcnNvbmhvb2Qgc2V0LihJbmNvbXBsZXRlAAgEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLihTdGlsbEZyZXNoAAkEYFRoZSByb290IGlzIHN0aWxsIGZyZXNoLjhUb29NYW55TWVtYmVycwAKBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQALBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBwZXJzb24uLEtleU5vdEZvdW5kAAwEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAA0EkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLhxTYW1lS2V5AA4ElFRoZSByZWNvcmQgaXMgYWxyZWFkeSB1c2luZyB0aGlzIGtleS5UUGVyc29uYWxJZE5vdFJlc2VydmVkAA8EdFBlcnNvbmFsIElkIHdhcyBub3QgcmVzZXJ2ZWQugFBlcnNvbmFsSWRSZXNlcnZhdGlvbkNhbm5vdFJlbmV3ABAEkFBlcnNvbmFsIElkIGhhcyBuZXZlciBiZWVuIHJlc2VydmVkLpBQZXJzb25hbElkTm90UmVzZXJ2ZWRPck5vdFJlY29nbml6ZWQAEQTcUGVyc29uYWwgSWQgd2FzIG5vdCByZXNlcnZlZCBvciBub3QgYWxyZWFkeSByZWNvZ25pemVkLixJbnZhbGlkUmluZwASBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwATBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQAFATUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zABUEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ETm9NdXRhdGlvblNlc3Npb24AFgQ1AUFuIG11dGF0aW5nIGFjdGlvbiB3YXMgcXVldWVkIHdoZW4gdGhlcmUgd2FzIG5vIG11dGF0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3MucENvdWxkTm90U3RhcnRNdXRhdGlvblNlc3Npb24AFwSkQW4gbXV0YXRpbmcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5sU3VzcGVuc2lvblNlc3Npb25JblByb2dyZXNzABgE9ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHN1c3BlbnNpb24gc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy40QWxpYXNOb3RTdGFsZQAZBHxUaGUgYWxpYXMgbWFwcGluZyBpcyBub3Qgc3RhbGUuOFRpbWVPdXRPZlJhbmdlABoEeENhbGwgaXMgdG9vIGxhdGUgb3IgdG9vIGVhcmx5LlhBbGlhc0FjY291bnRBbHJlYWR5U2V0ABsEwEFsaWFzIDwtPiBBY2NvdW50IGlzIGFscmVhZHkgc2V0IGFuZCB1cCB0byBkYXRlLjBOb3RTdXNwZW5kZWQAHATQUGVyc29uaG9vZCBjYW5ub3QgYmUgcmVzdW1lZCBpZiBpdCBpcyBub3Qgc3VzcGVuZGVkLiRTdXNwZW5kZWQAHQRgUGVyc29uaG9vZCBpcyBzdXNwZW5kZWQuTEludmFsaWRLZXlNaWdyYXRpb24AHgSoSW52YWxpZCBzdGF0ZSBmb3IgYXR0ZW1wdGVkIGtleSBtaWdyYXRpb24uTEtleUFscmVhZHlTdXNwZW5kZWQAHwhVAUludmFsaWQgc3VzcGVuc2lvbiBvZiBhIGtleSBiZWxvbmdpbmcgdG8gYSBwZXJzb24gd2hvc2UgaW5kZXggaW4gdGhlIHJpbmcgaGFzIGFscmVhZHm4YmVlbiBpbmNsdWRlZCBpbiB0aGUgcGVuZGluZyBzdXNwZW5zaW9ucyBsaXN0LlRJbnZhbGlkT25ib2FyZGluZ1NpemUAIAToVGhlIG9uYm9hcmRpbmcgc2l6ZSBtdXN0IG5vdCBleGNlZWQgdGhlIG1heGltdW0gcmluZyBzaXplLkBJbnZhbGlkTWVtYmVyS2V5ACEErFRoZSBtZW1iZXIga2V5IGlzIG5vdCB2YWxpZCBmb3IgdGhlIGNyeXB0by50UGVvcGxlQ29sbGVjdGlvbkFscmVhZHlFeGlzdHMAIgS8VGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC40QWxpYXNNaXNtYXRjaAAjBBkBVGhlIHByb3ZpZGVkIGFsaWFzIGRvZXMgbm90IG1hdGNoIHRoZSBhY2NvdW50J3MgY3VycmVudCBhbGlhcyBtYXBwaW5nLjhOb1N0YWxlQWxpYXNlcwAkBKBOb25lIG9mIHRoZSBzdXBwbGllZCBhbGlhc2VzIHdlcmUgc3RhbGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlkKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0JE1vYkNyZWRpdAQcQmFsYW5jZQHEABABFHZvdGVkOAEMdTMyAAEcY2xlYW5lZDgBDHUzMgABHGNvcnJlY3Q4AQx1MzIAARhjcmVkaXTEARxCYWxhbmNlAABdCgAABAg4CABhCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBPcGVuQ2FzZQQsUnVudGltZUNhbGwBIAAMARRzaW5jZSgBQFNlY3NTaW5jZUdlbmVzaXMAARxkZXRhaWxzZQoBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABFHRhbGx5dQoBJFZvdGVUYWxseQAAZQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQsQ2FzZURldGFpbHMELFJ1bnRpbWVDYWxsASAADAEkc3RhdGVtZW50aQoBJFN0YXRlbWVudAABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEgY2FsbGJhY2txCgH8Q2FsbGJhY2s8KENhc2VJbmRleCwgSnVkZ2VtZW50Q29udGV4dCwgSnVkZ2VtZW50KSwgUnVudGltZUNhbGw+AABpChA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSRTdGF0ZW1lbnQAAQwoUHJvb2ZPZkluawwBGGRlc2lnbm0KAVRwcm9vZl9vZl9pbms6Oklua1NwZWMAASBldmlkZW5jZQgBMEV2aWRlbmNlSGFzaAABTHByb2JhYmxlX2FjY2VwdGFibGXIARBib29sAAAASElkZW50aXR5Q3JlZGVudGlhbAgBIHBsYXRmb3JtRQQBQGlkZW50aXR5OjpTb2NpYWwAASBldmlkZW5jZUEEAThpZGVudGl0eTo6RGF0YQABADRVc2VybmFtZVZhbGlkBAEgdXNlcm5hbWVBBAE4aWRlbnRpdHk6OkRhdGEAAgAAbQoUNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwcHJvb2Zfb2ZfaW5rHElua1NwZWMAARBARGVzaWduZWRFbGVjdGl2ZQgALQMBLEZhbWlseUluZGV4AAAtAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQIAC0DASxGYW1pbHlJbmRleAAACAEkQWNjb3VudElkAAEASFByb2NlZHVyYWxQZXJzb25hbAgALQMBLEZhbWlseUluZGV4AAAoAShQZXJzb25hbElkAAIAKFByb2NlZHVyYWwIAC0DASxGYW1pbHlJbmRleAAAcAE4UHJvY2VkdXJhbFNlZWQAAwAAcQoQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkgQ2FsbGJhY2sIGFBhcmFtcwAsUnVudGltZUNhbGwAAAgBMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAB1CgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRWb3RlVGFsbHkAAAwBDGF5ZTgBDHUzMgABDG5heTgBDHUzMgABIGNvbnRlbXB0OAEMdTMyAAB5CgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBSaXBlQ2FzZQQsUnVudGltZUNhbGwBIAAIARxkZXRhaWxzZQoBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABHHZlcmRpY3RJBAEkSnVkZ2VtZW50AAB9CgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBEb25lQ2FzZQAACAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcdmVyZGljdEkEASRKdWRnZW1lbnQAAIEKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0SENyZWRpdERpc3RyaWJ1dGlvbggcQmFsYW5jZQHELEJsb2NrTnVtYmVyATgAFAEUcm91bmQ4AShSb3VuZEluZGV4AAE8aW5pdGlhbF9iYWxhbmNlxAEcQmFsYW5jZQABRHJlbWFpbmluZ19iYWxhbmNlxAEcQmFsYW5jZQABMHRvdGFsX3BvaW50cygBJFZvdGVDb3VudAABFHN0YXJ0OAEsQmxvY2tOdW1iZXIAAIUKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBiQoEUwAABACNCgEYVmVjPFQ+AACJCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQHELEJsb2NrTnVtYmVyATgADAEkcmVtYWluaW5nOAEoUm91bmRJbmRleAABQGFtb3VudF9wZXJfcm91bmTEARxCYWxhbmNlAAEYcGVyaW9kOAEsQmxvY2tOdW1iZXIAAI0KAAACiQoAkQoMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJjZW50AAAEAAwBCHU4AACVCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBRFcnJvcgQEVAABUChOb1N1Y2hDYXNlAAAEYFRoZSBjYXNlIGRvZXMgbm90IGV4aXN0LihOb1N1Y2hWb3RlAAEEYFRoZSB2b3RlIGRvZXMgbm90IGV4aXN0LhxOb3RPcGVuAAIEVFRoZSBjYXNlIGlzIG5vdCBvcGVuLhxOb3RSaXBlAAMEVFRoZSBjYXNlIGlzIG5vdCByaXBlLhxOb3REb25lAAQEZFRoZSBjYXNlIGlzIG5vdCB5ZXQgZG9uZS4oQ29kZWNFcnJvcgAFBFUBVGhlIGRlY29kZSBvZiB0aGUgY2FsbCBmYWlsZWQuIE1heWJlIHRoZXJlIHdhcyBhIGJyZWFraW5nIHJ1bnRpbWUgdXBncmFkZSBpbiBiZXR3ZWVuPzREaXNwYXRjaEVycm9yAAYETQFUaGUgY2FsbCBmYWlsZWQgdG8gZGlzcGF0Y2guIE1heWJlIHRoZXJlIHdhcyBhIGJyZWFraW5nIHJ1bnRpbWUgdXBncmFkZSBpbiBiZXR3ZWVuPxhSZWNlbnQABwSQVGhlIGNhc2UgaXMgdG9vIHJlY2VudCB0byBiZSByZWFwZWQuIE5vQ3JlZGl0AAgEoE5vdCBlbm91Z2ggY3JlZGl0IHRvIHBheW91dCB0aGUgcmV3YXJkcy4gTm9SZXdhcmQACQTUTm8gbW9iIGNyZWRpdCBkaXN0cmlidXRpb24gaW4gcGxhY2UgdG8gcmV3YXJkIHZvdGVycy4gTm9Qb2ludHMACgSgTm8gcG9pbnRzIHRvIGJlIGNvbnZlcnRlZCB0byBtb2IgY3JlZGl0LjRUb29NYW55Q2xhaW1zAAsEVFRvbyBtYW55IHZvdGUgY2xhaW1zLiBOb1BheW91dAAMBFhObyBwYXlvdXQgaW4gcHJvZ3Jlc3MuSEFyaXRobWV0aWNPdmVyZmxvdwANBLRUaGUgcG9pbnQgYW5kL29yIGNyZWRpdCBhcml0aG1ldGljIG92ZXJmbG93cy5AVG9vTWFueVNjaGVkdWxlcwAOBIBUb28gbWFueSBwYXlvdXQgcm91bmQgc2NoZWR1bGVzLihOb1NjaGVkdWxlAA8EfE5vIHBheW91dCByb3VuZCBzY2hlZHVsZSBmb3VuZC4kTm9QZW5hbHR5ABAEWE5vIHZvdGUgcGVuYWx0eSBmb3VuZC4URWFybHkAEQSUVGhlIHZvdGUgcGVuYWx0eSBoYXMgbm90IGV4cGlyZWQgeWV0LjBVbmRlclBlbmFsdHkAEgToVGhlIHZvdGUgY2Fubm90IGJlIGNhc3QgZHVlIHRvIGEgdm90aW5nIHBlbmFsdHkgaW4gZWZmZWN0LlhDYXNlRXhwaXJhdGlvbkRpc2FibGVkABMEHQFUaGUgb3BlbiBjYXNlIGV4cGlyYXRpb24gaXMgZGlzYWJsZWQgZHVlIHRvIGluc3VmZmljaWVudCBhY3RpdmUgdm90ZXJzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6ZCgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQkQ2FuZGlkYXRlECxKdWRnZW1lbnRJZAE4HERlcG9zaXQBnQosQmxvY2tOdW1iZXIBOCRBY2NvdW50SWQBBAEMHEFwcGxpZWQMARBjcmVkoQoBrENyZWRpYmlsaXR5PERlcG9zaXQsIFBlcnNvbmFsSWQsIEFjY291bnRJZD4AARxlbnRyb3B5CAEcRW50cm9weQABNGVudHJvcHlfc2luY2U4ASxCbG9ja051bWJlcgAAACBTZWxlY3RlZCABFHNpbmNlOAEsQmxvY2tOdW1iZXIAARBjcmVkoQoBrENyZWRpYmlsaXR5PERlcG9zaXQsIFBlcnNvbmFsSWQsIEFjY291bnRJZD4AASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAARxlbnRyb3B5CAEcRW50cm9weQABGGRlc2lnbm0KARxJbmtTcGVjAAEoYWxsb2NhdGlvbqUKAShBbGxvY2F0aW9uAAEcanVkZ2luZwkDAUxPcHRpb248SnVkZ2VtZW50SWQ+AAEYZmFpbGVkOAEcQ291bnRlcgABABhQcm92ZW4QARhkZXNpZ25tCgEcSW5rU3BlYwABIHJlc2VydmVkKAEoUGVyc29uYWxJZAABMHdhc19yZWZlcnJlZMgBEGJvb2wAASx3YXNfaW52aXRlZMgBEGJvb2wAAgAAnQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAxAEoRjo6QmFsYW5jZQAAoQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0LENyZWRpYmlsaXR5DBxEZXBvc2l0AZ0KKFBlcnNvbmFsSWQBKCRBY2NvdW50SWQBBAEMIFJlZmVycmVkBAAoAShQZXJzb25hbElkAAAAHERlcG9zaXQEAJ0KARxEZXBvc2l0AAEAHEludml0ZWQEAAQBJEFjY291bnRJZAACAAClCgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoQWxsb2NhdGlvbgABDBxJbml0aWFsAAAAIEluaXREb25lAAEAEEZ1bGwAAgAAqQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0GFBlcnNvbgQ8Qm91bmRlZEFjY291bnRzAa0KACQBGGRlc2lnbrEKATxPcHRpb248SW5rU3BlYz4AAUBhY3RpdmVfcmVmZXJyYWxzrQoBPEJvdW5kZWRBY2NvdW50cwABYGFsbG93ZWRfcmVmZXJyYWxfdGlja2V0czgBHENvdW50ZXIAATRiYWRfcmVmZXJyYWxzOAEcQ291bnRlcgABUHN1Y2Nlc3NmdWxfcmVmZXJyYWxzOAEcQ291bnRlcgABJHJlZmVycmFsczgBHENvdW50ZXIAASxkZXJpdmF0aXZlczgBHENvdW50ZXIAARhiYW5uZWTIARBib29sAAFgcGVuZGluZ19yZWZlcnJhbF9yZXdhcmRzOAEcQ291bnRlcgAArQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAzAEYVmVjPFQ+AACxCgQYT3B0aW9uBARUAW0KAQgQTm9uZQAAABBTb21lBABtCgAAAQAAtQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5CgRTAAAEAL0KARhWZWM8VD4AALkKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDhSZWZlcnJhbFRpY2tldAQYVGlja2V0AQQABAEYdGlja2V0BAEYVGlja2V0AAC9CgAAArkKAMEKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhGYW1pbHkAAAgBEGtpbmRxBAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQAAMUKAAAECC0DLQMAyQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MERlc2lnblN0YXR1cwABCCBSZXNlcnZlZAAAACRDb21taXR0ZWQAAQAAzQoAAAQIBAQA0QoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0FEVycm9yBARUAAGgKEluUHJvZ3Jlc3MAAATMQWNjb3VudCBpcyBhbHJlYWR5IGFwcGx5aW5nIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuKE5vUmVmZXJyYWwAAQR4QWNjb3VudCBoYXMgbm90IGJlZW4gcmVmZXJyZWQuKEJhZENvbnRleHQAAgToVGhlIGNhbGxiYWNrIGNvbnRleHQgaXMgaW52YWxpZDsgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLkxVbmV4cGVjdGVkSnVkZ2VtZW50AAMEIQFUaGUgaW5jb21pbmcganVkZ2VtZW50IElEIGlzIG5vdCB3aGF0IHdlIHdlcmUgZXhwZWN0aW5nIGZvciB0aGUgYWNjb3VudC4YTm9BcmdzAAQEuE5vIGFyZ3VtZW50cyB3ZXJlIHN1cHBsaWVkIHdpdGggdGhlIGp1ZGdlbWVudC4oTm90QXBwbGllZAAFBMxUaGUgYWNjb3VudCBoYXMgbm90IGFwcGxpZWQgdG8gbWFrZSBhIHByb29mLW9mLWluay4sTm90U2VsZWN0ZWQABgSwVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGNvbW1pdHRlZCB0byBhIGRlc2lnbi4kTm90UHJvdmVuAAcErFRoZSBjYW5kaWRhdGUgZGlkIG5vdCBwcm92ZSB0aGVtc2VsdmVzIHlldC44QWxyZWFkeVN0YXJ0ZWQACATIVGhlIGNhbmRpZGF0ZSBoYXMgYWxyZWFkeSBzdGFydGVkIHRoZWlyIGp1ZGdlbWVudC4oT3V0T2ZSYW5nZQAJBIBUaGUgcGVyc29uYWwgSUQgaXMgbm90IGluIHJhbmdlLjBBbHJlYWR5VGFrZW4ACgScVGhlIHBlcnNvbmFsIElEIGhhcyBhbHJlYWR5IGJlZW4gdGFrZW4uPE5vTW9yZVJlZmVycmFscwALBLhUaGUgcGVyc29uIGhhcyBubyBtb3JlIHJlZmVycmFscyBsZWZ0IHRvIGdpdmUuIFRvb0Vhcmx5AAwEYFRoZSByZXJvbGwgaXMgdG9vIGVhcmx5LjREZXNpZ25JbnZhbGlkAA0EoFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBub3QgcHJvY2VkdXJhbC4sRGVzaWduVGFrZW4ADgScVGhlIHJlZmVycmVyJ3MgZGVzaWduIGlzIGFscmVhZHkgdGFrZW4uJEJhZFBhcmVudAAPBBUBVGhlIHJlZmVycmVyIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgcGVyc29uLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJEJhZEZhbWlseQAQBIBUaGUgZGVzaWduIGZhbWlseSBkb2Vzbid0IGV4aXN0LixXcm9uZ0ZhbWlseQARBLRUaGUgZGVzaWduIGZhbWlseSBpcyBpbnZhbGlkIGZvciB0aGlzIGNob2ljZS4sSW5kZXhUb29CaWcAEgRBAVRoZSBpbmRleCBvZiB0aGUgZGVzaWduIG9yIHZhcmlhbnQgaXMgYmV5b25kIHRoZSBhbGxvd2VkIG1heGltdW0gZm9yIHRoZSBmYW1pbHkuEEJ1c3kAEwT4VGhlIHN5c3RlbSBpcyBidXN5IHdpdGggdG9vIG1hbnkgY29tbWl0bWVudHM7IHRyeSBhZ2FpbiBsYXRlci4YQmFubmVkABQEqFRoZSBwZXJzb24gaGFzIGJlZW4gYmFubmVkIGZyb20gcmVmZXJyaW5nLihJbXByb2JhYmxlABUEJQFUaGUgY2FuZGlkYXRlIGhhcyBub3QgZGVtb25zdHJhdGVkIHByb2JhYmx5IHRocm91Z2ggdGhlIGluaXRpYWwgZXZpZGVuY2UuKElkUmVzZXJ2ZWQAFgTAVGhlIHBlcnNvbmFsIGlkZW50aXR5IGhhcyBhbHJlYWR5IGJlZW4gcmVzZXJ2ZWQuGElkVXNlZAAXBOhUaGUgcGVyc29uYWwgaWRlbnRpdHkgaXMgYWxyZWFkeSB0YWtlbiBieSBhIHByb3ZlbiBwZXJzb24uNEludmFsaWRUaWNrZXQAGAR8VGhlIHRpY2tldCBwcm92aWRlZCBpcyBpbnZhbGlkLiBOb1RpY2tldAAZBPBUaGUgY2FsbGVyIGhhcyBub3QgcHJvdmlkZWQgYSByZWZlcnJhbCBvciBpbnZpdGF0aW9uIHRpY2tldC40Tm90QXV0aG9yaXplZAAaBKRUaGUgYWNjb3VudCBpcyBub3QgYXV0aG9yaXplZCB0byBkbyB0aGlzLiROb3RQZXJzb24AGwSQVGhlIHBlcnNvbmFsIGlkZW50aXR5IGRvZXNuJ3QgZXhpc3QuRFJlZmVycmVkQ2FuZGlkYXRlABwEXQFUaGUgY2FuZGlkYXRlIGlzIHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIG5vdCBiZSByZWZlcnJlZC5QTm90UmVmZXJyZWRDYW5kaWRhdGUAHQRdAVRoZSBjYW5kaWRhdGUgaXMgbm90IHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIGJlIHJlZmVycmVkLkhOb1Jld2FyZFRvUmVnaXN0ZXIAHgSgVGhlcmUgaXMgbm8gcmVmZXJyYWwgcmV3YXJkIHRvIHJlZ2lzdGVyLkBSZXdhcmRUb1JlZ2lzdGVyAB8EBQFUaGVyZSBpcyBhIHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkIHRoYXQgbXVzdCBiZSByZWdpc3RlcmVkIGZpcnN0LiROb0ludml0ZXIAIARETm8gaW52aXRlciBmb3VuZC5ASW52YWxpZFNpZ25hdHVyZQAhBEhJbnZhbGlkIHNpZ25hdHVyZS4kTm9JbnZpdGVzACIEUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkACMEWEludml0ZSBpcyBhbHJlYWR5IHNldC4oTm9SZWZlcnJlcgAkBHRUaGUgcmVmZXJyZXIgaXMgbm90IGEgcGVyc29uLjBOb3RQb2lQZXJzb24AJQToVGhlIGluZGl2aWR1YWwgaXMgbm90IGEgcGVyc29uIHJlY29nbml6ZWQgYnkgcHJvb2Ygb2YgaW5rLlxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAAmBIhUaGUgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuaEludmFsaWRSZWltYnVyc2VtZW50VmFsdWVzACcElFRoZSByZWltYnVyc2VtZW50IHZhbHVlcyBhcmUgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1QoAAAQIIQcIANkKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczhBcmNoaXZlZFBsYXllcgQsQmxvY2tOdW1iZXIBOAEIIEtpY2thYmxlCAEoZmlyc3RfZ2FtZTgBDHUzMgABOGFyY2hpdmVkX3NpbmNlOAEsQmxvY2tOdW1iZXIAAAAoVW5raWNrYWJsZQQBKGZpcnN0X2dhbWU4AQx1MzIAAQAA3QoMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzGFBsYXllcgQsUGxheURlcG9zaXQB4QoAJAEoZmlyc3RfZ2FtZTgBDHUzMgABKHJlZ2lzdGVyZWTIARBib29sAAEsc2VudF9yZXBvcnTIARBib29sAAFoZWFybHlfYXR0ZW5kYW5jZV9lbmFjdG1lbnTlCgGAT3B0aW9uPEVhcmx5QXR0ZW5kYW5jZUVuYWN0bWVudD4AASh5ZXNfcGVyc29uDAEIdTgAATRub19ub3RfcGVyc29uDAEIdTgAAWBleHBlY3RlZF9tYXhfdm90ZV93ZWlnaHQtAwEMdTE2AAEsdm90ZV93ZWlnaHQMAQh1OAABLGNyZWRpYmlsaXR57QoBeFBsYXllckNyZWRpYmlsaXR5PFBsYXlEZXBvc2l0PgAA4QoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAxAEoRjo6QmFsYW5jZQAA5QoEGE9wdGlvbgQEVAHpCgEIEE5vbmUAAAAQU29tZQQA6QoAAAEAAOkKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc2BFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQAAAwBKGF0dGVuZGFuY2XIARBib29sAAFUZXh0ZXJuYWxseV9yZWNvZ25pemVkyAEQYm9vbAABKHplcm9fc2NvcmXIARBib29sAADtCgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyQ3JlZGliaWxpdHkELFBsYXlEZXBvc2l0AeEKAQwcSW52aXRlZAAAAChSZWNvZ25pemVkAAEAHERlcG9zaXQEAOEKASxQbGF5RGVwb3NpdAACAADxCgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMgR2FtZUluZm8EJEFjY291bnRJZAEEACQBFGluZGV4OAEMdTMyAAFEcmVnaXN0cmF0aW9uX2VuZHM4AQx1MzIAAUBzaHVmZmxlX2RlYWRsaW5lOAEMdTMyAAEkZ2FtZV9kYXRlOAEMdTMyAAEscmVwb3J0X2VuZHM4AQx1MzIAARRzdGF0ZfUKAVBHYW1lU3RhdGU8QWNjb3VudElkPgABOG1heF9ncm91cF9zaXplOAEMdTMyAAEYcm91bmRzDAEIdTgAAUhwZW5kaW5nX2F0dGVuZGFuY2U4AQx1MzIAAPUKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyRHYW1lU3RhdGUEJEFjY291bnRJZAEEARQwUmVnaXN0cmF0aW9uBAFEbmV4dF9wbGF5ZXJfaW5kZXg4AQx1MzIAAAAcU2h1ZmZsZQQBEHN0ZXD5CgFYU2h1ZmZsZVN0ZXA8QWNjb3VudElkPgABACRSZXBvcnRpbmcEATBwbGF5ZXJfY291bnQ4AQx1MzIAAgA0UGxheWVyUHJvY2VzcwQBEHN0ZXABCwFwUGxheWVyUHJvY2Vzc1N0ZXA8QWNjb3VudElkPgADAChDYW5jZWxsaW5nBAE4bGFzdF9pdGVyYXRpb279CgGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgAEAAD5CgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMsU2h1ZmZsZVN0ZXAEJEFjY291bnRJZAEEARAsU3RlcDFJbnNlcnQEAThsYXN0X2l0ZXJhdGlvbv0KAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAAANFN0ZXAyUmV0cmlldmUIAURuZXh0X3BsYXllcl9pbmRleDgBDHUzMgABTHJlY29nbml6ZWRfZmluaXNoZWTIARBib29sAAEATFN0ZXAzQ29tcHV0ZVdlaWdodHMIAThsYXN0X2l0ZXJhdGlvbv0KAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAIARFN0ZXA0QXdhaXRTZXNzaW9uBAEwcGxheWVyX2NvdW50OAEMdTMyAAMAAP0KBBhPcHRpb24EBFQBIQcBCBBOb25lAAAAEFNvbWUEACEHAAABAAABCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyUHJvY2Vzc1N0ZXAEJEFjY291bnRJZAEEAQhMU3RlcDFQcm9jZXNzUGxheWVycwgBOGxhc3RfaXRlcmF0aW9u/QoBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AATBwbGF5ZXJfY291bnQ4AQx1MzIAAABEU3RlcDJDbGVhckluZGljZXMAAQAABQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAZQQBGFZlYzxUPgAACQsAAAQIDDgADQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAZQQBGFZlYzxUPgAAEQsAAAQIDAgAFQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGhBARTAAAEAJ0EARhWZWM8VD4AABkLDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQURXJyb3IEBFQAAXAsR2FtZU9uZ29pbmcAAAQ0R2FtZSBvbmdvaW5nLjhOb1JlZ2lzdHJhdGlvbgABBHhObyByZWdpc3RyYXRpb24gcGhhc2Ugb25nb2luZy5ET3V0ZGF0ZWRHYW1lU2V0dXAAAgRYVGhlIHNldHVwIGlzIG91dGRhdGVkLkBJbnZhbGlkR2FtZVNldHVwAAMEOEludmFsaWQgc2V0dXAuNEludmFsaWRSZXBvcnQABAQ8SW52YWxpZCByZXBvcnQuGE5vR2FtZQAFBEBObyBnYW1lIG9uZ29pbmcuLE5vUmVwb3J0aW5nAAYEYE5vIHJlcG9ydCBwaGFzZSBvbmdvaW5nLjROb3RSZWdpc3RlcmVkAAcEPE5vdCByZWdpc3RlcmVkLkRBbHJlYWR5UmVnaXN0ZXJlZAAIBGhQbGF5ZXIgYWxyZWFkeSByZWdpc3RlcmVkLkRSZXBvcnRBbHJlYWR5U2VudAAJBFBSZXBvcnQgYWxyZWFkeSBzZW50LhRFYXJseQAKBGxPcGVyYXRpb24gaXMgbm90IHZhbGlkIHlldC5ETm90S2lja2FibGVQbGF5ZXIACwSYVGhlIG9wZXJhdGlvbiBleHBlY3QgYSBwbGF5ZXIgYWNjb3VudC5ATm9BcmNoaXZlZFBsYXllcgAMBGRObyBhcmNoaXZlZCBwbGF5ZXIgZm91bmQuIE5vVGlja2V0AA0EQE5vIHRpY2tldCBmb3VuZC4kTm9JbnZpdGVzAA4EUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkAA8EWEludml0ZSBpcyBhbHJlYWR5IHNldC5ATm90QWNjb3VudFBsYXllcgAQBPhOb3QgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIsIGV4cGVjdGVkIGFuIGFjY291bnQgYmFzZWQgcGxheWVyLmhVc2VJbnZpdGVCdXRBbHJlYWR5UGxheWluZwARBMhUaGUgcGxheWVyIGNhbid0IHVzZSBhbiBpbnZpdGUgaWYgYWxyZWFkeSBwbGF5aW5nLlBUb29NYW55R2FtZVNjaGVkdWxlcwASBEEBVGhlIG51bWJlciBvZiBleGlzdGluZyBzY2hlZHVsZXMgYW5kIG5ldyBzY2hlZHVsZXMgZXhjZWVkcyB0aGUgY29uZmlndXJlZCBsaW1pdC5MTm9TdWNoR2FtZVNjaGVkdWxlZAATBCkBVGhlIGdhbWUgdGhhdCB3YXMgc3VwcG9zZWQgdG8gYmUgcmVtb3ZlZCB3YXMgbm90IGZvdW5kIGluIHNjaGVkdWxlZCBnYW1lcy6ASW52YWxpZFN0YXRlbWVudEFjY291bnRTaWduYXR1cmUAFASsVGhlIHN0YXRlbWVudCBhY2NvdW50IHNpZ25hdHVyZSBpcyBpbnZhbGlkLnBTdGF0ZW1lbnRBY2NvdW50QWxyZWFkeUluVXNlABUE7FRoZSBzdGF0ZW1lbnQgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZWQgYnkgYW5vdGhlciBwbGF5ZXIuZEludGVybmFsRXJyb3JJbnZhbGlkU3RhdGUAFgR0SW50ZXJuYWwgZXJyb3IgaW52YWxpZCBzdGF0ZS5ASW52YWxpZEdhbWVTdGF0ZQAXBPBUaGUgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgaW4gdGhlIGN1cnJlbnQgZ2FtZSBzdGF0ZS4gTm9QbGF5ZXIAGARATm8gcGxheWVyIGZvdW5kLpBDYW5ub3RPZmZib2FyZFdoaWxlUmVnaXN0ZXJlZEZvckdhbWUAGQTcVGhlIHBsYXllciBjYW5ub3Qgb2ZmYm9hcmQgd2hpbGUgcmVnaXN0ZXJlZCBmb3IgYSBnYW1lLjBJbnZhbGlkU3RhdGUAGgQ0SW52YWxpZCBzdGF0ZUhJbnZhbGlkUGxheURlcG9zaXQAGwTkYHNldF9wbGF5X2RlcG9zaXRgOiB0aGUgc3VwcGxpZWQgYW1vdW50IG11c3QgYmUgbm9uLXplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lh0LDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UBxAAgARRzY29yZTgBDHUzMgABGHN0cmVhayELARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3RvcnklCwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXTEARxCYWxhbmNlAAEoY2FzaGVkX291dMgBEGJvb2wAAUhyZWFjaGVkX3BlcnNvbmhvb2TIARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29kyAEQYm9vbAABLHJlY29nbml0aW9uKQsBLFJlY29nbml0aW9uAAAhCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzGFN0cmVhawABCCBBdHRlbmRlZAQAOAEMdTMyAAAAGEFic2VudAQAOAEMdTMyAAEAACULDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNEQXR0ZW5kYW5jZUhpc3RvcnkAAAQADAEIdTgAACkLDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUmVjb2duaXRpb24AARBQRXh0ZXJuYWxseVJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAABACRTdXNwZW5kZWQEACgBKFBlcnNvbmFsSWQAAgAoUmVjb2duaXplZAQAKAEoUGVyc29uYWxJZAADAAAtCwAABAg4IQcAMQsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyxSb3VuZFBheW91dAQcQmFsYW5jZQHEABABRHJlbWFpbmluZ19iYWxhbmNlxAEcQmFsYW5jZQABLHBvaW50X3ByaWNlxAEcQmFsYW5jZQABJHJlbWFpbmRlcsQBHEJhbGFuY2UAATB0b3RhbF9wb2ludHM4AQx1MzIAADULDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMkUm91bmRJbmZvCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBxAAIASRmaW5pc2hfYXQ4ASxCbG9ja051bWJlcgABGGNyZWRpdMQBHEJhbGFuY2UAADkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQsEUwAABABBCwEYVmVjPFQ+AAA9CwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzOFBheW91dFNjaGVkdWxlCBxCYWxhbmNlAcQsQmxvY2tOdW1iZXIBOAAMASRyZW1haW5pbmc4AQx1MzIAAUBhbW91bnRfcGVyX3JvdW5kxAEcQmFsYW5jZQABIGR1cmF0aW9uOAEsQmxvY2tOdW1iZXIAAEELAAACPQsARQsMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXJyb3IEBFQAAWwkTm90UGVyc29uAAAEjFRoZSBjYWxsaW5nIG9yaWdpbiBpcyBub3QgYSBwZXJzb24uXEhhc05vdFJlYWNoZWRQZXJzb25ob29kAAEEjFRoZSBwZXJzb24gZGlkbid0IHJlYWNoIHBlcnNvbmhvb2QuIE5vUmV3YXJkAAIEUE5vIHJld2FyZCBhdmFpbGFibGUuHE5vU2NvcmUAAwSMVGhlIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBzY29yZS4oTm9TY2hlZHVsZQAEBHRObyBwYXlvdXQgc2NoZWR1bGUgYXZhaWxhYmxlLkBUb29NYW55U2NoZWR1bGVzAAUEtFRvbyBtYW55IHBheW91dCBzY2hlZHVsZXMgYWxyZWFkeSByZWdpc3RlcmVkLihSZWNvZ25pemVkAAYEBQFUaGUgcGFydGljaXBhbnQgaXMgcmVjb2duaXplZCBvciBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcGVyc29uLjxDYXNoT3V0Q29vbGRvd24ABwTMVGhlIHBhcnRpY2lwYW50IGhhcyBhbHJlYWR5IGNhc2hlZCBvdXQgaW4gdGhpcyBlcmEuYFJvdW5kT25Hb2luZ09yTm9TY2hlZHVsZQAIBJRUaGUgcm91bmQgaXMgb24gZ29pbmcgb3Igbm8gc2NoZWR1bGUuHE5vUm91bmQACQSEVGhlIHBheW91dCByb3VuZCBoYXMgbm90IHN0YXJ0ZWQubEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZAAKBNBUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQuwEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAALBD0BVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgcGVyc29uIG5vciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LpxCYWRPcmlnaW5Ob3RTaWduZWROb3RBY2NvdW50UGFydGljaXBhbnQADAQJAVRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LlBBbHJlYWR5UGFydGljaXBhdGluZwANBKRUaGUgcGFydGljaXBhbnQgaXMgYWxyZWFkeSBwYXJ0aWNpcGF0aW5nLkRLZXlNdXN0QmVQcm92aWRlZAAOBGRUaGUga2V5IG11c3QgYmUgcHJvdmlkZWQuUEtleU11c3ROb3RCZVByb3ZpZGVkAA8EdFRoZSBrZXkgbXVzdCBub3QgYmUgcHJvdmlkZWQuUEhhc1JlYWNoZWRQZXJzb25ob29kABAEjEhhcyByZWFjaGVkIHBlcnNvbmhvb2QgaW4gdGhlIHBhc3QuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwABEEiFRoZSBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC44V2luZG93VG9vTGFyZ2UAEgQ9AUFuIGFic2VuY2UgZ3JhY2UgdGllciBoYXMgYSB3aW5kb3cgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIHRyYWNrYWJsZSBoaXN0b3J5ICg4KS5UQWxsb3dlZE1pc3Nlc1Rvb0xhcmdlABMEIQFUaGUgYWxsb3dlZCBtaXNzZXMgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHdpbmRvdyAob3IgYm90aCB6ZXJvKS5gQWJzZW5jZVNjaGVkdWxlTm90U29ydGVkABQEMQFBYnNlbmNlLWdyYWNlIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuXFBlcnNvbmhvb2RTY2hlZHVsZUVtcHR5ABUEBQFUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB0aWVyLnBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRaZXJvABYE3EEgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBoYXMgYHNjb3JlX3RocmVzaG9sZCA9PSAwYC6AUGVyc29uaG9vZFNjb3JlVGhyZXNob2xkVG9vTGFyZ2UAFwT8QSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGV4Y2VlZHMgYE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAubFBlcnNvbmhvb2RTY2hlZHVsZU5vdFNvcnRlZAAYCNhQZXJzb25ob29kLXRocmVzaG9sZCB0aWVycyBtdXN0IGJlIHNvcnRlZCBieSBhc2NlbmRpbmdwYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLnhQZXJzb25ob29kU2NoZWR1bGVOb3RNb25vdG9uaWMAGQgRAVBlcnNvbmhvb2QtdGhyZXNob2xkIGBzY29yZV90aHJlc2hvbGRgIHZhbHVlcyBtdXN0IGJlIG5vbi1kZWNyZWFzaW5n9GFjcm9zcyB0aWVycyAoYSBsYXJnZXIgcG9wdWxhdGlvbiBtdXN0IG5vdCBoYXZlIGEgbG93ZXIgYmFyKS5oUGVyc29uaG9vZFNjaGVkdWxlTm90VG90YWwAGgj0VGhlIGxhc3QgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBtdXN0IGNvdmVyIGFsbCBwb3B1bGF0aW9uc6goYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuSQsMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0GFJlY29yZAQMS2V5AQgACAEMa2V5CAEMS2V5AAEkc3VzcGVuZGVkyAEQYm9vbAAATQsMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0FEVycm9yBARUAAEQJE5vdFBlcnNvbgAABNxUaGUgcGVyc29uYWwgSUQgZG9lcyBub3QgYmVsb25nIHRvIGEgcmVjb2duaXplZCBwZXJzb24uME5vdFN1c3BlbmRlZAABBNhUaGUgcGVyc29uYWwgSUQgZG9lcyBub3QgYmVsb25nIHRvIGEgc3VzcGVuZGVkIHBlcnNvbi4sTm90UmVzZXJ2ZWQAAgTkVGhlIHBlcnNvbmFsIElEIGlzIG5vdCByZXNlcnZlZCBhbmQgYXdhaXRpbmcgcmVjb2duaXRpb24uNFRvb01hbnlQZW9wbGUAAwTAVGhlIG9wZXJhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgbWFueSBwZW9wbGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlELDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXM4TGl0ZVBlcnNvbkluZm8IGE1lbWJlcgEIGE1ldGhvZAFVCwAIATByaW5nX3ZyZl9rZXkIARhNZW1iZXIAARhtZXRob2RVCwEYTWV0aG9kAABVCwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzRFJlY29nbml0aW9uTWV0aG9kBBxBY2NvdW50AQQBBDBVbmlxdWVEZXZpY2UEAAQBHEFjY291bnQAAAAAWQsMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAASxYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuXQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleT0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWXxBAFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWVBBAEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eWELASxDcmVkaWJpbGl0eQAAYQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkyAEQYm9vbAABAABlCwAABAhpCwgAaQsMNGluZGl2X3N1cHBvcnQUdXRpbHMwQmlnRW5kaWFuVTMyAAMEAAAADAQZAUEgdTMyIGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy5tCwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1xTdG10U3RvcmVBbGxvd2FuY2VFbnRyeQQEVAAADAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABDHNlcTgBDHUzMgABFHNpbmNlKAEMdTY0AABxCwAABAgEdQsAdQsAAAQMaQs4CAB5CwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc2RGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uBBxBY2NvdW50AQQACAEoYWNjb3VudF9pZAQBHEFjY291bnQAASRyZWZlcmVuY2X9BAFYRnJpZW5kUmVxdWVzdFJlZmVyZW5jZQAAfQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGBCwRTAAAEAIULARhWZWM8VD4AAIELDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzVFJlc2VydmF0aW9uUXVldWVFbnRyeQQcQWNjb3VudAEEAAgBHGFjY291bnQEARxBY2NvdW50AAEkam9pbmVkX2F0KAEMdTY0AACFCwAAAoELAIkLCEhzcF9zdGF0ZW1lbnRfc3RvcmVIU3RhdGVtZW50QWxsb3dhbmNlAAAIASRtYXhfY291bnQ4AQx1MzIAASBtYXhfc2l6ZTgBDHUzMgAAjQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0FEVycm9yBARUAAFgPEludmFsaWRVc2VybmFtZQAABJxVc2VybmFtZSBkb2VzIG5vdCBmaXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgABBGhVc2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLkRBbHJlYWR5UmVnaXN0ZXJlZAACBHxDb25zdW1lciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwAAMEnFByb3ZpZGVkIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjROb3RSZWdpc3RlcmVkAAQEnFBlcnNvbiBpcyBub3QgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjROb3RGdWxsUGVyc29uAAUEeENvbnN1bWVyIGlzIG5vdCBhIGZ1bGwgcGVyc29uLjRUb3VjaE5vdFJlYWR5AAYEzEF0dGVtcHRlZCB0byB1cGRhdGUgcGVyc29uIGF1dGhvcml6YXRpb24gdG9vIGVhcmx5LjROb1Jlc2VydmF0aW9uAAcEaFJlc2VydmF0aW9uIGlzIG5vdCBhY3RpdmUuUE5vdFJlc2VydmF0aW9uSG9sZGVyAAgEFQFUaGUgbGlua2VkIGxpdGUgaWRlbnRpdHkgaXMgbm90IHRoZSBhY3RpdmUgaG9sZGVyIG9mIHRoZSByZXNlcnZhdGlvbi5gVXNlcm5hbWVSZXNlcnZhdGlvblRha2VuAAkE5FRoZSB1c2VybmFtZSBpbiB0aGUgcmVzZXJ2YXRpb24gcmVxdWVzdCBpcyBhbHJlYWR5IHRha2VuLkBSZXNlcnZhdGlvbkZyZXNoAAoEgFRoZSByZXNlcnZhdGlvbiBoYXMgbm90IGV4cGlyZWQuQE5vTGlua2VkSWRlbnRpdHkACwScVGhlcmUgaXMgbm8gbGl0ZSBjb25zdW1lciB0byBiZSBsaW5rZWQuNEFscmVhZHlMaW5rZWQADAT4VGhlIGxpdGUgY29uc3VtZXIgaXMgYWxyZWFkeSBsaW5rZWQgdG8gYSBmdWxsIHBlcnNvbiBjb25zdW1lci5QUGVyc29uQXV0aE5vdEV4cGlyZWQADQS8VGhlIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaGFzIG5vdCBleHBpcmVkIHlldC44QWxyZWFkeURlbW90ZWQADgSQVGhlIHBlcnNvbiBoYXMgYWxyZWFkeSBiZWVuIGRlbW90ZWQuJFF1ZXVlRnVsbAAPBIBRdWV1ZSBmb3IgdGhpcyB1c2VybmFtZSBpcyBmdWxsLihOb3RJblF1ZXVlABAEuEFjY291bnQgaXMgbm90IGluIHRoZSBxdWV1ZSBmb3IgdGhpcyB1c2VybmFtZS5UQWxyZWFkeUhhc1Jlc2VydmF0aW9uABEE3EFjY291bnQgYWxyZWFkeSBoYXMgYSByZXNlcnZhdGlvbiBmb3IgYW5vdGhlciB1c2VybmFtZS5wSW52YWxpZEZyaWVuZFJlcXVlc3RTZXF1ZW5jZQASBNBGcmllbmQgcmVxdWVzdCBzZXF1ZW5jZSBpcyBpbnZhbGlkIGZvciB0aGUgY29uc3VtZXIuaEludmFsaWRGcmllbmRSZXF1ZXN0UGVyaW9kABMEwEZyaWVuZCByZXF1ZXN0IHBlcmlvZCBpcyBub3QgdGhlIGN1cnJlbnQgcGVyaW9kLoxGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uTm90RXhwaXJlZAAUBLxGcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gaXMgbm90IGV4cGlyZWQgeWV0LphGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uQWxyZWFkeUV4aXN0cwAVBAUBRnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgYWxpYXMvY29udGV4dC5wU3RtdFN0b3JlUmVwbGFjZW1lbnRUb29FYXJseQAWBBkBVGhlIHJlcGxhY2VtZW50IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBzaW5jZSB0aGUgZW50cnkgd2FzIGxhc3Qgc2V0LoxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRFeGNlZWRlZAAXBOxUaGUgcHJvdmlkZWQgYGxpbWl0YCBleGNlZWRzIGBMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6RCwAABAgFBTgAlQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCwRTAAAEAJ0LARhWZWM8VD4AAJkLDCh2ZXJpZmlhYmxlEHJpbmcsU3RhdGljQ2h1bmsAA2AAAAAMAJ0LAAACmQsAoQsMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXJyb3IEBFQAAQw0Q2h1bmtOb3RGb3VuZAAABKBUaGUgcmVxdWVzdGVkIGNodW5rIGluZGV4IGRvZXNuJ3QgZXhpc3QuNEludmFsaWRDaHVua3MAAQSwVGhlIHByb3ZpZGVkIGNodW5rIGRhdGEgY291bGRuJ3QgYmUgZGVjb2RlZC5ESW52YWxpZENodW5rUmFuZ2UAAgTcVGhlIHN0YXJ0IGluZGV4IGlzbid0IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGluZGV4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6lCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM4Q29sbGVjdGlvbkluZm8IHEFjY291bnQBBCBMb2NhdGlvbgHgABABFG93bmVyqQsBiENvbGxlY3Rpb25Pd25lcjxBY2NvdW50LCBMb2NhdGlvbj4AARBtb2RlrQsBIFJpbmdNb2RlAAEkcmluZ19zaXplBQUBMFJpbmdFeHBvbmVudAABUHNlbGZfaW5jbHVzaW9uX2RlbGF5FQMBLE9wdGlvbjx1NjQ+AACpCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM8Q29sbGVjdGlvbk93bmVyCBxBY2NvdW50AQQgTG9jYXRpb24B4AEIIEV4dGVybmFsBADgASBMb2NhdGlvbgAAABRMb2NhbAQABAEcQWNjb3VudAABAACtCxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBSaW5nTW9kZQABCChBcHBlbmRPbmx5AAAAIEZsZXhpYmxlAAEAALELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AALULAAAECAg4ALkLDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcyBSaW5nUm9vdAQEVAAADAEQcm9vdL0LATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBpbnRlcm1lZGlhdGXBCwFESW50ZXJtZWRpYXRlT2Y8VD4AAL0LDCh2ZXJpZmlhYmxlEHJpbmdETWVtYmVyc0NvbW1pdG1lbnQAAwADAAAMAMELDCh2ZXJpZmlhYmxlEHJpbmcoTWVtYmVyc1NldAADUAMAAAwAxQsAAAQMCDhpCwDJCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXMcT2xkUm9vdAQEVAAACAEQcm9vdL0LATBNZW1iZXJzT2Y8VD4AASxhcmNoaXZlZF9hdCgBDHU2NAAAzQsAAAQMCDg4ANELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AANULEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5KFJpbmdTdGF0dXMAAAwBFHRvdGFsOAEMdTMyAAEgaW5jbHVkZWQ4AQx1MzIAATxpbW11dGFibGVfc2luY2UVAwEsT3B0aW9uPHU2ND4AANkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGUEARhWZWM8VD4AAN0LAAAECAgIAOELEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdQb3NpdGlvbgABDChPbmJvYXJkaW5nCAEocXVldWVfcGFnZTgBJFBhZ2VJbmRleAABJHF1ZXVlZF9hdCgBDHU2NAAAACBJbmNsdWRlZAwBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRyaW5nX3BhZ2U4ASRQYWdlSW5kZXgAATRyaW5nX3Bvc2l0aW9uOAEMdTMyAAEAJFN1c3BlbmRlZAACAADlCxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eUBSaW5nTWVtYmVyc1N0YXRlAAAEARBtb2Rl6QsBQFJpbmdNdXRhdGlvbk1vZGUAAOkLEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNdXRhdGlvbk1vZGUAAQgoQXBwZW5kT25seQAAACBNdXRhdGluZwQADAEIdTgAAQAA7QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAVQQBGFZlYzxUPgAA8QsMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFcnJvcgQEVAABcCROb3RNZW1iZXIAAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgbWVtYmVyLhhOb1Jvb3QAAQREUmluZyBoYXMgbm8gcm9vdC4wSW52YWxpZFByb29mAAIEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLihJbmNvbXBsZXRlAAMEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLjhUb29NYW55TWVtYmVycwAEBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQAFBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBtZW1iZXIuLEtleU5vdEZvdW5kAAYEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAAcEkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLixJbnZhbGlkUmluZwAIBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwAJBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQACgTUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zAAsEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ATm9SZW1vdmFsU2Vzc2lvbgAMBC0BQSBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyByZW1vdmFsIHNlc3Npb24gaW4gcHJvZ3Jlc3MubENvdWxkTm90U3RhcnRSZW1vdmFsU2Vzc2lvbgANBJxBIHJlbW92YWwgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5gUmVtb3ZhbFNlc3Npb25JblByb2dyZXNzAA4E6ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHJlbW92YWwgc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy5MS2V5QWxyZWFkeVN1c3BlbmRlZAAPCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIG1lbWJlciB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAQBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAEQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLkhDb2xsZWN0aW9uTm90Rm91bmQAEgR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuXENvbGxlY3Rpb25BbHJlYWR5RXhpc3RzABMEeFRoZSBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLkhUb29NYW55Q29sbGVjdGlvbnMAFASQVG9vIG1hbnkgY29sbGVjdGlvbnMgZm9yIHRoaXMgb3duZXIuaEludmFsaWRSaW5nU2l6ZUZvckZsZXhpYmxlABUEEQFGbGV4aWJsZSBjb2xsZWN0aW9ucyBtdXN0IHVzZSB0aGUgTWF4RmxleGlibGVSaW5nRXhwb25lbnQgcmluZyBzaXplLkxJbnZhbGlkUmluZ0V4cG9uZW50ABYEjFRoZSByaW5nIGV4cG9uZW50IGlzIG5vdCBzdXBwb3J0ZWQuTFByZW1hdHVyZU9uYm9hcmRpbmcAFwS0SW5zdWZmaWNpZW50IG1lbWJlcnMgaW4gdGhlIHF1ZXVlIHRvIG9uYm9hcmQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgAYBPRUaGUgY29sbGVjdGlvbiBpcyBtYXJrZWQgZm9yIGRlbGV0aW9uIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQuSE5vdENvbGxlY3Rpb25Pd25lcgAZBLhUaGUgY2FsbGVyIGlzIG5vdCB0aGUgb3duZXIgb2YgdGhlIGNvbGxlY3Rpb24uNE5vdE9uYm9hcmRpbmcAGgSoVGhlIG1lbWJlciBpcyBub3QgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUuOE5vdGhpbmdUb0J1aWxkABsEfFRoZXJlIGlzIG5vIHJpbmcgcm9vdCB0byBidWlsZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu9QsMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChMb2NrZWRDb2luAAAIARhyZWFzb275CwEoTG9ja1JlYXNvbgABFHVudGlsKAEMdTY0AAD5CwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KExvY2tSZWFzb24AAQQ4RmFpbGVkRGlzcGF0Y2gEARxyZXRyaWVzDAEIdTgAAAAA/QsAAAQMdQM4CAABDAAABAh1AzgABQwMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFcnJvcgQEVAABhFBNZW1iZXJLZXlBbHJlYWR5VXNlZAAAAEBJbnZhbGlkTWVtYmVyS2V5AAEANEludGVybmFsRXJyb3IAAgBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQAAwBQSW52YWxpZENvbnNvbGlkYXRpb24ABABMQ29uc29saWRhdGlvblRvb0JpZwAFADxDb2luVmFsdWVUb29CaWcABgBEQ29pblZhbHVlVG9vU21hbGwABwBYQ29pblZhbHVlSXNMZXNzVGhhbkZlZQAIAExDb2luVmFsdWVPdXRPZkJvdW5kAAkAYExvc3N5Q29pblZhbHVlQ29udmVyc2lvbgAKCCEBVGhlIGNvaW4gdmFsdWUgY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudCBiZWNhdXNl9GBVbmRlcmx5aW5nQXNzZXRVbml0YCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSBgMl58dmFsdWV8YC5ESW52YWxpZEFsaWFzUHJvb2YACwBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAMAFRQcm9vZkFuZEFsaWFzTWlzbWF0Y2gADQA4Tm90aGluZ1RvQnVpbGQADgAwVG9vTWFueVJpbmdzAA8AVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgAQAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAARACxFbXB0eUlucHV0cwASAEBSZWN5Y2xlck1pc21hdGNoABMECQFUaGUgZmVlIHJlY3ljbGVyIGluIHRoZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGwncyByZWN5Y2xlci5gSW5zdWZmaWNpZW50VW5sb2FkRm9yRmVlABQEvFRoZSB0b3RhbCB1bmxvYWRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIHRoZSBmZWUuREFsaWFzTm90UHJlbWFya2VkABUEOQFUaGUgZmlyc3QgYWxpYXMgd2FzIG5vdCBwcmUtbWFya2VkIGJ5IGV4dGVuc2lvbiAocmVxdWlyZWQgZm9yIEZyb21PdXRwdXQgZmVlKS5cSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AFgRJAVRoZSByZWN5Y2xlciByZXZpc2lvbiBkb2VzIG5vdCBtYXRjaCAocmVjeWNsZXIgbWF5IG5vdCBleGlzdCBvciBoYXMgYmVlbiByZWJ1aWx0KS4wSW52YWxpZFNwbGl0ABcAREZyZXNoQ29pblJlcXVpcmVkABgEyFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgZnJlc2ggY29pbiAoYGFnZSA9PSAwYCkuaENhbm5vdENvbnZlcnROYXRpdmVUb0Fzc2V0ABkAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkABoEvFdoZW4gdXNpbmcgUHJlcGFpZCBmZWUgbW9kZSwgbWF4X2ZlZSBtdXN0IGJlIDAuSE1heEZlZUV4Y2VlZHNJbnB1dAAbBKhUaGUgbWF4X2ZlZSBleGNlZWRzIHRoZSB0b3RhbCBpbnB1dCB2YWx1ZS40SW52YWxpZE1heEZlZQAcBNhUaGUgbWF4IGZlZSBhcmd1bWVudCBkb2Vzbid0IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy54Q2Fubm90Q3JlYXRlUmVjeWNsZXJDb2xsZWN0aW9uAB0EKQFUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgY291bGQgbm90IGJlIGNyZWF0ZWQgb24tZGVtYW5kLjRBc3NldElkTm90U2V0AB4EtFRoZSB1bmRlcmx5aW5nIGFzc2V0IGlkIGhhcyBub3QgYmVlbiBzZXQgeWV0LkRBc3NldElkQWxyZWFkeVNldAAfBA0BVGhlIHVuZGVybHlpbmcgYXNzZXQgaWQgaGFzIGFscmVhZHkgYmVlbiBzZXQgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLjBVbmtub3duQXNzZXQAIAQlAVRoZSBwcm9wb3NlZCB1bmRlcmx5aW5nIGFzc2V0IGlkIGRvZXMgbm90IGV4aXN0IGluIFtgQ29uZmlnOjpGdW5naWJsZXNgXS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuCQwAAAQICQMJAwANDAQYT3B0aW9uBARUAdULAQgQTm9uZQAAABBTb21lBADVCwAAAQAAEQwEGE9wdGlvbgQEVAFxAwEIEE5vbmUAAAAQU29tZQQAcQMAAAEAABUMBBhPcHRpb24EBFQBdQMBCBBOb25lAAAAEFNvbWUEAHUDAAABAAAZDAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXM4U3Vic2NyaWJlckluZm8EBFQAAAwBLGNvbGxlY3Rpb25zWQUBGQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI+AAFIbGFzdF9pbml0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAATBwYWxsZXRfaW5kZXgMAQh1OAAAHQwMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzLFBhZ2luZ1N0YXRlBCxCbG9ja051bWJlcgE4AAwBKHdyaXRlX3BhZ2UtAwEMdTE2AAEkc2VuZF9wYWdlLQMBDHUxNgABRGxhc3RfdXBkYXRlX2Jsb2NrOAEsQmxvY2tOdW1iZXIAACEMAAAEDC0DCDgAJQwMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzQFBlbmRpbmdJbml0U3RhdGUEBFQAABgBLGNvbGxlY3Rpb25zWQUBGQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI+AAFgY3VycmVudF9jb2xsZWN0aW9uX2luZGV4OAEMdTMyAAFAYWZ0ZXJfcmluZ19pbmRleAkDAURPcHRpb248UmluZ0luZGV4PgABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAASxzb3VyY2VfdGltZSgBDHU2NAABMHBhbGxldF9pbmRleAwBCHU4AAApDAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNYQmF0Y2hEaXN0cmlidXRpb25TdGF0ZQQsQmxvY2tOdW1iZXIBOAAQASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAASRzZWFsZWRfYXQ4ASxCbG9ja051bWJlcgABVHJlbWFpbmluZ19zdWJzY3JpYmVyczgBDHUzMgAALQwAAAQInAgAMQwMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBRFcnJvcgQEVAABNEhTdWJzY3JpYmVyTm90Rm91bmQAAARUU3Vic2NyaWJlciBub3QgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAEEaFN1YnNjcmliZXIgYWxyZWFkeSBleGlzdHMuSFRvb01hbnlTdWJzY3JpYmVycwACBHBNYXhpbXVtIHN1YnNjcmliZXJzIHJlYWNoZWQuWEludmFsaWRDb2xsZWN0aW9uc0xpc3QAAwQ9AUNvbGxlY3Rpb25zIGxpc3QgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyIHdpdGggbm8gZHVwbGljYXRlcy44VG9vTWFueVVwZGF0ZXMABATQVG9vIG1hbnkgcmluZyByb290IHVwZGF0ZXMgdG8gZml0IGluIGEgc2luZ2xlIGJhdGNoLjRYY21TZW5kRmFpbGVkAAUEQFhDTSBzZW5kIGZhaWxlZC5kTm90U3Vic2NyaWJlZFRvQ29sbGVjdGlvbgAGBORTdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbi5ASW52YWxpZFJpbmdJbmRleAAHBIBSaW5nIHJvb3QgaW5kZXggaXMgb3V0IG9mIHJhbmdlLlhFeGNlZWRzQ2hhbm5lbENhcGFjaXR5AAgEAQFSZXF1ZXN0ZWQgdXBkYXRlcyBleGNlZWQgdGhlIHN1YnNjcmliZXIncyBIUk1QIGNoYW5uZWwgY2FwYWNpdHkuNE5vQmF0Y2hBY3RpdmUACQRcTm8gYWN0aXZlIGJhdGNoIGV4aXN0cy40Tm9QZW5kaW5nSW5pdAAKBLhObyBwZW5kaW5nIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIHN1YnNjcmliZXIuUFJlcGxheUNvb2xkb3duQWN0aXZlAAsEDQFSZXBsYXkgY29vbGRvd24gaGFzIG5vdCBlbGFwc2VkIGZvciB0aGlzIHN1YnNjcmliZXIgYW5kIGNvbGxlY3Rpb24uQEVtcHR5UmluZ0luZGljZXMADATkUmVwbGF5IHJlcXVlc3RlZCB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgcmluZyByb290IGluZGljZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjUMDIxpbmRpdl9wYWxsZXRfc3RvcmFnZV9pbml0aWFsaXphdGlvbhhwYWxsZXQsT25Qb2xsU3RhdGUAASAgSW5hY3RpdmUAAAA0Q3JlYXRpbmdBc3NldAABAEBYY21GdW5kc1RyYW5zZmVyAAIAOFZlcmlmeWluZ0Z1bmRzAAMALEZ1bmRpbmdQb3RzAAQAYFNjaGVkdWxpbmdNb2JSdWxlUGF5b3V0cwAFAFhTY2hlZHVsaW5nU2NvcmVQYXlvdXRzAAYAEERvbmUABwAAOQwMoGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uX2xpdGUYcGFsbGV0LE9uUG9sbFN0YXRlAAEIIEluYWN0aXZlAAAAJENvbXBsZXRlZAABAAA9DAxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEVycm9yBARUAAEEHE9uZ29pbmcAAAToVGhlIG9wZXJhdGlvbiBjYW5ub3QgY29tcGxldGUgc2luY2Ugc29tZSBNQk1zIGFyZSBvbmdvaW5nLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BDAhEcGFsbGV0X21pZ3JhdGlvbnMwTWJtSXNPbmdvaW5nAAEMDFllcwAAAAhObwABABRTdHVjawACAABFDAQYT3B0aW9uBARUAUkMAQgQTm9uZQAAABBTb21lBABJDAAAAQAASQwIRHBhbGxldF9taWdyYXRpb25zLE1ibVByb2dyZXNzAAAQAURjdXJyZW50X21pZ3JhdGlvbjgBDHUzMgABQHRvdGFsX21pZ3JhdGlvbnM4AQx1MzIAAVxjdXJyZW50X21pZ3JhdGlvbl9zdGVwczgBDHUzMgABbGN1cnJlbnRfbWlncmF0aW9uX21heF9zdGVwcwkDASxPcHRpb248dTMyPgAATQwIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ0EMATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc0UMAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAFEMCEhzcF9jb25zZW5zdXNfc2xvdHMwU2xvdER1cmF0aW9uAAAEACgBDHU2NAAAVQwQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jayRMYXp5QmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGlBwAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzWQwBUFZlYzxPcGFxdWVFeHRyaW5zaWM+AABZDAAAAl0MAF0MCChzcF9ydW50aW1lPE9wYXF1ZUV4dHJpbnNpYwAABAAYARxWZWM8dTg+AABhDAgoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAABlDAgcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAAYARxWZWM8dTg+AABpDAQYT3B0aW9uBARUAWUMAQgQTm9uZQAAABBTb21lBABlDAAAAQAAbQwMNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnM4Vmlld0Z1bmN0aW9uSWQAAAgBGHByZWZpeMEBASBbdTg7IDE2XQABGHN1ZmZpeMEBASBbdTg7IDE2XQAAcQwEGFJlc3VsdAgEVAEYBEUBdQwBCAhPawQAGAAAAAAMRXJyBAB1DAAAAQAAdQwMNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnNkVmlld0Z1bmN0aW9uRGlzcGF0Y2hFcnJvcgABDDhOb3RJbXBsZW1lbnRlZAAAACBOb3RGb3VuZAQAbQwBOFZpZXdGdW5jdGlvbklkAAEAFENvZGVjAAIAAHkMBBhSZXN1bHQIBFQB9QYERQF9DAEICE9rBAD1BgAAAAAMRXJyBAB9DAAAAQAAfQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAIEMAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQAhQwBSFVua25vd25UcmFuc2FjdGlvbgABAACBDAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAACFDAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAACJDAgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YY0MAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AACNDAQgQlRyZWVNYXAIBEsBvQEEVgEYAAQAkQwAAACRDAAAApUMAJUMAAAECL0BGACZDAgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5yAEQYm9vbAABLGZhdGFsX2Vycm9yyAEQYm9vbAABGGVycm9yc4kMATBJbmhlcmVudERhdGEAAJ0MDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAoQwEGFJlc3VsdAgEVAGlDARFAX0MAQgIT2sEAKUMAAAAAAxFcnIEAH0MAAABAAClDAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZcgBEGJvb2wAAKkMDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAArQwEGE9wdGlvbgQEVAGxDAEIEE5vbmUAAAAQU29tZQQAsQwAAAEAALEMAAACtQwAtQwAAAQIGPkIALkMDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlc0xSdW50aW1lRGlzcGF0Y2hJbmZvCBxCYWxhbmNlAcQYV2VpZ2h0AdUBAAwBGHdlaWdodNUBARhXZWlnaHQAARRjbGFzc1kGATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWXEARxCYWxhbmNlAAC9DAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQHEAAgBNGluY2x1c2lvbl9mZWXBDAF0T3B0aW9uPEluY2x1c2lvbkZlZTxCYWxhbmNlPj4AAQx0aXDEARxCYWxhbmNlAADBDAQYT3B0aW9uBARUAcUMAQgQTm9uZQAAABBTb21lBADFDAAAAQAAxQwMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQHEAAwBIGJhc2VfZmVlxAEcQmFsYW5jZQABHGxlbl9mZWXEARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZcQBHEJhbGFuY2UAAMkMBBhSZXN1bHQIBFQBzQwERQHRDAEICE9rBADNDAAAAAAMRXJyBADRDAAAAQAAzQwAAAIRAwDRDAxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAANUMBBhSZXN1bHQIBFQB1QEERQHRDAEICE9rBADVAQAAAAAMRXJyBADRDAAAAQAA2QwEGFJlc3VsdAgEVAHEBEUB0QwBCAhPawQAxAAAAAAMRXJyBADRDAAAAQAA3QwEGFJlc3VsdAgEVAHZAgRFAdEMAQgIT2sEANkCAAAAAAxFcnIEANEMAAABAADhDAQYUmVzdWx0CARUAeUMBEUBCQ0BCAhPawQA5QwAAAAADEVycgQACQ0AAAEAAOUMDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AU0GABABQGV4ZWN1dGlvbl9yZXN1bHTpDAFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c/UMAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNt+QwBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21z/QwBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AADpDAQYUmVzdWx0CARUAe0MBEUB8QwBCAhPawQA7QwAAAAADEVycgQA8QwAAAEAAO0MDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHSlAgE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZV0GARBQYXlzAADxDAgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAe0MAAgBJHBvc3RfaW5mb+0MARBJbmZvAAEUZXJyb3JhBgE0RGlzcGF0Y2hFcnJvcgAA9QwAAAJNBgD5DAQYT3B0aW9uBARUAZUBAQgQTm9uZQAAABBTb21lBACVAQAAAQAA/QwAAAIBDQABDQAABAhJAQUNAAUNAAAClQEACQ0MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bhRFcnJvcgABCDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAADQ0EGFJlc3VsdAgEVAERDQRFAQkNAQgIT2sEABENAAAAAAxFcnIEAAkNAAABAAARDQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuQFhjbURyeVJ1bkVmZmVjdHMEFEV2ZW50AU0GAAwBQGV4ZWN1dGlvbl9yZXN1bHTZBgEcT3V0Y29tZQABOGVtaXR0ZWRfZXZlbnRz9QwBKFZlYzxFdmVudD4AAThmb3J3YXJkZWRfeGNtc/0MAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAFQ0EGFJlc3VsdAgEVAEEBEUBGQ0BCAhPawQABAAAAAAMRXJyBAAZDQAAAQAAGQ0MQHhjbV9ydW50aW1lX2FwaXMsY29udmVyc2lvbnMURXJyb3IAAQgsVW5zdXBwb3J0ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAAdDQhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzNAFIVmVjPFVwd2FyZE1lc3NhZ2U+AAFMaG9yaXpvbnRhbF9tZXNzYWdlcyUIAWBWZWM8T3V0Ym91bmRIcm1wTWVzc2FnZT4AAUxuZXdfdmFsaWRhdGlvbl9jb2RlIQ0BjE9wdGlvbjxyZWxheV9jaGFpbjo6VmFsaWRhdGlvbkNvZGU+AAFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzOAEMdTMyAAE4aHJtcF93YXRlcm1hcms4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAASRoZWFkX2RhdGFMASBIZWFkRGF0YQAAIQ0EGE9wdGlvbgQEVAElDQEIEE5vbmUAAAAQU29tZQQAJQ0AAAEAACUNDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzOFZhbGlkYXRpb25Db2RlAAAEABgBHFZlYzx1OD4AACkNBBhSZXN1bHQIBFQBEARFAWkHAQgIT2sEABAAAAAADEVycgQAaQcAAAEAAC0NBBhPcHRpb24EBFQBaQcBCBBOb25lAAAAEFNvbWUEAGkHAAABAAAxDQAAAmkHADUNCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgABeBhTeXN0ZW0EAJkHAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQANQgBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEAIEJhbGFuY2VzBABtCAF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAERPcmlnaW5SZXN0cmljdGlvbgQAgQgBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AA0AGEFzc2V0cwQArQgBdHBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWU+AA4AMEFzc2V0c0hvbGRlcgQAvQgBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lPgAPACRBc3NldFJhdGUEAMEIAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AEABEQ29sbGF0b3JTZWxlY3Rpb24EANkIAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBAD9CAF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAOQkBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAChCQFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBADBCQGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACIAHFV0aWxpdHkEAMUJAXhwYWxsZXRfdXRpbGl0eTo6RXJyb3I8UnVudGltZT4AKAAgTXVsdGlzaWcEANUJAXxwYWxsZXRfbXVsdGlzaWc6OkVycm9yPFJ1bnRpbWU+ACkAEFN1ZG8EANkJAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4AKgAUUHJveHkEAP0JAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACwAIElkZW50aXR5BABNCgGUaW5kaXZfcGFsbGV0X2lkZW50aXR5OjpFcnJvcjxSdW50aW1lPgAyABhQZW9wbGUEAFUKAYxpbmRpdl9wYWxsZXRfcGVvcGxlOjpFcnJvcjxSdW50aW1lPgAzABxNb2JSdWxlBACVCgGUaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpFcnJvcjxSdW50aW1lPgA0AChQcm9vZk9mSW5rBADRCgGkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6RXJyb3I8UnVudGltZT4ANQAQR2FtZQQAGQsBhGluZGl2X3BhbGxldF9nYW1lOjpFcnJvcjxSdW50aW1lPgA3ABRTY29yZQQARQsBiGluZGl2X3BhbGxldF9zY29yZTo6RXJyb3I8UnVudGltZT4AOAAgRHVtbXlEaW0EAE0LAZhpbmRpdl9wYWxsZXRfZHVtbXlfZGltOjpFcnJvcjxSdW50aW1lPgA7AChQZW9wbGVMaXRlBABZCwGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFcnJvcjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAI0LAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFcnJvcjxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBAChCwGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFcnJvcjxSdW50aW1lPgBAABxNZW1iZXJzBADxCwGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkVycm9yPFJ1bnRpbWU+AEMAHENvaW5hZ2UEAAUMAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXJyb3I8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBAAxDAG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkVycm9yPFJ1bnRpbWU+AEUAUE11bHRpQmxvY2tNaWdyYXRpb25zBAA9DAGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AGIAAKwYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBDUGQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAyAQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBAEEGGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEARQYEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjxZBwQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAGEHBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQDIBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQDIBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAUQcEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAG0HBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEA1QEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAFRBgAYMEJsb2NrV2VpZ2h0c3EHiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwFYN70UBAgDAAQELAJj3Pl0BAgDgAQEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAiFJqdAIAoAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGh9BzQAADwAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHSFB0BAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9uiQfJBERuZXh0LXBlb3BsZS1wYXNlb0RuZXh0LXBlb3BsZS1wYXNlbwEAAABQQg8AAAAAAFTdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAADM2d5jlsiZygEAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAADQuse+SmsJIAEAAACSh/sOAhvIVAEAAACEO2+M7ICYxwEAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAAACAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml4LQMIKgAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAGZBwAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ50HBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NroQcIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YTkGCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAC5BwQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAC9BwQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQDBBwQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AADpBwQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAMgEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj8AZExhc3RSZWxheUNoYWluQmxvY2tOdW1iZXIBADgQAAAAAAwdASBUaGUgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suAIggVGhpcyBpcyB1cGRhdGVkIGluIGBvbl9maW5hbGl6ZWAuAGBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBAO0HBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADhVcGdyYWRlR29BaGVhZAEA4QcEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA8UmVsYXlTdGF0ZVByb29mAABQBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBYUmVsZXZhbnRNZXNzYWdpbmdTdGF0ZQAA9QcEABxlASBUaGUgc25hcHNob3Qgb2Ygc29tZSBzdGF0ZSByZWxhdGVkIHRvIG1lc3NhZ2luZyByZWxldmFudCB0byB0aGUgY3VycmVudCBwYXJhY2hhaW4gYXMgcGVySCB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAERIb3N0Q29uZmlndXJhdGlvbgAACQgEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AOExhc3REbXFNcWNIZWFkAQARCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBATGFzdEhybXBNcWNIZWFkcwEAFQgEABBJASBUaGUgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkcyB3ZSBoYXZlIG9ic2VydmVkIHBlciBlYWNoIGNoYW5uZWwgaW5jb21pbmcgY2hhbm5lbC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBADgQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suAHBMYXN0UHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlAAAhCAQADJQgVGhlIGxhc3QgcHJvY2Vzc2VkIGRvd253YXJkIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuADRIcm1wV2F0ZXJtYXJrAQA4EAAAAAAEoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4AYExhc3RQcm9jZXNzZWRIcm1wTWVzc2FnZQAAIQgEAAyEIFRoZSBsYXN0IHByb2Nlc3NlZCBIUk1QIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuAFBIcm1wT3V0Ym91bmRNZXNzYWdlcwEAJQgEAAykIEhSTVAgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suADhVcHdhcmRNZXNzYWdlcwEANAQADKwgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAPAgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIGZvciBlYWNoIG5ldyBibG9jay4AVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEANAQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgBQUGVuZGluZ1Vwd2FyZFNpZ25hbHMBADQEAAwtASBVcHdhcmQgc2lnbmFscyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgDYIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9maW5hbGl6ZWAgZm9yIGVhY2ggYmxvY2suAExQZW5kaW5nQXBwcm92ZWRQZWVyAAB4BAAEOQEgVGhlIGFwcHJvdmVkIHBlZXIgaWQgdG8gYmUgc2VudCBhcyBhIFVNUCBzaWduYWwgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIFBvVi4AXFVwd2FyZERlbGl2ZXJ5RmVlRmFjdG9yAQAtAUAAAGSns7bgDQAAAAAAAAAABOQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkgZm9yIFVNUC4AhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAOBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuAGhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAA1QEEAAhdASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgWENNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAADVAQQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBgQ3VzdG9tVmFsaWRhdGlvbkhlYWREYXRhAAAYBAAMKQEgQSBjdXN0b20gaGVhZCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGFzIHJlc3VsdCBvZiBgdmFsaWRhdGVfYmxvY2tgLgARASBTZWUgYFBhbGxldDo6c2V0X2N1c3RvbV92YWxpZGF0aW9uX2hlYWRfZGF0YWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEhQb1ZNZXNzYWdlc1RyYWNrZXIAAC0IBAAMVQEgVHJhY2tzIGN1bXVsYXRpdmUgYFVNUGAgYW5kIGBIUk1QYCBtZXNzYWdlcyBzZW50IGFjcm9zcyBibG9ja3MgaW4gdGhlIGN1cnJlbnQgYFBvVmAuAHUBIEFjcm9zcyBkaWZmZXJlbnQgY2FuZGlkYXRlcy9Qb1ZzIHRoZSBidWRnZXRzIGFyZSB0cmFja2VkIGJ5IFtgQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50YF0uAAFAAAF5BgAEKFNlbGZQYXJhSWScEN4FAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4AATUIAAAAAQAAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBACggAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4AJERpZFVwZGF0ZQEAyAQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAECIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAMRAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAMRAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIEOQYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQ5CAQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgRJCAQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBFUIBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIEYQgEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABvAABgQYAEEhFeGlzdGVudGlhbERlcG9zaXTEQADKmjsAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAAAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAW0IABBEUnVudGltZUhvbGRSZWFzb26JBgR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZcQEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllcr0BDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyEARkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQAtAUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAHEIBAAAADxUeFBheW1lbnRDcmVkaXQAAHUIBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABrQYABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAAEhTa2lwRmVlbGVzc1BheW1lbnQAAAGxBgAAAAAADAAARE9yaWdpblJlc3RyaWN0aW9uAURPcmlnaW5SZXN0cmljdGlvbgQYVXNhZ2VzAAEEAth9CAQABIwgVGhlIGN1cnJlbnQgdXNhZ2UgZm9yIGVhY2ggZW50aXR5LgAB1AABtQYAAAGBCAAEQFJlc3RyaWN0ZWRFbnRpdHnYJFEBIFRoZSB0eXBlIHRoYXQgcmVwcmVzZW50IHRoZSBlbnRpdGllcyB0cmFja2VkLCBpdHMgYWxsb3dhbmNlIGFuZCB0aGUgY29udmVyc2lvbiBmcm9tmCBvcmlnaW4gaXMgYm91bmRlZCBpbiBbYFJlc3RyaWN0aW9uYF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4ADQAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBALghQgEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKNCJEIBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICnQihCAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQC4KUIUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBALgHQEEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAA4AQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAHcAAG5BgAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdMRAAMqaOwAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXTEQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlxEAAqFvpAwAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlxEAA4fUFAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXTEQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABrQgAFBxCYWxhbmNlxAScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWTgBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVy4BxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhIQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZOCxCASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWTgtQgEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlk4LkIBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlk4CUBBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgAOAAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgKNCFUIBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAICjQjEBAAEaQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgYmFsYW5jZSBvbiBob2xkIGZvciBldmVyeSBhY2NvdW50IG9uIGEgZ2l2ZW4gQXNzZXRJZC4AAAG9BgAAAb0IAAREUnVudGltZUhvbGRSZWFzb26JBgR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgAPAAAkQXNzZXRSYXRlASRBc3NldFJhdGUEWENvbnZlcnNpb25SYXRlVG9OYXRpdmUAAQQC4C0BBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAEpAQABwQYAAAHBCAAEJEFzc2V0S2luZOAERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AEAAAOEFzc2V0VHhQYXltZW50AAABxQYAAAAAABEAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDFCAQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAMkIBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAMRAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAExAQAByQYAGBRQb3RJZNUIIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAwKgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAHZCAAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAMwEAAR8IFRoZSBjdXJyZW50IHNldCBvZiB2YWxpZGF0b3JzLgAwQ3VycmVudEluZGV4AQA4EAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLgA0UXVldWVkQ2hhbmdlZAEAyAQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDdCAQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQDlCAQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBDkBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQF9QgEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAE1AQABzQYABChLZXlEZXBvc2l0xEAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgAB/QgACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXM5AQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAAEJBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAAkJIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZD0BBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAAEJBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAAANCQQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQARCQQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBABkJBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFLQkxCQQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnDEJBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQA1CTAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQDIBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFnC0BQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAUEBAAHRBgAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AATkJAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAig9CQQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGPDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAlEJOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAlEJKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQJRCVUJBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAFkJBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAGUJBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQICaQltCQQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEfQkEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAyAQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAyAQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AAF0CBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCSQGJCQQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAFFAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAdUGABBEVW5pdmVyc2FsTG9jYXRpb27kGAIJAgB5FwSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAGhCQQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AARkDAAHlBgAAAAAAIAAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQFIQOpCXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAAIQMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQW1CbkJBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAR0DAAHpBgAQIEhlYXBTaXplOBAAnAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodKUCLAEHAFhA+6ICAOAAGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0pQIsAQcAWED7ogIA4AAUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAcEJAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAiAAAcVXRpbGl0eQABJQMAAfEGAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAHFCQAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW4xAwTwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuACgAACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUCyQnNCQQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAAGJAwAB+QYADCxEZXBvc2l0QmFzZcRAADyRYAQAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3LEQAAgvL4AAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAHVCQAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAGVAwAB/QYAAAHZCQAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuACoAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJlNQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AKwAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUE3QlEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUE7QlEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AAZkDAAEFBwAYQFByb3h5RGVwb3NpdEJhc2XEQAAMd0IDAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcsRAAAGyxAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlxEAAFCZyAwAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3LEQAACZIkBAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAf0JAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBloQMQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZaEDyAT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2uhAxxhZ2FpbnN0oQPIBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACwAACBJZGVudGl0eQEgSWRlbnRpdHkwKElkZW50aXR5T2YAAQQFBAEKBAAQaQEgSW5mb3JtYXRpb24gdGhhdCBpcyBwZXJ0aW5lbnQgdG8gaWRlbnRpZnkgdGhlIGVudGl0eSBiZWhpbmQgYW4gYWNjb3VudC4gRmlyc3QgaXRlbSBpcyB0aGXgIHJlZ2lzdHJhdGlvbiwgc2Vjb25kIGlzIHRoZSBhY2NvdW50J3MgcHJpbWFyeSB1c2VybmFtZS4AwCBUV09YLU5PVEU6IE9LIOKAlSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVXNlcm5hbWVPZgABBAUEQQQEAAS8IElkZW50aWZpZXMgdGhlIHByaW1hcnkgdXNlcm5hbWUgb2YgYW4gYWNjb3VudC4AHFN1cGVyT2YAAQQCBCkEBAAIYQEgVGhlIHN1cGVyLWlkZW50aXR5IG9mIGFuIGFsdGVybmF0aXZlICJzdWIiIGlkZW50aXR5IHRvZ2V0aGVyIHdpdGggaXRzIG5hbWUsIHdpdGhpbiB0aGF0UQEgY29udGV4dC4gSWYgdGhlIGFjY291bnQgaXMgbm90IHNvbWUgb3RoZXIgYWNjb3VudCdzIHN1Yi1pZGVudGl0eSwgdGhlbiBqdXN0IGBOb25lYC4AGFN1YnNPZgEBBAUEEQpEAAAAAAAAAAAAAAAAAAAAAAAUuCBBbHRlcm5hdGl2ZSAic3ViIiBpZGVudGl0aWVzIG9mIHRoaXMgYWNjb3VudC4AHQEgVGhlIGZpcnN0IGl0ZW0gaXMgdGhlIGRlcG9zaXQsIHRoZSBzZWNvbmQgaXMgYSB2ZWN0b3Igb2YgdGhlIGFjY291bnRzLgDAIFRXT1gtTk9URTogT0sg4oCVIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChSZWdpc3RyYXJzAQAVCgQAEE0BIFRoZSBzZXQgb2YgcmVnaXN0cmFycy4gTm90IGV4cGVjdGVkIHRvIGdldCB2ZXJ5IGJpZyBhcyBjYW4gb25seSBiZSBhZGRlZCB0aHJvdWdoIGGoIHNwZWNpYWwgb3JpZ2luIChsaWtlbHkgYSBjb3VuY2lsIG1vdGlvbikuACkBIFRoZSBpbmRleCBpbnRvIHRoaXMgY2FuIGJlIGNhc3QgdG8gYFJlZ2lzdHJhckluZGV4YCB0byBnZXQgYSB2YWxpZCB2YWx1ZS4ALEF1dGhvcml0eU9mAAEEBSUKKQoEAAT0IEEgbWFwIG9mIHRoZSBhY2NvdW50cyB3aG8gYXJlIGF1dGhvcml6ZWQgdG8gZ3JhbnQgdXNlcm5hbWVzLgA4VXNlcm5hbWVJbmZvT2YAAQQCQQQtCgQAGHUBIFJldmVyc2UgbG9va3VwIGZyb20gYHVzZXJuYW1lYCB0byB0aGUgYEFjY291bnRJZGAgdGhhdCBoYXMgcmVnaXN0ZXJlZCBpdCBhbmQgdGhlIHByb3ZpZGVyIG9mbQEgdGhlIHVzZXJuYW1lLiBUaGUgYG93bmVyYCB2YWx1ZSBzaG91bGQgYmUgYSBrZXkgaW4gdGhlIGBVc2VybmFtZU9mYCBtYXAsIGJ1dCBpdCBtYXkgbm90IGlm8CB0aGUgdXNlciBoYXMgY2xlYXJlZCB0aGVpciB1c2VybmFtZSBvciBpdCBoYXMgYmVlbiByZW1vdmVkLgBpASBNdWx0aXBsZSB1c2VybmFtZXMgbWF5IG1hcCB0byB0aGUgc2FtZSBgQWNjb3VudElkYCwgYnV0IGBVc2VybmFtZU9mYCB3aWxsIG9ubHkgbWFwIHRvIG9uZUggcHJpbWFyeSB1c2VybmFtZS4AQFBlbmRpbmdVc2VybmFtZXMAAQQCQQQ1CgQAIG0BIFVzZXJuYW1lcyB0aGF0IGFuIGF1dGhvcml0eSBoYXMgZ3JhbnRlZCwgYnV0IHRoYXQgdGhlIGFjY291bnQgY29udHJvbGxlciBoYXMgbm90IGNvbmZpcm1lZEwgdGhhdCB0aGV5IHdhbnQgaXQuACUBIFVzZWQgcHJpbWFyaWx5IGluIGNhc2VzIHdoZXJlIHRoZSBgQWNjb3VudElkYCBjYW5ub3QgcHJvdmlkZSBhIHNpZ25hdHVyZV0BIGJlY2F1c2UgdGhleSBhcmUgYSBwdXJlIHByb3h5LCBtdWx0aXNpZywgZXRjLiBJbiBvcmRlciB0byBjb25maXJtIGl0LCB0aGV5IHNob3VsZCBjYWxssCBbYWNjZXB0X3VzZXJuYW1lXShgQ2FsbDo6YWNjZXB0X3VzZXJuYW1lYCkuAB0BIEZpcnN0IHR1cGxlIGl0ZW0gaXMgdGhlIGFjY291bnQgYW5kIHNlY29uZCBpcyB0aGUgYWNjZXB0YW5jZSBkZWFkbGluZS4ASFVuYmluZGluZ1VzZXJuYW1lcwABBAJBBDgEABBdASBVc2VybmFtZXMgZm9yIHdoaWNoIHRoZSBhdXRob3JpdHkgdGhhdCBncmFudGVkIHRoZW0gaGFzIHN0YXJ0ZWQgdGhlIHJlbW92YWwgcHJvY2VzcyBieXEBIHVuYmluZGluZyB0aGVtLiBFYWNoIHVuYmluZGluZyB1c2VybmFtZSBtYXBzIHRvIGl0cyBncmFjZSBwZXJpb2QgZXhwaXJ5LCB3aGljaCBpcyB0aGUgZmlyc3TcIGJsb2NrIGluIHdoaWNoIHRoZSB1c2VybmFtZSBjb3VsZCBiZSBkZWxldGVkIHRocm91Z2ggYcQgW3JlbW92ZV91c2VybmFtZV0oYENhbGw6OnJlbW92ZV91c2VybmFtZWApIGNhbGwuAEBQZXJzb25JZGVudGl0aWVzAAEEAgg5CgQACGUBIFRoZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24gdGhyb3VnaCB0aGVpciBjb250ZXh0dWFsIGFsaWFzIGZvciB0aGUgcHVycG9zZXMgb2aIIHJlZ2lzdGVyaW5nIGlkZW50aXR5IGluZm9ybWF0aW9uLgA4QWNjb3VudFRvQWxpYXMAAQQCBAgEAAhlASBSZXZlcnNlIGxvb2t1cCBvZiBhY2NvdW50cyBjb250cm9sbGVkIGJ5IGEgcGVyc29uIHRocm91Z2ggYSBjb250ZXh0dWFsIGFsaWFzLiBBbGwgcGVvcGxlLQEgdGhhdCByZWdpc3RlcmVkIGFuIGlkZW50aXR5IG11c3QgYWxzbyBhc3NvY2lhdGUgYW4gb24tY2hhaW4gYWNjb3VudCB0byBpdC4AWFBlbmRpbmdVc2VybmFtZVJlcG9ydHMAAQQCCEkKBAAElCBTdG9yZXMgcGVuZGluZyByZXBvcnRzIG9mIHVzZXJuYW1lcy4AAaUDAAENBwBAMEJhc2ljRGVwb3NpdMRAANVfuQIAAAAAAAAAAAAAAATYIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuACxCeXRlRGVwb3NpdMRAAOH1BQAAAAAAAAAAAAAAAAQdASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgZW5jb2RlZCBieXRlIGZvciBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuADxVc2VybmFtZURlcG9zaXTEQAAgvL4AAAAAAAAAAAAAAAAIVQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIHJlZ2lzdGVyZWQgdXNlcm5hbWUuIFRoaXMgdmFsdWUgc2hvdWxkIGNoYW5nZSBvbmx5IGlu9CBydW50aW1lIHVwZ3JhZGVzIHdpdGggcHJvcGVyIG1pZ3JhdGlvbiBvZiBleGlzdGluZyBkZXBvc2l0cy4ARFN1YkFjY291bnREZXBvc2l0xEAAefOPAwAAAAAAAAAAAAAADGUBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBhIHJlZ2lzdGVyZWQgc3ViYWNjb3VudC4gVGhpcyBzaG91bGQgYWNjb3VudCBmb3IgdGhlIGZhY3RlASB0aGF0IG9uZSBzdG9yYWdlIGl0ZW0ncyB2YWx1ZSB3aWxsIGluY3JlYXNlIGJ5IHRoZSBzaXplIG9mIGFuIGFjY291bnQgSUQsIGFuZCB0aGVyZSB3aWxsNQEgYmUgYW5vdGhlciB0cmllIGl0ZW0gd2hvc2UgdmFsdWUgaXMgdGhlIHNpemUgb2YgYW4gYWNjb3VudCBJRCBwbHVzIDMyIGJ5dGVzLgBUVXNlcm5hbWVSZXBvcnREZXBvc2l0xEAAKGvuAAAAAAAAAAAAAAAABMggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIHJlcG9ydGVkIHVzZXJuYW1lLgA4TWF4U3ViQWNjb3VudHM4EGQAAAAEDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Yi1hY2NvdW50cyBhbGxvd2VkIHBlciBpZGVudGlmaWVkIGFjY291bnQuAFRVc2VybmFtZVJlcG9ydFRpbWVvdXQ4EIDGEwAMSQEgVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBoYXZlIHRvIHBhc3MgYmV0d2VlbiB0aGUgbGFzdCB0aW1lIGEgZ2l2ZW4gdXNlcm5hbWUgd2FzXQEgcmVwb3J0ZWQgYW5kIG5vdyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlcG9ydCBpdCBhZ2Fpbi4gSW4gb3RoZXIgd29yZHMsIGl0IHJlcHJlc2VudHOUIHRoZSB1c2VybmFtZSB2YWxpZGl0eSBzYWZldHkgcGVyaW9kLgA0TWF4UmVnaXN0cmFyczgQFAAAAAhNASBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RyYXJzIGFsbG93ZWQgaW4gdGhlIHN5c3RlbS4gTmVlZGVkIHRvIGJvdW5kIHRoZSBjb21wbGV4aXR5fCBvZiwgZS5nLiwgdXBkYXRpbmcganVkZ2VtZW50cy4ANE1heEp1ZGdlbWVudHM4EAMAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YganVkZ2VtZW50cyBwZXIgcGVyc29uYWwgaWRlbnRpdHkgYWxsb3dlZCBpbiB0aGUgc3lzdGVtLgBkUGVuZGluZ1VzZXJuYW1lRXhwaXJhdGlvbjgQQJ0EAAQVASBUaGUgbnVtYmVyIG9mIGJsb2NrcyB3aXRoaW4gd2hpY2ggYSB1c2VybmFtZSBncmFudCBtdXN0IGJlIGFjY2VwdGVkLgBMVXNlcm5hbWVHcmFjZVBlcmlvZDgQQPoBAAhZASBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IG11c3QgcGFzcyB0byBlbmFibGUgdGhlIHBlcm1hbmVudCBkZWxldGlvbiBvZiBhIHVzZXJuYW1lIGJ5aCBpdHMgcmVzcGVjdGl2ZSBhdXRob3JpdHkuADxNYXhTdWZmaXhMZW5ndGg4EAcAAAAEgCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBzdWZmaXguAERNYXhVc2VybmFtZUxlbmd0aDgQIAAAAARhASBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSB1c2VybmFtZSwgaW5jbHVkaW5nIGl0cyBzdWZmaXggYW5kIGFueSBzeXN0ZW0tYWRkZWQgZGVsaW1pdGVycy4ARE1pblVzZXJuYW1lTGVuZ3RoOBACAAAABLAgVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgdXNlcm5hbWUgb3Igc3VmZml4LgBgQ3JlZGVudGlhbFJlbW92YWxQZW5hbHR5xEAA8gUqAQAAAAAAAAAAAAAACFUBIFRoZSBmZWUgdGhhdCBhIHBlcnNvbiBtdXN0IHBheSB0aHJvdWdoIHRoZWlyIGFzc29jaWF0ZWQgb24tY2hhaW4gYWNjb3VudCBpbiBvcmRlciB0b1wgcmVtb3ZlIHRoZWlyIGlkZW50aXR5LgBAaWRlbnRpdHlfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvaWRlbnRpdHkgICAIQQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiggaWRlbnRpdHkuAAFNCgAERE9mZmNoYWluU2lnbmF0dXJlNQQM4CBTaWduYXR1cmUgdHlwZSBmb3IgcHJlLWF1dGhvcml6aW5nIHVzZXJuYW1lcyBvZmYtY2hhaW4uABEBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6U2lnbmluZ1B1YmxpY0tleWAgY3JlYXRlZCBhIHNpZ25hdHVyZS4AMgAAGFBlb3BsZQEYUGVvcGxlJBBLZXlzAAEEAggoBAAUSQEgVGhlIGN1cnJlbnQgaW5kaXZpZHVhbHMgd2UgcmVjb2duaXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHlldCBpbmNsdWRlZCBpbiBhIHJpbmcuAHUBIExvb2stdXAgZnJvbSB0aGUgY3J5cHRvIChwdWJsaWMpIGtleSB0byB0aGUgaW1tdXRhYmxlIElEIG9mIHRoZSBpbmRpdmlkdWFsIChgUGVyc29uYWxJZGApLiBBXQEgcGVyc29uIGNhbiBoYXZlIHR3byBkaWZmZXJlbnQgZW50cmllcyBpbiB0aGlzIG1hcCBpZiB0aGV5IHF1ZXVlZCBhIGtleSBtaWdyYXRpb24gd2hpY2hkIGhhc24ndCBiZWVuIGVuYWN0ZWQgeWV0LgA4Q291bnRlckZvcktleXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAYUGVvcGxlAAEEAihRCgQADEkBIFRoZSBjdXJyZW50IGluZGl2aWR1YWxzIHdlIHJlY29nbmlzZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB5ZXQgaW5jbHVkZWQgaW4gYSByaW5nLgBlASBJbW11dGFibGUgSUQgb2YgdGhlIGluZGl2aWR1YWwgKGBQZXJzb25hbElkYCkgdG8gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIga2V5IGFuZCBzdGF0dXMuADhBbGlhc1RvQWNjb3VudAABBAJJAwQEAATMIENvbnZlcnNpb24gb2YgYSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIERQMEAATMIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGNvbnRleHR1YWwgYWxpYXMuAExBY2NvdW50VG9QZXJzb25hbElkAAEEAgQoBAAQvCBBc3NvY2lhdGlvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgcGVyc29uYWwgSUQuACEBIE1hbmFnZWQgd2l0aCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGFuZCBgdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudGAu+CBSZXZlcnNlIGxvb2t1cCBpcyBpbnNpZGUgYFBlb3BsZWAgc3RvcmFnZSwgaW5zaWRlIHRoZSByZWNvcmQuADhOZXh0UGVyc29uYWxJZAEAKCAAAAAAAAAAAAS4IFRoZSBuZXh0IGZyZWUgYW5kIG5ldmVyIHJlc2VydmVkIHBlcnNvbmFsIElELgBcUGVvcGxlQ29sbGVjdGlvbkNyZWF0ZWQBAMgEAATAIFdoZXRoZXIgdGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAEhSZXNlcnZlZFBlcnNvbmFsSWQAAQQFKBAEAATAIENhbmRpZGF0ZXMnIHJlc2VydmVkIGlkZW50aXRpZXMgd2hpY2ggd2UgdHJhY2suAAFRBAABEQcAEDBSaW5nRXhwb25lbnQFBQQJBE0BIFRoZSByaW5nIGV4cG9uZW50IHVzZWQgdG8gb3BlcmF0ZSB0aGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGluIGBNZW1iZXJTZXJ2aWNlYC4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBAeAAAACEkBIE1heGltdW0gbnVtYmVyIG9mIHBlb3BsZSBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AZFN0YWxlQWxpYXNDbGVhbnVwSW50ZXJ2YWw4EJYAAAAEMQEgSW50ZXJ2YWwgKGluIGJsb2NrcykgYXQgd2hpY2ggdGhlIG9mZmNoYWluIHdvcmtlciBydW5zIHN0YWxlIGFsaWFzIGNsZWFudXAuAHBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlOBBYAgAAFD0BIFRoZSBhbW91bnQgb2YgYmxvY2sgbnVtYmVyIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYSBzZXR1cCBhY2NvdW50IHRyYW5zYWN0aW9uLgAFASBgc2V0X2FsaWFzX2FjY291bnRgIGFuZCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGNhbGxzIGNvbnRhaW5zUQEgYGNhbGxfdmFsaWRfYXRgIGFzIGEgcGFyYW1ldGVyLCB0aG9zZSBjYWxscyBhcmUgdmFsaWQgaWYgdGhlIGJsb2NrIG51bWJlciBpcyB3aXRoaW5YIHRoZSB0b2xlcmFuY2UgcGVyaW9kLgABVQoAAAAzAAAcTW9iUnVsZQEcTW9iUnVsZTAcQ3JlZGl0cwEBBAIIWQpwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMIFRoZSB2b3RpbmcgcmVjb3JkcyBvZiBhbGwgYWxpYXNlcy4APFZvdGluZ1BlbmFsdGllcwABBAIIOAQACHEBIFRoZSB2b3RlIHBlbmFsdGllcyBvZiB1c2VycyBhbmQgdGhlaXIgc3RhcnRpbmcgbW9tZW50LiBWb3RlcnMgd2l0aCBwZW5hbHRpZXMgY2Fubm90IHZvdGUgaW7MIGNvbnRlbXB0IHVudGlsIHRoZSBwZW5hbHR5IGV4cGlyZXMgYW5kIGlzIHJlbW92ZWQuADBWb3RpbmdQb2ludHMBAQgGAl0KOBAAAAAACGUBIFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgb2YgYWxsIGFsaWFzZXMsIGR1cmluZyBlYWNoIGZ1bmRpbmcgcm91bmQuIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQhASBkdXJpbmcgcm91bmQgYE5gIGNhbiBiZSByZWRlZW1lZCBmb3IgcmV3YXJkcyBvbmx5IGR1cmluZyByb3VuZCBgTiArIDFgLgAUVm90ZXMAAQgCAl0KSQQEAAS4IEFsbCB2b3RlcyBjYXN0LCBzZWdyZWdhdGVkIGJ5IGNhc2UgYW5kIHZvdGVyLgAkQ2FzZUNvdW50AQA4EAAAAAAEEQEgVGhlIG51bWJlciBvZiBjYXNlcywgb3BlbiBvciByZWNlbnRseSBjbG9zZWQsIHN0b3JlZCBpbiB0aGUgcGFsbGV0LgAkT3BlbkNhc2VzAAEEAjhhCgQABCkBIFRoZSBvcGVuIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGNhbiBzdGlsbCBiZSB2b3RlZCBvbi4AJFJpcGVDYXNlcwABBAI4eQoEAAx1ASBUaGUgcmlwZSBjYXNlcyByZWNvcmRlZCBpbiB0aGUgcGFsbGV0LiBUaGUgdm90aW5nIGhhcyBjb25jbHVkZWQgb24gdGhlc2UgY2FzZXMgYW5kIGEgdmVyZGljdGUBIGhhcyBiZWVuIHJlYWNoZWQsIGJ1dCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIHlldCBpbiBvcmRlciB0byBhbGxvdyBwZW9wbGUgdG8gY2xhaW0gdGhlaXIcIHZvdGVzLgAkRG9uZUNhc2VzAAEEAjh9CgQACGEBIFRoZSBkb25lIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGFyZSBvYnNvbGV0ZSBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSQgc3RvcmFnZS4AREFjY3VtdWxhdGVkUG9pbnRzAQAoIAAAAAAAAAAACHUBIFRoZSBudW1iZXIgb2YgcG9pbnRzIGFjY3VtdWxhdGVkIHRocm91Z2ggY29ycmVjdCB2b3RlcyBkdXJpbmcgdGhlIGN1cnJlbnQgcGF5b3V0IHJvdW5kLiBUaGlzdQEgYW1vdW50IGlzIGdvaW5nIHRvIGRldGVybWluZSB0aGUgcG9pbnQvcmV3YXJkIGV4Y2hhbmdlIHJhdGUgb2YgdGhlIG5leHQgcmV3YXJkIHBheW91dCByb3VuZC4ASFBheW91dERpc3RyaWJ1dGlvbgAAgQoEAATYIERlc2NyaWJlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuADhSb3VuZFNjaGVkdWxlcwEAhQoEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAsQWN0aXZlU2luY2UAACgEAAhtASBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBvZiB0aGUgbW9tZW50IGVub3VnaCBhY3RpdmUgdm90ZXJzIHdlcmUgZGV0ZWN0ZWQgYW5kIHZvdGluZyB3YXMxASBlbmFibGVkLiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlcmUgYXJlIHRvbyBmZXcgYWN0aXZlIHZvdGVycy4AAWEEAAEVBwA4UEN1cnJlbmN5TG9jYXRpb25JbmZv4DABAwBxFwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE1heFZvdGVDbGFpbUR1cmF0aW9uKCCAUQEAAAAAAAQFASBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIGEgY2FzZSB0aW1lcyBvdXQgYW5kIGNhbiBiZSByZWFwZWQuADxNaW5DYXNlRHVyYXRpb244EFgCAAAEQQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGEgY2FzZSBtdXN0IHN0YXkgb3BlbiBmb3Igdm90aW5nIGJlZm9yZSBpdCBjYW4gYmUgY2xvc2VkLgBETWF4Vm90aW5nRHVyYXRpb244ELAEAAAELQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgZm9yIHdoaWNoIGEgY2FzZSBjb3VsZCBzdGF5IG9wZW4gZm9yIHZvdGluZy4ARE1pblR1cm5vdXROb21pbmFsOBABAAAABEUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhIGNhc2UgbXVzdCByZWNlaXZlIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFBNaW5UdXJub3V0UGVyY2VudGFnZZEKBAoIZQEgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHZvdGVzIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgdm90ZXIgY291bnQgYSBjYXNlIG11c3QgcmVjZWl2ZYQgYmVmb3JlIGEgdmVyZGljdCBjYW4gYmUgcmVhY2hlZC4AVFZvdGluZ1BlbmFsdHlEdXJhdGlvbjgQwKgAAATQIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgYSBwZW5hbHR5IGlzIGFwcGxpZWQgZm9yLgBETWF4Vm90ZXNDbGFpbWFibGU4EAoAAAAE9CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgY2xhaW1hYmxlIGluIGEgc2luZ2xlIGV4dHJpbnNpYy4AUE9mZmNoYWluV29ya0ludGVydmFsOBCWAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgBMQ2xlYW5Wb3Rlc0JhdGNoU2l6ZTgQ6AMAAAQlASBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZCBkdXJpbmcgb2ZmY2hhaW4gd29ya2VyIHJ1bi4AaFZvdGVzT3BlbkZvckNsYWltc0R1cmF0aW9uOBBYAgAACBUBIFRoZSB0aW1lIGluIHNlY29uZHMgZHVyaW5nIHdoaWNoIHZvdGVzIGNhbiBiZSBjbGFpbWVkIG9uIGRvbmUgY2FzZXMuwCBNZWFzdXJlZCBmcm9tIHRoZSB0aW1lIHRoZSBjYXNlIGJlY29tZXMgJ0RvbmUnLgBUTWluaW11bVZvdGVyVGhyZXNob2xkOBADAAAACGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhY3RpdmUgdm90ZXJzIHJlcXVpcmVkIHRvIGFsbG93IHZvdGluZy4gV2hlbiB0aGlzIHRocmVzaG9sZCBpcyBub3SEIG1ldCwgb3BlbiBjYXNlcyBjYW5ub3QgdGltZSBvdXQuADxtb2JfcnVsZV9wb3RfaWQEgG1vZGxNb2JSd3JkcwAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgBAbW9iX3J1bGVfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvbW9iLXJ1bGUgICAIUQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBtb2IYIHJ1bGUuAAGVCgAAADQAAChQcm9vZk9mSW5rAShQcm9vZk9mSW5rLChDYW5kaWRhdGVzAAEEAgSZCgQABEkBIFRoZSBjdXJyZW50IHBlcnNvbmFsIGlkZW50aXRpZXMgd2hpY2ggYXJlIGdvaW5nIHRocm91Z2ggdGhlIHByb29mLW9mLWluayBwcm9jZXNzLgAYUGVvcGxlAAEEBSipCgQACHEBIFRoZSBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIHdlIHRyYWNrOyBhbGwgd2hpY2ggaGF2ZSBiZWVuIHJlY29nbml6ZWQgdGhyb3VnaCBwcm9vZi1vZi1pbms0IGFyZSBpbiBoZXJlLgA8UmVmZXJyYWxUaWNrZXRzAAEEBSi1CgQABAkBIFRoZSB0aWNrZXRzIHN0b3JlZCBvbi1jaGFpbiByZWFkeSB0byBiZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADhEZXNpZ25GYW1pbGllcwABBAItA8EKBAAEqCBUaGUgY3VycmVudCBkZXNpZ24gZmFtaWxpZXMgd2UgcmVjb2duaXNlLgBAQ29tbWl0dGVkRGVzaWducwABCAICxQrJCgQABNQgVGhlIGNvbW1pdHRlZCBkZXNpZ25zIHdoaWNoIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLgA8QWxsb2NhdGlvbkNvdW50AQA4EAAAAAAEsCBUaGUgbnVtYmVyIG9mIGp1ZGdlbWVudHMgY3VycmVudGx5IG9uZ29pbmcuADRDb25maWd1cmF0aW9uAQB1BKBAnQQABAAAAOgDAAAAAAAEAAAAACAAAAAAACAAAAAAAAgAAABAnQQABEwgVGhlIGNvbmZpZ3VyYXRpb24uAEBBdmFpbGFibGVJbnZpdGVzAQEEAgQ4EAAAAAAE+CBOdW1iZXIgb2YgaW52aXRhdGlvbnMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICzQoQBAAMHQEgUGVuZGluZyBpbnZpdGF0aW9ucyBmb3IgZWFjaCBpbnZpdGVyIChhbiBhY2NvdW50IHRoYXQgaW52aXRlcyBvdGhlcnMpLgBZASBJZiB0aGUga2V5IGAoaW52aXRlciwgdGlja2V0KWAgZXhpc3RzLCB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUuAGxSZWZlcnJlclJlaW1idXJzZW1lbnRWYWx1ZXMAAHkEBAAUYQEgVGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVycywgYWxvbmcgd2l0aCBob3cgbWFueSBvZiBlYWNoIHZhbHVlbQEgc2hvdWxkIGJlIGF3YXJkZWQuIFRoZXNlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0QQEgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lIHRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLgBFASBTdG9yYWdlIGl0ZW0gbmFtZSBrZWVwcyB0aGUgbGVnYWN5IHByZWZpeCBmb3Igc3RvcmFnZSByZWFkYWJpbGl0eSBjb21wYXRpYmlsaXR5LgBsUmVmZXJyZWRSZWltYnVyc2VtZW50VmFsdWVzAAB5BAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBwZW9wbGUsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaHEBIHZhbHVlIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGVVASBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AAWkEAAEZBwAMSE1heEFjdGl2ZVJlZmVycmFsczgQCgAAAAj0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgcmVmZXJyYWxzIGEgdXNlciBjYW4gaGF2ZSBvcGVuLlggSXQgY2Fubm90IGV4Y2VlZCAyMDAuABRQb3RJZNUIIFBvSVBvdF9fIOwgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIHJld2FyZCBwb3QgaXMgZ2VuZXJhdGVkLgApASBUaGUgYWNjb3VudCBtdXN0IGJlIGZ1bmRlZCBzbyByZXdhcmRzIGNhbiBiZSBwYWlkIGR1cmluZyByZWdpc3RyYXRpb24gYW5kYCByZWZlcnJhbCByZXdhcmQgY2xhaW1zLgARASBUaGUgYFBhbGxldElkYCBtdXN0IGJlIGEgY29uc3RhbnQgYXMgaXQgaXMgZXhwb3NlZCBpbiB0aGUgbWV0YWRhdGEuZQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aXRoIGEgcnVudGltZSB1cGdyYWRlIGNhbiBiZSBkb25lIGF0IGFueSB0aW1lLCB0aGUgbmV3IGFjY291bnQgd2lsbJAgdGhlbiBuZWVkIHRvIGJlIGZ1bmRlZCBhY2NvcmRpbmdseS4ATHByb29mX29mX2lua19wb3RfaWQEgG1vZGxQb0lQb3RfXwAAAAAAAAAAAAAAAAAAAAAAAAAABNQgVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvdCB1c2VkIGZvciByZXdhcmQgdHJhbnNmZXJzLgAB0QoACDxUaWNrZXRTaWduYXR1cmU1BAyIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLgABASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6OlRpY2tldFB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4YVGlja2V0BASYIFRpY2tldCB0eXBlIHVzZWQgdG8gcmVmZXIgY2FuZGlkYXRlcy4ANQAAEEdhbWUBEEdhbWVUUFN0b3JlZFBoYXNlRHVyYXRpb25zAAClBAQADPQgUGhhc2UtZHVyYXRpb24gb3ZlcnJpZGUgc2V0IGJ5IFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gdmlh4CBgc2V0X2dhbWVfcGhhc2VzYC4gYE5vbmVgIG1lYW5zIHRoZSBjaGFpbiBmYWxscyBiYWNrIHRvcCBgVDo6RGVmYXVsdFBoYXNlRHVyYXRpb25zYC4ARFBsYXlEZXBvc2l0QW1vdW50AQDEQADIF6gEAAAAAAAAAAAAAAAQPQEgVGhlIGNvbmZpZ3VyZWQgbmF0aXZlIGJhbGFuY2UgaGVsZCBhcyBkZXBvc2l0IHdoZW4gYW4gYWNjb3VudCBwbGF5ZXIgc2lnbnMgdXAuADEBIFRoaXMgdmFsdWUgaXMgb25seSB1c2VkIGZvciBuZXcgZGVwb3NpdCBjcmVhdGlvbnM7IGV4aXN0aW5nIGFjdGl2ZSBkZXBvc2l0c6ggcmV0YWluIHRoZSBhbW91bnQgdGhleSB3ZXJlIGNyZWF0ZWQgd2l0aC4AEE5mdHMAAQgCAtUKOAQAJCkBIEFsbCBtaW50ZWQgTkZUcywga2V5ZWQgYnkgb3duZXIgYW5kIE5GVCBoYXNoLiBUaGUgdmFsdWUgaXMgYSBVbml4LXNlY29uZHM1ASB0aW1lc3RhbXAgc2V0IHdoZW5ldmVyIHRoZSBlbnRyeSBpcyB3cml0dGVuOiBieSB0aGUgYHJlcG9ydGAgZXh0cmluc2ljIGZvciBhNQEgZnJlc2ggYFBlcnNvbmAgdm90ZSwgYnkgYG1pbnRfYXR0ZW5kYW5jZV9uZnRzYCB3aGVuIGFuIGF0dGVuZGVlJ3MgYXR0ZW5kYW5jZTEBIGlzIGZpbmFsaXNlZCwgb3IgYnkgYHByb21vdGVfbmZ0X2NhbmRpZGF0ZXNgIHdoZW4gYSBoZWxkIGBOb3RQZXJzb25gIE5GVCBpczUBIHJlc29sdmVkLiBCYWNrZmlsbCB3cml0ZXMgb3ZlcndyaXRlIGFuIGVhcmxpZXIgdGltZXN0YW1wIG9uIHRoZSBzYW1lIGtleSDigJQxASB0aGUgdmFsdWUgaXMgdGhlcmVmb3JlIHRoZSAqbW9zdCByZWNlbnQqIG1pbnQgdGltZSwgbm90IHRoZSBmaXJzdC4gV2l0aGluIGE5ASBzaW5nbGUgZ2FtZSB0aGVzZSB0aW1lc3RhbXBzIGFyZSBib3VuZGVkIHRvZ2V0aGVyICh0eXBpY2FsbHkgdGhlIHNhbWUgYmxvY2spLDUBIHNvIGNsaWVudHMgY2FuIHVzZSB0aGVtIGFzIGEgcGVyLWdhbWUgdmVyc2lvbiBtYXJrZXIgKGUuZy4gbWFwcGluZyBvbGQgbWludHPUIHRvIG9uZSBpbWFnZSBjb2xsZWN0aW9uIGFuZCBuZXdlciBtaW50cyB0byBhbm90aGVyKS4ANE5mdENhbmRpZGF0ZXMAAQgCAtUKEAQAJCkBIENhbmRpZGF0ZSBORlRzIHN0YWdlZCBmcm9tIGBOb3RQZXJzb25gIHJlcG9ydHMsIGhlbGQgdW50aWwgdGhlIGF0dGVzdGVlJ3NcIGF0dGVuZGFuY2UgaXMgZGVjaWRlZC4AOQEgRHVyaW5nIHRoZSByZXBvcnRpbmcgcGhhc2UgYSBgTm90UGVyc29uYCB2b3RlIHN0YWdlcyB0aGUgTkZUIGhlcmUgcmF0aGVyIHRoYW49ASBtaW50aW5nIGRpcmVjdGx5IGludG8gW2BOZnRzYF06IHRoZSBhdHRlc3RlZSBvbmx5IGVhcm5zIHRoZSBORlQgaWYgdGhleSBlbmQgdXAhASBjbGFzc2VkIGFzIGhhdmluZyBhdHRlbmRlZC4gVGhlIGZpcnN0IGtleSBpcyB0aGUgcHJvc3BlY3RpdmUgb3duZXIgKHRoZSEBIGF0dGVzdGVlKSwgdGhlIHNlY29uZCBpcyB0aGUgTkZUIGhhc2ggKHNhbWUgZGVyaXZhdGlvbiBhcyBpbiBbYE5mdHNgXSkuIQEgUmVzb2x2ZWQgZW50cmllcyBhcmUgZWl0aGVyIHByb21vdGVkIGludG8gW2BOZnRzYF0gb3IgZGlzY2FyZGVkIOKAlCBzZWXUIGBwcm9tb3RlX25mdF9jYW5kaWRhdGVzYCAvIGBkaXNjYXJkX25mdF9jYW5kaWRhdGVzYC4APEFyY2hpdmVkUGxheWVycwABBAIhB9kKBAAEKQEgQWxsIHRoZSBwbGF5ZXIgd2l0aCB6ZXJvIHNjb3JlIGJ1dCBzdGlsbCBvbmJvYXJkZWQgaW4gaW5kaXZfcGFsbGV0X3Njb3JlLgAcUGxheWVycwABBAIhB90KBAAQcCBBbGwgdGhlIHBsYXllciBpbiB0aGUgZ2FtZS4AIQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBzdGF0ZW1lbnQgYWNjb3VudHMgaW6kIFtgU3RtdEFjY291bnRUb0FsaWFzYF0gbXVzdCBub3Qgb3ZlcmxhcC4AJEdhbWVJbmRleAEAOBAAAAAABGAgVGhlIGN1cnJlbnQgZ2FtZSBpbmRleC4AEEdhbWUAAPEKBAAEzCBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXh0IGdhbWUgb3Igb25nb2luZyBnYW1lLgAsR2FtZUhpc3RvcnkAAQQFODgEAAhhASBUaGUgbWFwcGluZyBmcm9tIHBhc3QgZ2FtZXMsIGlkZW50aWZpZWQgYnkgdGhlaXIgZ2FtZSBpbmRleCwgdG8gdGhlIHN0YXJ0IHRpbWVzdGFtcCwgaW54IHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guAFxQbGF5ZXJBdHRlbmRhbmNlSGlzdG9yeQEBBAIhBwULBAAIMQEgRW50cmllcyBvZiBwcmV2aW91c2x5IGF0dGVuZGVkIGdhbWVzIG9mIGVhY2ggcGxheWVyLiBSZXRhaW5lZCBvbiBgb2ZmYm9hcmRgCQEgYW5kIGBraWNrb3V0YC4gQm91bmRlZCBieSBgTWF4QXR0ZW5kYW5jZUhpc3RvcnlEZXB0aGAgcGVyIHBsYXllci4AUEdhbWVQYXJ0aWNpcGFudENvdW50AQEEBTg4EAAAAAAQ8CBDb3VudCBvZiBjb25maXJtZWQgYXR0ZW5kZWVzIHBlciBnYW1lIGluZGV4LiBJbmNyZW1lbnRlZCBieRkBIFtgUGFsbGV0Ojpub3RlX2F0dGVuZGFuY2VgXSBmb3IgZXZlcnkgYXR0ZW5kYW5jZSBlbnRyeSwgcmVnYXJkbGVzcyBvZvwgd2hldGhlciB0aGUgcGxheWVyIGlzIHJlY29yZGVkIGFzIGBBY2NvdW50T3JQZXJzb246OlBlcnNvbmAgb3L0IGBBY2NvdW50T3JQZXJzb246OkFjY291bnRgLiBFeHBvc2VkIGZvciBvZmYtY2hhaW4gY29uc3VtZXJzLgA0SW5kZXhUb1BsYXllcgABBAUJCyEHBAAE5CBUaGUgbWFwcGluZyBmcm9tIHJvdW5kIGluZGV4IGFuZCBwbGF5ZXIgaW5kZXggdG8gcGxheWVyLgA0UGxheWVyVG9JbmRleAABBAIhBw0LBAAE4CBUaGUgbWFwcGluZyBmcm9tIHBsYXllciB0byB0aGVpciBpbmRpY2VzIGluIGVhY2ggcm91bmQuAERTaHVmZmxlUmVjb2duaXplZAABCAUGEQshBwQABAEBIFN0b3JhZ2UgdXNlZCB0byBjb21wdXRlIHRoZSBzaHVmZmxlIG9yZGVyIG9mIHJlY29nbml6ZWQgcGVvcGxlLgBQU2h1ZmZsZU5vdFJlY29nbml6ZWQAAQgFBhELIQcEAARVASBTdG9yYWdlIHVzZWQgdG8gY29tcHV0ZSB0aGUgc2h1ZmZsZSBvcmRlciBvZiBub3QgcmVjb2duaXplZCBwZW9wbGUsIGkuZS4gY2FuZGlkYXRlcy4ANEdhbWVTY2hlZHVsZXMBABULBAAAAEBBdmFpbGFibGVJbnZpdGVzAQEEAgQ4EAAAAAAE6CBOdW1iZXIgb2YgaW52aXRlcyBhdmFpbGFibGUgdG8gZGlzdHJpYnV0ZSBmb3IgYW4gYWNjb3VudC4AOFBlbmRpbmdJbnZpdGVzAAEIAgLNChAEABCIIFBlbmRpbmcgaW52aXRlcyBmb3IgZWFjaCBpbnZpdGVyLgBpASBJZiB0aGUga2V5IGAoaW52aXRlciwgdGlja2V0KWAgZXhpc3RzIHRoZW4gdGhlIHRpY2tldCBpcyBjdXJyZW50bHkgYSBwZW5kaW5nIGludml0ZSwgZnJvbTQgdGhlIGludml0ZXIuAEhBbGlhc1RvU3RtdEFjY291bnQAAQQCCAQEABxZASBNYXBwaW5nIGZyb20gYWxpYXMgdG8gdGhlIGFjY291bnQgaWQgdG8gdXNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUuAEEBIEFjY291bnQtYmFzZWQgcGxheWVyIHNpbXBseSB1c2UgdGhlaXIgYWNjb3VudCBhbmQgYXJlIG5vdCBwYXJ0IG9mIHRoaXMgbWFwcGluZy4BASBSZXZlcnNlIG1hcHBpbmcgaXMgYXZhaWxhYmxlIGluIHN0b3JhZ2UgW2BTdG10QWNjb3VudFRvQWxpYXNgXS4A7CBUaGlzIGlzIHJlbW92ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIGdldHMgYXJjaGl2ZWQuVQEgVGhpcyBpcyB1cGRhdGVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBzaWducyB1cCB3aXRoIGFub3RoZXIgc3RhdGVtZW50IGFjY291bnQuAEhTdG10QWNjb3VudFRvQWxpYXMAAQQCBAgEACRZASBNYXBwaW5nIGZyb20gdGhlIGFjY291bnQgaWQgdG8gdXNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHN0YXRlbWVudCBzdG9yZSB0byB0aGUgYWxpYXMuAEEBIEFjY291bnQtYmFzZWQgcGxheWVyIHNpbXBseSB1c2UgdGhlaXIgYWNjb3VudCBhbmQgYXJlIG5vdCBwYXJ0IG9mIHRoaXMgbWFwcGluZy4BASBSZXZlcnNlIG1hcHBpbmcgaXMgYXZhaWxhYmxlIGluIHN0b3JhZ2UgW2BBbGlhc1RvU3RtdEFjY291bnRgXS7sIFRoaXMgaXMgcmVtb3ZlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgZ2V0cyBhcmNoaXZlZC5VASBUaGlzIGlzIHVwZGF0ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIHNpZ25zIHVwIHdpdGggYW5vdGhlciBzdGF0ZW1lbnQgYWNjb3VudC4AZQEgU3RhdGVtZW50IGFjY291bnRzIGluIHRoaXMgc3RvcmFnZSBhbmQgYWNjb3VudC1iYXNlZCBwbGF5ZXIgYWNjb3VudHMgaW4gW2BQbGF5ZXJzYF0gbXVzdDQgbm90IG92ZXJsYXAuAGBDb21tdW5pY2F0aW9uSWRlbnRpZmllcnMAAQQCBD0EBAAMaQEgVGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllcnMgdXNlZCBieSBwbGF5ZXJzIHRvIGVzdGFibGlzaCBhbiBlbmNyeXB0ZWQgUDJQIGNvbm5lY3Rpb24gaW5tASBvcmRlciB0byBwbGF5IHRoZSBnYW1lLiBUaGUgYWNjb3VudCB1bmRlciB3aGljaCB0aGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVyIGlzIHJlZ2lzdGVyZWQZASBzaG91bGQgYmUgdGhlIHNhbWUgYWNjb3VudCB1c2VkIHRvIGludGVyYWN0IHdpdGggdGhlIHN0YXRlbWVudCBzdG9yZS4AAYUEAAEdBwAoJE1heFJvdW5kczgQAwAAACSgIFRoZSBtYXhpbXVtIG51bWJlciBvZiByb3VuZHMgaW4gYSBnYW1lLgDoIE5vdGU6IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJvdW5kcyBpcyBjb25maWd1cmVkIHBlciBnYW1lLgBBASBUT0RPOiBpZiB0aGlzIGJvdW5kIGlzIHJhaXNlZCBtZWFuaW5nZnVsbHkgKGUuZy4gYWJvdmUgfjUpIG9yIHdoZW4gdGltZSBhbGxvd3MsWQEgcmV2aXNpdCB0aGUgYHByb2Nlc3NfcGxheWVyc2AgYW5kIGByZXBvcnRgIGJlbmNobWFya3MgdG8gYWRkIGEgYExpbmVhcjwxLCBNYXhSb3VuZHM+YBUBIHN3ZWVwLiBDdXJyZW50bHkgdGhleSBiZW5jaCBhdCBmaXhlZCBgTWF4Um91bmRzYCBzbyBnYW1lcyB3aXRoIGZld2VyjCByb3VuZHMgb3ZlcnBheSBmb3IgcGVyLXJvdW5kIHdvcmsu7CBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvaW5kaXZpZHVhbGl0eS9pc3N1ZXMvMjQ0ADBNYXhHcm91cFNpemU4EAYAAAAMqCBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwLgAZASBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1pbkdyb3VwU2l6ZTgQAAAAACCoIFRoZSBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuAGUBIFdoZW4gc2NoZWR1bGluZyBhIGdhbWUgdGhlIHZhbHVlIGZvciBgbWF4X2dyb3VwX3NpemVgIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBtaW5pbXVtICsgMS4AJQEgSW4gb3JkZXIgdG8gaGF2ZSBubyBzaW5nbGUtcGxheWVyIGdyb3VwcywgdGhpcyB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDIuAFEBIE5vdGU6IHRoZSBhY3R1YWwgbWluaW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUsIGl0IGlzWCBgbWF4X2dyb3VwX3NpemUgLSAxYC4AVE5vblBsYXlpbmdLaWNrb3V0VGltZTgQgFM7AAwVASBUaGUgdGltZSBhZnRlciB3aGljaCBhIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGNhbiBiZSBraWNrZWQgb3V0LgC8IFRoaXMgaXMgb25seSBmb3IgYWNjb3VudCBwbGF5ZXJzLCBub3QgcGVyc29ucy4ASERlZmF1bHRQbGF5RGVwb3NpdMRAAMgXqAQAAAAAAAAAAAAAAAhRASBUaGUgZGVmYXVsdCBwbGF5IGRlcG9zaXQgKG5hdGl2ZSBiYWxhbmNlKSB1c2VkIHdoZW4gW2BQbGF5RGVwb3NpdEFtb3VudGBdIGhhcyBuZXZlcnAgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuAFREZWZhdWx0UGhhc2VEdXJhdGlvbnOlBFAsAQAAPAAAAB4AAABYAgAAPAAAAAgRASBUaGUgZGVmYXVsdCBkdXJhdGlvbnMgb2YgZWFjaCBnYW1lIHBoYXNlLCBpbiBzZWNvbmRzLiBPdmVycmlkZGVuIGF0pCBydW50aW1lIHZpYSBbYFBhbGxldDo6c2V0X2dhbWVfcGhhc2VzYF0uAEBNYXhHYW1lU2NoZWR1bGVzOBAMAAAABOwgVGhlIE1heGltdW0gbnVtYmVyIG9mIGdhbWUgc2NoZWR1bGVzIHRoZSBwYWxsZXQgY2FuIHN0b3JlLgBkTWF4QXR0ZW5kYW5jZUhpc3RvcnlEZXB0aDgQDAAAAAhdASBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFzdCBnYW1lcyBmb3Igd2hpY2ggcGxheWVyIGF0dGVuZGFuY2UgaXMgc3RvcmVkLiBBbnkgYXR0ZW5kYW5jZQEBIGVudHJpZXMgb2xkZXIgdGhhbiB0aGlzIHdpbGwgYmUgaW1taW5lbnRseSBwdXJnZWQgZnJvbSBzdG9yYWdlLgBscHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlCIBwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOhAZASBUaGUgYmFzZSBtZXNzYWdlIG9mIHRoZSBwcm9vZiBvZiBvd25lcnNoaXAgb2YgYW4gYWNjb3VudCBieSBhbiBhbGlhcy4ANQEgVGhlIGZ1bGwgbWVzc2FnZSBpcyB0aGlzIGJhc2UgY29uY2F0ZW5hdGVkIHRvIHRoZSBhbGlhcyBhbmQgdGhlbiBoYXNoZWQgd2l0aKwgYGJsYWtlMl8yNTZgIChibGFrZTIgd2l0aCAyNTYgYml0IG91dHB1dCkuADhtYXhfZW5hY3RtZW50czgQEAAAABQ5ASBNYXhpbXVtIG51bWJlciBvZiBmdWxsIGVhcmx5LWF0dGVuZGFuY2UgZW5hY3RtZW50cyBhIHNpbmdsZSBgcmVwb3J0YCBjYWxsIGNhbhkBIHRyaWdnZXI6IGV2ZXJ5IHVuaXF1ZSBjby1wbGF5ZXIgYWNyb3NzIGFsbCByb3VuZHMsIHBsdXMgdGhlIHJlcG9ydGVyLgAZASBVc2VkIGJvdGggYXMgdGhlIHByZS1kaXNwYXRjaCBvdmVyY2hhcmdlIGJvdW5kIG9uIGByZXBvcnRgIGFuZCBhcyB0aGXEIHVwcGVyIGJvdW5kIG9mIGl0cyBgTGluZWFyYCBiZW5jaG1hcmsgY29tcG9uZW50LgABGQsACDxUaWNrZXRTaWduYXR1cmU1BASIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLkBBY2NvdW50U2lnbmF0dXJlNQQEYCBTaWduYXR1cmUgZm9yIGFjY291bnRzLgA3AAAUU2NvcmUBFFNjb3JlLDBQYXJ0aWNpcGFudHMAAQQCIQcdCwQABHwgVGhlIHBhcnRpY2lwYW50cyBpbmZvcm1hdGlvbnMuAExQZXJzb25ob29kVGhyZXNob2xkAQA4EAAAAAAEyCBUaGUgc2NvcmUgdGhyZXNob2xkIHJlcXVpcmVkIHRvIHJlYWNoIHBlcnNvbmhvb2QuAGxQZXJzb25ob29kVGhyZXNob2xkU2NoZWR1bGUBAMEExBiIEwAAAQAAABAnAAADAAAAIE4AAAYAAAC4iAAACgAAAFDDAAAPAAAA/////xUAAAAoHQEgUnVudGltZS1jb25maWd1cmFibGUgc2NoZWR1bGUgb2YgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllcnMsIHNvcnRlZCBieR0BIGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuIEVhY2ggdGllciBzcGVjaWZpZXMgdGhlIHNjb3JlIGEdASBwYXJ0aWNpcGFudCBtdXN0IHJlYWNoIHRvIGJlIHJlY29nbml6ZWQgYXMgYSBwZXJzb24gYXQgdGhhdCBwb3B1bGF0aW9uHCBsZXZlbC4ABQEgRGVmYXVsdHMgdG8gW2BEZWZhdWx0UGVyc29uaG9vZFRocmVzaG9sZFRpZXJzYF0gdW50aWwgZ292ZXJuYW5jZQEBIG92ZXJyaWRlcyBpdCB2aWEgW2BQYWxsZXQ6OnNldF9wZXJzb25ob29kX3RocmVzaG9sZF9zY2hlZHVsZWBdLgARASBBIG5ldyBzY2hlZHVsZSB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9u/CB3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXMgYFBlcnNvbmhvb2RUaHJlc2hvbGRgLgBQQWJzZW5jZUdyYWNlU2NoZWR1bGUBALUElBiIEwAABgUQJwAABQQgTgAABAO4iAAAAwJQwwAAAgH/////BgEgKQEgUnVudGltZS1jb25maWd1cmFibGUgc2NoZWR1bGUgb2YgYWJzZW5jZS1ncmFjZSB0aWVycywgc29ydGVkIGJ5IGFzY2VuZGluZw0BIHBvcHVsYXRpb24gc2l6ZSB0aHJlc2hvbGQuIEVhY2ggdGllciBzcGVjaWZpZXMgaG93IG1hbnkgbWlzc2VzIGFyZQ0BIHRvbGVyYXRlZCB3aXRoaW4gcmVjZW50IGdhbWVzIGJlZm9yZSBhIHBhcnRpY2lwYW50J3MgcGVyc29uaG9vZCBpcywgc3VzcGVuZGVkLgAdASBEZWZhdWx0cyB0byBbYERlZmF1bHRBYnNlbmNlR3JhY2VUaWVyc2BdIHVudGlsIGdvdmVybmFuY2Ugb3ZlcnJpZGVzIGl0DQEgdmlhIFtgUGFsbGV0OjpzZXRfYWJzZW5jZV9ncmFjZV9zY2hlZHVsZWBdLiBBbiBlbXB0eSBzY2hlZHVsZSAoc2V0+CBleHBsaWNpdGx5IGJ5IGdvdmVybmFuY2UpIGRpc2FibGVzIHRoZSBncmFjZSBwZXJpb2QgZW50aXJlbHkuAERBYnNlbmNlR3JhY2VSYXRpbwEASQkIAAAYFQEgVGhlIGN1cnJlbnRseSBhY3RpdmUgYWJzZW5jZS1ncmFjZSByYXRpbyBgKGFsbG93ZWRfbWlzc2VzLCB3aW5kb3cpYCwlASBkZXJpdmVkIGZyb20gYEFic2VuY2VHcmFjZVNjaGVkdWxlYCBhbmQgdGhlIGN1cnJlbnQgYWN0aXZlLXBlcnNvbiBjb3VudC4AEQEgVXBkYXRlZCBlYWNoIHRpbWUgYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJ1bnMgKGF0IHRoZSBzdGFydCBvZiBldmVyeR0BIGF0dGVuZGFuY2UgcmVwb3J0IHNlc3Npb24pLiBSZWFkIGJ5IGBzZXRfYXR0ZW5kYW5jZWAgdG8gZGVjaWRlIHdoZXRoZXKMIGEgcGFydGljaXBhbnQgc2hvdWxkIGJlIHN1c3BlbmRlZC4ASEN1cnJlbnRSb3VuZFBvaW50cwEAOBAAAAAABLQgVGhlIGFjY3VtdWxhdGVkIHBvaW50cyBpbiB0aGUgY3VycmVudCByb3VuZC4AREN1cnJlbnRSb3VuZEluZGV4AQA4EAAAAAAcgCBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm91bmQuAF0BIFRoaXMgbXVzdCBiZSB0aGUgc3VtIG9mIGFsbCBwb2ludHMgYWNjdW11bGF0ZWQgaW4gYFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50YCBmb3IgdGhlPCBjdXJyZW50IHJvdW5kLgBRASAqKldBUk5JTkcqKjogVGhpcyBzdG9yYWdlIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIGBSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudGAsIHVzZbQgYGZuIGFkZF9wb2ludHNfdG9fcGFydGljaXBhbnRgIHRvIHVwZGF0ZSBpdC4AaFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50AQEIAgItCzgQAAAAABjQIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQgYnkgYSBwYXJ0aWNpcGFudCBpbiBhIHJvdW5kLgBRASBGb3IgdGhlIGN1cnJlbnQgcm91bmQsIHRoaXMgc3RvcmFnZSBtdXN0IGJlIHVwZGF0ZWQgYWxvbmdzaWRlIGBDdXJyZW50Um91bmRQb2ludHNgLgAxASAqKldBUk5JTkcqKjogVGhpcyBzdG9yYWdlIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIGBDdXJyZW50Um91bmRQb2ludHNgLCB1c2W0IGBmbiBhZGRfcG9pbnRzX3RvX3BhcnRpY2lwYW50YCB0byB1cGRhdGUgaXQuADBSb3VuZFBheW91dHMAAQQCODELBAAQqCBUaGUgcm91bmRzIHRoYXQgYXJlIGN1cnJlbnRseSBwYXlpbmcgb3V0LgARASBSb3VuZHMgYXJlIHBheWluZyBvdXQgYWZ0ZXIgdGhleSBoYXZlIGZpbmlzaGVkIGFjY3VtdWxhdGluZyBwb2ludHMuJQEgV2hlbiBhbGwgdGhlaXIgcG9pbnRzIGhhdmUgYmVlbiBwYWlkIG91dCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADRSb3VuZFBsYW5uaW5nAAA1CwQADPwgVGhlIHBsYW5uaW5nIG9mIHRoZSBjdXJyZW50IHJvdW5kIHRoYXQgaXMgYWNjdW11bGF0aW5nIHBvaW50cy4APQEgSWYgbm9uZSB0aGUgY3VycmVudCByb3VuZCBpcyBvbmdvaW5nIGFuZCB3aWxsIGJlIHBsYW5uZWQgb24gdGhlIG5leHQgc2NoZWR1bGUuADhSb3VuZFNjaGVkdWxlcwEAOQsEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgABqQQAASUHABBQQ3VycmVuY3lMb2NhdGlvbkluZm/gMAEDAHEXBDIFdsjrCwT0IFRoZSBsb2NhdGlvbiBvZiB0aGUgdXNlZCBjdXJyZW5jeS4gSXQgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgBQT2ZmY2hhaW5Xb3JrSW50ZXJ2YWw4EAIAAAAEsCBUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggb2ZmY2hhaW4gd29ya2VyIHJ1bnMuADBzY29yZV9wb3RfaWQEgG1vZGxzY29yZXBvdAAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgA0c2NvcmVfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvc2NvcmUgICAgICAIWQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBzY29yZSAgcGFsbGV0LgABRQsAAAA4AAAgRHVtbXlEaW0BIER1bW15RGltCCxSZXNlcnZlZElkcwABBAIoEAQABNwgVGhlIHBlcnNvbmFsIElEcyB0aGF0IGFyZSByZXNlcnZlZCBieSB1bnByb3ZlbiBwZW9wbGUuABhQZW9wbGUAAQQFKEkLBAAEuCBUaGUgcGVvcGxlIHdlIHRyYWNrIGFsb25nIHdpdGggdGhlaXIgcmVjb3Jkcy4AAc0EAAEpBwAAAU0LAAAAOwAAKFBlb3BsZUxpdGUBKFBlb3BsZUxpdGUUKExpdGVQZW9wbGUAAQQCBFELBAAAADhBbGlhc1RvQWNjb3VudAABBAJJAwQEAATgIENvbnZlcnNpb24gb2YgYSBsaXRlIGNvbnRleHR1YWwgYWxpYXMgdG8gYW4gYWNjb3VudCBJRC4AOEFjY291bnRUb0FsaWFzAAEEAgRFAwQABOAgQ29udmVyc2lvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzLgBsTGl0ZVBlb3BsZUNvbGxlY3Rpb25DcmVhdGVkAQDIBAAE8CBXaGV0aGVyIHRoZSBsaXRlIHBlb3BsZSBtZW1iZXIgY29sbGVjdGlvbiBoYXMgYmVlbiBjcmVhdGVkLgBQQXR0ZXN0YXRpb25BbGxvd2FuY2UBAQQCBDgQAAAAAAQpASBOdW1iZXIgb2YgYXR0ZXN0YXRpb25zIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhIHZlcmlmaWVyIGFjY291bnQgaWQuAAHlBAABLQcADEBMaXRlUmluZ0V4cG9uZW50BQUECQTMIFJpbmcgZXhwb25lbnQgdXNlZCBmb3IgdGhlIGxpdGUgcGVvcGxlIGNvbGxlY3Rpb24uAEhMaXRlT25ib2FyZGluZ1NpemU4EAMAAAAE/CBPbmJvYXJkaW5nIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgB0YWNjb3VudF9zZXR1cF9ibG9ja190b2xlcmFuY2U4EFgCAAAELQEgVGhlIG51bWJlciBvZiBibG9ja3Mgb2YgdG9sZXJhbmNlIHdlIGFsbG93IGZvciBhbiBhbGlhcyBzZXR1cCB0cmFuc2FjdGlvbi4AAVkLAARQQXR0ZXN0YXRpb25TaWduYXR1cmU1BAhhASBTaWduYXR1cmUgZ2VuZXJhdGVkIGJ5IGxpdGUgcGVvcGxlIGFuZCB1c2VkIGJ5IHZlcmlmaWVycyB0byBjbGFpbSBhdHRlc3RhdGlvbnMgb24gdGhlaXIgIGJlaGFsZi4APgAAJFJlc291cmNlcwEkUmVzb3VyY2VzLCRDb25zdW1lcnMAAQQCBF0LBAAEKQEgQWNjb3VudHMgdXNlZCB0byBpZGVudGlmeSBjb25zdW1lcnMgbWFwcGVkIHRvIHRoZWlyIGNvbnN1bWVyIGluZm9ybWF0aW9uLgBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzAAEIBgJlC20LBAAUcQEgQWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgdGhyb3VnaCBhbiBhbm9ueW1vdXMgYWxsb3dhbmNlLCBwZXIgcGVyaW9kLgBhASBUaGUgcGVyaW9kIGtleSBpcyBhIGJpZy1lbmRpYW4gZW5jb2RlZCBkYXkgbnVtYmVyIChzZWNvbmRzIHNpbmNlIFVuaXggZXBvY2ggLyA4NjQwMCkgc29xASB0aGF0IGBJZGVudGl0eWAtaGFzaGVkIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIHRvIGJlIHJlbW92ZWQgYnkgdGhlRCBvZmZjaGFpbiB3b3JrZXIuAGxTdG10U3RvcmVBbGxvd2FuY2VCeUFjY291bnQAAQgCAnELEAQAFEEBIFJldmVyc2UgbG9va3VwIGZyb20gYSBzdGF0ZW1lbnQgYWNjb3VudCB0byBhbGwgaXRzIGFjdGl2ZSBhbm9ueW1vdXMgYWxsb3dhbmNlcy4ARQEgS2V5ZWQgYnkgYChBY2NvdW50SWQsIChCaWdFbmRpYW5VMzIgcGVyaW9kLCB1MzIgc2VxLCBBbGlhcykpYCDihpIgYCgpYC4gTXVsdGlwbGVJASBlbnRyaWVzIHBlciBhY2NvdW50IGFyZSBwb3NzaWJsZSB3aGVuIHRoZSBzYW1lIHN0YXRlbWVudCBhY2NvdW50IGlzIGF1dGhvcml6ZWQgYnnMIGRpZmZlcmVudCBhbGlhc2VzIG9yIGFjcm9zcyBncmFjZS13aW5kb3cgb3ZlcmxhcHMuAIBGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uQnlBbGlhcwABBAIIeQsEAAQpASBGcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gYnkgYW5vbnltb3VzIGFsaWFzIGluIGZyaWVuZCByZXF1ZXN0IGNvbnRleHQuAGxGcmllbmRSZXF1ZXN0QWxpYXNCeUFjY291bnQAAQQCBAgEAAQlASBSZXZlcnNlIGxvb2t1cCBmcm9tIGZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCBhY2NvdW50IHRvIGFub255bW91cyBhbGlhcy4AbFNwZW50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlcwABCAYCZQsQBAAgSQEgQWxpYXNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gbG9uZy10ZXJtIHN0b3JhZ2UgaW4gYSBnaXZlbiBwZXJpb2QuAFkBIEtleWVkIGJ5IGAocGVyaW9kLCBhbGlhcylgLiBFYWNoIGNvdW50ZXIgdmFsdWUgaW4gdGhlIHByb29mIGNvbnRleHQgcHJvZHVjZXMgYSB1bmlxdWVdASBhbGlhcywgc28gYSBwZXJzb24gY2FuIGhhdmUgdXAgdG8gYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgZW50cmllcyBwZXIgcGVyaW9kLjUBIE9sZCBwZXJpb2RzIGNhbiBiZSBjbGVhbmVkIHVwIHZpYSBgY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzYC4AQQEgVGhlIHBlcmlvZCBrZXkgaXMgYEJpZ0VuZGlhblUzMmAgd2l0aCBgSWRlbnRpdHlgIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbuggY2hyb25vbG9naWNhbCBvcmRlciwgbWF0Y2hpbmcgYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AuADxVc2VybmFtZU93bmVyT2YAAQQCQQQEBAAYcQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBgdXNlcm5hbWVgIHRvIHRoZSBgQWNjb3VudElkYCB0aGF0IGhhcyByZWdpc3RlcmVkIGl0LiBUaGUgYG93bmVyYCB2YWx1ZWUBIHNob3VsZCBiZSBhIGtleSBpbiB0aGUgYENvbnN1bWVyc2AgbWFwLiBUaGVyZSBjYW4gYmUgYXQgbW9zdCAyIHVzZXJuYW1lcyBwb2ludGluZyB0byB0aGU4IHNhbWUgYG93bmVyYDpxASAtIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnN1bWVyJ3MgbGl0ZSBwZXJzb24gaWRlbnRpdHkgLSB0aGlzIHdpbGwgYWx3YXlzIGJlIHByZXNlbnQ7WQEgLSBvcHRpb25hbGx5IGFub3RoZXIgdXNlcm5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25zdW1lcidzIGZ1bGwgcGVyc29uIGlkZW50aXR5LCBpZjggICBhcHBsaWNhYmxlLgA4QWNjb3VudE9mQWxpYXMAAQQCCAQEAARpASBSZXZlcnNlIGxvb2t1cCBmcm9tIHJlZ2lzdGVyZWQgYWxpYXNlcyB0byB0aGUgYEFjY291bnRJZGAgdXNlZCB0byByZWdpc3RlciBhcyBhIGNvbnN1bWVyLgBsVXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uAQAoIAAAAAAAAAAACFUBIFRoZSBhbW91bnQgb2YgdGltZSBmb3Igd2hpY2ggYSB1c2VybmFtZSByZXNlcnZhdGlvbiBpcyB2YWxpZCwgaW4gc2Vjb25kcy4gQWZ0ZXIgdGhpc9AgdGltZSBwZXJpb2QgZWxhcHNlcywgdGhlIHJlc2VydmF0aW9uIGNhbiBiZSB2b2lkZWQuAGBVc2VybmFtZVJlc2VydmF0aW9uUXVldWUAAQQCQQR9CwQACHEBIE1hcCBmcm9tIGEgcmVzZXJ2ZWQgYHVzZXJuYW1lYCB0byBhIHF1ZXVlIG9mIGBSZXNlcnZhdGlvblF1ZXVlRW50cnlgIGl0ZW1zLCBlYWNoIGhvbGRpbmcgYW5hASBhY2NvdW50IGFuZCB0aGUgdGltZXN0YW1wIHdoZW4gaXQgam9pbmVkLiBPbGQgcmVzZXJ2YXRpb25zIGNhbiBiZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJlc2VydmF0aW9uT2YAAQQCBEEEBAAIZQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhbiBhY2NvdW50IHRvIHRoZSB1c2VybmFtZSBpdCBoYXMgcmVzZXJ2ZWQuIEVhY2ggYWNjb3VudCBjYW4gaGF2ZSBhdJwgbW9zdCBvbmUgYWN0aXZlIHJlc2VydmF0aW9uIGF0IGEgdGltZS4AAfUEAAExBwBURE1heFVzZXJuYW1lTGVuZ3RoOBAgAAAABC0BIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIHVzZXJuYW1lLCBpbmNsdWRpbmcgYW55IHBvdGVudGlhbCB0cmFpbGluZyBkaWdpdHMuAERNaW5Vc2VybmFtZUxlbmd0aDgQBgAAAASIIFRoZSBtaW5pbXVtIGxlbmd0aCBvZiBhIHVzZXJuYW1lLgBIUGVyc29uQXV0aER1cmF0aW9uOBAAowIADFUBIFRoZSBkdXJhdGlvbiBvZiB0aW1lLCBpbiBzZWNvbmRzLCBmb3Igd2hpY2ggYSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGlzIHZhbGlkLiBBZnRlclEBIHRoaXMgcGVyaW9kIGVsYXBzZXMsIHBlb3BsZSB3aWxsIG5vIGxvbmdlciBiZSBjb25zaWRlcmVkIGFjdGl2ZSwgYnV0IHRoZWlyIHJlc291cmNlDQEgYWxsb3dhbmNlcyBzaG91bGQgZGVmYXVsdCB0byB0aGUgc2FtZSB2YWx1ZXMgdXNlZCBmb3IgbGl0ZSBwZW9wbGUuAGxNaW5QZXJzb25BdXRoVXBkYXRlSW50ZXJ2YWw4EIBRAQAIVQEgVGhlIG1pbmltdW0gaW50ZXJ2YWwgb2YgdGltZSwgaW4gc2Vjb25kcywgd2hpY2ggbXVzdCBwYXNzIGJlZm9yZSB1cGRhdGluZyBhIHBlcnNvbidzPCBhdXRob3JpemF0aW9uLgBkTWF4UmVzZXJ2YXRpb25RdWV1ZUxlbmd0aDgQCgAAAAQpASBNYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGF0IGNhbiBxdWV1ZSBmb3IgYSBzaW5nbGUgcmVzZXJ2ZWQgdXNlcm5hbWUuAFBBY2NvdW50c0FwaUFsbG93YW5jZYkLIAIAAAAAyAAABNAgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIHRoZSBhY2NvdW50cyBBUEkuAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBzdGF0ZW1lbnQgc3RvcmUgc2xvdHMgYSBwZXJzb24gY2FuIGNsYWltIHdpdGhpbiBvbmUgcGVyaW9kLgBsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kOBAKAAAAEE0BIE1heGltdW0gbnVtYmVyIG9mIHN0YXRlbWVudCBzdG9yZSBzbG90cyBhIGxpdGUgcGVyc29uIGNhbiBjbGFpbSB3aXRoaW4gb25lIHBlcmlvZC4ATQEgU2FtZSBzZW1hbnRpY3MgYXMgYFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kYCBidXQgYXBwbGllZCB3aGVuIHRoZSBwcm9vZiB0YXJnZXRzIHRoZfwgbGl0ZS1wZW9wbGUgY29sbGVjdGlvbiB2aWEgYE1lbWJlcnNoaXBDb2xsZWN0aW9uOjpMaXRlUGVvcGxlYC4AVFN0bXRTdG9yZUNsZWFudXBMaW1pdDgQMgAAAARZASBNYXhpbXVtIG51bWJlciBvZiBzdGFsZSBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGVudHJpZXMgdG8gcmVtb3ZlIHBlciBjbGVhbnVwIGNhbGwuAHBTdG10U3RvcmVSZXBsYWNlbWVudENvb2xkb3duOBA8AAAACDUBIE1pbmltdW0gdGltZSwgaW4gc2Vjb25kcywgdGhhdCBtdXN0IHBhc3MgYmVmb3JlIGFuIGFsaWFzIGNhbiByZXBsYWNlIGl0cyBvd27gIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgZW50cnkgd2l0aGluIHRoZSBzYW1lIHBlcmlvZC4AWEZyaWVuZFJlcXVlc3RBbGxvd2FuY2WJCyABAAAAACgAAAQlASBUaGUgU3RhdGVtZW50IFN0b3JlIGFsbG93YW5jZSBmb3IgZnJpZW5kIHJlcXVlc3Qgc3RhdGVtZW50IHJlZ2lzdHJhdGlvbi4AbEZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZAwEEBRJASBNYXhpbXVtIG51bWJlciBvZiBmcmllbmQgcmVxdWVzdHMgYSBwZXJzb24gY2FuIHNlbmQgd2l0aGluIG9uZSByYXRlLWxpbWl0IHBlcmlvZC4AVQEgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYDhgLCBlYWNoIHBlcnNvbiBjYW4gc2VuZCB1cCB0byA4IGZyaWVuZCByZXF1ZXN0cyBkdXJpbmcgdGhlWQEgcGVyaW9kIHNlbGVjdGVkIGJ5IGBGcmllbmRSZXF1ZXN0UGVyaW9kRHVyYXRpb25gLiBXaGVuIHRoZSBwZXJpb2QgYWR2YW5jZXMsIHRoZSBzbG90cxwgcmVzZXQuAHxMaXRlRnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kDAQIEF0BIE1heGltdW0gbnVtYmVyIG9mIGZyaWVuZCByZXF1ZXN0cyBhIGxpdGUgcGVyc29uIGNhbiBzZW5kIHdpdGhpbiBvbmUgcmF0ZS1saW1pdCBwZXJpb2QuAF0BIFNhbWUgc2VtYW50aWNzIGFzIGBGcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2RgIGJ1dCBhcHBsaWVkIHdoZW4gdGhlIHByb29mIHRhcmdldHMgdGhl/CBsaXRlLXBlb3BsZSBjb2xsZWN0aW9uIHZpYSBgTWVtYmVyc2hpcENvbGxlY3Rpb246OkxpdGVQZW9wbGVgLgBsRnJpZW5kUmVxdWVzdFBlcmlvZER1cmF0aW9uOBCAUQEAJA0BIFJvbGxpbmcgdGltZSB3aW5kb3cgZm9yIHJhdGUtbGltaXRpbmcgZnJpZW5kIHJlcXVlc3RzLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzqCBgbm93X3NlY3MgLyBGcmllbmRSZXF1ZXN0UGVyaW9kRHVyYXRpb25gLgBhASBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBgODZfNDAwYCAoMjQgaG91cnMpLCBwZXJpb2QgYDBgIGlzIHRoZSBmaXJzdCAyNCBob3VycyBzaW5jZSB0aGUZASBVbml4IGVwb2NoLCBwZXJpb2QgYDFgIGlzIHRoZSBuZXh0IDI0IGhvdXJzLCBhbmQgc28gb24uIENvbWJpbmVkIHdpdGhlASBgRnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kYCwgdGhpcyBkZWZpbmVzIGhvdyBtYW55IGZyaWVuZCByZXF1ZXN0cyBjYW4gYmUgc2VudCBpbiBlYWNoICBwZXJpb2QuAGBGcmllbmRSZXF1ZXN0R3JhY2VXaW5kb3c4EBAOAAAURQEgRXh0cmEgdGltZSwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHRoZSBwcmV2aW91cyBmcmllbmQgcmVxdWVzdCBwZXJpb2QgaXMgc3RpbGxsIGFjY2VwdGVkIGFmdGVyIGEgcm9sbG92ZXIuAGUBIFRoaXMgYWxsb3dzIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGNsb3NlIHRvIGEgcGVyaW9kIGJvdW5kYXJ5IHRvIHN0aWxsIGJlIGluY2x1ZGVkIGV2ZW4gaWbUIHRoZXkgYXJlIGV4ZWN1dGVkIGp1c3QgYWZ0ZXIgdGhlIG5leHQgcGVyaW9kIGJlZ2lucy4AeEZyaWVuZFJlcXVlc3RSZXRlbnRpb25EdXJhdGlvbigggDoJAAAAAAAUYQEgRHVyYXRpb24gZm9yIHdoaWNoIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbnMgd2lsbCBiZSByZXRhaW5lZC4gU3BlY2lmaWVkIGluIHNlY29uZHMuACEBIEEgcmVnaXN0cmF0aW9uIGlzIGNyZWF0ZWQgZm9yIGEgc3BlY2lmaWMgcGVyaW9kLiBPbmNlIHRoaXMgcGVyaW9kIGVuZHMsIQEgdGhlIHJlZ2lzdHJhdGlvbiByZW1haW5zIHZhbGlkIGZvciB0aGUgY29uZmlndXJlZCBkdXJhdGlvbiwgYWZ0ZXIgd2hpY2jwIGl0IGNhbiBiZSBjbGVhbmVkIHVwLiBTZWUgYGZyaWVuZF9yZXF1ZXN0X2V4cGlyYXRpb25fdGltZWAuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABOwgTnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluLXdvcmtlciBtYWludGVuYW5jZSBydW5zLgB0TG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb244EAB1EgAUBQEgVGhlIGR1cmF0aW9uIG9mIGEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1pbmcgcGVyaW9kLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzJQEgYG5vd19zZWNzIC8gTG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb25gLiBFYWNoIHBlcnNvbiBjYW4gc3VibWl0IHVwIHRv0CBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYCBjbGFpbXMgcGVyIHBlcmlvZC4AeExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZAwEChAJASBNYXhpbXVtIG51bWJlciBvZiBsb25nLXRlcm0gc3RvcmFnZSBjbGFpbXMgcGVyIHBlcnNvbiBwZXIgcGVyaW9kLgBJASBFYWNoIGNsYWltIHVzZXMgYSBkaWZmZXJlbnQgY291bnRlciB2YWx1ZSAoMC4uY2xhaW1zX3Blcl9wZXJpb2QpIHdoaWNoIHByb2R1Y2VzIGEpASBkaXN0aW5jdCBhbGlhcyBpbiB0aGUgcHJvb2YgY29udGV4dCwgZW5zdXJpbmcgb25lIGNsYWltIHBlciBjb3VudGVyIHNsb3QuAGhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdzgQEA4AABBRASBFeHRyYSB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggdGhlIHByZXZpb3VzIGxvbmctdGVybSBzdG9yYWdlIHBlcmlvZCBpcyBzdGlsbGwgYWNjZXB0ZWQgYWZ0ZXIgYSByb2xsb3Zlci4AWQEgU2FtZSBzZW1hbnRpY3MgYXMgYEZyaWVuZFJlcXVlc3RHcmFjZVdpbmRvd2AgYnV0IGFwcGxpZWQgdG8gbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1zLgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0OBAUAAAAFEkBIE1heGltdW0gbnVtYmVyIG9mIHNwZW50IGxvbmctdGVybSBzdG9yYWdlIGFsaWFzZXMgdGhhdCBjYW4gYmUgY2xlYXJlZCBpbiBhIHNpbmdsZcAgYGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlc2AgY2FsbC4ATQEgQm91bmRzIHRoZSB3b3JzdC1jYXNlIHdlaWdodCBvZiB0aGUgY2xlYW51cCBleHRyaW5zaWM7IGNhbGxlcnMgbXVzdCBwYXNzIGEgYGxpbWl0YHAgbm8gZ3JlYXRlciB0aGFuIHRoaXMgdmFsdWUuAAGNCwAERE9mZmNoYWluU2lnbmF0dXJlNQQIUQEgU2lnbmF0dXJlIHR5cGUgZm9yIGVuc3VyaW5nIG93bmVyc2hpcCBvZiBwcm92aWRlZCBhY2NvdW50cyBpbiBjYXNlIG9mIHJlZ2lzdHJhdGlvbnM8IHRocm91Z2ggYWxpYXMuDCER4N8Z3pVjtYMB5ffgB0M3LT6mizpKqhipWKis1xpDZGN1cnJlbnRfc3RtdF9zdG9yZV9wZXJpb2QAOARRASBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgcGVyaW9kIChkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2gpLgAhEeDfGd6VY7WDAeX34AdDrMglyENevZ01vA216nYOlmxzdG10X3N0b3JlX3Nsb3RfY29udGV4dF9mb3IIGHBlcmlvZDgMc2VxOAgQIQEgUmV0dXJucyB0aGUgcHJvb2YgY29udGV4dCBmb3IgYSBzdGF0ZW1lbnQgc3RvcmUgc2xvdCBjbGFpbSBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4APQEgTGF5b3V0OiBgU1NTX1NMT1Q6PHBlcmlvZCAoNCBieXRlcyBCRSk+PHNlcSAoNCBieXRlcyBCRSk+YCBwYWRkZWQgdG8gMzIgYnl0ZXMuACER4N8Z3pVjtYMB5ffgB0M9g9yLG6WKm3kHcWwZqWL3aGZyaWVuZF9yZXF1ZXN0X2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcQwICCUBIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGF0IHRoZSBnaXZlblAgYHBlcmlvZGAgYW5kIGBzZXFgLgA/AAA0Q2h1bmtzTWFuYWdlcgE0Q2h1bmtzTWFuYWdlcggYQ2h1bmtzAAEIBQWRC5ULBAAEGQEgUGFnaW5hdGVkIGNvbGxlY3Rpb24gb2YgY2h1bmtzIChSaW5nRXhwb25lbnQgLT4gUGFnZUluZGV4IC0+IENodW5rcykuADxDaHVua1BhZ2VIYXNoZXMAAQgFBZELCAQABIggVGhlIGhhc2ggZm9yIGVhY2ggcGFnZSBvZiBjaHVua3MuAAEBBQABNQcABCBQYWdlU2l6ZTgQ/wAAAATMIE51bWJlciBvZiBjaHVua3MgcGVyIHBhZ2UuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uAAGhCwAEFENodW5rmQsEcCBUaGUgdHlwZSBvZiBhIHNpbmdsZSBjaHVuay4AQAAAHE1lbWJlcnMBHE1lbWJlcnNELENvbGxlY3Rpb25zAAEEBgilCwQABOAgSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBjb2xsZWN0aW9uLCBrZXllZCBieSBpZGVudGlmaWVyLgBQU3VzcGVuZGVkQ29sbGVjdGlvbnMAAQQGCKULBAAIIQEgQ29sbGVjdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbiBhbmQgYXJlIGJlaW5nIHByb2Nlc3NlZC5ZASBPbmNlIGEgY29sbGVjdGlvbiBpcyBtb3ZlZCBoZXJlLCBub3JtYWwgb3BlcmF0aW9ucyB3aWxsIGZhaWwgd2l0aCBDb2xsZWN0aW9uTm90Rm91bmQuADRJZGVudGlmaWVyc09mAAEEAqkLsQsEAATMIFRoZSBpZGVudGlmaWVycyBvZiBjb2xsZWN0aW9ucyBvd25lZCBieSBhbiBlbnRpdHkuABBSb290AAEIBgK1C7kLBAAEiCBUaGUgY3VycmVudCBtZW1iZXJzIHdlIHJlY29nbmlzZS4AIE9sZFJvb3RzAAEMBgYGxQvJCwQAJEEBIE9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBmb3IgYSBncmFjZSBwZXJpb2Qgc28gdGhhdCBwcm9vZnMgZ2VuZXJhdGVkIGFnYWluc3RlASBwcmV2aW91cyByZXZpc2lvbnMgcmVtYWluIHZhbGlkLiBFYWNoIHJvb3QgaW4gdGhlIG1hcCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBjb21wb3NpdGUga2V5LQEgYChjb2xsZWN0aW9uLCByaW5nIGluZGV4LCByaW5nIHJldmlzaW9uKWAuIEVudHJpZXMgY2FuIGJlIGNsZWFuZWQgdXAgYWZ0ZXIlASBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uYCBoYXMgcGFzc2VkIHNpbmNlIHRoZSBgYXJjaGl2ZWRfYXRgIHRpbWVzdGFtcC4AOQEgVGhpcyBzdG9yYWdlIGNhbiBjb250YWluIHNvbWUgcm9vdHMgZm9yIGRlbGV0ZWQgY29sbGVjdGlvbnMgb3IgcmVtb3ZlZCByaW5ncy5dASBUaGUgY2FsbCBgdmVyaWZ5X21lbWJlcnNoaXBfYXRfcmV2YCBhbmQgb3RoZXIgb3BlcmF0aW9uIHVzaW5nIG9sZCByb290cyBtdXN0IGNoZWNrIHRoZUEBIGV4aXN0ZW5jZSBvZiB0aGUgY29sbGVjdGlvbiBhbmQgdGhlIHJvb3QgaW4gb3JkZXIgdG8gbm90IHZhbGlkYXRlIGFnYWluc3QgZHVzdC7wIFRoZSBvbGQgcm9vdHMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHRoZSByZXRlbnRpb24gZHVyYXRpb24uAEBDdXJyZW50UmluZ0luZGV4AQEEBgg4EAAAAAAE5CBLZWVwcyB0cmFjayBvZiB0aGUgcmluZyBpbmRleCBjdXJyZW50bHkgYmVpbmcgcG9wdWxhdGVkLgA4T25ib2FyZGluZ1NpemUBAQQGCDgQAAAAAAT4IE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgcXVldWVkIGJlZm9yZSBvbmJvYXJkaW5nIHRvIGEgcmluZy4AIFJpbmdLZXlzAQEMBgIFzQvRCwQAEGEBIEJvdGggdGhlIGtleXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYnVpbHQgcmluZ3MgYW5kIHRoZSBrZXlzIHRoYXQgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZVkBIHJpbmdzLiBQYWdpbmF0ZWQgYnkgKElkZW50aWZpZXIsIFJpbmdJbmRleCwgUGFnZUluZGV4KSB3aGVyZSBlYWNoIHBhZ2UgY29udGFpbnMgdXAgdG91ASBgUmluZ0NhcGFjaXR5RnJvbUV4cG9uZW50YCBrZXlzLiBUaGUgcGFnZSBzaXplIGVxdWFscyB0aGUgZmxleGlibGUgcmluZyBleHBvbmVudCdzIGNhcGFjaXR5LPQgZW5zdXJpbmcgRmxleGlibGUgY29sbGVjdGlvbnMgbmV2ZXIgbmVlZCBtb3JlIHRoYW4gb25lIHBhZ2UuADhSaW5nS2V5c1N0YXR1cwEBCAYCtQvVCyQAAAAAAAAAAAAIYQEgU3RvcmVzIHRoZSBtZXRhIGluZm9ybWF0aW9uIGZvciBlYWNoIHJpbmcsIHRoZSBudW1iZXIgb2Yga2V5cyBhbmQgaG93IG1hbnkgYXJlIGFjdHVhbGx5WCBpbmNsdWRlZCBpbiB0aGUgcm9vdC4ASFBlbmRpbmdTdXNwZW5zaW9ucwEBCAYFtQvZCwQADGkBIEEgbWFwIG9mIGFsbCByaW5ncyB3aGljaCBjdXJyZW50bHkgaGF2ZSBwZW5kaW5nIHN1c3BlbnNpb25zIGFuZCBuZWVkIGNsZWFuaW5nLCBhbG9uZyB3aXRoEQEgdGhlaXIgcmVzcGVjdGl2ZSBudW1iZXIgb2Ygc3VzcGVuZGVkIGtleXMgd2hpY2ggbmVlZCB0byBiZSByZW1vdmVkLm0BIE5vdGU6IEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHNpbmdsZS1wYWdlIHJpbmdzLCBzbyBib3VuZGVkIGJ5IGBSaW5nQ2FwYWNpdHlGcm9tRXhwb25lbnRgLgA0QWN0aXZlTWVtYmVycwEBBAYIOBAAAAAABNAgVGhlIG51bWJlciBvZiBtZW1iZXJzIGN1cnJlbnRseSBpbmNsdWRlZCBpbiBhIHJpbmcuABxNZW1iZXJzAAEIBgLdC+ELBAAYXQEgVGhlIGN1cnJlbnQgbWVtYmVycyBpbiBlYWNoIGNvbGxlY3Rpb24gKGVpdGhlciBpbmNsdWRlZCBpbiByaW5ncywgc3VzcGVuZGVkIGFuZCBxdWV1ZWQhASBmb3IgcmVtb3ZhbCBmcm9tIGEgcmluZywgc3VzcGVuZGVkIGFuZCBub3QgaW4gYW55IHJpbmcsIG9yIG9uYm9hcmRpbmcpLgANASBDb2xsZWN0aW9uIGlkZW50aWZpZXIgdG8gbWVtYmVyIHB1YmxpYyBrZXkgdG8gdGhlIG1lbWJlcidzIHN0YXR1cy4AqCBBIGtleSBjYW4gYmVsb25nIHRvIG11bHRpcGxlIGNvbGxlY3Rpb25zLgAoUmluZ3NTdGF0ZQEBBAYI5QsEAAT8IFRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbCByaW5ncyBtYW5hZ2VkIGZvciBhIGdpdmVuIGlkZW50aWZpZXIuAChTdGFsZVJpbmdzAAEIBgW1CxAEAATMIFNldCBvZiByaW5ncyB3aGljaCBhcmUgc3RhbGUgYW5kIHJlcXVpcmUgYnVpbGRpbmcuAEBRdWV1ZVBhZ2VJbmRpY2VzAQEEBghdByAAAAAAAAAAAAQ5ASBLZWVwcyB0cmFjayBvZiB0aGUgcGFnZSBpbmRpY2VzIG9mIHRoZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBvbmJvYXJkaW5nIHF1ZXVlLgA8T25ib2FyZGluZ1F1ZXVlAQEIBgW1C+0LBAAELQEgUGFnaW5hdGVkIGNvbGxlY3Rpb24gb2YgbWVtYmVyIHB1YmxpYyBrZXlzIHJlYWR5IHRvIGJlIGluY2x1ZGVkIGluIGEgcmluZy4ARFJpbmdEZWxldGlvblF1ZXVlAAEMBgUFzQsQBAAUmCBRdWV1ZSBvZiByaW5nIHBhZ2VzIHBlbmRpbmcgZGVsZXRpb24uABUBIFRoaXMgaXMgdXNlZCBib3RoIGJ5IGByZW1vdmVfcmluZ2AgKGluZGl2aWR1YWwgcmluZyBkZWxldGlvbikgYW5kIGJ5GQEgY29sbGVjdGlvbiBkZWxldGlvbi4gUmluZyBwYWdlcyBhcmUgcHJvY2Vzc2VkIGZyb20gdGhpcyBxdWV1ZSB2aWEgT0NXrCByZWdhcmRsZXNzIG9mIHdoaWNoIG9wZXJhdGlvbiBxdWV1ZWQgdGhlbS4AAREFAAE5BwAYOE1heENvbGxlY3Rpb25zOBBkAAAABMQgTWF4aW11bSBudW1iZXIgb2YgY29sbGVjdGlvbnMgYW4gb3duZXIgY2FuIGhhdmUuAFxPbmJvYXJkaW5nUXVldWVQYWdlU2l6ZTgQ/wAAAAhNASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIGluY2x1ZGVkIGluIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBiZWZvcmUgYSBuZXcgb25lIGlzJCBjcmVhdGVkLgBcTWF4RmxleGlibGVSaW5nRXhwb25lbnQFBQQJDF0BIFRoZSBtYXhpbXVtIHJpbmcgZXhwb25lbnQgdXNlZCBmb3IgRmxleGlibGUgY29sbGVjdGlvbnMuIFRoaXMgYWxzbyBkZXRlcm1pbmVzIHRoZSBwYWdlVQEgc2l6ZSBmb3IgcGFnaW5hdGVkIHJpbmcga2V5IHN0b3JhZ2UuIEZsZXhpYmxlIGNvbGxlY3Rpb25zIGNhbiBvbmx5IHVzZSByaW5nIHNpemVzIHVwPCB0byB0aGlzIHZhbHVlLgBcUmluZ0J1aWxkaW5nTWVtYmVyTGltaXQ4EGQAAAAIYQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBiZSBpbmNsdWRlZCBpbiBhIHJpbmcgdGhyb3VnaCBhIHNpbmdsZSByb290IGJ1aWxkaW5nGCBjYWxsLgBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uKCBYAgAAAAAAAAhRASBEdXJhdGlvbiBpbiBzZWNvbmRzIHRoYXQgb2xkIHJpbmcgcm9vdHMgYXJlIHJldGFpbmVkIGJlZm9yZSB0aGV5IGNhbiBiZSBjbGVhbmVkIHVwLkkBIFRoaXMgYWxsb3dzIHByb29mcyBnZW5lcmF0ZWQgd2l0aCBvbGRlciByb290cyB0byByZW1haW4gdmFsaWQgZm9yIGEgZ3JhY2UgcGVyaW9kLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAAHxCwAEIExvY2F0aW9u4AQ5ASBMb2NhdGlvbiB0eXBlIGZvciBpZGVudGlmeWluZyBjb2xsZWN0aW9uIG93bmVycyBmcm9tIG90aGVyIGNoYWlucy9wYXJhY2hhaW5zLgBDAAAcQ29pbmFnZQEcQ29pbmFnZUAwQ29pbnNCeU93bmVyAAEEBQRxAwQAEEAgQ29pbnMgYnkgb3duZXIuAF0BIFRoaXMgc3RvcmFnZSBtYXAgY29udGFpbnMgYWxsIHRoZSBjb2lucyBjdXJyZW50bHkgY2lyY3VsYXRpbmcuIFRoZSBjb2luIGlzIG1pbnRlZCB3aGVuJQEgdW5sb2FkZWQgZnJvbSB0aGUgcmVjeWNsZXIsIGFuZCBkZXN0cm95ZWQgd2hlbiBsb2FkZWQgaW50byB0aGUgcmVjeWNsZXIuACxMb2NrZWRDb2lucwABBAUE9QsEABAFASBUZW1wb3JhcnkgbG9jayBleHBpcnkgZm9yIGNvaW5zIHRoYXQgcHJldmlvdXNseSBmYWlsZWQgZGlzcGF0Y2guAGUBIEEgY29pbiBvd25lciBlbnRyeSBpcyBsb2NrZWQgdW50aWwgdGhlIHN0b3JlZCBVbml4IHRpbWVzdGFtcCwgcHJldmVudGluZyByZXBlYXRlZCBmYWlsZWSUIGRpc3BhdGNoIGF0dGVtcHRzIGluIGEgc2hvcnQgcGVyaW9kLgBoVG90YWxWYWx1ZU9mRGVzdHJveWVkQ29pbnMBAMRAAAAAAAAAAAAAAAAAAAAAABSoIFRoZSB0b3RhbCB2YWx1ZSBvZiBjb2lucyB0aGF0IHdlcmUgYnVybnQuAGkBIFRoaXMgdHJhY2tzIHZhbHVlIHRoYXQgaXMgaW50ZW50aW9uYWxseSBkZXN0cm95ZWQgYXMgcGFydCBvZiBwcm90b2NvbCBmbG93cyAoZm9yIGV4YW1wbGU6ZQEgcmVjeWNsZXIgZXhwaXJhdGlvbiBjbGVhbnVwIGFuZCBvdXRwdXQtdG9rZW4gc3BhbSBwZW5hbHR5IHBhdGgpLiBUaGlzIHN0b3JhZ2UgaXRlbSBrZWVwc8ggdHJhY2sgb2YgdGhlIHRvdGFsIHZhbHVlIG9mIHN1Y2ggZGVzdHJveWVkIGNvaW5zLgBgQ29uc3VtZWRGcmVlVW5sb2FkVG9rZW5zAAEIBQVdChAEABjEIENvbnN1bWVkIGZyZWUgdW5sb2FkIHRva2VucyBieSBwZXJpb2QgYW5kIGFsaWFzLgBVASBUaGlzIHN0b3JhZ2Uga2VlcHMgdHJhY2sgb2YgdGhlIGZyZWUgdW5sb2FkIHRva2VucyB0aGF0IGhhdmUgYmVlbiBjb25zdW1lZCBieSBwZW9wbGWsIGFuZCBsaXRlIHBlb3BsZSwgdG8gYXZvaWQgZG91YmxlIHNwZW5kaW5nLgBwIEl0IGlzIGNsZWFyZWQgcGVyaW9kaWNhbGx5LgBkUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZAABBAV1AxAEAEgRASBUcmFja3Mgd2hldGhlciBhIHJlY3ljbGVyIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGdpdmVuIGNvaW4gdmFsdWUuADEBIFJlY3ljbGVyIGNvbGxlY3Rpb25zIGFyZSBub3JtYWxseSBjcmVhdGVkIGVhZ2VybHkgZHVyaW5nIG9uZS10aW1lIGBvbl9wb2xsYNwgaW5pdGlhbGl6YXRpb24gYWZ0ZXIgYFVuZGVybHlpbmdBc3NldElkYCBoYXMgYmVlbiBzZXQuHQEgW2BSZWN5Y2xlck1hbmFnZXI6OmVuc3VyZV9jb2xsZWN0aW9uX2V4aXN0c2BdIHJlbWFpbnMgdGhlIGZhbGxiYWNrIGZvcgEBIGZpcnN0LXVzZSBvciByZWNvdmVyeSBwYXRocyB3aGVuIGEgY29sbGVjdGlvbiBpcyBzdGlsbCBtaXNzaW5nLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AdFJlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4AAEEBXUDOAQAQMQgTGFzdCByZW1vdmVkIHJpbmcgaW5kZXggcGVyIHJlY3ljbGVyIGNvaW4gdmFsdWUuAEUBIFJpbmdzIGFyZSByZW1vdmVkIHNlcXVlbnRpYWxseSBzdGFydGluZyBmcm9tIGluZGV4IDAuIFRoZSBuZXh0IHJpbmcgdG8gY2hlY2sgZm9yLQEgZXhwaXJhdGlvbiBpcyBgbGFzdF9yZW1vdmVkICsgMWAgKG9yIGAwYCBpZiBub3RoaW5nIGhhcyBiZWVuIHJlbW92ZWQgeWV0KS4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFxSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcgABBAUIdQMEAEARASBNYXBwaW5nIGZyb20gYSByZWN5Y2xlciBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGJlbG9uZ3MgdG8uAE0BIFdoZW4gYSBjb2luIGlzIGxvYWRlZCBpbnRvIGEgcmVjeWNsZXIsIHRoZSBtZW1iZXIga2V5IGlzIHJlY29yZGVkIGhlcmUgc28gdGhhdCB0aGUNASBwYWxsZXQgY2FuIGxvb2sgdXAgd2hpY2ggY29pbiB2YWx1ZSB0aGUgbWVtYmVyIGtleSBjb3JyZXNwb25kcyB0by4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAERSZWN5Y2xlcnNVbmxvYWRlZAABDAUFBf0LEAQAQDUBIFRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgKGNvaW4gdmFsdWUsIHJpbmcgaW5kZXgsIGFsaWFzKS4AVQEgV2hlbiBhIGNvaW4gaXMgdW5sb2FkZWQgZnJvbSBhIHJlY3ljbGVyLCB0aGUgYWxpYXMgcHJvZHVjZWQgYnkgdGhlIHJpbmctVlJGIHByb29mIGlzGQEgc3RvcmVkIGhlcmUgdG8gcHJldmVudCBkb3VibGUtc3BlbmRpbmcgd2l0aGluIHRoZSBzYW1lIHJlY3ljbGVyIHJpbmcuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpBASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGNvaW4gdmFsdWUuVQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGNvaW4gdmFsdWUuWQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGlzIGluLmEBICogW1JlY3ljbGVyc1VubG9hZGVkXSAtIHRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgY29pbiB2YWx1ZSBhbmQgcmluZyQgICBpbmRleC4pASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBAUmVjeWNsZXJzRHVzdGluZwABBAUBDBAEAEgFASBNYXJrcyByZWN5Y2xlciByaW5ncyB0aGF0IGhhdmUgdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuACEBIFdoZW4gYSByZWN5Y2xlciByaW5nIGlzIHJlbW92ZWQsIHRoZSBjbGVhbnVwIG9mIGl0cyB1bmxvYWRlZCBhbGlhc2VzIGluUQEgW1JlY3ljbGVyc1VubG9hZGVkXSBpcyBwZXJmb3JtZWQgZ3JhZHVhbGx5IHRocm91Z2ggdGhpcyBzdG9yYWdlIGl0ZW0uIEFuIGVudHJ5IGhlcmVRASBpbmRpY2F0ZXMgdGhhdCB1bmxvYWRlZCBhbGlhc2VzIGZvciB0aGUgZ2l2ZW4gY29pbiB2YWx1ZSBhbmQgcmluZyBpbmRleCBzdGlsbCBleGlzdFggYW5kIHNob3VsZCBiZSBkdXN0ZWQuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpBASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGNvaW4gdmFsdWUuVQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGNvaW4gdmFsdWUuWQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGlzIGluLmEBICogW1JlY3ljbGVyc1VubG9hZGVkXSAtIHRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgY29pbiB2YWx1ZSBhbmQgcmluZyQgICBpbmRleC4pASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBYUGFpZFVubG9hZFRva2VuTWVtYmVycwABBAUIEAQAOAkBIE1hcHBpbmcgZnJvbSBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSB0byB0aGUgcGVyaW9kIGl0IGJlbG9uZ3MgdG8uAEUBIFdoZW4gYSB1c2VyIHBheXMgZm9yIGEgcmVjeWNsZXIgdW5sb2FkIHRva2VuLCB0aGUgbWVtYmVyIGtleSBpcyByZWNvcmRlZCBoZXJlIHNvIQEgdGhhdCB0aGUgcGFsbGV0IGNhbiBsb29rIHVwIHdoaWNoIHBlcmlvZCB0aGUgbWVtYmVyIGtleSBjb3JyZXNwb25kcyB0by4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFBhaWRVbmxvYWRUb2tlbkNvbnN1bWVkAAEMBgUFdQsQBAA49CBDb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kLCByaW5nIGluZGV4IGFuZCBhbGlhcy4ASQEgV2hlbiBhIHBhaWQgdW5sb2FkIHRva2VuIGlzIGNvbnN1bWVkLCB0aGUgYWxpYXMgcHJvZHVjZWQgYnkgdGhlIHJpbmctVlJGIHByb29mIGlz9CBzdG9yZWQgaGVyZSB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyB3aXRoaW4gdGhlIHNhbWUgcmluZy4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AbFBhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZAABBAZpCxAEADgJASBUcmFja3Mgd2hldGhlciBhIHBhaWQgdG9rZW4gY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgZ2l2ZW4gcGVyaW9kLgBVASBVc2VzIGBJZGVudGl0eWAgaGFzaGVyIHNvIHRoYXQgaXRlcmF0aW9uIHlpZWxkcyBwZXJpb2RzIGluIG9yZGVyLCBlbmFibGluZyBlZmZpY2llbnRwIGNsZWFudXAgb2YgZXhwaXJlZCBwZXJpb2RzLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBYUGFpZFVubG9hZFRva2VuRHVzdGluZwABBAZpCxAEAEAtASBNYXJrcyBwYWlkIHVubG9hZCB0b2tlbiBwZXJpb2RzIHRoYXQgaGF2ZSBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBZASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBpcyByZW1vdmVkLCB0aGUgY2xlYW51cCBvZiBpdHMgY29uc3VtZWQgdG9rZW5zIGluVQEgW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSBpcyBwZXJmb3JtZWQgZ3JhZHVhbGx5IHRocm91Z2ggdGhpcyBzdG9yYWdlIGl0ZW0uIEFuIGVudHJ5TQEgaGVyZSBpbmRpY2F0ZXMgdGhhdCBjb25zdW1lZCB0b2tlbnMgZm9yIHRoZSBnaXZlbiBwZXJpb2Qgc3RpbGwgZXhpc3QgYW5kIHNob3VsZCBiZSAgZHVzdGVkLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgB4UGFpZFVubG9hZFRva2VuTmV4dFJpbmdUb0NsZWFuAAEEBmkLOAQAYPQgVHJhY2tzIHRoZSBuZXh0IHJpbmcgaW5kZXggdG8gY2xlYW4gZm9yIGVhY2ggZXhwaXJlZCBwZXJpb2QuADUBIFVzZWQgYnkgdGhlIE9DVyB0byBkZXRlcm1pbmUgY2xlYW51cCBwcm9ncmVzcyBhbmQgYnkgdGhlIGNvbGxlY3Rpb24gZGVsZXRpb27EIGV4dHJpbnNpYyB0byB2ZXJpZnkgYWxsIHJpbmdzIGhhdmUgYmVlbiBjbGVhbmVkLgA9ASBSaW5ncyBhcmUgY2xlYW5lZCBzZXF1ZW50aWFsbHkgKG9uZSBwZXIgT0NXIGludGVydmFsKSByYXRoZXIgdGhhbiBhbGwgYXQgb25jZS49ASBUaGlzIGlzIGludGVudGlvbmFsOiBhIHNpbmdsZSBzdG9yYWdlIGN1cnNvciBlbmFibGVzIE8oMSkgY29tcGxldGlvbiBjaGVja3MgaW7MIGJvdGggW2BQYWlkVGtuTWFuYWdlcjo6ZW5zdXJlX2Nhbl9jbGVhbl9yaW5nYF0gYW5kRQEgW2BQYWlkVGtuTWFuYWdlcjo6ZW5zdXJlX2Nhbl9kZWxldGVfY29sbGVjdGlvbmBdLiBUaGUgYWx0ZXJuYXRpdmUg4oCUIHN1Ym1pdHRpbmdVASBhbGwgcmluZyBjbGVhbnMgaW4gcGFyYWxsZWwg4oCUIHdvdWxkIHJlcXVpcmUgZmV0Y2hpbmcgcmluZyBtZW1iZXJzIHRvIGNoZWNrIHdoZXRoZXJNASBlYWNoIHJpbmcgd2FzIGFscmVhZHkgY2xlYW5lZCAoc2luY2UgYHJpbmdfc3RhdHVzYCBzdGlsbCByZXBvcnRzIGB0b3RhbCA+IDBgIGFmdGVyVQEgY2xlYW51cCBiZWNhdXNlIHJpbmdzIGFyZSBub3QgcmVtb3ZlZCB1bnRpbCBjb2xsZWN0aW9uIGRlbGV0aW9uKS4gQ2xlYW51cCBvZiBleHBpcmVkTQEgY29sbGVjdGlvbnMgaXMgbm90IHRpbWUtY3JpdGljYWwsIHNvIHRoZSBzaW1wbGVyIHNlcXVlbnRpYWwgYXBwcm9hY2ggaXMgcHJlZmVycmVkLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuHQEgKiBbUGFpZFVubG9hZFRva2VuTmV4dFJpbmdUb0NsZWFuXSAtIHNlcXVlbnRpYWwgcmluZyBjbGVhbnVwIHByb2dyZXNzLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXEluaXRpYWxpemVQYWxsZXRBY2NvdW50AAAQBAAY0CBXaGV0aGVyIHRoZSBvbmUtdGltZSBwYWxsZXQgaW5pdGlhbGl6YXRpb24gaGFzIHJ1bi4AWQEgU2V0IGJ5IFtgUGFsbGV0Ojpkb19pbml0aWFsaXplYF0gb25jZSByZWN5Y2xlciBjb2xsZWN0aW9ucyBhcmUgY3JlYXRlZCBhbmQgdGhlIHBhbGxldD0BIGFjY291bnQgaGFzIGJlZW4gZW5zdXJlZCB0byBob2xkIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgW2BVbmRlcmx5aW5nQXNzZXRJZGBdLlEBIEluaXRpYWxpemF0aW9uIGlzIGdhdGVkIG9uIGBVbmRlcmx5aW5nQXNzZXRJZGAgYmVpbmcgc2V0LCBzbyB0aGlzIHN0YXlzIHVuc2V0IHVudGls7CBnb3Zlcm5hbmNlIGhhcyBjYWxsZWQgW2BQYWxsZXQ6OnNldF91bmRlcmx5aW5nX2Fzc2V0X2lkYF0uAERVbmRlcmx5aW5nQXNzZXRJZAAA4AQAGJwgVGhlIHVuZGVybHlpbmcgYXNzZXQgaWQgZm9yIHRoZSBjb2lucy4A1CBTZXQgb25jZSBieSBbYENvbmZpZzo6VW5kZXJseWluZ0Fzc2V0SWRNYW5hZ2VyYF0gdmlhVQEgW2BQYWxsZXQ6OnNldF91bmRlcmx5aW5nX2Fzc2V0X2lkYF0uIFdoaWxlIHVuc2V0LCBldmVyeSBjb2luL3JlY3ljbGVyIG9wZXJhdGlvbiB0aGF0DQEgbmVlZHMgdGhlIHVuZGVybHlpbmcgYXNzZXQgZmFpbHMgd2l0aCBbYEVycm9yOjpBc3NldElkTm90U2V0YF0gKG9yKQEgW2BDdXN0b21JbnZhbGlkaXR5OjpBc3NldElkTm90U2V0YF0gaW4gdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhbGlkYXRpb24pLgABFQUAAT0HAEBQUmVjeWNsZXJSaW5nRXhwb25lbnQFBQQKBLAgVGhlIHJpbmcgZXhwb25lbnQgZm9yIHJlY3ljbGVyIGNvbGxlY3Rpb25zLgBsUGFpZFVubG9hZFRva2VuUmluZ0V4cG9uZW50BQUECgTUIFRoZSByaW5nIGV4cG9uZW50IGZvciBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9ucy4ATFVuZGVybHlpbmdBc3NldFVuaXTEQBAnAAAAAAAAAAAAAAAAAAAEvCBUaGUgdW5pdCBvZiB0aGUgdW5kZXJseWluZyBhc3NldCBvZiB0aGUgY29pbnMuADxNaW5pbXVtRXhwb25lbnR1AwQABKQgVGhlIG1pbmltdW0gZXhwb25lbnQgZm9yIHRoZSBjb2luIHZhbHVlLgA8TWF4aW11bUV4cG9uZW50dQMEDgSkIFRoZSBtYXhpbXVtIGV4cG9uZW50IGZvciB0aGUgY29pbiB2YWx1ZS4AhE1pbmltdW1FeHBvbmVudEZvck91dHB1dFVubG9hZEZlZXUDBAAgXQEgVGhlIG1pbmltdW0gY29pbiBleHBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BhdGNoIGEgY2FsbCBgdW5sb2FkX3JlY3ljbGVyXypgIHdpdGjUIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0YC4AYQEgVGhpcyBlbnN1cmVzIHRoZSBmZWUgY29pbiBpcyBsYXJnZSBlbm91Z2ggdG8gcGVuYWxpemUgZmFpbGluZyB0cmFuc2FjdGlvbnMsIGJ1dCBpdCBkb2VzuCBub3QgbmVlZCB0byBjb3ZlciB0aGUgd2hvbGUgdW5sb2FkIHRva2VuIGZlZS4AUQEgVGhlIGhlbHBlciBmdW5jdGlvbiBgd2VpZ2h0X2Zvcl91bmxvYWRfcmVjeWNsZXJfcGF5aW5nX3VzaW5nX291dHB1dGAgY2FuIGJlIHVzZWQgdG/MIGV2YWx1YXRlIHRoZSB3b3JzdC1jYXNlIHdlaWdodCBmb3IgdGhpcyBvcGVyYXRpb24uADxNYXhTcGxpdE91dHB1dHM4ECAAAAAErCBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3V0cHV0cyBmb3IgYSBzcGxpdC4AQE1heENvbnNvbGlkYXRpb244EEAAAAAE3CBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWxpYXMgcHJvb2ZzIGluIGEgY29uc29saWRhdGlvbi4ASE1heEJhdGNoVW5wYWlkTG9hZDgQCgAAAAi4IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbm5lciBjYWxscyBpbiBhIHNpbmdsZQ0BIFtgQ2FsbDo6bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZF9iYXRjaGBdIGRpc3BhdGNoLgCUVW5sb2FkVG9rZW5UaW1lUGVyaW9kUGVvcGxlTGl0ZVBlb3BsZTgQgFEBAATgIFRoZSB0aW1lIHBlcmlvZCBkdXJhdGlvbiBmb3IgdW5sb2FkIHRva2VucywgaW4gc2Vjb25kcy4AqFVubG9hZFRva2VuQWxsb3dhbmNlUGVyVGltZVBlcmlvZEZvclBlb3BsZcRAgIQeAAAAAAAAAAAAAAAAABRdASBUaGUgYWxsb3dhbmNlIG9mIHVubG9hZCB0b2tlbnMgdGhhdCBhIHBlcnNvbiBjYW4gdXNlIHBlciB0aW1lIHBlcmlvZCwgZXhwcmVzc2VkIGluIHRoZUggdW5kZXJseWluZyBhc3NldC4AVQEgVXNlIHBhbGxldCB2aWV3IHRvIGZldGNoIHRoZSBjb3JyZXNwb25kaW5nIG51bWJlciBvZiB1bmxvYWQgdG9rZW5zIGdpdmVuIHRoZSBjdXJyZW50ZCBwcmljZSBmb3IgdW5sb2FkIHRva2Vucy4AuFVubG9hZFRva2VuQWxsb3dhbmNlUGVyVGltZVBlcmlvZEZvckxpdGVQZW9wbGXEQCChBwAAAAAAAAAAAAAAAAAUYQEgVGhlIGFsbG93YW5jZSBvZiB1bmxvYWQgdG9rZW5zIHRoYXQgYSBsaXRlIHBlcnNvbiBjYW4gdXNlIHBlciB0aW1lIHBlcmlvZCwgZXhwcmVzc2VkIGluWCB0aGUgdW5kZXJseWluZyBhc3NldC4AWQEgVXNlIHBhbGxldCdzIGdldF9mcmVlX3VubG9hZF90b2tlbl9pbmZvKCkgdG8gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgbnVtYmVyIG9mIHVubG9hZMggdG9rZW5zIGdpdmVuIHRoZSBjdXJyZW50IHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgCATWF4RnJlZVVubG9hZFRva2Vuc1BlclRpbWVQZXJpb2Q4EOgDAAAQGQEgSGFyZCB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGZyZWUgdW5sb2FkIHRva2VucyBwZXIgdGltZSBwZXJpb2QuAIwgVGhlIGVmZmVjdGl2ZSBmcmVlIHRva2VuIGxpbWl0IGlzOgkBIGBtaW4oYWxsb3dhbmNlIC8gY3VycmVudF9mZWUsIE1heEZyZWVVbmxvYWRUb2tlbnNQZXJUaW1lUGVyaW9kKWAuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBAEAAAABOQgVGhlIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AVENvaW5GYWlsdXJlTG9ja1BlcmlvZCggPAAAAAAAAAAQUQEgVGhlIGJhc2UgbnVtYmVyIG9mIHNlY29uZHMgdG8gbG9jayBhIGNvaW4gYWZ0ZXIgYSBmYWlsZWQgZGlzcGF0Y2ggaW4gYEFzQ29pbmAgZmxvdy4APQEgVGhlIGFjdHVhbCBsb2NrIGR1cmF0aW9uIGlzIGV4cG9uZW50aWFsOiBgMl5yZXRyaWVzICogYmFzZWAgd2hlcmUgYHJldHJpZXNgIGlzkCB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzLgA4cGFsbGV0X2FjY291bnQEgG1vZGxjb2luYWdlIAAAAAAAAAAAAAAAAAAAAAAAAAAABHggVGhlIGFjY291bnQgaWQgb2YgdGhlIHBhbGxldC4AAQUMAABEesJxLIp2pSrDuhCikCHsmfkvJO5tPVdJfo88UmFcYWFoZ2V0X2ZyZWVfdW5sb2FkX3Rva2VuX2luZm8ACQwkTQEgR2V0IHRoZSBjdXJyZW50IG51bWJlciBvZiBmcmVlIHVubG9hZCB0b2tlbnMgZGlzdHJpYnV0ZWQgdG8gcGVvcGxlIGFuZCBsaXRlIHBlb3BsZawgZ2l2ZW4gdGhlIGN1cnJlbnQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuAF0BIElmIGFuIGVsZW1lbnQgaXMgYE5vbmVgLCBubyBwcmljZSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBjb252ZXJzaW9uIGJldHdlZW4gbmF0aXZlxCBhbmQgdGhlIHVuZGVybHlpbmcgYXNzZXQgbmVlZHMgdG8gYmUgY29uZmlndXJlZC4AuCBSZXR1cm5zOiBgKGxpbWl0X3Blb3BsZSwgbGltaXRfbGl0ZV9wZW9wbGUpYC4A6CBFYWNoIGVsZW1lbnQgaXMgYE5vbmVgIHdoZW4gaXRzIGxpbWl0IGNhbm5vdCBiZSBjb21wdXRlZC4AesJxLIp2pSrDuhCikCHsmXPdGYKfacSTnvrLZoqsg6tgZ2V0X3JlY3ljbGVyX3Jpbmdfc3RhdHVzCBR2YWx1ZXUDFGluZGV4OA0MBOggR2V0IHRoZSByaW5nIHN0YXR1cyBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7JlI2ljtqFXqlVC+vSqiW33yaGdldF9yZWN5Y2xlcl9yaW5nX3JldmlzaW9uCBR2YWx1ZXUDFGluZGV4OAkDBPAgR2V0IHRoZSByaW5nIHJldmlzaW9uIGZvciBhIHJlY3ljbGVyIGF0IGEgZ2l2ZW4gcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmbXvxoCaa/NrA65X9MZsBIloZ2V0X3BhaWRfdG9rZW5fcmluZ19zdGF0dXMIGHBlcmlvZDgUaW5kZXg4DQwEHQEgR2V0IHRoZSByaW5nIHN0YXR1cyBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZoPbDEPaoKp98du8gf/2eNXBnZXRfcGFpZF90b2tlbl9yaW5nX3JldmlzaW9uCBhwZXJpb2Q4FGluZGV4OAkDBCUBIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZbrxV6ZzX4j5zJePs/NmbZohnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0ALUIEBEBIEdldCB0aGUgY3VycmVudCBmZWUgaW4gdGhlIHVuZGVybHlpbmcgYXNzZXQgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AXQEgSWYgbm9uZSBpcyByZXR1cm5lZCBpdCBtZWFucyB0aGF0IG5vIHByaWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUsIGFuZCBzb21lIGNvbnZlcnNpb24BASBiZXR3ZWVuIG5hdGl2ZSBhbmQgdGhlIHVuZGVybHlpbmcgYXNzZXQgbmVlZHMgdG8gYmUgY29uZmlndXJlZC4AesJxLIp2pSrDuhCikCHsmc69RKDPUdW6mU9sD+As6eqMZ2V0X3BhaWRfdW5sb2FkX3Rva2VuX2ZlZV9pbl9uYXRpdmUAxAQNASBHZXQgdGhlIGN1cnJlbnQgZmVlIGluIHRoZSBuYXRpdmUgY3VycmVuY3kgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AesJxLIp2pSrDuhCikCHsmZ5ekF5ZqkCfsYBreJmmF4VEZ2V0X2NvaW5fYnlfb3duZXIEFG93bmVyBBEMBIQgR2V0IGNvaW4gZGV0YWlscyBmb3IgYW4gYWNjb3VudC4AesJxLIp2pSrDuhCikCHsmdqcFukkgqX3o5fxn/ykfxpMZ2V0X2NvaW5fbG9ja191bnRpbAQUb3duZXIEFQMMVQEgR2V0IHRoZSBVbml4IHRpbWVzdGFtcCB1bnRpbCB3aGljaCBhIGNvaW4gaXMgY3VycmVudGx5IGxvY2tlZCBhZnRlciBmYWlsZWQgZGlzcGF0Y2guAEkBIFJldHVybnMgYE5vbmVgIHdoZW4gdGhlcmUgaXMgbm8gbG9jayBvciB3aGVuIHRoZSBzdG9yZWQgbG9jayBoYXMgYWxyZWFkeSBleHBpcmVkLgB6wnEsinalKsO6EKKQIeyZZGMoqHl4CvwS4UJZYBFgUGBnZXRfcmVjeWNsZXJfbWVtYmVyX2luZm8EGG1lbWJlcggVDATcIEdldCB0aGUgY29pbiB2YWx1ZSBmb3IgYSBzcGVjaWZpYyByZWN5Y2xlciBtZW1iZXIga2V5LgB6wnEsinalKsO6EKKQIeyZTyIHCkN80VRC5T6JoCpodFBpc19wYWlkX3Rva2VuX21lbWJlcgQYbWVtYmVyCMgE1CBDaGVjayB3aGV0aGVyIGEgcGFpZCB0b2tlbiBtZW1iZXIga2V5IGlzIHJlZ2lzdGVyZWQuAHrCcSyKdqUqw7oQopAh7Jks9kdkITNhnX8ePLxduHs4UGdldF9yZWN5Y2xlcl9tZW1iZXJzCBR2YWx1ZXUDFGluZGV4OFUECOAgR2V0IHRoZSBtZW1iZXJzIG9mIGEgcmVjeWNsZXIgcmluZyAodGhlIGFub255bWl0eSBzZXQpLg0BIFJlcXVpcmVkIHRvIGJ1aWxkIHRoZSByaW5nIGNvbW1pdG1lbnQgKGFjY3VtdWxhdG9yKSBmb3IgdGhlIHByb29mLgB6wnEsinalKsO6EKKQIeyZ8Tj8IGjyPgD2VQ7tzmJPYWxnZXRfcGFpZF90b2tlbl9yaW5nX21lbWJlcnMIGHBlcmlvZDgUaW5kZXg4VQQI6CBHZXQgdGhlIG1lbWJlcnMgb2YgYSBwYWlkIHRva2VuIHJpbmcgKHRoZSBhbm9ueW1pdHkgc2V0KS4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmQXaqDoiMYVpbiXsgeSyfIZoaXNfcmVjeWNsZXJfYWxpYXNfdW5sb2FkZWQMFHZhbHVldQMUaW5kZXg4FGFsaWFzCMgM9CBDaGVjayBpZiBhIHJlY3ljbGVyIGFsaWFzIGhhcyBhbHJlYWR5IGJlZW4gdW5sb2FkZWQgKHNwZW50KS4A8CBJZiB0aGUgcmVjeWNsZXIgaXMgbm90IGxpdmUsIHRoZSByZXN1bHQgaXMgbm90IHNpZ25pZmljYW50LgB6wnEsinalKsO6EKKQIeyZLo2LKpvECMha5KAFiFfQj3Bpc19wYWlkX3Rva2VuX2FsaWFzX2NvbnN1bWVkDBhwZXJpb2Q4FGluZGV4OBRhbGlhcwjIDMAgQ2hlY2sgaWYgYSBwYWlkIHVubG9hZCB0b2tlbiBoYXMgYmVlbiBjb25zdW1lZC4A9CBJZiB0aGUgcGVyaW9kIGlzIG5vdCBjdXJyZW50LCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmb8S0HqINh0O9TXsi1wZ5dNwaXNfZnJlZV90b2tlbl9hbGlhc19jb25zdW1lZAgYcGVyaW9kOBRhbGlhcwjIDMAgQ2hlY2sgaWYgYSBmcmVlIHVubG9hZCB0b2tlbiBoYXMgYmVlbiBjb25zdW1lZC4A9CBJZiB0aGUgcGVyaW9kIGlzIG5vdCBjdXJyZW50LCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmZGzLy68Hyv53pXKQlnduMW4d2VpZ2h0X2Zvcl91bmxvYWRfcmVjeWNsZXJfcGF5aW5nX3VzaW5nX291dHB1dADVARQxASBHZXQgdGhlIHdvcnN0LWNhc2Ugd2VpZ2h0IGZvciBhIHRyYW5zYWN0aW9uIHVzaW5nIG91dHB1dC1iYXNlZCBmZWUgcGF5bWVudC4AKQEgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBtYXhpbXVtIHdlaWdodCBmb3IgdHJhbnNhY3Rpb25zIGRpc3BhdGNoZWQgd2l0aFUBIGBBc1VubG9hZFRva2VuRnJvbU91dHB1dGAsIHVzZWZ1bCBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uIHRvIGZpbmQgYSBnb29kIHZhbHVlIGZvcpQgYE1pbmltdW1FeHBvbmVudEZvck91dHB1dFVubG9hZEZlZWAuAEQAADxNZW1iZXJzTm90aWZpZXIBPE1lbWJlcnNOb3RpZmllcjAsU3Vic2NyaWJlcnMAAQQGnBkMBAAEQQEgU3Vic2NyaWJlciByZWdpc3RyeSB3aXRoIHRoZWlyIHN1YnNjcmliZWQgY29sbGVjdGlvbnMgYW5kIGluaXRpYWxpemF0aW9uIHN0YXRlLgBUQ291bnRlckZvclN1YnNjcmliZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAATFNlYWxlZEJhdGNoU2VxdWVuY2UBACggAAAAAAAAAAAMiCBTZXF1ZW5jZSBudW1iZXIgZm9yIHNlYWxlZCBiYXRjaC70IEluY3JlbWVudGVkIHdoZW4gYSBiYXRjaCBpcyBzZWFsZWQgLSByZWFkeSBmb3IgZGlzdHJpYnV0aW9uLvAgU2VydmVzIGFzIHRoZSBiYXRjaCBpZGVudGlmaWVyIGZvciByZXBsYXkgYW5kIGRpc3RyaWJ1dGlvbi4AJFBhZ2VTdGF0ZQEAHQwgAAAAAAAAAAAE8CBQYWdpbmcgc3RhdGU6IHdyaXRlIHBhZ2UsIHNlbmQgcGFnZSwgYW5kIGxhc3QgdXBkYXRlIGJsb2NrLgA4UGVuZGluZ1VwZGF0ZXMAAQwGBgYhDBAEAAx8IENoYW5nZWQgcmluZyByb290IGtleXMsIHBhZ2VkLjEBIEtleTogKHBhZ2VfaW5kZXgsIGlkZW50aWZpZXIsIHJpbmdfaW5kZXgpLiBQb3B1bGF0ZWQgYnkgYE9uUmluZ1Jvb3RDaGFuZ2VgLDkBIGNvbnN1bWVkIGJ5IGBlbnF1ZXVlX3VwZGF0ZXNgIG9uZSBwYWdlIGF0IGEgdGltZSBmcm9tIGBQYWdlU3RhdGU6OnNlbmRfcGFnZWAuAEBQYWdlVXBkYXRlc0NvdW50AQEEBi0DOBAAAAAABLQgUGVyLXBhZ2UgY291bnQgb2YgZW50cmllcyBpbiBQZW5kaW5nVXBkYXRlcy4ALFBlbmRpbmdJbml0AAEEBpwlDAQABLwgU3RhdGUgZm9yIHBhZ2luYXRlZCBzdWJzY3JpYmVyIGluaXRpYWxpemF0aW9uLgBUQ291bnRlckZvclBlbmRpbmdJbml0AQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASFNlYWxlZEJhdGNoSW5kaWNlcwABBAYIaQUEAATcIEluZGljZXMgcGVyIGNvbGxlY3Rpb24gZm9yIHRoZSBzZWFsZWQgKGN1cnJlbnQpIGJhdGNoLgAwQ3VycmVudEJhdGNoAAApDAQABIggQ3VycmVudCBiYXRjaCBkaXN0cmlidXRpb24gc3RhdGUuAGxTdWJzY3JpYmVyc1dpdGhDdXJyZW50QmF0Y2gAAQQGnBAEAAToIFRyYWNrcyB3aGljaCBzdWJzY3JpYmVycyBoYXZlIHJlY2VpdmVkIHRoZSBjdXJyZW50IGJhdGNoLgA4TGFzdFJlcGxheVRpbWUAAQgGBi0MKAQACNAgTGFzdCByZXBsYXkgdGltZSBwZXIgKHN1YnNjcmliZXIsIGNvbGxlY3Rpb24pIHBhaXIu0CBVc2VkIHRvIGVuZm9yY2UgYSBjb29sZG93biBiZXR3ZWVuIHJlcGxheSByZXF1ZXN0cy4AAVUFAAFBBwAoOE1heFN1YnNjcmliZXJzOBAKAAAABJwgTWF4aW11bSBudW1iZXIgb2Ygc3Vic2NyaWJlcnMgYWxsb3dlZC4ASE1heFVwZGF0ZXNQZXJCYXRjaDgQCgAAAARsIE1heGltdW0gdXBkYXRlcyBwZXIgYmF0Y2guAGxNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI4EAMAAAAEzCBNYXhpbXVtIGNvbGxlY3Rpb25zIGEgc3Vic2NyaWJlciBjYW4gc3Vic2NyaWJlIHRvLgA4TWF4Q29sbGVjdGlvbnM4EGQAAAAEkCBNYXhpbXVtIG51bWJlciBvZiByaW5nIGNvbGxlY3Rpb25zLgBMVXBkYXRlVHJpZ2dlckJsb2NrczgQAQAAAATEIE1pbmltdW0gbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIHVwZGF0ZSBiYXRjaGVzLgBYVXBkYXRlVHJpZ2dlclRocmVzaG9sZDgQAQAAAATsIE1pbmltdW0gbnVtYmVyIG9mIHVwZGF0ZXMgdG8gdHJpZ2dlciBpbW1lZGlhdGUgYmF0Y2ggc2VuZC4AZFJlcXVlc3RSZXBsYXlSZW1vdGVXZWlnaHTVAQxBnAAEJQEgUGVyLWluZGV4IHdlaWdodCBzdXJjaGFyZ2UgZm9yIHJlbW90ZSBleGVjdXRpb24gb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABNwgTWluaW11bSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIHJ1bnMuAERTdHVja0JhdGNoVGltZW91dDgQZAAAAATkIE51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggYSBzdHVjayBiYXRjaCBpcyBhYmFuZG9uZWQuAFRSZXBsYXlDb29sZG93blNlY29uZHMoIDwAAAAAAAAABFkBIENvb2xkb3duLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHJlcGxheSByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgc3Vic2NyaWJlciBhbmQgY29sbGVjdGlvbi4AATEMAAAARQAAVFN0b3JhZ2VJbml0aWFsaXphdGlvbgFUU3RvcmFnZUluaXRpYWxpemF0aW9uCDBPblBvbGxTdGF0dXMBADUMBAAE9CBDdXJyZW50IHN0YXRlIG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGluIG9uX3BvbGwgaG9vay4AWFhjbVRyYW5zZmVySW5pdGlhdGVkQXQAADgEAAi4IEJsb2NrIG51bWJlciB3aGVuIFhDTSB0cmFuc2ZlciB3YXMgaW5pdGlhdGVkLoAgVXNlZCB0byB0cmFjayB0cmFuc2ZlciB0aW1lb3V0LgAAAUUHAAAAAAA8AABkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQFkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQQwT25Qb2xsU3RhdHVzAQA5DAQABPQgQ3VycmVudCBzdGF0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBvbl9wb2xsIGhvb2suAAABSQcAAAAAAEEAAFBNdWx0aUJsb2NrTWlncmF0aW9ucwFQTXVsdGlCbG9ja01pZ3JhdGlvbnMIGEN1cnNvcgAAdQUEAAzYIFRoZSBjdXJyZW50bHkgYWN0aXZlIG1pZ3JhdGlvbiB0byBydW4gYW5kIGl0cyBjdXJzb3IuALwgYE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIG1pZ3JhdGlvbiBpcyBydW5uaW5nLgAgSGlzdG9yaWMAAQQFiQUQBAAQtCBTZXQgb2YgYWxsIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCBtaWdyYXRpb25zLgBxASBUaGlzIGlzIHVzZWQgYXMgYmxhY2tsaXN0LCB0byBub3QgcmUtZXhlY3V0ZSBtaWdyYXRpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiByZW1vdmVkIGZyb20gdGhlMQEgY29kZWJhc2UgeWV0LiBHb3Zlcm5hbmNlIGNhbiByZWd1bGFybHkgY2xlYXIgdGhpcyBvdXQgdmlhIGBjbGVhcl9oaXN0b3JpY2AuAAFtBQABTQcACDBDdXJzb3JNYXhMZW44EAAAAQAQpCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBjdXJzb3IuAGUBIEEgZ29vZCBkZWZhdWx0IG5lZWRzIHRvIHNlbGVjdGVkIHN1Y2ggdGhhdCBubyBtaWdyYXRpb24gd2lsbCBldmVyIGhhdmUgYSBjdXJzb3Igd2l0aCBNRUwJASBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgBASWRlbnRpZmllck1heExlbjgQAAEAABC0IFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGlkZW50aWZpZXIuAFUBIEEgZ29vZCBkZWZhdWx0IG5lZWRzIHRvIHNlbGVjdGVkIHN1Y2ggdGhhdCBubyBtaWdyYXRpb24gd2lsbCBldmVyIGhhdmUgYW4gaWRlbnRpZmllci0BIHdpdGggTUVMIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAAE9DAAAEAsgGZrONWTQlk4sTUqbpGmUTbz/amzhpNCyfG/MAtJMOG9uZ29pbmdfc3RhdHVzAEEMBKggUmV0dXJucyB0aGUgb25nb2luZyBzdGF0dXMgb2YgbWlncmF0aW9ucy4ACyAZms41ZNCWTixNSpukaV69d2yxXZuRLieNTS1ixaEgcHJvZ3Jlc3MARQwQCQEgUmV0dXJucyBwcm9ncmVzcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBtaWdyYXRpb24sIGlmIGFueS4AUQEgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBtaWdyYXRpb24ncyBwcm9ncmVzcywdASBpbmNsdWRpbmcgdGhlIG51bWJlciBvZiBzdGVwcyBjb21wbGV0ZWQgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3RlcHMuAAsgGZrONWTQlk4sTUqbpGlGr0vOxvNae7vunZ/BCVvhRGFmZmVjdGVkX3ByZWZpeGVzADQMAQEgUmV0dXJucyB0aGUgc3RvcmFnZSBwcmVmaXhlcyBhZmZlY3RlZCBieSB0aGUgY3VycmVudCBtaWdyYXRpb24uABkBIENhbiBiZSBlbXB0eSBpZiB0aGUgbWlncmF0aW9uIGRvZXMgbm90IGtub3cgb3IgdGhlcmUgYXJlIG5vIHByZWZpeGVzLgALIBmazjVk0JZOLE1Km6RpqkwooG8ZiEW9G7KexiBd3RhzdGF0dXMATQwE8CBSZXR1cm5zIHRoZSBjb21wcmVoZW5zaXZlIHN0YXR1cyBvZiBtdWx0aS1ibG9jayBtaWdyYXRpb25zLgBiAAAIBAUAIDUEBABUAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhBdXRob3JpemVWYWx1ZVRyYW5zZmVylQUQUFZlcmlmeU11bHRpU2lnbmF0dXJlnQUQIEFzUGVyc29uoQUQXEFzUHJvb2ZPZklua1BhcnRpY2lwYW50rQUQSFNjb3JlQXNQYXJ0aWNpcGFudLkFEDRHYW1lQXNJbnZpdGVkxQUQOFBlb3BsZUxpdGVBdXRo0QUQIEFzTWVtYmVy3QUQJEFzQ29pbmFnZekFECxBc1Jlc291cmNlc/0FEDRBdXRob3JpemVDYWxsCQYQPFJlc3RyaWN0T3JpZ2lucw0GEEhDaGVja05vblplcm9TZW5kZXIRBhBAQ2hlY2tTcGVjVmVyc2lvbhUGODhDaGVja1R4VmVyc2lvbhkGODBDaGVja0dlbmVzaXMdBjw4Q2hlY2tNb3J0YWxpdHkhBjwoQ2hlY2tOb25jZSkGECxDaGVja1dlaWdodC0GEFBDaGFyZ2VBc3NldFR4UGF5bWVudDEGEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQVBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAFEMDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwAFCQScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpBExyZWxheV9wYXJlbnRfb2Zmc2V0ADgE9CBGZXRjaCB0aGUgc2xvdCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AEAUBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3Nlbi4AaQEgQSBsYXJnZXIgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mIHRoZSByZWxheSBjaGFpbiwxASBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUgcnVudGltZS4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90CQnIKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZHAgdGhlIGdpdmVuIHJlbGF5IGNoYWluIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLgA0NQEgVGhpcyBydW50aW1lIEFQSSBpcyB1c2VkIHRvIGluZm9ybSBwb3RlbnRpYWwgYmxvY2sgYXV0aG9ycyB3aGV0aGVyIHRoZXkgd2lsbCUBIGhhdmUgdGhlIHJpZ2h0IHRvIGF1dGhvciBhdCBhIHNsb3QsIGFzc3VtaW5nIHRoZXkgaGF2ZSBjbGFpbWVkIHRoZSBzbG90LgB1ASBJbiBwYXJ0aWN1bGFyLCB0aGlzIEFQSSBhbGxvd3MgQXVyYS1iYXNlZCBwYXJhY2hhaW5zIHRvIHJlZ3VsYXRlIHRoZWlyICJ1bmluY2x1ZGVkIHNlZ21lbnQiLG0BIHdoaWNoIGlzIHRoZSBzZWN0aW9uIG9mIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiB3aGljaCBoYXMgbm90IHlldCBiZWVuIG1hZGUgYXZhaWxhYmxlIGluIHRoZTQgcmVsYXkgY2hhaW4uAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBzaG9ydCwgQXVyYSBjaGFpbnMgd2lsbCBhbGxvdyBhdXRob3JzIHRvIGNyZWF0ZSBtdWx0aXBsZV0BIGJsb2NrcyBwZXIgc2xvdCBpbiBvcmRlciB0byBidWlsZCBhIGJhY2tsb2cuIFdoZW4gaXQgaXMgc2F0dXJhdGVkLCB0aGlzIEFQSSB3aWxsIGxpbWl0qCB0aGUgYW1vdW50IG9mIGJsb2NrcyB0aGF0IGNhbiBiZSBjcmVhdGVkLgAkIENoYW5nZXM6kQEgLSBWZXJzaW9uIDI6IFVwZGF0ZSB0byBgY2FuX2J1aWxkX3Vwb25gIHRvIHRha2UgYSByZWxheSBjaGFpbiBgU2xvdGAgaW5zdGVhZCBvZiBhIHBhcmFjaGFpbiBgU2xvdGAuCAAQQ29yZQwcdmVyc2lvbgCJBwSQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuADRleGVjdXRlX2Jsb2NrBBRibG9ja1UMEARkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLgBAaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyXGEMBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4ABCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuFAAgTWV0YWRhdGEMIG1ldGFkYXRhAGUMBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLgBMbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbjhpDBCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuAERtZXRhZGF0YV92ZXJzaW9ucwBlBAykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCABMUnVudGltZVZpZXdGdW5jdGlvbgRUZXhlY3V0ZV92aWV3X2Z1bmN0aW9uCCBxdWVyeV9pZG0MFGlucHV0GHEMBHwgRXhlY3V0ZSBhIHZpZXcgZnVuY3Rpb24gcXVlcnkuAASkIFJ1bnRpbWUgQVBJIGZvciBleGVjdXRpbmcgdmlldyBmdW5jdGlvbnMEADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljpQd5DBBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudIkMtQcEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrVQwQZGF0YYkMmQwEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZZ0MCHR4pQcoYmxvY2tfaGFzaDyhDCRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkkQWpDBwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQYrQwMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAFRUcmFuc2FjdGlvblBheW1lbnRBcGkQKHF1ZXJ5X2luZm8IDHV4dKUHDGxlbji5DAAARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHSlBwxsZW44vQwAAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHTVAcQAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4xAAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOLkMBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOL0MBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodNUBxAQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBXZWlnaHRUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDjEBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244yQwUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZZUB1QwUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h01QEUYXNzZXQRA9kMGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb25JARxtZXNzYWdllQEgYXNzZXRfaWQRA90MKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbjEDEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb2444QwERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uSQEMeGNt3QINDQRQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbkkBFQ0EkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAAoTW9iUnVsZUFwaQQgdm90ZWRfb24IFHZvdGVyCCRkb25lX29ubHnIZQQMWQEgUmV0dXJucyBhIGxpc3Qgb2YgY2FzZXMgd2hlcmUgdGhlIHVzZXIgaGFzIGEgdm90ZSBzdG9yZWQgb24gY2hhaW4uIElmIHRoZSBgZG9uZV9vbmx5YFUBIGZsYWcgaXMgc2V0LCBvbmx5IGNhc2VzIHRoYXQgYXJlIGRvbmUgYW5kIHJlYWR5IHRvIGJlIGNsYWltZWQgd2lsbCBiZSByZXR1cm5lZC4gVGhpcwUBIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB2b3RlIGludG8gYWNjb3VudC4ABLQgVGhlIEFQSSB0byBxdWVyeSB0aGUgcmV3YXJkcyBmb3IgbW9iIGNyZWRpdC4EADRQcm9vZk9mSW5rQXBpBERjYW5kaWRhY3lfZGVwb3NpdADEBNQgUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gYmVjb21lIGEgY2FuZGlkYXRlLgAE7CBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSBkZXBvc2l0IGZvciBhIHByb29mIG9mIGluayBjYW5kaWRhY3kuBAA0UGFsbGV0R2FtZUFwaQQwcGxheV9kZXBvc2l0AMQEuCBSZXR1cm5zIHRoZSBkZXBvc2l0IG5lY2Vzc2FyeSB0byBwbGF5IGEgZ2FtZS4ABKwgVGhlIEFQSSB0byBxdWVyeSB0aGUgZGVwb3NpdCBmb3IgZ2FtZXBsYXkuBABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclwdDRCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGCkNKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWQtDZEFOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMAMQ0QUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBAAgTQY1DQA=";
|
|
2
|
-
|
|
3
|
-
export { binMeta as default };
|