@parity/product-sdk-descriptors 0.0.0-dev.409.0 → 0.0.0-dev.457.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 +12 -5
- package/chains/devnet-asset-hub/generated/dist/common-types.d.ts +267 -0
- package/chains/devnet-asset-hub/generated/dist/devnet_asset_hub.d.ts +26 -3
- package/chains/devnet-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/devnet-asset-hub/generated/dist/index.js +4 -3
- package/chains/devnet-bulletin/generated/dist/common-types.d.ts +263 -0
- package/chains/devnet-bulletin/generated/dist/devnet_bulletin.d.ts +28 -4
- package/chains/devnet-bulletin/generated/dist/index.d.ts +1 -1
- package/chains/devnet-bulletin/generated/dist/index.js +4 -3
- package/chains/devnet-individuality/generated/dist/common-types.d.ts +267 -0
- package/chains/devnet-individuality/generated/dist/devnet_individuality.d.ts +26 -3
- package/chains/devnet-individuality/generated/dist/index.d.ts +1 -1
- package/chains/devnet-individuality/generated/dist/index.js +4 -3
- package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +267 -0
- package/chains/kusama-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/kusama-asset-hub/generated/dist/index.js +4 -3
- package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +28 -4
- package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +537 -200
- package/chains/paseo-asset-hub/generated/dist/descriptors-CcJ9tDRJ.js +25 -0
- package/chains/paseo-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/paseo-asset-hub/generated/dist/index.js +8 -7
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-C5poj2qg.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 +206 -100
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CI2Z0pCq.js +3 -0
- package/chains/paseo-bulletin/generated/dist/common-types.d.ts +263 -0
- package/chains/paseo-bulletin/generated/dist/index.d.ts +1 -1
- package/chains/paseo-bulletin/generated/dist/index.js +4 -3
- package/chains/paseo-bulletin/generated/dist/paseo_bulletin.d.ts +28 -4
- package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
- package/chains/paseo-individuality/generated/dist/common-types.d.ts +627 -323
- package/chains/paseo-individuality/generated/dist/descriptors-CzjDIprM.js +25 -0
- package/chains/paseo-individuality/generated/dist/index.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/index.js +9 -7
- package/chains/paseo-individuality/generated/dist/metadataTypes-t8EyGAvs.js +3 -0
- package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +196 -99
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DfzFjfPf.js +3 -0
- package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +267 -0
- package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/polkadot-asset-hub/generated/dist/index.js +4 -3
- package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +28 -4
- package/chains/previewnet-asset-hub/.papi/polkadot-api.json +2 -2
- package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +1398 -285
- package/chains/previewnet-asset-hub/generated/dist/descriptors-B1ublcrh.js +25 -0
- package/chains/previewnet-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/previewnet-asset-hub/generated/dist/index.js +10 -9
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes-C5poj2qg.js +3 -0
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +1055 -148
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CI2Z0pCq.js +3 -0
- package/chains/previewnet-bulletin/generated/dist/common-types.d.ts +263 -0
- package/chains/previewnet-bulletin/generated/dist/index.d.ts +1 -1
- package/chains/previewnet-bulletin/generated/dist/index.js +4 -3
- package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin.d.ts +28 -4
- package/chains/previewnet-individuality/.papi/polkadot-api.json +2 -2
- package/chains/previewnet-individuality/generated/dist/common-types.d.ts +827 -382
- package/chains/previewnet-individuality/generated/dist/descriptors-B5RU7r2I.js +25 -0
- package/chains/previewnet-individuality/generated/dist/index.d.ts +1 -1
- package/chains/previewnet-individuality/generated/dist/index.js +10 -8
- package/chains/previewnet-individuality/generated/dist/metadataTypes-t8EyGAvs.js +3 -0
- package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +492 -220
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-93LocnTr.js +3 -0
- package/package.json +2 -2
- package/chains/paseo-asset-hub/generated/dist/descriptors-BAWSQ1Bl.js +0 -25
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-DQUR_0DF.js +0 -3
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CASqP59m.js +0 -3
- package/chains/paseo-individuality/generated/dist/descriptors-BjGIP9nH.js +0 -25
- package/chains/paseo-individuality/generated/dist/metadataTypes-B2aDvcHG.js +0 -3
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CA3FRb1i.js +0 -3
- package/chains/previewnet-asset-hub/generated/dist/descriptors-CQcPA8uu.js +0 -25
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +0 -3
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js +0 -3
- package/chains/previewnet-individuality/generated/dist/descriptors-BFolU1bo.js +0 -25
- package/chains/previewnet-individuality/generated/dist/metadataTypes-DrB-HZYT.js +0 -3
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-Bqj-d95E.js +0 -3
package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-93LocnTr.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const binMeta = "bWV0YRDhDgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGcGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAoUGFyYW1ldGVycwQAvAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhbWV0ZXJzLCBSdW50aW1lPgBJADROZXR3b3JrU3VmZml4BABJAQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZXR3b3JrU3VmZml4LCBSdW50aW1lPgBKACBCYWxhbmNlcwQAUQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBABlAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4ADQAYQXNzZXRzBABtAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+AA4AJEFzc2V0UmF0ZQQAuQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgAQADxBc3NldENvbnZlcnNpb24EAMEBAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0Q29udmVyc2lvbiwgUnVudGltZT4AEgAoUG9vbEFzc2V0cwQAyQEBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4AEwBEQ29sbGF0b3JTZWxlY3Rpb24EANUBAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBADZAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAOUBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAOkBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBAC5AwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAL0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAxQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEADEEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBAA9BAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAQQQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAGFBlb3BsZQQATQQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlLCBSdW50aW1lPgAzABxNb2JSdWxlBABdBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNb2JSdWxlLCBSdW50aW1lPgA0AChQcm9vZk9mSW5rBABtBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm9vZk9mSW5rLCBSdW50aW1lPgA1ABBHYW1lBACVBAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxHYW1lLCBSdW50aW1lPgA3ABRTY29yZQQA5QQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NvcmUsIFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAA0FAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdENyZWRpdHMsIFJ1bnRpbWU+ADkAIER1bW15RGltBAAZBQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEdW1teURpbSwgUnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAMQUBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlTGl0ZSwgUnVudGltZT4APgAkUmVzb3VyY2VzBABFBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXNvdXJjZXMsIFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEAFEFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENodW5rc01hbmFnZXIsIFJ1bnRpbWU+AEAAHE1lbWJlcnMEAGEFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnMsIFJ1bnRpbWU+AEMAHENvaW5hZ2UEAGkFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvaW5hZ2UsIFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAxQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVyc05vdGlmaWVyLCBSdW50aW1lPgBFABxBaXJkcm9wBADdBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgBGABhIb25vdXIEAOUFAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEhvbm91ciwgUnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAPEFAc0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBlb3BsZUFpcmRyb3BzLCBSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAAQYB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AGIAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZcABUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyc0RSdW50aW1lUGFyYW1ldGVycwABEEBTdGF0ZW1lbnRTdG9yYWdlBADEAbRkeW5hbWljX3BhcmFtczo6c3RhdGVtZW50X3N0b3JhZ2U6OlBhcmFtZXRlcnMAAAA8QnVsbGV0aW5TdG9yYWdlBAAJAQGwZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMAAQA4UGVvcGxlQWlyZHJvcHMEAC0BAaxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzAAIAOExpdGVQZXJzb25ob29kBAA5AQGsZHluYW1pY19wYXJhbXM6OmxpdGVfcGVyc29uaG9vZDo6UGFyYW1ldGVycwADAADEFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2UoUGFyYW1ldGVycwABMFBBY2NvdW50c0FwaUFsbG93YW5jZQgAyAFQQWNjb3VudHNBcGlBbGxvd2FuY2UAAMwBjE9wdGlvbjxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXI+AAAAVE5vdGlmaWNhdGlvbkFsbG93YW5jZQgA1AFUTm90aWZpY2F0aW9uQWxsb3dhbmNlAADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQIANgBYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAzAGMT3B0aW9uPFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcj4ACgBQUGVyc29uU3RhdGVtZW50TGltaXQIANwBUFBlcnNvblN0YXRlbWVudExpbWl0AADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA4AFcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAOQBLE9wdGlvbjx1MzI+AAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA6AFsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAADkASxPcHRpb248dTMyPgACAFRTdG10U3RvcmVDbGVhbnVwTGltaXQIAOwBVFN0bXRTdG9yZUNsZWFudXBMaW1pdAAA5AEsT3B0aW9uPHUzMj4AAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bggA8AFwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgAA5AEsT3B0aW9uPHUzMj4ABABQU3RtdFN0b3JlR3JhY2VXaW5kb3cIAPQBUFN0bXRTdG9yZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgAFAGhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAgA+AFoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4ABwB4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kCAABAQF4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kAAD8AShPcHRpb248dTg+AAgAaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uCAAFAQFoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24AAOQBLE9wdGlvbjx1MzI+AAkAAMgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVBBY2NvdW50c0FwaUFsbG93YW5jZQAAAADMBBhPcHRpb24EBFQB0AEIEE5vbmUAAAAQU29tZQQA0AAAAQAA0Aw0aW5kaXZfc3VwcG9ydChwYXJhbWV0ZXJzbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAACAEgbWF4X3NpemU4AQx1MzIAASRtYXhfY291bnQ4AQx1MzIAANQUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVROb3RpZmljYXRpb25BbGxvd2FuY2UAAAAA2BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAAADcFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VQUGVyc29uU3RhdGVtZW50TGltaXQAAAAA4BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADoFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOwUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVRTdG10U3RvcmVDbGVhbnVwTGltaXQAAAAA8BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24AAAAA9BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlUFN0bXRTdG9yZUdyYWNlV2luZG93AAAAAPgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAAAAD8BBhPcHRpb24EBFQBDAEIEE5vbmUAAAAQU29tZQQADAAAAQAAAQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZXhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAAAABQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgAAAAAJARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2UoUGFyYW1ldGVycwABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbggADQEBdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAADkASxPcHRpb248dTMyPgAAAGhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwgAEQEBaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QIABUBAXhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4AAgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0CAAZAQFsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0AADkASxPcHRpb248dTMyPgADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUIAB0BAYRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQgAKQEBlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABQAADQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdldExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAAAAABEBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwAAAAAVARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2V4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kAAAAABkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXQAAAAAHQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdlhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQAAAAAhAQQYT3B0aW9uBARUASUBAQgQTm9uZQAAABBTb21lBAAlAQAAAQAAJQEMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNkTG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbgAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAACkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZZRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JMaXRlUGVvcGxlAAAAAC0BFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8cGVvcGxlX2FpcmRyb3BzKFBhcmFtZXRlcnMAAQQsUHJpemVTb3VyY2UIADEBASxQcml6ZVNvdXJjZQAANQEBfE9wdGlvbjxzcF9ydW50aW1lOjpBY2NvdW50SWQzMj4AAAAAMQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHMsUHJpemVTb3VyY2UAAAAANQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAA5ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZChQYXJhbWV0ZXJzAAEEPFJlZ2lzdHJhdGlvbkZlZQgAPQEBPFJlZ2lzdHJhdGlvbkZlZQAAQQEBPE9wdGlvbjxCYWxhbmNlPgAAAAA9ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZDxSZWdpc3RyYXRpb25GZWUAAAAAQQEEGE9wdGlvbgQEVAFFAQEIEE5vbmUAAAAQU29tZQQARQEAAAEAAEUBAAAFBwBJAQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBBDYWxsBARUAAEESHNldF9uZXR3b3JrX3N1ZmZpeAQBOG5ldHdvcmtfc3VmZml4TQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAAABPxTZXQgdGhlIG5ldHdvcmsgc3VmZml4IHVzZWQgYnkgYWxsIHByb2R1Y3QtY29udGV4dCBkZXJpdmF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuTQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABRAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlVQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uYQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YVUBAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZVUBAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZVkBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUBAAAGRQEAWQEAAAUAAF0BAAACBABhAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAZQEMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHlpAQFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVAUmVzdHJpY3RlZEVudGl0eQABHDRQZXJzb25hbEFsaWFzBAAIARRBbGlhcwAAAEBQZXJzb25hbElkZW50aXR5BAAoAQx1NjQAAQBEUmVmZXJyZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAACAEhBY2NvdW50UGFydGljaXBhbnQEAAQBJEFjY291bnRJZAADAEBJbnZpdGVkQ2FuZGlkYXRlBAAEASRBY2NvdW50SWQABAAoTGl0ZVBlcnNvbgQABAEkQWNjb3VudElkAAUAJExpdGVBbGlhcwQACAEUQWxpYXMABgAAbQEMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlAABQ6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeVEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gcmVxdWlyZXMgYSBzcGVjaWZpYyBpZCwgdGhpcyBtdXN0JGVxdWFsIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFkBARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABdPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAAUBVW5saWtlIGBjcmVhdGVgLCB0aGUgYGlkYCBkb2VzIG5vdCBoYXZlIHRvIGJlIHRoZSBvbmUgcmVxdWlyZWQgYnlJAVtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF06IGEgcHJpdmlsZWdlZCBvcmlnaW4gbWF5IHBpY2sgYW55IGBpZGAsIHdoaWNoIGlzIHRoZW5QbWFya2VkIGFzIGFsbG9jYXRlZC4AJCMgV2FybmluZwA9AUZvcmNpbmcgYW4gYXJiaXRyYXJ5IGBpZGAgaXMgZGFuZ2Vyb3VzOiB0aGUgcGFsbGV0IG9ubHkgY2hlY2tzIHRoYXQgYGlkYCBpcyBub3RdASpjdXJyZW50bHkqIGluIHVzZSwgbm90IHRoYXQgaXQgd2FzIG5ldmVyIHVzZWQgYmVmb3JlLiBSZXVzaW5nIGFuIGlkIGNhbiBjb3JydXB0IHN0YXRlLFEBbW9zdCBzZXZlcmVseSBmb3IgYnJpZGdlZCBhc3NldHMsIHdoZXJlIGEgY29sbGlzaW9uIGJyZWFrcyB0aGUgbG9jYWwvcmVtb3RlIG1hcHBpbmcuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlJAWFuIGV4aXN0aW5nIGFzc2V0LCBhbmQgbXVzdCBuZXZlciBoYXZlIGJlZW4gaW4gdXNlIHByZXZpb3VzbHkgKHNlZSB3YXJuaW5nIGFib3ZlKS5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlWQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXOtAQHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3J1AQEkSnVuY3Rpb25zAAB1ARAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAB5AQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBACRAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBACVAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACZAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BACdAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAChAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAClAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BACpAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAHkBAAADAQAAAH0BAH0BECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuBAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya4EBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmuBAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkiQEBGEJvZHlJZAABEHBhcnSNAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBACFAQEkTmV0d29ya0lkAAkAAIEBBBhPcHRpb24EBFQBhQEBCBBOb25lAAAAEFNvbWUEAIUBAAABAACFARAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAiQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAI0BEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAACRAQAAAwIAAAB9AQCVAQAAAwMAAAB9AQCZAQAAAwQAAAB9AQCdAQAAAwUAAAB9AQChAQAAAwYAAAB9AQClAQAAAwcAAAB9AQCpAQAAAwgAAAB9AQCtAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEBBFMAAAQAtQEBGFZlYzxUPgAAsQEMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlcQEBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxlWQEBEGJvb2wAALUBAAACsQEAuQEMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRxAQFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlvQEBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZHEBAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGW9AQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZHEBAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQEMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAEUBARB1MTI4AADBAQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0EENhbGwEBFQAARgsY3JlYXRlX3Bvb2wIARhhc3NldDFxAQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDJxAQFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxcQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQycQEBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVkRQEBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWRFAQEoVDo6QmFsYW5jZQABLGFtb3VudDFfbWluRQEBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pbkUBAShUOjpCYWxhbmNlAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MXEBAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MnEBAURCb3g8VDo6QXNzZXRLaW5kPgABNGxwX3Rva2VuX2J1cm5FAQEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABTGFtb3VudDJfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkAAIMTQFBbGxvd3MgeW91IHRvIHJlbW92ZSBsaXF1aWRpdHkgYnkgcHJvdmlkaW5nIHRoZSBgbHBfdG9rZW5fYnVybmAgdG9rZW5zIHRoYXQgd2lsbCBiZVEBYnVybmVkIGluIHRoZSBwcm9jZXNzLiBXaXRoIHRoZSB1c2FnZSBvZiBgYW1vdW50MV9taW5fcmVjZWl2ZWAvYGFtb3VudDJfbWluX3JlY2VpdmVgNQFpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIG1pbiBhbW91bnQgb2YgcmV0dXJuZWQgdG9rZW5zIHlvdSdyZSBoYXBweSB3aXRoLnBzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zFAEQcGF0aMUBAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbkUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVZAQEQYm9vbAADGMBTd2FwIHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgaW50byBgYXNzZXQyYC4tAWBhbW91bnRfb3V0X21pbmAgcGFyYW0gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBtaW4gYW1vdW50IG9mIHRoZSBgYXNzZXQyYGB5b3UncmUgaGFwcHkgdG8gcmVjZWl2ZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS5wc3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxQBEHBhdGjFAQFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABKGFtb3VudF9vdXRFAQEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXhFAQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZlWQEBEGJvb2wABBgBAVN3YXAgYW55IGFtb3VudCBvZiBgYXNzZXQxYCB0byBnZXQgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ZAWBhbW91bnRfaW5fbWF4YCBwYXJhbSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbWF4IGFtb3VudCBvZiB0aGUgYGFzc2V0MWBgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUuFHRvdWNoCAEYYXNzZXQxcQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQycQEBREJveDxUOjpBc3NldEtpbmQ+AAUsTQFUb3VjaCBhbiBleGlzdGluZyBwb29sIHRvIGZ1bGZpbGwgcHJlcmVxdWlzaXRlcyBiZWZvcmUgcHJvdmlkaW5nIGxpcXVpZGl0eSwgc3VjaCBhc0kBZW5zdXJpbmcgdGhhdCB0aGUgcG9vbCdzIGFjY291bnRzIGFyZSBpbiBwbGFjZS4gSXQgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIGEgcG9vbFUBY3JlYXRvciByZW1vdmVzIHRoZSBwb29sJ3MgYWNjb3VudHMgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBsaXF1aWRpdHkuIFRoaXMgYWN0aW9uIG1heVUBaW52b2x2ZSBob2xkaW5nIGFzc2V0cyBmcm9tIHRoZSBjYWxsZXIgYXMgYSBkZXBvc2l0IGZvciBjcmVhdGluZyB0aGUgcG9vbCdzIGFjY291bnRzLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AKQEtIGBhc3NldDFgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLikBLSBgYXNzZXQyYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBHBQYWxsZXQncyBjYWxsYWJsZSBmdW5jdGlvbnMuxQEAAAJxAQDJAQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAAUOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlRAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIHJlcXVpcmVzIGEgc3BlY2lmaWMgaWQsIHRoaXMgbXVzdCRlcXVhbCBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFkBARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABdPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAAUBVW5saWtlIGBjcmVhdGVgLCB0aGUgYGlkYCBkb2VzIG5vdCBoYXZlIHRvIGJlIHRoZSBvbmUgcmVxdWlyZWQgYnlJAVtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF06IGEgcHJpdmlsZWdlZCBvcmlnaW4gbWF5IHBpY2sgYW55IGBpZGAsIHdoaWNoIGlzIHRoZW5QbWFya2VkIGFzIGFsbG9jYXRlZC4AJCMgV2FybmluZwA9AUZvcmNpbmcgYW4gYXJiaXRyYXJ5IGBpZGAgaXMgZGFuZ2Vyb3VzOiB0aGUgcGFsbGV0IG9ubHkgY2hlY2tzIHRoYXQgYGlkYCBpcyBub3RdASpjdXJyZW50bHkqIGluIHVzZSwgbm90IHRoYXQgaXQgd2FzIG5ldmVyIHVzZWQgYmVmb3JlLiBSZXVzaW5nIGFuIGlkIGNhbiBjb3JydXB0IHN0YXRlLFEBbW9zdCBzZXZlcmVseSBmb3IgYnJpZGdlZCBhc3NldHMsIHdoZXJlIGEgY29sbGlzaW9uIGJyZWFrcyB0aGUgbG9jYWwvcmVtb3RlIG1hcHBpbmcuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlJAWFuIGV4aXN0aW5nIGFzc2V0LCBhbmQgbXVzdCBuZXZlciBoYXZlIGJlZW4gaW4gdXNlIHByZXZpb3VzbHkgKHNlZSB3YXJuaW5nIGFib3ZlKS5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASRpc19mcm96ZW5ZAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVyblkBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzzQEByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABADRAQEYVmVjPFQ+AADRAQAAAhAA1QEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXddAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kRQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXPdAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmHhAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAA4QEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAA5QEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2U5AgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ57QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHN9AwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WBAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodHkCARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbnEBATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u5AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbu0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27tAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZFkBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN07QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyee0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzfQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ57QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzfQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGWtAwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZLEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGWtAwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3Q5AgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXO1AwEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7tAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADxAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAAUCATB2NDo6TG9jYXRpb24ABAAIVjUEAHEBATB2NTo6TG9jYXRpb24ABQAA8QEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3L1AQEkSnVuY3Rpb25zAAD1ARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA+QEBIEp1bmN0aW9uAAEACFgyCAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgACAAhYMwwA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgADAAhYNBAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAQACFg1FAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAFAAhYNhgA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAGAAhYNxwA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAcACFg4IAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAIAAD5ARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/0BAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr/QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/0BAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAFUBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWSJAQEYQm9keUlkAAEQcGFydI0BASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAAECASROZXR3b3JrSWQACQAA/QEEGE9wdGlvbgQEVAEBAgEIEE5vbmUAAAAQU29tZQQAAQIAAAEAAAECEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAAUCECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IJAgEkSnVuY3Rpb25zAAAJAhAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAANAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAdAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAhAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAlAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAApAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAtAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAxAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAA1AgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAA0CAAADAQAAABECABECECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaxUCAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkiQEBGEJvZHlJZAABEHBhcnSNAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAZAgEkTmV0d29ya0lkAAkAABUCBBhPcHRpb24EBFQBGQIBCBBOb25lAAAAEFNvbWUEABkCAAABAAAZAhAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAB0CAAADAgAAABECACECAAADAwAAABECACUCAAADBAAAABECACkCAAADBQAAABECAC0CAAADBgAAABECADECAAADBwAAABECADUCAAADCAAAABECADkCCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAPQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAC1AgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAAEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAA9AgwMeGNtCHYzDFhjbQQQQ2FsbAAABABBAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAQQIAAAJFAgBFAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEkCASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEkCASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABJAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlaQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVylQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzSQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnxAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSZAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3R5AgEYV2VpZ2h0AAEQY2FsbJ0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAPUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAKECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ58QEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c6UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdPEBATRNdWx0aUxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWlAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRJAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc1ECAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA9AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA9AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABGHRpY2tldPEBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkCARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQASQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABJAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACVAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABtAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAI0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+hAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAChAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29yawECASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbvUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldFECAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLxAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0UQIBKE11bHRpQXNzZXQAARh0YXJnZXTxAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0UQIBKE11bHRpQXNzZXQAARRvd25lcvEBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldFECAShNdWx0aUFzc2V0AAEYbG9ja2Vy8QEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA8QEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lulQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABJAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQATQIBPFZlYzxNdWx0aUFzc2V0PgAATQIAAAJRAgBRAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRVAgEcQXNzZXRJZAABDGZ1blkCASxGdW5naWJpbGl0eQAAVQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAPEBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABZAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAFUBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABdAgE0QXNzZXRJbnN0YW5jZQABAABdAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAFUBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAGECARxbdTg7IDhdAAMAHEFycmF5MTYEAGUCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABhAgAAAwgAAAAMAGUCAAADEAAAAAwAaQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQASQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAB9AgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAI0CAThNYXliZUVycm9yQ29kZQAFAABtAgQYT3B0aW9uBARUAXECAQgQTm9uZQAAABBTb21lBABxAgAAAQAAcQIAAAQIOHUCAHUCEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAeQIBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAeQIMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAB9AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYECBFMAAAQAiQIBGFZlYzxUPgAAgQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWFAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZYUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAhQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJAgAAAoECAI0CDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAkQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBACRAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAkQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACVAgQYT3B0aW9uBARUAfEBAQgQTm9uZQAAABBTb21lBADxAQAAAQAAmQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAnQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAoQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27xAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAClAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQASQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAKkCAThXaWxkTXVsdGlBc3NldAABAACpAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRVAgEcQXNzZXRJZAABDGZ1bq0CATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkVQIBHEFzc2V0SWQAAQxmdW6tAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAArQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAACxAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAB5AgEYV2VpZ2h0AAEAALUCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAuQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALkCAAACvQIAvQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAMECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADBAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAMECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl2QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVy7QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c8ECARhBc3NldHMAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c8ECARhBc3NldHMAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdHkCARhXZWlnaHQAARBjYWxsnQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQACQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAPECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbbUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl9QIBLEFzc2V0RmlsdGVyAAEQd2FudMECARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlBQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb/ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c/UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzyQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAC1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAC1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c8ECARhBc3NldHMAARh0aWNrZXQFAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADBAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADBAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA7QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAG0CAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAjQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb/ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAPECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAEQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrGQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uCQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldMkCARRBc3NldAABIHVubG9ja2VyBQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTJAgEUQXNzZXQAARh0YXJnZXQFAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldMkCARRBc3NldAABFG93bmVyBQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldMkCARRBc3NldAABGGxvY2tlcgUCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAFAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu7QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAwQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABADFAgEoVmVjPEFzc2V0PgAAxQIAAALJAgDJAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkzQIBHEFzc2V0SWQAAQxmdW7RAgEsRnVuZ2liaWxpdHkAAM0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAAUCASBMb2NhdGlvbgAA0QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQA1QIBNEFzc2V0SW5zdGFuY2UAAQAA1QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BABhAgEcW3U4OyA4XQADABxBcnJheTE2BABlAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA2QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADBAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADdAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAI0CAThNYXliZUVycm9yQ29kZQAFAADdAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeECBFMAAAQA6QIBGFZlYzxUPgAA4QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZeUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l5QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADlAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOkCAAAC4QIA7QIEGE9wdGlvbgQEVAEFAgEIEE5vbmUAAAAQU29tZQQABQIAAAEAAPECDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb24FAgEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0eQIBGFdlaWdodAAA9QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADBAgEYQXNzZXRzAAAAEFdpbGQEAPkCASRXaWxkQXNzZXQAAQAA+QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZM0CARxBc3NldElkAAEMZnVu/QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTNAgEcQXNzZXRJZAABDGZ1bv0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAD9AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAAEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQABQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAAUDAAACCQMACQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAA0DARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAANAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAA0DARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlJQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVyRQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cw0DARhBc3NldHMAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cw0DARhBc3NldHMAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodEkDAThPcHRpb248V2VpZ2h0PgABEGNhbGydAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAB1AQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQATQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5cQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVRAwEsQXNzZXRGaWx0ZXIAARB3YW50DQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABHHJlc2VydmVxAQEgTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMVAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAAEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAAEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzDQMBGEFzc2V0cwABGHRpY2tldHEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAA0DARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAA0DARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABFAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAKQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAB9AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuFAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb251AQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbQEDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0FQMBFEFzc2V0AAEgdW5sb2NrZXJxAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldBUDARRBc3NldAABGHRhcmdldHEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0FQMBFEFzc2V0AAEUb3duZXJxAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0FQMBFEFzc2V0AAEYbG9ja2VycQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAHEBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5FAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQVAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNdAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNlAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtAQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbm0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y20BAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNxAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAA0DECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAEQMBKFZlYzxBc3NldD4AABEDAAACFQMAFQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZBkDARxBc3NldElkAAEMZnVuHQMBLEZ1bmdpYmlsaXR5AAAZAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABABxAQEgTG9jYXRpb24AAB0DECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEACEDATRBc3NldEluc3RhbmNlAAEAACEDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAYQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAZQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAACUDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQADQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEACkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQANQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACNAgE4TWF5YmVFcnJvckNvZGUABQAAKQMEGE9wdGlvbgQEVAEtAwEIEE5vbmUAAAAQU29tZQQALQMAAAEAAC0DAAAECDgxAwAxAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAeQIBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAANQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5AwRTAAAEAEEDARhWZWM8VD4AADkDDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWU9AwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZT0DAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAPQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABBAwAAAjkDAEUDBBhPcHRpb24EBFQBcQEBCBBOb25lAAAAEFNvbWUEAHEBAAABAABJAwQYT3B0aW9uBARUAXkCAQgQTm9uZQAAABBTb21lBAB5AgAAAQAATQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AABRAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAA0DARhBc3NldHMAAAAQV2lsZAQAVQMBJFdpbGRBc3NldAABAABVAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkGQMBHEFzc2V0SWQAAQxmdW5ZAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZBkDARxBc3NldElkAAEMZnVuWQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAFkDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAXQMEGE9wdGlvbgQEVAFhAwEIEE5vbmUAAAAQU29tZQQAYQMAAAEAAGEDECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABRAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAFEDASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAFEDASxBc3NldEZpbHRlcgACAABlAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWEDBFMAAAQAaQMBGFZlYzxUPgAAaQMAAAJhAwBtAwQYT3B0aW9uBARUAXUBAQgQTm9uZQAAABBTb21lBAB1AQAAAQAAcQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1AwRTAAAEAHkDARhWZWM8VD4AAHUDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9ucQEBIExvY2F0aW9uAAAAAHkDAAACdQMAfQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAEkCATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAMECASh2NDo6QXNzZXRzAAQACFY1BAANAwEodjU6OkFzc2V0cwAFAACBAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAIUDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAlQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAChAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAhQMMDHhjbQh2MwxYY20EEENhbGwAAAQAiQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAIkDAAACjQMAjQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABJAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABJAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQASQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZWkCASBSZXNwb25zZQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAEccXVlcmllcpUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ58QEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNJAgEsTXVsdGlBc3NldHMAARBkZXN08QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kmQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQIBGFdlaWdodAABEGNhbGyRAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAD1AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAChAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyefEBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlpQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50SQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZl8QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN08QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb6ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c6UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNRAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdLECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAhQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAhQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNJAgEsTXVsdGlBc3NldHMAARh0aWNrZXTxAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAEkCASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQASQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAlQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAD5AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsBAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb271AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRRAgEoTXVsdGlBc3NldAABIHVubG9ja2Vy8QEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldFECAShNdWx0aUFzc2V0AAEYdGFyZ2V08QEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldFECAShNdWx0aUFzc2V0AAEUb3duZXLxAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRRAgEoTXVsdGlBc3NldAABGGxvY2tlcvEBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAPEBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdLECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbpUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAkQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAlQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACZAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAmQMAAAKdAwCdAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAwQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAMECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAwQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XZAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQIBGFdlaWdodAABHHF1ZXJpZXLtAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzwQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzwQIBGEFzc2V0cwABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kmQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQIBGFdlaWdodAABEGNhbGyRAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAJAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQA8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmX1AgEsQXNzZXRGaWx0ZXIAARB3YW50wQIBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABHHJlc2VydmUFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbbUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPJAgEUQXNzZXQAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzwQIBGEFzc2V0cwABGHRpY2tldAUCASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAMECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAMECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADtAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAARAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsZAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24JAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbbUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0yQIBFEFzc2V0AAEgdW5sb2NrZXIFAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMkCARRBc3NldAABGHRhcmdldAUCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0yQIBFEFzc2V0AAEUb3duZXIFAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0yQIBFEFzc2V0AAEYbG9ja2VyBQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAAUCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7tAgFAT3B0aW9uPExvY2F0aW9uPgAvAAChAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAKUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAClAwAAAqkDAKkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAANAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQADQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAANAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZSUDASBSZXNwb25zZQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAEccXVlcmllckUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMNAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnlxAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMNAwEYQXNzZXRzAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSZAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHRJAwE4T3B0aW9uPFdlaWdodD4AARBjYWxskQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAdQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0DAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQMBLEFzc2V0RmlsdGVyAAEQd2FudA0DARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlcQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABEGRlc3RxAQEgTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb00DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1EDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzFQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAChAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAChAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cw0DARhBc3NldHMAARh0aWNrZXRxAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAANAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAANAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQARQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEACkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAjQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb00DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAE0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAfQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrhQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9udQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldBUDARRBc3NldAABIHVubG9ja2VycQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQVAwEUQXNzZXQAARh0YXJnZXRxAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldBUDARRBc3NldAABFG93bmVycQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldBUDARRBc3NldAABGGxvY2tlcnEBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABxAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luRQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0FQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzXQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpblkBARBib29sAAEYYXNzZXRzZQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbQEDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW5tAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtoQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzcQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAACtAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAO0BAURWZXJzaW9uZWRMb2NhdGlvbgADAACxAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAFUCASx2Mzo6QXNzZXRJZAADAAhWNAQAzQIBLHY0OjpBc3NldElkAAQACFY1BAAZAwEsdjU6OkFzc2V0SWQABQAAtQMEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAC5AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLr0DDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbsEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXR5AgEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAJwBGFBhcmFJZAACAADFAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleM0DAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc8kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7RAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzyQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkCARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu0QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDAAACIADNAwAABQQA0QMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEwGHN5c3RlbQQA1QMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBADZAwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EAN0DAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgABhQZW9wbGUEAOEDAWxpbmRpdl9wYWxsZXRfcGVvcGxlOjpPcmlnaW4AMwAoUHJvb2ZPZkluawQA7QMBqGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6Ok9yaWdpbjxSdW50aW1lPgA1ABBHYW1lBADxAwGIaW5kaXZfcGFsbGV0X2dhbWU6Ok9yaWdpbjxSdW50aW1lPgA3ABRTY29yZQQA9QMBjGluZGl2X3BhbGxldF9zY29yZTo6T3JpZ2luPFJ1bnRpbWU+ADgAKFBlb3BsZUxpdGUEAPkDAaRpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6Ok9yaWdpbjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAP0DAXhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpPcmlnaW4APwAcTWVtYmVycwQABQQBlGluZGl2X3BhbGxldF9tZW1iZXJzOjpPcmlnaW48UnVudGltZT4AQwAcQ29pbmFnZQQADQQBlGluZGl2X3BhbGxldF9jb2luYWdlOjpPcmlnaW48UnVudGltZT4ARAAYSG9ub3VyBAApBAFsaW5kaXZfcGFsbGV0X2hvbm91cjo6T3JpZ2luAEcAANUDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAADZAwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQAcQEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBABxAQEgTG9jYXRpb24AAQAA3QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAADhAwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQYT3JpZ2luAAEIQFBlcnNvbmFsSWRlbnRpdHkEACgBKFBlcnNvbmFsSWQAAAA0UGVyc29uYWxBbGlhcwQA5QMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAA5QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHlYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAADAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcmluZzgBJFJpbmdJbmRleAABCGNh6QMBPENvbnRleHR1YWxBbGlhcwAA6QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHk8Q29udGV4dHVhbEFsaWFzAAAIARRhbGlhcwgBFEFsaWFzAAEcY29udGV4dAgBHENvbnRleHQAAO0DDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhPcmlnaW4EBFQAAQxYQXV0aG9yaXplZEFwcGx5V2l0aFNpZwQABAEwVDo6QWNjb3VudElkAAAARFJlZmVycmVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAQBASW52aXRlZENhbmRpZGF0ZQQABAEwVDo6QWNjb3VudElkAAIAAPEDDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQYT3JpZ2luBARUAAEEHEludml0ZWQEAAQBMFQ6OkFjY291bnRJZAAAAAD1AwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBhPcmlnaW4EBFQAAQRIQWNjb3VudFBhcnRpY2lwYW50BAAEATBUOjpBY2NvdW50SWQAAAAA+QMMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQYT3JpZ2luBARUAAEIKExpdGVQZXJzb24EAAQBMFQ6OkFjY291bnRJZAAAACRMaXRlQWxpYXMEAOUDAVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAEAAP0DDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBhPcmlnaW4AAQxETm90aWZpY2F0aW9uQWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAAEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAAABBAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAAFBAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAEJBAEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAADlAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAACQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAAANBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0GE9yaWdpbgQEVAEJBAEMEENvaW4IARxjb2luX2lkBAEwVDo6QWNjb3VudElkAAEQY29pbhEEARBDb2luAAAALFVubG9hZFRva2VuDAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAShwcm92ZW5fbXNnCAEgW3U4OyAzMl0AAQxmZWUlBAEkVW5sb2FkRmVlAAEAWEluZmFsbGlibGVVbnBhaWRTaWduZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAAgAAEQQMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDb2luAAAMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAQxhZ2XNAwEMdTE2AAAVBAAABQkAGQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEdBARTAAAEACEEARhWZWM8VD4AAB0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAIQQAAAIdBAAlBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0JFVubG9hZEZlZQABCBxQcmVwYWlkAAAAKEZyb21PdXRwdXQIAUhmZWVfcmVjeWNsZXJfdmFsdWUVBAEwRGVub21pbmF0aW9uAAFIZmVlX3JlY3ljbGVyX2luZGV4OAEkUmluZ0luZGV4AAEAACkEDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBhPcmlnaW4AAQQUVm90ZXIEARxhbGlhc2VzLQQBLFZvdGVBbGlhc2VzAAAAAC0EDExpbmRpdl9wYWxsZXRfaG9ub3VyFHR5cGVzLFZvdGVBbGlhc2VzAAAIATRzdWJqZWN0X2FsaWFzCAEwU3ViamVjdEFsaWFzAAEscG9pbnRfYWxpYXMIAShQb2ludEFsaWFzAAAxBAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEUUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGTNAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQ1BAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0eQIBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZM0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludDUEAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAKYVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuADkBKipUaGlzIGZ1bmN0aW9uIHdpbGwgTkVWRVIgZXhlY3V0ZSB0aGUgY2FsbCwgZXZlbiBpZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzUQFyZWFjaGVkLioqIEl0IG9ubHkgcmVnaXN0ZXJzIGFwcHJvdmFsLiBUbyBhY3R1YWxseSBleGVjdXRlIHRoZSBjYWxsLCBgYXNfbXVsdGlgIG11c3TwYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhIGJ5IGFueSBvZiB0aGUgc2lnbmF0b3JpZXMuAE0BVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGBhc19tdWx0aWAgZm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgc2luY2UgaXTQb25seSByZXF1aXJlcyB0aGUgY2FsbCBoYXNoLCBub3QgdGhlIGZ1bGwgY2FsbCBkYXRhLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAD0BTk9URTogVG8gZXhlY3V0ZSB0aGUgY2FsbCBhZnRlciBhcHByb3ZhbHMgYXJlIGdhdGhlcmVkLCBhbnkgc2lnbmF0b3J5IG11c3QgY2FsbCkBYGFzX211bHRpYCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YS4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgZXhlY3V0ZSB0aGUgY2FsbC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50Lk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC48Y2FuY2VsX2FzX211bHRpEAEkdGhyZXNob2xkzQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50OQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xkzQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUEBBhPcHRpb24EBFQBOQQBCBBOb25lAAAAEFNvbWUEADkEAAABAAA5BAg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAAA9BAwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkCARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BBAwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZUUEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4zQMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRpbmRleM0DAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlRQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FBAQYT3B0aW9uBARUAUkEAQgQTm9uZQAAABBTb21lBABJBAAAAQAASQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEYDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFAABNBAxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQQQ2FsbAQEVAABICx1bmRlcl9hbGlhcwQBEGNhbGwgAbRCb3g8PFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpSdW50aW1lQ2FsbD4AABAVAURpc3BhdGNoIGEgY2FsbCB1bmRlciBhbiBhbGlhcyB1c2luZyB0aGUgYGFjY291bnQgPC0+IGFsaWFzYCBtYXBwaW5nLgBFAVRoaXMgaXMgYSBjYWxsIHZlcnNpb24gb2YgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRgLiUBSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gaW5zdGVhZCB3aGVuIHN1aXRhYmxlLkRzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAUwtAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWxpYXMgd2FzIHByZXZpb3VzbHkgc2V0LgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuAGEBVGhpcyBjYWxsIGlzIGF1dGhvcml6ZWQgdGhyb3VnaCB0aGUgYEFzUGVyc29uYWxBbGlhc1dpdGhQcm9vZmAgdmFyaWFudCBvZiB0aGUgYEFzUGVyc29uYFkBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaCBwcm92aWRlcyBubyBub25jZS1iYXNlZCByZXBsYXkgcHJvdGVjdGlvbi4gUmVwbGF5IGlzIG9ubHlZAXByZXZlbnRlZCBmb3IgYXMgbG9uZyBhcyB0aGUgYWxpYXMgc3RpbGwgcG9pbnRzIGF0IHRoZSBhY2NvdW50IHRoaXMgY2FsbCBzZXRzLiBBcyBzb29uVQFhcyB0aGUgYWxpYXMgaXMgcG9pbnRlZCBhdCBhIGRpZmZlcmVudCBhY2NvdW50IChieSBhbm90aGVyIGBzZXRfYWxpYXNfYWNjb3VudGApLCB0aGlzTQFjYWxsIGJlY29tZXMgcmVwbGF5YWJsZSBhZ2FpbiB1bnRpbCBpdHMgdmFsaWRpdHkgcGVyaW9kIGVsYXBzZXMuIENvbnNlcXVlbnRseSwgaWYgMlkBc3VjaCB0cmFuc2FjdGlvbnMgc2V0dGluZyAyIGRpZmZlcmVudCBhY2NvdW50cyBoYXZlIG92ZXJsYXBwaW5nIHZhbGlkaXR5IHBlcmlvZHMsIHRoZXlNAWNhbiBiZSByZXBsYXllZCBhZ2FpbnN0IGVhY2ggb3RoZXIgaW5kZWZpbml0ZWx5IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIG92ZXJsYXAuIFRvVQFhdm9pZCB0aGlzLCB0aGUgY2FsbGVyIG11c3Qgbm90IGhhdmUgMiBzdWNoIHRyYW5zYWN0aW9ucyBhbGl2ZSAod2l0aGluIHRoZWlyIHZhbGlkaXR5ZHBlcmlvZCkgYXQgdGhlIHNhbWUgdGltZS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5MdW5zZXRfYWxpYXNfYWNjb3VudAACBBUBUmVtb3ZlIHRoZSBtYXBwaW5nIGZyb20gYSBwYXJ0aWN1bGFyIGFsaWFzIHRvIGl0cyByZWdpc3RlcmVkIGFjY291bnQuaGZvcmNlX3JlY29nbml6ZV9wZXJzb25ob29kBAEYcGVvcGxlUQQBQFZlYzxNZW1iZXJPZjxUPj4AAxDgUmVjb2duaXplIGEgc2V0IG9mIHBlb3BsZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNoZWNrcy4AUQFUaGUgcGVvcGxlIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwcm92aWRlZCBsaXN0IG9mIGtleXMgYW5kIHdpbGwgZWFjaCBiZSBhc3NpZ25lZCwgaW6Yb3JkZXIsIHRoZSBuZXh0IGF2YWlsYWJsZSBwZXJzb25hbCBJRC5cc2V0X3BlcnNvbmFsX2lkX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE0Y2FsbF92YWxpZF9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAQ8aFNldCBhIHBlcnNvbmFsIGlkIGFjY291bnQuAE0BVGhlIGFjY291bnQgY2FuIHRoZW4gYmUgdXNlZCB0byBzaWduIHRyYW5zYWN0aW9ucyBvbiBiZWhhbGYgb2YgdGhlIHBlcnNvbmFsIGlkLCBhbmSkcHJvdmlkZSByZXBsYXkgcHJvdGVjdGlvbiB3aXRoIHRoZSBub25jZS4AUQFUaGlzIHRyYW5zYWN0aW9uIGlzIHJlZnVuZGVkIGlmIHN1Y2Nlc3NmdWwgYW5kIG5vIGFjY291bnQgd2FzIHByZXZpb3VzbHkgc2V0IGZvciB0aGUwcGVyc29uYWwgaWQuALBUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGBjYWxsX3ZhbGlkX2F0YCB1bnRpbLxgY2FsbF92YWxpZF9hdCArIGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgLh0BYGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgIGlzIGEgY29uc3RhbnQgYXZhaWxhYmxlIGluIHRoZSBtZXRhZGF0YS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5kdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudAAFBHhVbnNldCB0aGUgcGVyc29uYWwgaWQgYWNjb3VudC5gY3JlYXRlX3Blb3BsZV9jb2xsZWN0aW9uAAYodENyZWF0ZSB0aGUgcGVvcGxlIGNvbGxlY3Rpb24uACkBVGhpcyBjYWxsIGlzIHZhbGlkIG9ubHkgaWYgdGhlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCB5ZXQuIE9uY2UgY3JlYXRlZCyMdGhpcyBjYWxsIGNhbm5vdCBiZSBleGVjdXRlZCBhZ2Fpbi4A1FRoZSBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBhIGZpeGVkIGNvbmZpZ3VyYXRpb246uC0gT3duZXI6IENvbmZpZ3VyZWQgdmlhIGBDb2xsZWN0aW9uT3duZXJgIHR5cGXALSBPbmJvYXJkaW5nIHNpemU6IGBQRU9QTEVfT05CT0FSRElOR19TSVpFYCAoMTApSC0gTW9kZTogYEZsZXhpYmxlYEwtIFJpbmcgc2l6ZTogYFIyZTlgWGNsZWFuX3VwX3N0YWxlX2FsaWFzZXMEARxhbGlhc2VzVQQB3EJvdW5kZWRWZWM8Q29udGV4dHVhbEFsaWFzLCBDb25zdFUzMjxNQVhfQlVMS19DTEVBTlVQPj4AB1CgUmVtb3ZlIHN0YWxlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmdzLgBgQSBtYXBwaW5nIGlzIHN0YWxlIHdoZW46LQEtIGl0cyBjb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBbYENvbmZpZzo6QWNjb3VudENvbnRleHRzYF0gKGdvdmVybmFuY2WoICByZWNvbmZpZ3VyYXRpb24sIGVuZGVkIGFpcmRyb3AgZXRjLiksIG9ycC0gaXRzIHJpbmcgaGFzIGJlZW4gZGVsZXRlZC4AHQFSZXZpc2lvbiBtaXNtYXRjaGVzIGRvIG5vdCByZW5kZXIgYW4gYWxpYXMgc3RhbGUuIFRoZSB1c2VyIGNhbiBjb250aW51ZRUBdHJhbnNhY3RpbmcgdmlhIGBBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWRgIHdpdGhvdXQgaGF2aW5nIHRvTHJlZG8gYWNjb3VudCBzZXR1cC4A/FR5cGljYWxseSBzdWJtaXR0ZWQgYnkgdGhlIE9DVywgYnV0IHRoZSBkaXNwYXRjaCBkb2VzIG5vdCB0cnVzdKh0aGUgY2FsbGVyLiBFYWNoIGFsaWFzIGlzIHJlLXZhbGlkYXRlZCB2aWHsYFNlbGY6OmVuc3VyZV9hbGlhc19pc19zdGFsZWA7IHRob3NlIHRoYXQgYXJlIG5vdCBzdGFsZSBhcmUgc2tpcHBlZC4A8EF0IG1vc3QgW2BNQVhfQlVMS19DTEVBTlVQYF0gYWxpYXNlcyBhcmUgcHJvY2Vzc2VkIHBlciBjYWxsLgABAVRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBsb2NhbCBvciBpbi1ibG9jay4gVGh1cywgZXh0ZXJuYWx4aW52b2NhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEEAAACCABVBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAekDBFMAAAQAWQQBGFZlYzxUPgAAWQQAAALpAwBdBAxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBBDYWxsBARUAAFEEHZvdGUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcb3BpbmlvbmEEASRKdWRnZW1lbnQAAATgRmVlbGVzcyBvbiBzdWNjZXNzIChkZXRlcm1pbmVkIG9ubHkgYnkgdG9wIHRocmVlIGxpbmVzKS4oY2xvc2VfY2FzZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0eQIBGFdlaWdodAABEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgY2xvc2VkLiBJdCBpcyBpbmNsdWRlZCBpbiB0aGlzIGNhbGwncyBkZWNsYXJlZCB3ZWlnaHQgYW5kWQFjaGVja2VkIGFnYWluc3QgdGhlIGFjdHVhbCBjYWxsYmFjayB3ZWlnaHQgb24tY2hhaW4sIHdpdGggdGhlIGRpZmZlcmVuY2UgcmVmdW5kZWQuIFRoZUEBY2FsbCBmYWlscyB3aXRoIGBDYWxsYmFja1dlaWdodFRvb0xvd2AgaWYgdGhlIGJvdW5kIGRvZXMgbm90IGNvdmVyIHRoZSBjYWxsYmFjay4oY2xlYW5fdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzAAIMLQFPcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgdHJhbnNhY3Rpb24gaXMgYXV0aG9yaXplZCBpbiBgQXV0aG9yaXplQ2FsbGBhAXdoZW4gdGhlIHNvdXJjZSBpcyBsb2NhbCAoZS5nLiBmcm9tIHRoZSBvZmZjaGFpbiB3b3JrZXIpLiBGb3IgZXh0ZXJuYWwgdHJhbnNhY3Rpb25zLCB1c2VQYGNsZWFuX3ZvdGVfc2lnbmVkYC4kcmVhcF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAADACRpbnRlcnZlbmUMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcdmVyZGljdGEEASRKdWRnZW1lbnQAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0eQIBGFdlaWdodAAEEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgaW50ZXJ2ZW5lZC4gSXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYWxsJ3MgZGVjbGFyZWQgd2VpZ2h0WQFhbmQgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgY2FsbGJhY2sgd2VpZ2h0IG9uLWNoYWluLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHJlZnVuZGVkLlEBVGhlIGNhbGwgZmFpbHMgd2l0aCBgQ2FsbGJhY2tXZWlnaHRUb29Mb3dgIGlmIHRoZSBib3VuZCBkb2VzIG5vdCBjb3ZlciB0aGUgY2FsbGJhY2suKGNsYWltX3ZvdGUEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAUIIQFBIHBlcnNvbiBjbGFpbXMgdGhlIG1vYiBjcmVkaXQgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVjdCB2b3RlIG9uIGEgY2FzZS5gVGhlIGNhc2UgbXVzdCBiZSBgRG9uZWAuOHBheW91dF9yZXdhcmRzBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABgQJAUEgcGVyc29uIGNvbnZlcnRzIHRoZWlyIGNsYWltZWQgbW9iIGNyZWRpdCBpbnRvIGEgZGlyZWN0IHRyYW5zZmVyLixjbGFpbV92b3RlcwQBMGNhc2VfaW5kaWNlc2kEAThWZWM8Q2FzZUluZGV4PgAHCDUBQSBwZXJzb24gY2xhaW1zIG11bHRpcGxlIG1vYiBjcmVkaXRzIGFzc29jaWF0ZWQgYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLiBUaGVQY2FzZSBtdXN0IGJlIGBEb25lYC5Ic3RhcnRfcGF5b3V0X3JvdW5kAAgAWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAJAFhyZW1vdmVfcGF5b3V0X3NjaGVkdWxlBAEUaW5kZXg4AQx1MzIACgAwY2xhaW1fY3JlZGl0AAsAMGNsZWFuX3BvaW50cwgBFHJvdW5kOAEoUm91bmRJbmRleAABFHZvdGVyCAEUQWxpYXMADABAZm9yY2VfcmlwZW5fY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADQAodG91Y2hfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADgBQY2xlYXJfdm90aW5nX3BlbmFsdHkADwBEY2xlYW5fdm90ZV9zaWduZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEUdm90ZXIIARRBbGlhcwAQBFhPcmlnaW4gbXVzdCBiZSBzaWduZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmEEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5JEp1ZGdlbWVudAABCBRUcnV0aAQAZQQBFFRydXRoAAAAIENvbnRlbXB0AAEAAGUEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5FFRydXRoAAEIEFRydWUAAAAURmFsc2UAAQAAaQQAAAI4AG0EDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBBDYWxsBARUAAFYFGFwcGx5AAAMkC0gRGVjbGFyZSBpbnRlbnRpb24gdG8gZ2V0IGEgdGF0dG9vLkwtIERlcG9zaXQgaXMgdGFrZW4uuC0gYElua1R5cGVgIG1heSBub3QgYmUgYFByb2NlZHVyYWxEZXJpdmF0aXZlYC48c3VibWl0X2V2aWRlbmNlBAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAARC8LSBPcGVuIGEgTW9iIFJ1bGUgY2FzZSB0byBqdWRnZSB0aGUgYGV2aWRlbmNlYC78LSBSZXF1ZXN0cyBhIGp1ZGdlbWVudCBmb3IgdGhlIHByb29mLW9mLWluayBldmlkZW5jZSBzdGF0ZW1lbnQuUQEtIE5lZWRzIGBTaWduZWRFeHRlbnNpb25gIHRvIGF2b2lkIHVwZnJvbnQgcmVxdWlyZW1lbnQgZm9yIGZlZSBpZiBganVkZ2VtZW50cyA9PSAwYC45AS0gSWYgYGp1ZGdlbWVudHMgPiAwYCwgdGhlbiBhbiBhZGRpdGlvbmFsIGZlZSBzaG91bGQgYmUgY2hhcmdlZCBpbnRvIFRyZWFzdXJ5LhhqdWRnZWQMARh0aWNrZXQ4AURPcmFjbGVUaWNrZXRPZjxUPgABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEkanVkZ2VtZW50YQQBJEp1ZGdlbWVudAACBOhJcyBjYWxsZWQgYnkgdGhlIE9yYWNsZSB3aGVuIHRoZSBldmlkZW5jZSBoYXMgYmVlbiBqdWRnZWQuRHJlZ2lzdGVyX3JlZmVycmVkDAEMa2V5CAEsTWVtYmVyT2Y8VD4AASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABSHByb29mX29mX293bmVyc2hpcHEEAbA8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQADJFAtIEdldHMgYSBuZXcgYGluZGV4YHgtIFB1dHMgYW4gZW50cnkgaW50byBgUGVvcGxlYC6YLSBDYWxscyBQZW9wbGUvYG5ld1BlcnNvbihpbmRleCwga2V5KWAALCMgQXJndW1lbnRzsCogYGtleWAgLSBUaGUgcGVyc29uYWwgaWRlbnRpdHkgdG8gcmVnaXN0ZXIuIQEqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIGNhbmRpZGF0ZSdzIHJlZmVycmFsIHJld2FyZC5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuVHJlZ2lzdGVyX25vbl9yZWZlcnJlZAwBDGtleQgBLE1lbWJlck9mPFQ+AAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAAUhwcm9vZl9vZl9vd25lcnNoaXBxBAGwPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABDhQLSBHZXRzIGEgbmV3IGBpbmRleGB4LSBQdXRzIGFuIGVudHJ5IGludG8gYFBlb3BsZWAumC0gQ2FsbHMgUGVvcGxlL2BuZXdQZXJzb24oaW5kZXgsIGtleSlgACwjIEFyZ3VtZW50c7AqIGBrZXlgIC0gVGhlIHBlcnNvbmFsIGlkZW50aXR5IHRvIHJlZ2lzdGVyLsAqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgcmV3YXJkcy5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuACgjIFdhcm5pbmc6ADkBVGhpcyBjYWxsIGNhbiBwYXkgdHdvIHJld2FyZHMgdG8gdGhlIHNhbWUgYWNjb3VudCBmb3Igbm9uLXJlZmVycmVkIGNhbmRpZGF0ZXMuKQFUaGUgYXBwIGlzIHJlc3BvbnNpYmxlIGZvciBhbnkgYWRkaXRpb25hbCBwcml2YWN5IGhhbmRsaW5nIGFmdGVyIHRyYW5zZmVyLhhyZXJvbGwABQAYY29tbWl0CAEYY2hvaWNldQQBJElua0Nob2ljZQABKHJlcXVpcmVfaWS1AwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAYUSQFDb21taXQgdG8gYSBkZXNpZ24gYW5kIGF1dGhvcml6ZSB0aGUgc3RvcmFnZSBmb3IgKHBvc3NpYmx5IGp1c3QgaW5pdGlhbCkgZXZpZGVuY2UuAFUBSWYgYSBzcGVjaWZpYyBwZXJzb25hbCBpZGVudGl0eSBpcyByZXF1aXJlZCwgdGhlbiB0aGlzIGNhbiBiZSBwbGFjZWQgaW4gYHJlcXVpcmVfaWRgLkEBVGhpcyBjYW4gYmUgYW55IHVudXNlZC91bnJlc2VydmVkIHBlcnNvbmFsIGlkZW50aXR5IG5vIGdyZWF0ZXIgdGhhbiB0aGUgYE5leHRJZGAgY291bnRlci40YWxsb2NhdGVfZnVsbAAHABx0aW1lb3V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAIDDkBT25jZSBhIHRpbWVvdXQgcGFzc2VzLCByZW1vdmVzIGEgY2FuZGlkYXRlIHdobyBpcyBzZWxlY3RlZCBidXQgbm90IHlldCBwcm92ZW4uWQFJZiB0aGUgY2FuZGlkYXRlIHdhcyByZWZlcnJlZCB0aGVuIHJlZmVycmFsIGlzIGJhZCwgaWYgY2FuZGlkYXRlIGFwcGxpZWQgd2l0aCBkZXBvc2l0LExkZXBvc2l0IGlzIHNsYXNoZWQuIGZsYWtlb3V0AAkEtFJlbW92ZSBhIGNhbmRpZGF0ZSB3aG8gaGFzIG5vdCB5ZXQgY29tbWl0dGVkLlBhcHBseV93aXRoX3NpZ25hdHVyZQwBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABJHNpZ25hdHVyZXkEAUhUOjpUaWNrZXRTaWduYXR1cmUAARh0aWNrZXQEASRUOjpUaWNrZXQAChB0VXRpbGl6ZSBhIHJlZmVycmFsIHNpZ25hdHVyZS4AXQFUaGUgcGF5bG9hZCB0byBiZSBzaWduZWQgYnkgdGhlIHJlZmVycmVyIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQga2V5IHBhaXIgaXMgdGhlIGVuY29kZWSkYnl0ZXMgb2YgdGhlIGFjY291bnQgSUQgb2YgdGhlIGNhbmRpZGF0ZS5UYXBwbHlfd2l0aF9pbnZpdGF0aW9uDAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJleQQBSFQ6OlRpY2tldFNpZ25hdHVyZQATENRBcHBseSB0byB0aGUgUHJvb2Ytb2YtSW5rIHByb2Nlc3Mgd2l0aCBhbiBpbnZpdGF0aW9uLgBZAVRoZSBwYXlsb2FkIHRvIGJlIHNpZ25lZCBieSB0aGUgaW52aXRlciB1c2luZyB0aGVpciByZWdpc3RlcmVkIGtleSBwYWlyIGlzIHRoZSBlbmNvZGVkpGJ5dGVzIG9mIHRoZSBhY2NvdW50IElEIG9mIHRoZSBjYW5kaWRhdGUuRGFkZF9kZXNpZ25fZmFtaWx5DAEUaW5kZXjNAwEsRmFtaWx5SW5kZXgAARBraW5kgQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAAsE8EFkZCBhIGRlc2lnbiBmYW1pbHkuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLkxzZXRfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AAwYvEFkZCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24uAFUBT25seSBvbmUgcmVmZXJyYWwgdGlja2V0IG1heSBiZSBhY3RpdmUgYXQgYW55IGdpdmVuIHRpbWUgZm9yIG9uZSBwZXJzb24uIENhbGxpbmcgdGhpcyUBZXh0cmluc2ljIHdoaWxlIGEgdmFsaWQgdGlja2V0IGlzIHNldCB3aWxsIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdGlja2V0LgA5AUlmIGFueSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZHMgYXJlIHByZXNlbnQsIHRoZXkgbmVlZCB0byBiZSByZWdpc3RlcmVkIGZpcnN0LlhjYW5jZWxfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AA0EyENhbmNlbCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24ujHJlZ2lzdGVyX3N1Y2Nlc3NmdWxfcmVmZXJyYWxfcmV3YXJkBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQADgA0Z3JhbnRfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAPGORHcmFudHMgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AmFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRhdGlvbnNPcmlnaW4uALAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ2l2ZSBpbnZpdGVzIHRvLqQtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBnaXZlLpByZW1vdmVfYXZhaWxhYmxlX2FuZF9wZW5kaW5nX2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUbGltaXQ4AQx1MzIAEBicUmVtb3ZlIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAJxUaGUgb3JpZ2luIG11c3QgYmUgYEludml0YXRpb25zT3JpZ2luYC4A0C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGludml0ZXMgZnJvbS7sLSBgbGltaXRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVuZGluZyBpbnZpdGVzIHRvIHJlbW92ZS5Ec2V0X2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgARFEhJbnZpdGUgYW4gYWNjb3VudC4ADQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBpbnZpdGVzIGxlZnQuAJQtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBzZXQuUGNhbmNlbF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AEhRUQ2FuY2VsIGFuIGludml0YXRpb24uACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuRHNldF9jb25maWd1cmF0aW9uBAEYY29uZmlnhQQBfENvbmZpZ1JlY29yZDxCbG9ja051bWJlckZvcjxUPj4AMgQVAVNldCB0aGUgY29uZmlndXJhdGlvbiByZWNvcmQuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLmBzZXRfcmVpbWJ1cnNlbWVudF92YWx1ZXMIATxyZWZlcnJlZF92YWx1ZXOJBAHoQm91bmRlZFZlYzwoQmFsYW5jZU9mPFQ+LCB1MzIpLCBUOjpNYXhSZWltYnVyc2VtZW50VmFsdWVzPgABPHJlZmVycmVyX3ZhbHVlc4kEAehCb3VuZGVkVmVjPChCYWxhbmNlT2Y8VD4sIHUzMiksIFQ6Ok1heFJlaW1idXJzZW1lbnRWYWx1ZXM+ADMoTQFTZXQgdGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVkIGNhbmRpZGF0ZXMgYXMgd2VsbCBhcyB0aGVpck0BcmVmZXJyZXJzLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2YgcmVpbWJ1cnNlbWVudHMgZm9yIGVhY2ggdmFsdWUuIFRoZXNlIHZhbHVlcyBhcmUkc3RvcmVkIGluUQFyZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmVJAXRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLiBUaGUgbGVuZ3RoIG9mIHRoZSB0d28gbGlzdHMgbXVzdCBiZSBlcXVhbC4AIFdBUk5JTkchAE0BQWZ0ZXIgdGhlIG51bWJlciBvZiByZWltYnVyc2VtZW50cyBpcyBleGhhdXN0ZWQgZm9yIGEgdmFsdWUgaW4gdGhlIGxpc3QsIHRoZSBwYWxsZXT0c3RhcnRzIHVzaW5nIHRoZSBuZXh0IHZhbHVlIGltbWVkaWF0ZWx5IGZvciBmdXR1cmUgdHJhbnNmZXJzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5xBAAAA0AAAAAMAHUEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRJbmtDaG9pY2UAARRARGVzaWduZWRFbGVjdGl2ZQgAzQMBLEZhbWlseUluZGV4AADNAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQEAM0DASxGYW1pbHlJbmRleAABAEhQcm9jZWR1cmFsUGVyc29uYWwEAM0DASxGYW1pbHlJbmRleAACAChQcm9jZWR1cmFsCADNAwEsRmFtaWx5SW5kZXgAAAwBMFZhcmlhbnRJbmRleAADAFBQcm9jZWR1cmFsRGVyaXZhdGl2ZQgAKAEoUGVyc29uYWxJZAAAtQMBSE9wdGlvbjxQZXJzb25hbElkPgAEAAB5BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABxBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAHEEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAH0EAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAfQQBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAfQQAAANBAAAADACBBAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoRmFtaWx5S2luZAABECBEZXNpZ25lZAQBFGNvdW50zQMBLERlc2lnbkluZGV4AAAARFByb2NlZHVyYWxBY2NvdW50AAEASFByb2NlZHVyYWxQZXJzb25hbAACAChQcm9jZWR1cmFsBAEUcmFuZ2UMATBWYXJpYW50SW5kZXgAAwAAhQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MENvbmZpZ1JlY29yZAQsQmxvY2tOdW1iZXIBOAAgAThyZXJvbGxfdGltZW91dDgBLEJsb2NrTnVtYmVyAAE8ZmFzdHRyYWNrX2NvdW50OAEMdTMyAAEcbWF4aW11bTgBDHUzMgABOGZ1bGxfYWxsb2NfbGVuKAEMdTY0AAFAZnVsbF9hbGxvY19jb3VudDgBDHUzMgABOGluaXRfYWxsb2NfbGVuKAEMdTY0AAFAaW5pdF9hbGxvY19jb3VudDgBDHUzMgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAiQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNBARTAAAEAJEEARhWZWM8VD4AAI0EAAAECEUBOACRBAAAAo0EAJUEDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQQQ2FsbAQEVAABTExzaWduX3VwX3dpdGhfaW52aXRlCAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAASNBTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50IGFuZCBhbiBpbnZpdGUuABUBVGhpcyBpcyBmb3IgbmV3IHBsYXllcnMgb3IgYXJjaGl2ZWQgcGxheWVycywgb3RoZXIgcGxheWVycyBzaG91bGQgdXNlqFtgUGFsbGV0OjpzaWduX3VwX3dpdGhfYWNjb3VudGBdIGZvciBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50CAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgABTJhTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50LgA9AUlmIHRoZSBwbGF5ZXIgaXMgbmV3IG9yIGFyY2hpdmVkLCB0aGVuIGEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lci5sT3RoZXJ3aXNlIHRoZSBjYWxsIGlzIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBFAWBhaXJkcm9wc2Agb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpczkBZ2FtZS4gUGFzcyBgTm9uZWAgdG8gc2tpcCBpdDsgb3RoZXJ3aXNlIGl0IGhvbGRzIGV4YWN0bHkgb25lIFZSRiBwZXIgc2NoZWR1bGVkVQFhaXJkcm9wIGV2ZW50IChgYWlyZHJvcHNfc2NoZWR1bGVkYCBpbiB0aGUgW2BHYW1lYF0gc3RvcmFnZSksIGluIGFpcmRyb3AtaW5kZXggb3JkZXIuVQFFYWNoIGVudHJ5IGlzIGJvdW5kIHRvIGl0cyBvd24gZXZlbnQgaWQgKHNlZSBbYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGBdKSwgc2VlZHMgdGhlWQFwbGF5ZXIncyBkcmF3IHNsb3QgZm9yIHRoYXQgZXZlbnQgYW5kIHByb3ZlcyB0aGVpciBpZGVudGl0eSBwYXRoOiB0aGUgYWxpYXMgdmFyaWFudCBpZh0BdGhlIHBsYXllciBpcyByZWNvZ25pemVkIChwYWxsZXQtc2NvcmUgYHJlY29nbml0aW9uYCBpcyBgUmVjb2duaXplZGAgb3JVAWBFeHRlcm5hbGx5UmVjb2duaXplZGApLCBvdGhlcndpc2UgdGhlIGFjY291bnQgdmFyaWFudC4gVGhlIHNpZ24tdXAgZmFpbHMgZW50aXJlbHkgaWZJAWFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnMgZG9lcyBub3RZAW1hdGNoIGBhaXJkcm9wc19zY2hlZHVsZWRgLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BBaXJkcm9wVnJmc2BdIGZvciBtb3JlIGRldGFpbHMuADEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciwgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uSHNpZ25fdXBfd2l0aF9hbGlhcxABOGlkZW50aWZpZXJfa2V5fQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAFEc3RhdGVtZW50X2FjY291bnQEATBUOjpBY2NvdW50SWQAAQxzaWd5BAFMVDo6QWNjb3VudFNpZ25hdHVyZQABIGFpcmRyb3BzmQQBmE9wdGlvbjxBaXJkcm9wVnJmczxBaXJkcm9wUHJvb2ZPZjxUPj4+AAJsVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC5RAS0gYGFpcmRyb3BzYDogb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpc2EBICBnYW1lLiBQYXNzIGBOb25lYCB0byBza2lwIGl0OyBvdGhlcndpc2UgaXQgaG9sZHMgZXhhY3RseSBvbmUgVlJGIHBlciBzY2hlZHVsZWQgYWlyZHJvcGEBICBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIGBHYW1lYCBzdG9yYWdlKSwgaW4gYWlyZHJvcC1pbmRleCBvcmRlci4gRWFjaCBlbnRyeVkBICBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGApIGFuZCBzZWVkcyB0aGUgcGxheWVyJ3NhASAgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50OyB0aGUgYWxpYXMgdmFyaWFudCBtdXN0IGJlIHVzZWQgZm9yIGFsaWFzLWJhc2VkIHBsYXllcnMgZ2l2ZW5BASAgdGhleSBhcmUgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUgcGFydGljaXBhbnQgaW5mb3JtYXRpb24uIFRoZSBzaWduLXVwIGZhaWxzXQEgIGVudGlyZWx5IGlmIGFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnNZASAgZG9lcyBub3QgbWF0Y2ggYGFpcmRyb3BzX3NjaGVkdWxlZGAuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgQWlyZHJvcFZyZnNgIGZvciBtb3JlKCAgZGV0YWlscy6Ac2lnbl91cF93aXRoX2FjY291bnRfbGl0ZV9pbnZpdGUMARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAVdEUBU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudCBhbmQgYSBsaXRlIGludml0ZSwgdGhlIGludml0YXRpb24gb2YgYSBsaXRlHHBlcnNvbi4AVQFMaXRlIHBlcnNvbmhvb2QgaXMgY3JlZGlibGUgZW5vdWdoIHRvIHBsYXksIHNvIGEgbGl0ZSBwZXJzb24gY2FuIGludml0ZSBhbiBhY2NvdW50IG9mTQF0aGVpciBvd24uIEl0IGlzIHJlZ2lzdGVyZWQgYXMgYW4gYWNjb3VudC1iYXNlZCBwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBVAVRoZSBvcmlnaW4gbXVzdCBiZSBhIGxpdGUgYWxpYXMgaW4gW2BpbmRpdl9wYWxsZXRfc2NvcmU6OlBhbGxldDo6c2NvcmVfY29udGV4dGBdLCBzZWVZAVtgQ29uZmlnOjpFbnN1cmVMaXRlQWxpYXNgXS4gVGhlIGxpdGUgcGVyc29uIG5hbWVzIHRoZSBhY2NvdW50IHBsYXlpbmcgb24gdGhlaXIgYmVoYWxmVQF3aXRoIGBhY2NvdW50YCwgc28gdGhlIHBsYXlpbmcgYWNjb3VudCBpcyBub3QgdGhlIGxpdGUgcGVyc29uJ3Mgb3duIGFjY291bnQgYW5kIHN0YXlzTHVubGlua2FibGUgZnJvbSBpdC4AXQFBIGxpdGUgcGVyc29uIGludml0ZXMgb25lIGFjY291bnQsIGV2ZXI6IHRoZSBmaXJzdCBhY2NvdW50IHRoZXkgc2lnbiB1cCB0aGlzIHdheSBpcyB0aGXsb25seSBvbmUgdGhleSBjYW4gcGxheSB3aXRoLCBldmVuIGFmdGVyIGl0IHN0b3BwZWQgcGxheWluZy4AOQFUaGlzIG11c3QgYmUgdXNlZCBieSBsaXRlLXBlb3BsZSBvbiB0aGVpciBmaXJzdCBzaWdudXAgb3IgYWZ0ZXIgdGhleSBoYXZlIGJlZW70YXJjaGl2ZWQuIEZ1cnRoZXIgc2lnbnVwcyB3aGlsZSB0aGUgcGxheWVyIGlzIGFjdGl2ZSBtdXN0IHVzZaRbYFBhbGxldDo6c2lnbl91cF93aXRoX2FjY291bnRgXSBpbnN0ZWFkLhhyZXBvcnQEASxmdWxsX3JlcG9ydLEEATRGdWxsUmVwb3J0PFQ+AANwlEFmdGVyIHRoZSBnYW1lLCBzZW5kIHRoZSBmdWxsIHJlcG9ydC4A0FRoZSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlcG9ydGluZyBwaGFzZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4ARQFgZnVsbF9yZXBvcnRgIGhvbGRzIG9uZSBlbnRyeSBwZXIgcm91bmQgKGV4YWN0bHkgYGdhbWUucm91bmRzYCBvZiB0aGVtKSwgYW5kIGVhY2hFAXJvdW5kIGxpc3RzIG9uZSBgUmVwb3J0YCBwZXIgY28tcGxheWVyIGluIHRoZSByZXBvcnRlcidzIGdyb3VwIGZvciB0aGF0IHJvdW5kLCBpbj0BZ3JvdXAgb3JkZXIgYW5kIGV4Y2x1ZGluZyB0aGUgcmVwb3J0ZXIuIEEgcm91bmQgd2hvc2UgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHRoZTkBcmVwb3J0ZXIncyByZWFsIGdyb3VwIG1lbWJlcnNoaXAgaXMgcmVqZWN0ZWQgd2l0aCBgRXJyb3I6OkludmFsaWRSZXBvcnRgLiBFYWNoYQFgUmVwb3J0OjpQZXJzb25gIHZvdGUgYXdhcmRzIGFuIGF0dGVuZGFuY2UgTkZUIGNsYWltIGNyZWRpdCB0byB0aGUgYXR0ZXN0ZWUgaW1tZWRpYXRlbHk7jGBSZXBvcnQ6Ok5vdFBlcnNvbmAgYXdhcmRzIG5vdGhpbmcuAFEBVGhlIGNhcGFjaXR5IGNoZWNrIHJlcXVpcmVzIG9uZSBmcmVlIGNyZWRpdCBzbG90IHBlciBgUGVyc29uYCB2b3RlIGluIHRoZSByZXBvcnQuIElmSQFjYXBhY2l0eSBpcyBpbnN1ZmZpY2llbnQsIHRoZSBjYWxsIHJldHVybnMgYEVycm9yOjpDcmVkaXRDYXBhY2l0eUV4aGF1c3RlZGAgYmVmb3JlRQFyZWNvcmRpbmcgYW55IHZvdGVzIG9yIGNyZWRpdHMuIFJldHJ5IHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGFuZCByZXBvcnRpbmcgaXMsc3RpbGwgb3Blbi4ASQFBZnRlciB0aGUgdm90ZXMgZnJvbSB0aGUgcmVwb3J0IGFyZSBjb3VudGVkLCB0aGUgcmVwb3J0ZXIgYW5kIGVhY2ggb2YgdGhlIHJlcG9ydGVkRQFwbGF5ZXJzIHdob3NlIGF0dGVuZGFuY2UgY2FuIG5vdyBiZSBkZXRlcm1pbmVkIGFyZSBwcm9jZXNzZWQgZWFybHkuIFRoaXMgbGV0cyB0aGVNAWdhbWUgc2tpcCB0aGUgcGxheWVyLXByb2Nlc3MgcGhhc2UgZW50aXJlbHkgd2hlbiBldmVyeSBwbGF5ZXIgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5VHRoZSBlbmQgb2YgcmVwb3J0aW5nLgBJAU9uIHN1Y2Nlc3MgdGhlIGNhbGwgcGF5cyBubyBmZWUgKGBQYXlzOjpOb2ApLiBJdHMgd2VpZ2h0IHNjYWxlcyB3aXRoIHRoZSBudW1iZXIgb2ZNAWNvLXBsYXllciBlbnRyaWVzIGFjcm9zcyBhbGwgcm91bmRzLCBub3QgdGhlIHJvdW5kIGNvdW50LCBzbyBwYXJ0aWFsIGdyb3VwcyBhcmUgbm90UQFvdmVyY2hhcmdlZC4gVGhlIHByZS1kaXNwYXRjaCBjaGFyZ2UgYXNzdW1lcyBldmVyeSBjby1wbGF5ZXIgZW50cnkgcGx1cyB0aGUgcmVwb3J0ZXJJAWlzIGVhcmx5LWVuYWN0ZWQgYW5kIGlzIHJlZnVuZGVkIGRvd24gdG8gdGhlIGFjdHVhbCBlbmFjdG1lbnQgY291bnQgcG9zdC1kaXNwYXRjaC4gb2ZmYm9hcmQABDCAT2ZmYm9hcmQgYSBwbGF5ZXIgZnJvbSB0aGUgZ2FtZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4AXQFUaGVyZSBtdXN0IGJlIG5vIGdhbWUgb3IgdGhlIGV4aXN0aW5nIGdhbWUgbXVzdCBiZSBpbiByZWdpc3RyYXRpb24gcGhhc2UgYW5kIHRoZSBwbGF5ZXKUbXVzdCBoYXZlIG5vdCBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLgBdAUEgcGxheWVyIHdob3NlIHBhbGxldC1zY29yZSByZWNvZ25pdGlvbiBpcyBgUmVjb2duaXplZGAgaGFzIHRoZWlyIHBlcnNvbmhvb2Qgc3VzcGVuZGVkLE0BdGhlIHNhbWUgYXMgYW4gYWJzZW5jZS10cmlnZ2VyZWQgc3VzcGVuc2lvbi4gT2ZmYm9hcmRpbmcgaXMgcGVybWFuZW50LiBQbGF5aW5nIGFzIGFdAXBlcnNvbiBhZ2FpbiBhZnRlciBhIHN1c3BlbnNpb24gYW5kIHRoZW4gcmUtcmVjb2duaXRpb24gcmVxdWlyZXMgb25ib2FyZGluZyB1bmRlciBhIG5ld2xwZXJzb25hbCBpZCB3aXRoIGEgbmV3IGtleS4ca2lja291dAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAFLDEBS2lja291dCBhIGtpY2thYmxlIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGFmdGVyIGBOb25QbGF5aW5nS2lja291dFRpbWVgLgCgVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LgBdAUEgcGxheWVyIHdob3NlIHBhbGxldC1zY29yZSByZWNvZ25pdGlvbiBpcyBgUmVjb2duaXplZGAgaGFzIHRoZWlyIHBlcnNvbmhvb2Qgc3VzcGVuZGVkLE0BdGhlIHNhbWUgYXMgYW4gYWJzZW5jZS10cmlnZ2VyZWQgc3VzcGVuc2lvbi4gVGhlIGtpY2tvdXQgaXMgcGVybWFuZW50LiBQbGF5aW5nIGFzIGFdAXBlcnNvbiBhZ2FpbiBhZnRlciBhIHN1c3BlbnNpb24gYW5kIHRoZW4gcmUtcmVjb2duaXRpb24gcmVxdWlyZXMgb25ib2FyZGluZyB1bmRlciBhIG5ld2xwZXJzb25hbCBpZCB3aXRoIGEgbmV3IGtleS4AIQEtIGBwbGF5ZXJgOiBUaGUgcGxheWVyIHRvIGtpY2tvdXQuIEl0IG11c3QgYmUgYXJjaGl2ZWQgYW5kIGtpY2thYmxlIHdpdGjYICBgYXJjaGl2ZWRfc2luY2VgIG9sZGVyIHRoYW4gYE5vblBsYXlpbmdLaWNrb3V0VGltZWAuNGdyYW50X2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIABhj0R3JhbnQgc29tZSBpbnZpdGVzIHRvIGFuIGFjY291bnQgc28gdGhleSBjYW4gZGlzdHJpYnV0ZSB0aGVtLgCIVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGVJc3N1ZXJgLgC0LSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdyYW50IGludml0ZXMgdG8uqC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBpbnZpdGVzIHRvIGdyYW50LpByZW1vdmVfYXZhaWxhYmxlX2FuZF9wZW5kaW5nX2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUbGltaXQ4AQx1MzIABxiYQ2xlYXIgYWxsIGludml0ZXMgZ2l2ZW4gdG8gYW4gYWNjb3VudC4AiFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRlSXNzdWVyYC4A0C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGludml0ZXMgZnJvbS7sLSBgbGltaXRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVuZGluZyBpbnZpdGVzIHRvIHJlbW92ZS5Ec2V0X2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgAIGEhJbnZpdGUgYW4gYWNjb3VudC4AXQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBpbnZpdGVzIGxlZnQuIFRoZSBjYWxsIGlzIGZyZWUgb24gc3VjY2Vzcy4AlC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIHNldC5QY2FuY2VsX2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgAJFERDYW5jZWwgYW4gaW52aXRlLgAhAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSB0aWNrZXQgdG8gY2FuY2VsLgCgLSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gY2FuY2VsLjhzY2hlZHVsZV9nYW1lcwQBPGdhbWVzX3NjaGVkdWxlc8UEAVhWZWM8R2FtZVNjaGVkdWxlT2Y8VD4+AAoI0FNjaGVkdWxlcyBuZXcgZ2FtZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHNjaGVkdWxlcy5dAVNjaGVkdWxlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIsIGFuZCBhZnRlciB0aGUgb25nb2luZyBnYW1lIChpZiB0aGVyZSBpcyBhbnkpLlRyZW1vdmVfc2NoZWR1bGVkX2dhbWUEAThnYW1lX3BsYXlfdGltZTgBDHUzMgALAEBzZXRfcGxheV9kZXBvc2l0BAEYYW1vdW50RQEBSE5hdGl2ZUJhbGFuY2VPZjxUPgAQBBUBVXBkYXRlIHRoZSBjb25maWd1cmVkIHBsYXkgZGVwb3NpdCBhbW91bnQgZm9yIGZ1dHVyZSBhY2NvdW50IHNpZ251cHMuNGNsYWltX2FpcmRyb3AMAShnYW1lX2luZGV4OAEcR2FtZUlkeAABNGFpcmRyb3BfaW5kZXgMAQh1OAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkABFILQFDbGFpbSBhIHByaXplIGZyb20gdGhlIGFpcmRyb3AgZXZlbnQgYXQgaW5kZXggYGFpcmRyb3BfaW5kZXhgIHNjaGVkdWxlZCBmb3I0YGdhbWVfaW5kZXhgLgA5AUEgZ2FtZSBzY2hlZHVsZXMgb25lIGFpcmRyb3AgZXZlbnQgcGVyIGVudHJ5IGluIGl0cyBzY2hlZHVsZSdzIGBhaXJkcm9wc2AgKHNlZVEBW2BHYW1lU2NoZWR1bGVgXSk7IGBhaXJkcm9wX2luZGV4YCBzZWxlY3RzIHdoaWNoIG9mIHRoZW0gdG8gY2xhaW0gZnJvbS4gQSBwbGF5ZXIgd2hvIQF3b24gc2V2ZXJhbCBvZiB0aGUgZ2FtZSdzIGFpcmRyb3AgZXZlbnRzIGNsYWltcyBlYWNoIG9mIHRoZW0gc2VwYXJhdGVseS4AYQFFbGlnaWJpbGl0eSByZXF1aXJlcyAyIGNvbmRpdGlvbnMgb24gdGhlIGNsYWltYW50IHRvIGJlIHJlY29nbml6ZWQgYW5kIGhhdmUgYXR0ZW5kZWQgdGhlWGdhbWUuIEluIG1vcmUgZGV0YWlsczpRASogdG8gYmUgZWl0aGVyIHJlY29nbml6ZWQgaW4gcGFsbGV0LXNjb3JlIChgcmVjb2duaXRpb24uaXNfcmVjb2duaXplZCgpYCkgb3IgdG8gaGF2ZdggIHJlYWNoZWQgdGhlIHBlcnNvbmhvb2Qgc2NvcmUgKGByZWFjaGVkX3BlcnNvbmhvb2RgKSxhASogQU5EIGZvciBgZ2FtZV9pbmRleGAgdG8gbWF0Y2ggdGhlIHBhcnRpY2lwYW50J3MgYGxhc3RfYXR0ZW5kZWRfZ2FtZWAg4oCUIGkuZS4gdGhlIG1vc3RRASAgcmVjZW50IGdhbWUgdGhlIGNsYWltYW50IGFjdHVhbGx5IGF0dGVuZGVkIG11c3QgYmUgZXhhY3RseSB0aGUgZ2FtZSB0aGUgYWlyZHJvcCBpc1UBICB0aWVkIHRvLiBTdWJzZXF1ZW50IGdhbWUgYXR0ZW5kYW5jZSBvdmVycmlkZXMgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGUgY2xhaW0gbXVzdCBiZWEBICBtYWRlIGJlZm9yZSBhdHRlbmRpbmcgYW5vdGhlciBnYW1lLiBJbiBwYXJ0aWN1bGFyIGFuIGFpcmRyb3AgZXZlbnQgZHJhd24gbGF0ZSByZWxhdGl2ZUkBICB0byB0aGUgZ2FtZSBwbGF5IHRpbWUgbXVzdCBiZSBjbGFpbWVkIGJlZm9yZSB0aGUgY2xhaW1hbnQgYXR0ZW5kcyB0aGUgbmV4dCBnYW1lLgC0Q2xhaW1zIGFnYWluc3QgYSBjYW5jZWxsZWQgZ2FtZSBhcmUgcmVqZWN0ZWQubHRlc3RuZXRfZm9yY2Vfc3RhcnRfc2h1ZmZsZQBlDNRGb3JjZSBzdGFydCB0aGUgc2h1ZmZsZSBiZWZvcmUgaXRzIG5vcm1hbCBzdGFydCB0aW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcubHRlc3RuZXRfZm9yY2VfZW5kX3JlcG9ydGluZwBmDPhGb3JjZSBlbmQgYSBnYW1lJ3MgcmVwb3J0aW5nIHBoYXNlIGJlZm9yZSBpdHMgbm9ybWFsIGVuZCB0aW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcuPHNldF9nYW1lX3BoYXNlcwQBGHBoYXNlc+EEAUxQaGFzZUR1cmF0aW9uVmFsdWVzAA4siE92ZXJyaWRlIHRoZSBnYW1lIHBoYXNlIGR1cmF0aW9ucy4AKQFSZXN0cmljdGVkIHRvIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gKG9yIHJvb3QpLiBVbnRpbCByZXNldCwgYWxsIGZ1dHVyZTUBZ2FtZSBzY2hlZHVsZXMgdXNlIHRoZXNlIHBoYXNlcyBpbnN0ZWFkIG9mIFtgQ29uZmlnOjpEZWZhdWx0UGhhc2VEdXJhdGlvbnNgXS4NAVRvIHJldmVydCwgdGhlIG1hbmFnZXIgcmUtaXNzdWVzIHRoZSBjYWxsIHdpdGggdGhlIGRlc2lyZWQgZXhwbGljaXTAdmFsdWVzIOKAlCB0aGVyZSBpcyBubyBzZXBhcmF0ZSBjbGVhciBleHRyaW5zaWMuABkBT25seSBjYWxsYWJsZSB3aGlsZSBubyBnYW1lIGV4aXN0cyBvciB0aGUgY3VycmVudCBnYW1lIGlzIHN0aWxsIGluIGl0cykBUmVnaXN0cmF0aW9uIHBoYXNlOyBvdGhlcndpc2UgZmFpbHMgd2l0aCBbYEVycm9yOjpJbnZhbGlkR2FtZVN0YXRlYF0uIFRoaXMdAXByZXZlbnRzIGNoYW5naW5nIHBoYXNlIGR1cmF0aW9ucyBvbmNlIHBsYXllcnMgaGF2ZSBjb21taXR0ZWQgdG8gYSBnYW1liHdob3NlIHRpbWluZyBpcyBhbHJlYWR5IGxvY2tlZCBpbi4sY2FuY2VsX2dhbWUADww9AUNhbmNlbCB0aGUgY3VycmVudCBnYW1lIHdoaWxlIGl0IGlzIHN0aWxsIGluIHRoZSBSZWdpc3RyYXRpb24gb3IgU2h1ZmZsZSBwaGFzZS4AyFJlc3RyaWN0ZWQgdG8gW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXSAob3Igcm9vdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkEBBhPcHRpb24EBFQBnQQBCBBOb25lAAAAEFNvbWUEAJ0EAAABAACdBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMsQWlyZHJvcFZyZnMEBFAAAQgcQWNjb3VudAQAoQQBAQFCb3VuZGVkVmVjPFZyZlNpZ25hdHVyZSwgQ29uc3RVMzI8eyBNQVhfR0FNRV9BSVJEUk9QUyBhcyB1MzIgfT4+AAAAFEFsaWFzDAEYcHJvb2ZzrQQB1EJvdW5kZWRWZWM8UCwgQ29uc3RVMzI8eyBNQVhfR0FNRV9BSVJEUk9QUyBhcyB1MzIgfT4+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABAAChBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUEBFMAAAQAqQQBGFZlYzxUPgAApQQQHHNwX2NvcmUcc3IyNTUxOQx2cmYwVnJmU2lnbmF0dXJlAAAIAShwcmVfb3V0cHV0CAEwVnJmUHJlT3V0cHV0AAEUcHJvb2ZxBAEgVnJmUHJvb2YAAKkEAAACpQQArQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEdBARTAAAEACEEARhWZWM8VD4AALEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBtQQEUwAABADBBAEYVmVjPFQ+AAC1BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbkEBFMAAAQAvQQBGFZlYzxUPgAAuQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzGFJlcG9ydAABCBhQZXJzb24AAAAkTm90UGVyc29uAAEAAL0EAAACuQQAwQQAAAK1BADFBAAAAskEAMkEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczBHYW1lU2NoZWR1bGUIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAQAThnYW1lX3BsYXlfdGltZTgBDHUzMgABGHJvdW5kcwwBCHU4AAE4bWF4X2dyb3VwX3NpemU4AQx1MzIAASBhaXJkcm9wc80EAUkBQm91bmRlZFZlYzxHYW1lQWlyZHJvcDxBc3NldElkLCBCYWxhbmNlPiwgQ29uc3RVMzI8CnsgTUFYX0dBTUVfQUlSRFJPUFMgYXMgdTMyIH0+PgAAzQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRBARTAAAEAN0EARhWZWM8VD4AANEEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyxHYW1lQWlyZHJvcAgcQXNzZXRJZAFxARxCYWxhbmNlAUUBAAwBLGRyYXdfb2Zmc2V0OAEMdTMyAAEwY2xhaW1fd2luZG93OAEMdTMyAAEUcHJpemXVBAF4QWlyZHJvcFByaXplPEFzc2V0SWQsIEJhbGFuY2U+AADVBAxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMwQWlyZHJvcFByaXplCBxBc3NldElkAXEBMEFzc2V0QmFsYW5jZQFFAQAQASBhc3NldF9pZHEBARxBc3NldElkAAEwYXNzZXRfYW1vdW50RQEBMEFzc2V0QmFsYW5jZQABLG1heF93aW5uZXJzOAEMdTMyAAEod2lubmVyX2NhcNkEARxQZXJtaWxsAADZBAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAADdBAAAAtEEAOEEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0xQaGFzZUR1cmF0aW9uVmFsdWVzAAAUATByZWdpc3RyYXRpb244AQx1MzIAARxzaHVmZmxlOAEMdTMyAAFMcG9zdF9zaHVmZmxlX21hcmdpbjgBDHUzMgABJHJlcG9ydGluZzgBDHUzMgABOHBsYXllcl9wcm9jZXNzOAEMdTMyAADlBAxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBBDYWxsBARUAAEoWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAASBkdXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEMXFNjaGVkdWxlIHBheW91dCByb3VuZHMuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5YcmVtb3ZlX3BheW91dF9zY2hlZHVsZQQBFGluZGV4OAEMdTMyAAIMgFJlbW92ZSBhIHNjaGVkdWxlZCBwYXlvdXQgcm91bmQuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5AdHJhbnNpdGlvbl9yb3VuZAQBLHJvdW5kX2luZGV4OAEMdTMyAAMYSFN0YXJ0IGEgbmV3IHJvdW5kLgBRAVRoaXMgaXMgdmFsaWQgaWYgdGhlIGN1cnJlbnQgcm91bmQgaXMgZmluaXNoZWQsIG9yIGlmIHRoZSBjdXJyZW50IHJvdW5kIGRvZXNuJ3QgaGF2ZahwbGFubmluZyBhbmQgYSBzY2hlZHVsZSBleGlzdHMgdG8gcGxhbiBpdC4AvFRoaXMgaXMgYSB0YXNrLCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueWJvZHkuUG9wZXJhdGVfcGF5b3V0X3JvdW5kCAEscm91bmRfaW5kZXg4AShSb3VuZEluZGV4AAEUbGltaXQ4AQx1MzIABDx4T3BlcmF0ZSBzb21lIHJvdW5kIHBheWluZyBvdXQuAFEBRHJhaW5zIHJvdW5kJ3MgcGFydGljaXBhbnRzLCB1cCB0byBhIGxpbWl0LiBGb3IgZWFjaCBwYXJ0aWNpcGFudCwgYWRkIHRoZSBjYWxjdWxhdGVkFQFyZXdhcmQgKGBiYXNlX3Jld2FyZCArIHJlbWFpbmRlcl9wb3J0aW9uYCkgdG8gdGhlaXIgYGNyZWRpdGAgYmFsYW5jZS4AYQFUaGVuLCBtb3ZlcyBmdW5kcyBvbiB0aGUgcG90IGFjY291bnQgZnJvbSBQYXlvdXQgdG8gQ3JlZGl0LCBzbyB0aGV5IGFyZSBvd2VkIHRvIHNwZWNpZmljoHBhcnRpY2lwYW50cyByYXRoZXIgdGhhbiB0aGUgcm91bmQgcG9vbC4ARQFGaW5hbGx5LCByZWxlYXNlIHRoZSBsZWZ0b3ZlciBmcm9tIHRoZSBQYXlvdXQgaG9sZCBiYWNrIHRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2VUKGZ1bmRzIGFyZSByZWN5Y2xlZCkuALxUaGlzIGlzIGEgdGFzaywgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnlib2R5LgDEKiByb3VuZF9pbmRleDogVGhlIGluZGV4IG9mIHRoZSByb3VuZCB0byBvcGVyYXRlLhEBKiBsaW1pdDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcnRpY2lwYW50cyB0byBvcGVyYXRlIGluIHRoaXMgY2FsbC4gY2FzaF9vdXQABSRZAUNhc2ggb3V0IGhhbGYgb2YgdGhlIHNjb3JlLCByb3VuZGVkIHVwLiBDb252ZXJ0cyB0aGUgc2NvcmUgaW50byBwb2ludHMgZm9yIHRoZSBjdXJyZW50JQFwYXlvdXQgcm91bmQuIENhbGxlciBtdXN0IGhhdmUgbmV2ZXIgcmVhY2hlZCBwZXJzb25ob29kIHNpbmNlIG9uYm9hcmRpbmcuALRJdCBjYW4gYmUgY2FsbGVkIG9uY2UgcGVyIGdhbWUgc2Vzc2lvbiAoZXJhKS4APQFPcmlnaW4gbXVzdCBiZSBzaWduZWQgb3IgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWMgdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50WHRyYW5zYWN0aW9uIGV4dGVuc2lvbikAzEFsaWFzIG9yaWdpbiBpcyBub3QgYWxsb3dlZCBhcyB0aGV5IGNhbid0IGNhc2ggb3V0LjRyZWRlZW1fY3JlZGl0BAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABhhRAVJlZGVlbSBmdWxsIGFjY3VtdWxhdGVkIGNyZWRpdCwgdHJhbnNmZXJyaW5nIGl0IHRvIHRoZSBwcm92aWRlZCBkZXN0aW5hdGlvbiBhY2NvdW50LgDkQ3JlZGl0IGlzIGNvbnZlcnRlZCBmcm9tIHBvaW50cyBkdXJpbmcgcGF5b3V0IHByb2Nlc3NpbmcuAEkBT3JpZ2luIG11c3QgYmUgYSBwZXJzb24gYWxpYXMsIGEgc2lnbmVkIGFjY291bnQgb3IgYSBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpY8B1c2luZyBTY29yZUFzUGFydGljaXBhbnQgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKS4gcmVnaXN0ZXIEAQxrZXnpBAENAU9wdGlvbjwoTWVtYmVyT2Y8VD4sPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUpCj4ABzTwUmVnaXN0ZXIgYXMgYSBwZXJzb24sIG9yIHJlc3VtZSBwZXJzb25ob29kIGFmdGVyIHN1c3BlbnNpb24uACUBUmVxdWlyZXMgc2NvcmUgPj0gcGVyc29uaG9vZCB0aHJlc2hvbGQgKG9yIGhhdmluZyBwcmV2aW91c2x5IHJlYWNoZWQgaXQpLgBhAUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgcHJldmlvdXNseSByZWNvZ25pc2VkIGFuZCBpcyBub3cgc3VzcGVuZGVkLCB0aGV5IG11c3Qgbm90IHByb3ZpZGWIYSBrZXkuIFRoZSBleGlzdGluZyBrZXkgaXMgcmV1c2VkLgA9AUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgbmV2ZXIgcmVjb2duaXNlZCwgdGhleSBtdXN0IHByb3ZpZGUgYSBrZXkgYW5kIGEgcHJvb2Ygb2YZAW93bmVyc2hpcCAoYGtleWAgcGFyYW1ldGVyKTogYSBzaWduYXR1cmUgb3ZlciBgInBvcCByZWdpc3RlciB1c2luZyIgfHxMc2VuZGVyX2FjY291bnRfaWRgLgBFAU9yaWdpbiBtdXN0IGJlIHNpZ25lZCBvciBhIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljIHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudFx0cmFuc2FjdGlvbiBleHRlbnNpb24pLmhzZXRfYWJzZW5jZV9ncmFjZV9zY2hlZHVsZQQBIHNjaGVkdWxl8QQBREFic2VuY2VHcmFjZVRpZXJzAAg4fFNldCB0aGUgYWJzZW5jZSBncmFjZSBzY2hlZHVsZS4AKQFFdmVyeSB0aWVyIG11c3Qgc2F0aXNmeTogYDAgPD0gd2luZG93IDw9IDhgIGFuZCBgYWxsb3dlZF9taXNzZXMgPCB3aW5kb3dgLhUBYGFsbG93ZWRfbWlzc2VzID0gMGAgZGlzYWJsZXMgZ3JhY2UgZW50aXJlbHkgKGFueSBhYnNlbmNlIGltbWVkaWF0ZWx5KHN1c3BlbmRzKS4AJQFUaWVycyBtdXN0IGJlIHByb3ZpZGVkIGluIGFzY2VuZGluZyBvcmRlciBvZiBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuAPxBbiBlbXB0eSBzY2hlZHVsZSBkaXNhYmxlcyB0aGUgZ3JhY2UgcGVyaW9kIGVudGlyZWx5IChpbW1lZGlhdGUdAXN1c3BlbnNpb24gb24gYW55IG1pc3NlZCBnYW1lKS4gVGhlIG5ldyByYXRpbyB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0CQFvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbiB3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXNQYEFic2VuY2VHcmFjZVJhdGlvYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LoRzZXRfcGVyc29uaG9vZF90aHJlc2hvbGRfc2NoZWR1bGUEASBzY2hlZHVsZf0EAWBQZXJzb25ob29kVGhyZXNob2xkVGllcnMACUCYU2V0IHRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZS4AOFRpZXJzIG11c3QgYmU6MC0gbm9uLWVtcHR5LMgtIHNvcnRlZCBhc2NlbmRpbmcgYnkgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLBkBLSBjYXBwZWQgYnkgYSBmaW5hbCB0aWVyIHdpdGggYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgLBUBLSBwZXItdGllcjogYDAgPCBzY29yZV90aHJlc2hvbGQgPD0gTUFYX1BFUlNPTkhPT0RfVEhSRVNIT0xEYCAoPSAyMSks1C0gaGF2ZSBub24tZGVjcmVhc2luZyBgc2NvcmVfdGhyZXNob2xkYCBhY3Jvc3MgdGllcnMuAAkBVGhlIG5ldyBjdXJ2ZSB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9u+HdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlcyBgUGVyc29uaG9vZFRocmVzaG9sZGAuAAEBQWxyZWFkeS1yZWNvZ25pemVkIHBhcnRpY2lwYW50cyBhcmUgTk9UIHJldHJvYWN0aXZlbHkgc3VzcGVuZGVkOhEBdGhlIG5ldyBiYXIgb25seSBnYXRlcyBmdXR1cmUgc2NvcmUgZXZhbHVhdGlvbnMgaW4gYHNldF9hdHRlbmRhbmNlYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LlBmb3JjZV9zZXRfYXR0ZW5kYW5jZQwBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABIGF0dGVuZGVkWQEBEGJvb2wAAShnYW1lX2luZGV4OAEMdTMyAAowJQFTZXQgdGhlIGF0dGVuZGFuY2Ugb2YgYSBwYXJ0aWNpcGFudCBmb3IgYGdhbWVfaW5kZXhgLCBieXBhc3NpbmcgdGhlIGdhbWUuAEUBVGhpcyB3cmFwcyBbYFBhbGxldDo6c2V0X2F0dGVuZGFuY2VgXSBpbiBpdHMgb3duIGF0dGVuZGFuY2UgcmVwb3J0IHNlc3Npb24sIHNvIGl0QQFoYXMgdGhlIGV4YWN0IHNhbWUgZWZmZWN0IG9uIHRoZSBwYXJ0aWNpcGFudCdzIHNjb3JlLCBzdHJlYWssIGF0dGVuZGFuY2UgaGlzdG9yeUEBYW5kIHJlY29nbml0aW9uIGFzIGEgcmVndWxhciBhdHRlbmRhbmNlIHJlcG9ydCBieSB0aGUgZ2FtZS4gU3RhcnRpbmcgdGhlIHNlc3Npb249AWFsc28gcmVmcmVzaGVzIHRoZSBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgYWJzZW5jZS1ncmFjZSByYXRpbywgbGlrZSBhbnkgb3RoZXIgc2Vzc2lvbi4ATQFGYWlscyB3aXRoIFtgRXJyb3I6Ok5vU2NvcmVgXSBpZiBgd2hvYCBpcyBub3QgYSBwYXJ0aWNpcGFudCwgb3Igd2l0aCB0aGUgdW5kZXJseWluZz0BW2BDb25maWc6OlBlb3BsZWBdIGVycm9yIGlmIGEgbXV0YXRpb24gc2Vzc2lvbiBjYW5ub3QgYmUgc3RhcnRlZCBhdCB0aGUgbW9tZW50LgBYQ2FsbGVkIGZyb20gcm9vdCBvbmx5LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pBAQYT3B0aW9uBARUAe0EAQgQTm9uZQAAABBTb21lBADtBAAAAQAA7QQAAAQICHEEAPEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QQEUwAABAD5BAEYVmVjPFQ+AAD1BAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzQEFic2VuY2VHcmFjZVRpZXIAAAwBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAARh3aW5kb3cMAQh1OAABOGFsbG93ZWRfbWlzc2VzDAEIdTgAAPkEAAAC9QQA/QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEBBQRTAAAEAAUFARhWZWM8VD4AAAEFDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNcUGVyc29uaG9vZFRocmVzaG9sZFRpZXIAAAgBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAATxzY29yZV90aHJlc2hvbGQMAQh1OAAABQUAAAIBBQAJBQw0aW5kaXZfc3VwcG9ydCBpZGVudGl0eTxBY2NvdW50T3JQZXJzb24EJEFjY291bnRJZAEEAQgcQWNjb3VudAQABAEkQWNjb3VudElkAAAAGFBlcnNvbgQACAEUQWxpYXMAAQAADQUMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxhwYWxsZXQQQ2FsbAQEVAABGERzZW5kX2NyZWRpdF90cmVlcwgBOGZpcnN0X3NlcXVlbmNlKAEwVHJlZVNlcXVlbmNlAAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+ABIcSQFEZWxpdmVycyB0aGUgcXVldWVkIGNyZWRpdCB0cmVlcyB0aGF0IGZpdCBvbmUgWENNIG1lc3NhZ2UgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uAEUBQXV0aG9yaXplZCBjYWxsIHN1Ym1pdHRlZCBieSB0aGlzIHBhbGxldCdzIG9mZmNoYWluIHdvcmtlcjogaXQgaXMgYWNjZXB0ZWQgZnJvbSBhEQFsb2NhbCBvciBpbi1ibG9jayBzb3VyY2Ugb25seSwgc28gaXQgY2Fubm90IGJlIHN1Ym1pdHRlZCBleHRlcm5hbGx5LgBZAWBmaXJzdF9zZXF1ZW5jZWAgbXVzdCBiZSB0aGUgc2VxdWVuY2UgYXQgdGhlIGZyb250IG9mIGBDcmVkaXRUcmVlRGVsaXZlcnlRdWV1ZWAsIHdoaWNoPQFtYWtlcyBhIHJldHJ5IHRoYXQgcmFjZWQgYSBzdWNjZXNzZnVsIGRlbGl2ZXJ5IHN0YWxlIHJhdGhlciB0aGFuIGEgc2Vjb25kIHNlbmQuTHJlcGxheV9jcmVkaXRfdHJlZXMEARhibG9ja3MRBQHoQm91bmRlZFZlYzxCbG9ja051bWJlckZvcjxUPiwgVDo6TWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlPgATQPRSZXNlbmRzIHRoZSBjcmVkaXQgdHJlZXMgb2YgYGJsb2Nrc2AgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uAF0BUGVybWlzc2lvbmxlc3M6IGEgY3JlZGl0IHRyZWUgaXMgYSBwdWJsaWMgY29tbWl0bWVudCB0aGUgY2xhaW1zIGNoYWluIGlzIG1lYW50IHRvIGhvbGQsXQFhbmQgdGhlIHRyZWVzIGFyZSByZWFkIGZyb20gW2BOZnRDbGFpbUNyZWRpdFJvb3RzYF0gcmF0aGVyIHRoYW4gc3VwcGxpZWQgYnkgdGhlIGNhbGxlci5RAUJsb2NrcyB3aXRob3V0IGEgdHJlZSBhcmUgc2tpcHBlZC4gQSByZXNlbnQgdHJlZSBjYXJyaWVzIG5vIHNlcXVlbmNlIG51bWJlciwgc28gdGhpc10BY2Fubm90IGRpc3R1cmIgdGhlIGNsYWltcyBjaGFpbidzIHRyYWNraW5nIG9mIHRoZSBsaXZlIHN0cmVhbSwgYW5kIG9uZSB0aGUgY2xhaW1zIGNoYWluAQFhbHJlYWR5IGhvbGRzIGlzIGlnbm9yZWQgdGhlcmUgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYW55dGhpbmcuAE0BT25lIHJlcGxheSBydW5zIHBlciBbYENvbmZpZzo6UmVwbGF5Q29vbGRvd25TZWNvbmRzYF0sIGNvdW50ZWQgZnJvbSB0aGUgbGFzdCBvbmUgYnlMW2BMYXN0UmVwbGF5VGltZWBdLgBZAVRoZSBjYWxsZXIgcGF5cyBmb3IgdGhlIHJlbW90ZSB3b3JrLCBbYENvbmZpZzo6TmZ0Q2xhaW1zUmVtb3RlV2VpZ2h0YF0gcGVyIHRyZWUgb24gdG9waG9mIHRoaXMgY2FsbCdzIG93biB3ZWlnaHQuADQjIyBQYXJhbWV0ZXJzDQEtIGBibG9ja3NgOiBUaGUgdHJlZSBibG9ja3MgdG8gcmVzZW5kLCBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuWHJlY2VpdmVfdHJlZV9kZWxldGlvbnMEARhibG9ja3MVBQHwQm91bmRlZFZlYzxCbG9ja051bWJlckZvcjxUPiwgVDo6TWF4VHJlZURlbGV0aW9uc1Blck1lc3NhZ2U+ABRAHQFSZW1vdmVzIHRoZSByb290cyBvZiBgYmxvY2tzYCwgd2hpY2ggdGhlIGNsYWltcyBjaGFpbiBpcyBmaW5pc2hlZCB3aXRoLgBVAUV2ZXJ5IGNyZWRpdCB0aG9zZSByb290cyBjb21taXR0ZWQgdG8gaGFzIGJlZW4gbWludGVkLCBvciB0aGUgY2xhaW1zIGNoYWluJ3MgZGVhZGxpbmU1AWZvciB0aGVtIGhhcyBwYXNzZWQsIHNvIG5vIHByb29mIGNhbiBiZSBidWlsdCBhZ2FpbnN0IHRoZW0gYWdhaW4uIFRoZSBjYWxsIGlzVQFpZGVtcG90ZW50OiBpdCBza2lwcyBhIGJsb2NrIHdob3NlIHJvb3QgaXMgYWxyZWFkeSBnb25lIHdpdGhvdXQgcmVwb3J0aW5nIGl0LCBiZWNhdXNlUQFbYFBhbGxldDo6cm9vdF90dGxgXSBjYW4gcmVtb3ZlIGEgcm9vdCBpbiB0aGUgc2FtZSB3aW5kb3cgaXRzIGRlbGV0aW9uIGlzIGluIGZsaWdodC4AMQFbYENvbmZpZzo6QXdhcmRSZXRlbnRpb25UdGxgXSByZW1vdmVzIHRoZSBhd2FyZHMsIGFuZCBpdHMgb3duIHJpbmcgcmVtb3ZlcyBhVQFjbGFpbWFudCdzIFtgTmZ0Q2xhaW1DcmVkaXRCbG9ja3NgXSBlbnRyeS4gVGhlIGluZGV4IHJlc29sdmVzIGFnYWluc3QgdGhlIHJvb3RzLCBzbyBh7GJsb2NrIHdob3NlIHJvb3QgaXMgZ29uZSBkcm9wcyBvdXQgb2YgdGhlIGFuc3dlciBieSBpdHNlbGYuACQjIyBPcmlnaW41AVJlcXVpcmVzIHRoZSBjbGFpbXMgY2hhaW4ncyBYQ00gb3JpZ2luIChbYENvbmZpZzo6RW5zdXJlQ2xhaW1zQ2hhaW5PcmlnaW5gXSkuADQjIyBQYXJhbWV0ZXJzyC0gYGJsb2Nrc2A6IFRoZSB0cmVlIGJsb2NrcyB3aG9zZSByb290cyB0byByZW1vdmUuTHN3ZWVwX2V4cGlyZWRfcm9vdHMIARhvbGRlc3Q4AQx1MzIAATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4AFSQdAVJlbW92ZXMgdGhlIHJvb3RzIHdob3NlIFtgUGFsbGV0Ojpyb290X3R0bGBdIGhhcyBydW4gb3V0LCBvbGRlc3QgZmlyc3QuAF0BVGhpcyBwYWxsZXQncyBvZmZjaGFpbiB3b3JrZXIgc3VibWl0cyB0aGlzIGF1dGhvcml6ZWQgY2FsbC4gSXQgaXMgYWNjZXB0ZWQgZnJvbSBhIGxvY2Fs+G9yIGluLWJsb2NrIHNvdXJjZSBvbmx5LCBzbyBubyBleHRlcm5hbCBzdWJtaXNzaW9uIHJlYWNoZXMgaXQuAFUBVGhlIGNsYWltcyBjaGFpbidzIFRUTCBpcyB0aGUgc2hvcnRlciBvbmUsIHNvIHRoZSBzd2VlcCBvbmx5IHJlbW92ZXMgcm9vdHMgdGhhdCBjaGFpblEBaGFzIGFscmVhZHkgZ2l2ZW4gdXAgb24gYW5kIHN0cmFuZHMgbm90aGluZyBtaW50YWJsZS4gYG9sZGVzdGAgbXVzdCBiZSB0aGUgdGltZXN0YW1wPQFbYFJvb3RFeHBpcmllc2BdIGhvbGRzIGl0cyBvbGRlc3QgZW50cnkgdW5kZXIsIHdoaWNoIG1ha2VzIGEgcmV0cnkgdGhhdCByYWNlZCBhwHN1Y2Nlc3NmdWwgc3dlZXAgc3RhbGUgaW5zdGVhZCBvZiBhIHNlY29uZCBwYXNzLlBzd2VlcF9leHBpcmVkX2F3YXJkcwgBGG9sZGVzdDgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAWKEUBUmVtb3ZlcyB0aGUgYXdhcmRzIHdob3NlIFtgQ29uZmlnOjpBd2FyZFJldGVudGlvblR0bGBdIGhhcyBydW4gb3V0LCBvbGRlc3QgZmlyc3QuAF0BVGhpcyBwYWxsZXQncyBvZmZjaGFpbiB3b3JrZXIgc3VibWl0cyB0aGlzIGF1dGhvcml6ZWQgY2FsbC4gSXQgaXMgYWNjZXB0ZWQgZnJvbSBhIGxvY2Fs+G9yIGluLWJsb2NrIHNvdXJjZSBvbmx5LCBzbyBubyBleHRlcm5hbCBzdWJtaXNzaW9uIHJlYWNoZXMgaXQuAEkBVGhlIGJsb2NrJ3Mgcm9vdCBzdGF5cywgb24gdGhlIGxvbmdlciBbYFBhbGxldDo6cm9vdF90dGxgXSwgc28gbm90aGluZyBtaW50YWJsZSBpc0UBc3RyYW5kZWQ6IGEgcHJvb2YgZm9yIGEgc3dlcHQgYmxvY2sgY29tZXMgZnJvbSBpdHMgYE5mdENsYWltQ3JlZGl0QXdhcmRlZGAgZXZlbnRzYQFpbnN0ZWFkLiBgb2xkZXN0YCBtdXN0IGJlIHRoZSB0aW1lc3RhbXAgW2BOZnRDbGFpbUNyZWRpdEF3YXJkRXhwaXJpZXNgXSBob2xkcyBpdHMgb2xkZXN0RQFlbnRyeSB1bmRlciwgd2hpY2ggbWFrZXMgYSByZXRyeSB0aGF0IHJhY2VkIGEgc3VjY2Vzc2Z1bCBzd2VlcCBzdGFsZSBpbnN0ZWFkIG9mIGEwc2Vjb25kIHBhc3MueHRlc3RuZXRfZ3JhbnRfbmZ0X2NsYWltX2NyZWRpdBQBIGNsYWltYW50CQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEgYXR0ZXN0ZXIJBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4AAShnYW1lX2luZGV4OAEcR2FtZUlkeAABFHJvdW5kDAEoUm91bmRJbmRleAABRGF0dGVzdGVyX3Bvc2l0aW9uOAFAQXR0ZXN0ZXJQb3NpdGlvbgBnXOhBd2FyZCBhbiBORlQgY2xhaW0gY3JlZGl0IHRvIGBjbGFpbWFudGAgb3V0c2lkZSBvZiBhIGdhbWUuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy5JAUl0IGV4aXN0cyBiZWNhdXNlIGEgY3JlZGl0IGlzIG90aGVyd2lzZSBvbmx5IGVhcm5lZCBieSBhIGBQZXJzb25gIHZvdGUgaW4gYSBwbGF5ZWRFAWdhbWUsIHdoaWNoIG1ha2VzIHRoZSBjbGFpbSBjaGFpbidzIG1pbnRpbmcgcGF0aCBoYXJkIHRvIGV4ZXJjaXNlIG9uIGl0cyBvd24uIFRoZV0BY3JlZGl0IGl0IGF3YXJkcyBpcyBhIG5vcm1hbCBvbmU6IGl0IGdvZXMgaW50byB0aGUgYnVmZmVyIFtgQ3JlZGl0QnVmZmVyQ3Vyc29yYF0gbmFtZXMsSQFpcyBjb21taXR0ZWQgYnkgdGhhdCBibG9jaydzIHRyZWUgYW5kIGlzIGNsYWltZWQgd2l0aCB0aGUgc2FtZSBwcm9vZiBhcyBhbnkgb3RoZXIuAFEBVGhlIGNyZWRpdCBpcyB0aGUgb25lIGBhdHRlc3RlcmAgd291bGQgZWFybiBgY2xhaW1hbnRgIGJ5IHJlcG9ydGluZyB0aGVtIGEgcGVyc29uIGluSQFgcm91bmRgIG9mIGBnYW1lX2luZGV4YCwgc28gaXQgZG9lcyBub3QgbmVlZCBhbnkgb2YgdGhvc2UgdG8gZXhpc3QuIEEgc2xvdCBpcyB1c2VkUQFvbmNlIHBlciBjbGFpbWFudCBhbmQgZ2FtZTogcmVwZWF0aW5nIGEgY2FsbCB3aXRoIHRoZSBzYW1lIGBnYW1lX2luZGV4YCwgYHJvdW5kYCBhbmRdAWBhdHRlc3Rlcl9wb3NpdGlvbmAgZm9yIHRoZSBzYW1lIGBjbGFpbWFudGAgZmFpbHMgcmF0aGVyIHRoYW4gYXdhcmRpbmcgYSBzZWNvbmQgY3JlZGl0LqBWYXJ5IGFueSBvZiB0aGVtIHRvIGF3YXJkIG1vcmUgdGhhbiBvbmUuACxQYXJhbWV0ZXJzOk0BLSBgY2xhaW1hbnRgOiB3aG8gdGhlIGNyZWRpdCBpcyBhd2FyZGVkIHRvLCBhbmQgdGhlIG9ubHkgaWRlbnRpdHkgdGhhdCBjYW4gbWludCBpdC5VAS0gYGF0dGVzdGVyYDogdGhlIHJlcG9ydGVyIHRoZSBjcmVkaXQgaXMgYXR0cmlidXRlZCB0bywgd2hpY2ggYWxvbmcgd2l0aCBgZ2FtZV9pbmRleGAhASAgYW5kIGByb3VuZGAgaXMgd2hhdCBtYWtlcyB0aGUgY3JlZGl0IGRpc3RpbmN0IGZyb20gYW5vdGhlciBjbGFpbWFudCdzLlEBLSBgZ2FtZV9pbmRleGA6IHRoZSBnYW1lIHRoZSBjcmVkaXQgaXMgYXR0cmlidXRlZCB0by4gQWxsIHRoZSBjcmVkaXRzIGEgYmxvY2sgYXdhcmRzHQEgIG11c3QgbmFtZSB0aGUgc2FtZSBnYW1lLCBzaW5jZSB0aGUgYmxvY2sncyB0cmVlIGlzIGxhYmVsbGVkIHdpdGggb25lLtQtIGByb3VuZGA6IHRoZSByb3VuZCBvZiB0aGF0IGdhbWUsIGJlbG93IGBNYXhSb3VuZHNgLmEBLSBgYXR0ZXN0ZXJfcG9zaXRpb25gOiB0aGUgYXR0ZXN0ZXIncyBwbGFjZSBpbiB0aGUgZ3JvdXAsIGJlbG93IGBNYXhHcm91cFNpemVgLiBUb2dldGhlcgEBICB3aXRoIGByb3VuZGAgaXQgcGlja3MgdGhlIGNsYWltYW50J3MgY3JlZGl0IHNsb3QgZm9yIHRoZSBnYW1lLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABpBAEYVmVjPFQ+AAAVBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABpBAEYVmVjPFQ+AAAZBQxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQQQ2FsbAQEVAABICxyZXNlcnZlX2lkcwQBFGNvdW50OAEMdTMyAAAEhFJlc2VydmUgYSBudW1iZXIgb2YgcGVyc29uYWwgSURzLlByZW5ld19pZF9yZXNlcnZhdGlvbgQBCGlkKAEoUGVyc29uYWxJZAABBLxSZW5ldyBhIHBlcnNvbmFsIElELiBUaGUgSUQgbXVzdCBub3QgYmUgaW4gdXNlLlRjYW5jZWxfaWRfcmVzZXJ2YXRpb24EAQhpZCgBKFBlcnNvbmFsSWQAAgSEQ2FuY2VsIGEgcGVyc29uYWwgSUQgcmVzZXJ2YXRpb24uUHJlY29nbml6ZV9wZXJzb25ob29kBAEwaWRzX2FuZF9rZXlzHQUB8EJvdW5kZWRWZWM8KFBlcnNvbmFsSWQsIE1lbWJlck9mPFQ+KSwgVDo6TWF4UGVyc29uQmF0Y2hTaXplPgADBCkBR3JhbnQgcGVyc29uaG9vZCBmb3IgYSBsaXN0IG9mIGNhbmRpZGF0ZXMgdGhhdCBoYXZlIHJlc2VydmVkIHBlcnNvbmFsIElEcy5Ic3VzcGVuZF9wZXJzb25ob29kBAEMaWRzKQUBtEJvdW5kZWRWZWM8UGVyc29uYWxJZCwgVDo6TWF4UGVyc29uQmF0Y2hTaXplPgAECF0BU3VzcGVuZCB0aGUgcGVyc29uaG9vZCBvZiBhIGxpc3Qgb2YgcmVjb2duaXplZCBwZW9wbGUuIFRoZSBwZW9wbGUgbXVzdCBub3QgY3VycmVudGx5IGJlKHN1c3BlbmRlZC5EcmVzdW1lX3BlcnNvbmhvb2QEAQhpZCgBKFBlcnNvbmFsSWQABQQRAVJlc3VtZSBzb21lb25lJ3MgcGVyc29uaG9vZC4gVGhlIHBlcnNvbiBtdXN0IGN1cnJlbnRseSBiZSBzdXNwZW5kZWQuWHN0YXJ0X211dGF0aW9uX3Nlc3Npb24ABghdAVN0YXJ0IGEgbXV0YXRpb24gc2Vzc2lvbiBpbiB0aGUgdW5kZXJseWluZyBgUGVvcGxlYCBpbnRlcmZhY2UuIFRoaXMgY2FsbCBkb2VzIG5vdCBjaGVjayUBd2hldGhlciBhIG11dGF0aW9uIHNlc3Npb24gaXMgYWxyZWFkeSBvbmdvaW5nIGFuZCBjYW4gc3RhcnQgbmV3IHNlc3Npb25zLlBlbmRfbXV0YXRpb25fc2Vzc2lvbgAHEF0BRW5kIGEgbXV0YXRpb24gc2Vzc2lvbiBpbiB0aGUgdW5kZXJseWluZyBgUGVvcGxlYCBpbnRlcmZhY2UuIFRoaXMgY2FsbCBjYW4gZW5kIG11bHRpcGxl4G11dGF0aW9uIHNlc3Npb25zLCBldmVuIG9uZXMgbm90IHN0YXJ0ZWQgYnkgdGhpcyBwYWxsZXQuANhUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIG5vIG11dGF0aW9uIHNlc3Npb24gaXMgb25nb2luZy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEhBQRTAAAEACUFARhWZWM8VD4AACEFAAAECCgIACUFAAACIQUAKQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEoBFMAAAQALQUBGFZlYzxUPgAALQUAAAIoADEFDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0EENhbGwEBFQAASB4aW5jcmVhc2VfYXR0ZXN0YXRpb25fYWxsb3dhbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAAYJQFHcmFudCBzb21lIGF0dGVzdGF0aW9uIGFsbG93YW5jZSB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGF0dGVzdCBwZW9wbGUuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuAMgtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ3JhbnQgYXR0ZXN0YXRpb25zIHRvLrwtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgYXR0ZXN0YXRpb25zIHRvIGdyYW50LmxjbGVhcl9hdHRlc3RhdGlvbl9hbGxvd2FuY2UEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUvENsZWFyIGFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgZm9yIGFuIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuAOQtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBhdHRlc3RhdGlvbnMgZnJvbS4YYXR0ZXN0FAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZXkEAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABMHJpbmdfdnJmX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBOFNpZ25hdHVyZU9mPFQ+AAFUY29uc3VtZXJfcmVnaXN0cmF0aW9uNQUBrE9wdGlvbjxMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXNPZjxUPj4AAoxIQXR0ZXN0IGFuIGFjY291bnQuAEUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGxlZnQuAPBUaGUgYXV0aG9yaXR5IHdpbGwgaGF2ZSB0byBnZXQgdHdvIHNpZ25hdHVyZXMgZnJvbSB0aGUgdXNlcjpNAS0gb25lIGNyZWF0ZWQgdXNpbmcgdGhlaXIgYWNjb3VudCBrZXkgYXR0ZXN0aW5nIHRvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGBjYW5kaWRhdGVgKCAgYWNjb3VudDtdAS0gb25lIGNyZWF0ZWQgdXNpbmcgdGhlaXIgcmluZy12cmYga2V5IGF0dGVzdGluZyB0byB0aGUgb3duZXJzaGlwIG9mIHRoZSBgcmluZ192cmZfa2V5YBggIGtleS4AYQFUaGUgbWVzc2FnZSB0byBiZSBzaWduZWQgYnkgYm90aCBrZXlzIGZyb20gd2hpY2ggdGhlIHNpZ25hdHVyZXMgYXJlIGdlbmVyYXRlZCBpcyBjcmVhdGVkVQFieSBjb25jYXRlbmF0aW5nIHRoZSBieXRlcyAicG9wOnBlb3BsZS1saXRlOnJlZ2lzdGVyIHVzaW5nIiB3aXRoIHRoZSBlbmNvZGVkIGJ5dGVzIG9mLQF0aGUgdXNlcidzIGFjY291bnQgKGBjYW5kaWRhdGVgKSwgYW5kIHRoZSBlbmNvZGVkIGJ5dGVzIG9mIHRoZSByaW5nIFZSRiBrZXlEKGByaW5nX3ZyZl9rZXlgKS4AWE9uIHN1Y2Nlc3MsIHRoaXMgY2FsbDrALSBzdG9yZXMgbGl0ZSByZWdpc3RyYXRpb24gZGF0YSBpbiBgTGl0ZVBlb3BsZWAs9C0gYWRkcyB0aGUgdXNlcidzIHJpbmcgVlJGIGtleSB0byB0aGUgbGl0ZSBtZW1iZXIgY29sbGVjdGlvbi4ACQFUaGUgbGl0ZSBtZW1iZXIgY29sbGVjdGlvbiBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIGNyZWF0ZWQgKHZpYSB0aGXoYG1pZ3JhdGlvbjo6Q3JlYXRlTGl0ZVBlb3BsZUNvbGxlY3Rpb25gIHJ1bnRpbWUgdXBncmFkZSBvcqRbYENhbGw6OmNyZWF0ZV9saXRlX3Blb3BsZV9jb2xsZWN0aW9uYF0pLgD8LSBgY2FuZGlkYXRlYDogVGhlIGNhbmRpZGF0ZSB0byBiZSByZWNvZ25pemVkIGFzIGEgbGl0ZSBwZXJzb24uYQEtIGBjYW5kaWRhdGVfc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSwgcHJvdmlkZWQgYnkgdGhlIGNhbmRpZGF0ZSwgdG8gYWxsb3cgdGhlIGF0dGVzdGVy3CAgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIG9uIHRoZWlyIGJlaGFsZi4lAS0gYHJpbmdfdnJmX2tleWA6IFRoZSByaW5nIFZSRiBrZXkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaXRlIHBlcnNvbi5dAS0gYHJpbmdfdnJmX2tleV9zaWduYXR1cmVgOiBUaGUgcmluZyBWUkYgc2lnbmF0dXJlLCBwcm92aWRlZCBieSB0aGUgY2FuZGlkYXRlLCB0byBhbGxvd1UBICB0aGUgYXR0ZXN0ZXIgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBUaGlzIGFsc28gcHJvdmUgdGhlIG93bmVyc2hpcCBvZpAgIHRoZSByaW5nIFZSRiBrZXkgYnkgdGhlIGNhbmRpZGF0ZS5dAS0gY29uc3VtZXJfcmVnaXN0cmF0aW9uOiBPcHRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggY2FuIGNvbnRhaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbl0BICB0byBmb3J3YXJkIGEgY29uc3VtZXIgcmVnaXN0cmF0aW9uIHJlcXVlc3QgdG8gdGhlIGBMaXRlQ29uc3VtZXJSZWdpc3RyYXJgIHNlcnZpY2UuIElmUQEgIHByZXNlbnQsIGl0IGFsc28gY29udGFpbnMgYSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgdXNlciBpbiBvcmRlciB0byB2YWxpZGF0ZSB0aGUlASAgaW50ZW50LiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBzaWduaW5nIHBheWxvYWQgZ2VuZXJhdGlvbiBhdmFpbGFibGUgaW7sICBbdHlwZXM6OkxpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtczo6c2lnbmluZ19wYXlsb2FkXS5EcmVnaXN0ZXJfd2l0aF9mZWUMATByaW5nX3ZyZl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAThTaWduYXR1cmVPZjxUPgABVGNvbnN1bWVyX3JlZ2lzdHJhdGlvbjUFAaxPcHRpb248TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zT2Y8VD4+AANILQFSZWdpc3RlciBhcyBhIGxpdGUgcGVyc29uIGJ5IHBheWluZyB0aGUgY29uZmlndXJlZCBuYXRpdmUgcmVnaXN0cmF0aW9uIGZlZS4AYQFUaGUgb3JpZ2luIG11c3QgYmUgdGhlIGNhbmRpZGF0ZSdzIHNpZ25lZCBhY2NvdW50LiBUaGUgY2FuZGlkYXRlIHByb3ZlcyBvd25lcnNoaXAgb2YgdGhlRQFgcmluZ192cmZfa2V5YCBieSBzaWduaW5nIHRoZSBzYW1lIHJlZ2lzdHJhdGlvbiBtZXNzYWdlIHVzZWQgYnkgW2BTZWxmOjphdHRlc3RgXS4ARQFPbiBzdWNjZXNzLCB0aGlzIGNhbGwgdHJhbnNmZXJzIHRoZSBjb25maWd1cmVkIGZlZSB0byB0aGUgcGFsbGV0IHBvdCwgc3RvcmVzIGxpdGU5AXJlZ2lzdHJhdGlvbiBkYXRhIGluIGBMaXRlUGVvcGxlYCBhbmQgYWRkcyB0aGUgcmluZyBWUkYga2V5IHRvIHRoZSBsaXRlIG1lbWJlcpBjb2xsZWN0aW9uLiBUaGUgZmVlIGlzIG5vdCByZWZ1bmRlZC4ABQFUaGUgbGl0ZSBtZW1iZXIgY29sbGVjdGlvbiBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIGNyZWF0ZWQgdmlhIHRoZehgbWlncmF0aW9uOjpDcmVhdGVMaXRlUGVvcGxlQ29sbGVjdGlvbmAgcnVudGltZSB1cGdyYWRlIG9yoFtgQ2FsbDo6Y3JlYXRlX2xpdGVfcGVvcGxlX2NvbGxlY3Rpb25gXS4AJQEtIGByaW5nX3ZyZl9rZXlgOiBUaGUgcmluZyBWUkYga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGl0ZSBwZXJzb24uTQEtIGBwcm9vZl9vZl9vd25lcnNoaXBgOiBUaGUgcmluZyBWUkYgc2lnbmF0dXJlIHByb3Zpbmcgb3duZXJzaGlwIG9mIGByaW5nX3ZyZl9rZXlgLkkBLSBgY29uc3VtZXJfcmVnaXN0cmF0aW9uYDogT3B0aW9uYWwgcGFyYW1ldGVycyB0byByZWdpc3RlciB0aGUgY2FuZGlkYXRlIGFzIGEgbGl0ZVUBICBjb25zdW1lci4gVGhlIHJlcXVlc3QgbXVzdCBjb250YWluIGEgc2lnbmF0dXJlIG92ZXIgdGhlIHVzdWFsIGNvbnN1bWVyIHBheWxvYWQgd2l0aCkBICB0aGUgc2lnbmVkIGNhbmRpZGF0ZSBhY2NvdW50IGluIGJvdGggdGhlIGFjY291bnQgYW5kIHZlcmlmaWVyIHBvc2l0aW9ucy5IZGlzcGF0Y2hfYXNfc2lnbmVyBAEQY2FsbCABTEJveDxUOjpSdW50aW1lQ2FsbD4ABQBEc2V0X2FsaWFzX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4dmFsaWRfYXRfYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgAGOLRTZXQgdGhlIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIGEgbGl0ZSBhbGlhcy4AtFRoZSBjYWxsIGlzIHZhbGlkIGZyb20gYHZhbGlkX2F0X2Jsb2NrYCB1bnRpbMRgdmFsaWRfYXRfYmxvY2sgKyBhY2NvdW50X3NldHVwX2Jsb2NrX3RvbGVyYW5jZWAuACUBVGhpcyBjYWxsIGlzIGF1dGhvcml6ZWQgdGhyb3VnaCB0aGUgYEFzTGl0ZUFsaWFzV2l0aFByb29mYCB2YXJpYW50IG9mIHRoZTEBYFBlb3BsZUxpdGVBdXRoYCB0cmFuc2FjdGlvbiBleHRlbnNpb24sIHdoaWNoIHByb3ZpZGVzIG5vIG5vbmNlLWJhc2VkIHJlcGxheUUBcHJvdGVjdGlvbi4gUmVwbGF5IGlzIG9ubHkgcHJldmVudGVkIGZvciBhcyBsb25nIGFzIHRoZSBhbGlhcyBzdGlsbCBwb2ludHMgYXQgdGhlSQFhY2NvdW50IHRoaXMgY2FsbCBzZXRzLiBBcyBzb29uIGFzIHRoZSBhbGlhcyBpcyBwb2ludGVkIGF0IGEgZGlmZmVyZW50IGFjY291bnQgKGJ5TQFhbm90aGVyIGBzZXRfYWxpYXNfYWNjb3VudGApLCB0aGlzIGNhbGwgYmVjb21lcyByZXBsYXlhYmxlIGFnYWluIHVudGlsIGl0cyB2YWxpZGl0eVkBcGVyaW9kIGVsYXBzZXMuIENvbnNlcXVlbnRseSwgaWYgMiBzdWNoIHRyYW5zYWN0aW9ucyBzZXR0aW5nIDIgZGlmZmVyZW50IGFjY291bnRzIGhhdmVZAW92ZXJsYXBwaW5nIHZhbGlkaXR5IHBlcmlvZHMsIHRoZXkgY2FuIGJlIHJlcGxheWVkIGFnYWluc3QgZWFjaCBvdGhlciBpbmRlZmluaXRlbHkgZm9yLQF0aGUgZHVyYXRpb24gb2YgdGhlIG92ZXJsYXAuIFRvIGF2b2lkIHRoaXMsIHRoZSBjYWxsZXIgbXVzdCBub3QgaGF2ZSAyIHN1Y2gNAXRyYW5zYWN0aW9ucyBhbGl2ZSAod2l0aGluIHRoZWlyIHZhbGlkaXR5IHBlcmlvZCkgYXQgdGhlIHNhbWUgdGltZS5MdW5zZXRfYWxpYXNfYWNjb3VudAAHAHRjcmVhdGVfbGl0ZV9wZW9wbGVfY29sbGVjdGlvbgAIKIhDcmVhdGUgdGhlIGxpdGUgcGVvcGxlIGNvbGxlY3Rpb24uACkBVGhpcyBjYWxsIGlzIHZhbGlkIG9ubHkgaWYgdGhlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCB5ZXQuIE9uY2UgY3JlYXRlZCyMdGhpcyBjYWxsIGNhbm5vdCBiZSBleGVjdXRlZCBhZ2Fpbi4A1FRoZSBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBhIGZpeGVkIGNvbmZpZ3VyYXRpb246uC0gT3duZXI6IENvbmZpZ3VyZWQgdmlhIGBDb2xsZWN0aW9uT3duZXJgIHR5cGWcLSBPbmJvYXJkaW5nIHNpemU6IGBMaXRlT25ib2FyZGluZ1NpemVgUC0gTW9kZTogYEFwcGVuZE9ubHlgfC0gUmluZyBzaXplOiBgTGl0ZVJpbmdFeHBvbmVudGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuNQUEGE9wdGlvbgQEVAE5BQEIEE5vbmUAAAAQU29tZQQAOQUAAAEAADkFDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXN4TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zCCRBY2NvdW50SWQBBCRTaWduYXR1cmUBeQQAFAEkc2lnbmF0dXJleQQBJFNpZ25hdHVyZQABHGFjY291bnQEASRBY2NvdW50SWQAAThpZGVudGlmaWVyX2tleX0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABIHVzZXJuYW1lPQUBIFVzZXJuYW1lAAFEcmVzZXJ2ZWRfdXNlcm5hbWVBBQFAT3B0aW9uPFVzZXJuYW1lPgAAPQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABBBQQYT3B0aW9uBARUAT0FAQgQTm9uZQAAABBTb21lBAA9BQAAAQAARQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0EENhbGwEBFQAATRQcmVnaXN0ZXJfbGl0ZV9wZXJzb24MAThpZGVudGlmaWVyX2tleX0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABIHVzZXJuYW1lPQUBIFVzZXJuYW1lAAFEcmVzZXJ2ZWRfdXNlcm5hbWVBBQFAT3B0aW9uPFVzZXJuYW1lPgAABJRSZWdpc3RlciBhIGxpdGUgcGVyc29uIGFzIGEgY29uc3VtZXIuPHJlZ2lzdGVyX3BlcnNvbgwBUGxpbmtlZF9saXRlX2lkZW50aXR5BAEwVDo6QWNjb3VudElkAAFMbGl0ZV9pZGVudGl0eV9wcm9vZnkEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABPHVzZXJuYW1lX2Nob2ljZUkFAVhQZXJzb25hbFVzZXJuYW1lQ2hvaWNlAAEknFJlZ2lzdGVyIGEgcHJvdmVuIHBlcnNvbiBhcyBhIGNvbnN1bWVyLgBdAVRoZSBwZXJzb24gbXVzdCBsaW5rIGEgcHJldmlvdXNseSByZWNvZ25pemVkIGxpdGUgaWRlbnRpdHksIHdoaWNoIHdpbGwgYmUgdXBncmFkZWQgdG8gYVkBZnVsbCBwZXJzb24gY29uc3VtZXIuIEluIG9yZGVyIHRvIHByb3ZlIHRoZXkgaG9sZCB0aGUgbGl0ZSBpZGVudGl0eSB0aGV5IHdhbnQgdG8gbGluayxhAXVzZXJzIG11c3QgcHJvdmlkZSBhIGBsaXRlX2lkZW50aXR5X3Byb29mYCBzaWduYXR1cmUsIGNyZWF0ZWQgYnkgc2lnbmluZyB0aGUgYWxpYXMgYnl0ZXOIdXNpbmcgdGhlaXIgbGl0ZSBjb25zdW1lciBhY2NvdW50LgA5AVRoZSBjb25zdW1lciBjYW4gY2hvb3NlIGlmIHRoZXkgd2FudCB0byBoYXZlIGEgbmV3IHVzZXJuYW1lIG9yIHVzZSBhbiBleGlzdGluZxUBcmVzZXJ2YXRpb24gbWFkZSBpbiB0aGUgbmFtZSBvZiB0aGUgbGl0ZSBjb25zdW1lciB3aG8gd2lsbCBiZSBsaW5rZWQuaHRvdWNoX3BlcnNvbl9hdXRob3JpemF0aW9uAAIQSQFVcGRhdGUgYSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGJ5IGVuc3VyaW5nIHRoZXkgY2FuIHN0aWxsIGF1dGhlbnRpY2F0ZSBhcyBwZW9wbGUuAFEBVGhpcyBjYWxsIG11c3QgYmUgcGVyZm9ybWVkIGF0IGxlYXN0IGBNaW5QZXJzb25BdXRoVXBkYXRlSW50ZXJ2YWxgIHNlY29uZHMgYWZ0ZXIgdGhllGxhc3QgdXBkYXRlIGluIG9yZGVyIHRvIHByZXZlbnQgc3BhbS6McmVtb3ZlX2V4cGlyZWRfdXNlcm5hbWVfcmVzZXJ2YXRpb24IASB1c2VybmFtZT0FASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAyA5AVJlbW92ZSBhbiBleHBpcmVkIGVudHJ5IGZyb20gYSB1c2VybmFtZSByZXNlcnZhdGlvbiBxdWV1ZS4gVGhlIHRhcmdldCBlbnRyeSBpcwEBaWRlbnRpZmllZCBieSBgYWNjb3VudGAgYW5kIGNhbiBiZSBhdCBhbnkgcG9zaXRpb24gaW4gdGhlIHF1ZXVlLh0BRWFjaCBjYWxsIHJlbW92ZXMgZXhhY3RseSBvbmUgZW50cnksIHNvIGl0IG11c3QgYmUgY2FsbGVkIHJlcGVhdGVkbHkgdG+QY2xlYXIgbXVsdGlwbGUgZXhwaXJlZCByZXNlcnZhdGlvbnMuAC0BVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgYGFjY291bnRgMQFwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIGZvciB0cmFuc2FjdGlvbiBwb29sIGRlZHVwbGljYXRpb24sIGFsbG93aW5nIHBhcmFsbGVsEQFzdWJtaXNzaW9ucyB0aGF0IHRhcmdldCBkaWZmZXJlbnQgZXhwaXJlZCBlbnRyaWVzIGluIHRoZSBzYW1lIHF1ZXVlLlR1cGRhdGVfaWRlbnRpZmllcl9rZXkEAThpZGVudGlmaWVyX2tleX0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgAEENhVcGRhdGUgdGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllciBrZXkgb2YgYSBjb25zdW1lci4AQQFUaGUgb3JpZ2luIG11c3QgYmUgdGhlIGFjY291bnQgcmVnaXN0ZXJlZCBmb3IgdGhhdCBjb25zdW1lciwgcmVnYXJkbGVzcyBvZiB0aGVpcjBjcmVkaWJpbGl0eS6Ec2V0X3VzZXJuYW1lX3Jlc2VydmF0aW9uX2R1cmF0aW9uBAEgZHVyYXRpb24oAQx1NjQABQwdAVNldCB0aGUgZHVyYXRpb24gZm9yIHdoaWNoIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gaXMgdmFsaWQsIGluIHNlY29uZHMuAGBUaGUgb3JpZ2luIG11c3QgYmUgcm9vdC5MZGVtb3RlX2F1dGhfZXhwaXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABwwxAURlbW90ZSBhIGZ1bGwgcGVyc29uIHRvIGEgbGl0ZSBwZXJzb24gYWZ0ZXIgdGhlaXIgYXV0aG9yaXphdGlvbiBoYXMgZXhwaXJlZC4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC68c2V0X25vdGlmaWNhdGlvbl9zdGF0ZW1lbnRfYWNjb3VudF9mb3Jfc2VxdWVuY2UIASRyZWZlcmVuY2VNBQFUTm90aWZpY2F0aW9uUmVmZXJlbmNlAAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIPA0BQXNzb2NpYXRlIGEgc3RhdGVtZW50IGFjY291bnQgd2l0aCBhIG5vdGlmaWNhdGlvbiBjb250ZXh0IHNlcXVlbmNlLgBRAVRoZSBhc3NvY2lhdGVkIGFjY291bnQgY2FuIHN1Ym1pdCBzdGF0ZW1lbnRzIHdoaWxlIHRoaXMgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBpcxxhY3RpdmUuMQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6Tm90aWZpY2F0aW9uQWxpYXNgLCBjcmVhdGVkIGJ5IHRoZSBgQXNSZXNvdXJjZXNgTQEoYFJlZ2lzdGVyTm90aWZpY2F0aW9uV2l0aFByb29mKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciBwcm9vZiB2YWxpZGF0aW9uLh0BT24gc3VjY2VzcywgaW5jcmVhc2VzIHN0YXRlbWVudCBhbGxvd2FuY2UgYW5kIHN0b3JlcyByZWdpc3RyYXRpb24gc3RhdGVoYHthY2NvdW50X2lkLCByZWZlcmVuY2V9YC4ALFBhcmFtZXRlcnM6xCogYHJlZmVyZW5jZWA6IG5vdGlmaWNhdGlvbiBwZXJpb2Qvc2VxdWVuY2UgcGFpci4JASAgLSBgcmVmZXJlbmNlLnBlcmlvZGAgbXVzdCBiZSB0aGUgY3VycmVudCBzdGF0ZW1lbnQtc3RvcmUgcGVyaW9kLgEBICAtIGByZWZlcmVuY2Uuc2VxYCBtdXN0IGJlIGluIGAwLi49Tm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgLk0BKiBgYWNjb3VudF9pZGA6IHN0YXRlbWVudCBhY2NvdW50IHRvIGF1dGhvcml6ZS4gTXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGJ5IGFub3RoZXJwICBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uLoxjbGVhcl9leHBpcmVkX25vdGlmaWNhdGlvbl9zZXF1ZW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQxzZXEMAQh1OAAJKC0BQ2xlYXIgYSBzdGFsZSBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGFuZCByZXZva2UgaXRzIHN0YXRlbWVudCBhbGxvd2FuY2UuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuIQFTdWNjZWVkcyBvbmx5IHdoZW4gdGhlIHJlZ2lzdHJhdGlvbidzIHBlcmlvZC1kZXJpdmVkIGV4cGlyeSBoYXMgZWxhcHNlZC5ZAU9uIHN1Y2Nlc3MsIHJlbW92ZXMgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBzdGF0ZSBhbmQgZGVjcmVhc2VzIHN0YXRlbWVudCBhbGxvd2FuY2UuACxQYXJhbWV0ZXJzOlkBKiBgYWNjb3VudGA6IHN0YXRlbWVudCBhY2NvdW50IHByZXZpb3VzbHkgYXNzb2NpYXRlZCB3aXRoIGEgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbi5dASogYHNlcWA6IG5vdGlmaWNhdGlvbiBzZXF1ZW5jZSB0byBjbGVhci4gTXVzdCBtYXRjaCBzdG9yZWQgcmVnaXN0cmF0aW9uIHNlcXVlbmNlIGFuZCBiZZggIGluIGAwLi49Tm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgLmxzZXRfc3RhdGVtZW50X3N0b3JlX2FjY291bnQMARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAATh0YXJnZXRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAAKLAkBQ2xhaW0gYW4gYW5vbnltb3VzIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgZm9yIGEgdGFyZ2V0IGFjY291bnQuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OlN0bXRTdG9yZUFsaWFzYCwgcHJvZHVjZWQgYnkgdGhlIGBBc1Jlc291cmNlc2BVAShgUmVnaXN0ZXJTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZSguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcHJvb2YgdmFsaWRhdGlvbi5FAU9uIHN1Y2Nlc3MsIGluY3JlYXNlcyB0aGUgc3RhdGVtZW50IGFsbG93YW5jZSBmb3IgYHRhcmdldF9hY2NvdW50YCBhbmQgc3RvcmVzIHRoZZhtYXBwaW5nIGluIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgLgAsUGFyYW1ldGVyczo9ASogYHBlcmlvZGA6IGRheSBudW1iZXIgc2luY2UgVW5peCBlcG9jaC4gTXVzdCBiZSBpbiB0aGUgYWNjZXB0ZWQgcGVyaW9kIHdpbmRvdy5FASogYHNlcWA6IHNsb3QgbnVtYmVyIHdpdGhpbiB0aGUgcGVyaW9kLCBib3VuZGVkIGJ5IHRoZSBjb2xsZWN0aW9uLXNwZWNpZmljIGxpbWl0LswqIGB0YXJnZXRfYWNjb3VudGA6IHN0YXRlbWVudCBhY2NvdW50IHRvIGF1dGhvcml6ZS6MY2xlYXJfZXhwaXJlZF9zdG10X3N0b3JlX2FsbG93YW5jZXMIARhwZXJpb2Q4AQx1MzIAASxmaXJzdF9lbnRyeQgBFEFsaWFzAAsU8FJlbW92ZSBleHBpcmVkIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2VzIGZvciBhIHBhc3QgcGVyaW9kLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLkUBUmVtb3ZlcyB1cCB0byBgU3RtdFN0b3JlQ2xlYW51cExpbWl0YCBlbnRyaWVzIGZyb20gYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AgZm9yQQF0aGUgZ2l2ZW4gYHBlcmlvZGAsIGRlY3JlYXNpbmcgdGhlIHN0YXRlbWVudCBhbGxvd2FuY2UgZm9yIGVhY2ggcmVtb3ZlZCBhY2NvdW50LlxjbGFpbV9sb25nX3Rlcm1fc3RvcmFnZQwBGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQADDA5AUNsYWltIGxvbmctdGVybSBzdG9yYWdlIG9uIGEgcmVtb3RlIGNoYWluIHVzaW5nIGFuIGFub255bW91cyBtZW1iZXJzaGlwIHByb29mLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpMb25nVGVybVN0b3JhZ2VDbGFpbShhbGlhcywgY29sbGVjdGlvbilgLCBjcmVhdGVkIGJ5IHRoZVUBYEFzUmVzb3VyY2VzYCAoYENsYWltTG9uZ1Rlcm1TdG9yYWdlKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciByaW5nLVZSRiBwcm9vZix2YWxpZGF0aW9uLgAsUGFyYW1ldGVyczpJASogYHBlcmlvZGA6IHRoZSBjbGFpbWluZyBwZXJpb2QuIE11c3QgYmUgdGhlIGN1cnJlbnQgcGVyaW9kIG9yIHRoZSBwcmV2aW91cyBvbmUgaWZoICB3aXRoaW4gdGhlIGdyYWNlIHdpbmRvdy4NASogYGNvdW50ZXJgOiB0aGUgY2xhaW0gY291bnRlciB3aXRoaW4gdGhlIHBlcmlvZC4gTXVzdCBiZSBsZXNzIHRoYW4tASAgYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAuIEVhY2ggY291bnRlciBwcm9kdWNlcyBhIGRpc3RpbmN0IGFsaWFzLiUBKiBgYWNjb3VudF9pZGA6IHRoZSBhY2NvdW50IHRvIGF1dGhvcml6ZSBmb3Igc3RvcmFnZSBvbiB0aGUgcmVtb3RlIGNoYWluLpxjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXMIARhwZXJpb2Q4AQx1MzIAARRsaW1pdDgBDHUzMgANIPBDbGVhciBzcGVudCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIGZvciBhbiBleHBpcmVkIHBlcmlvZC4ARQFUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbCBhdXRob3JpemVkIHZpYSB0aGUgYGF1dGhvcml6ZWAgYXR0cmlidXRlLiBJdCBjYW4gYmUlAWNhbGxlZCBieSBhbnlvbmUgb25jZSBhIHBlcmlvZCBoYXMgZnVsbHkgZXhwaXJlZCAocGFzdCB0aGUgZ3JhY2Ugd2luZG93KS4ALFBhcmFtZXRlcnM60CogYHBlcmlvZGA6IHRoZSBleHBpcmVkIHBlcmlvZCB0byBjbGVhciBhbGlhc2VzIGZvci4BASogYGxpbWl0YDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdG8gcmVtb3ZlIGluIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNYUGVyc29uYWxVc2VybmFtZUNob2ljZQABCChTdGFuZGFsb25lBAA9BQEgVXNlcm5hbWUAAAAsUmVzZXJ2YXRpb24EAD0FASBVc2VybmFtZQABAABNBQxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1ROb3RpZmljYXRpb25SZWZlcmVuY2UAAAgBGHBlcmlvZDgBDHUzMgABDHNlcQwBCHU4AABRBQxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBBDYWxsBARUAAEIKGFkZF9jaHVua3MMATRyaW5nX2V4cG9uZW50VQUBMFJpbmdFeHBvbmVudAABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAThlbmNvZGVkX2NodW5rc1kFAZhCb3VuZGVkVmVjPHU4LCBNYXhFbmNvZGVkQ2h1bmtzTGVuPFQ+PgAAEGhBZGRzIGEgbmV3IHBhZ2Ugb2YgY2h1bmtzLgBBAVRoZSBoYXNoIG9mIHRoZSBjaHVua3MgbXVzdCBtYXRjaCB0aGUgaGFzaCBzdG9yZWQgb24tY2hhaW4gaW4gYENodW5rUGFnZUhhc2hlc2Au3FRoZSBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5IGV4aXN0cyBvbi1jaGFpbi5Uc2V0X2NodW5rX3BhZ2VfaGFzaGVzCAE0cmluZ19leHBvbmVudFUFATBSaW5nRXhwb25lbnQAASxwYWdlX2hhc2hlc10FAcxCb3VuZGVkVmVjPENodW5rUGFnZUhhc2gsIENvbnN0VTMyPE1BWF9QQUdFX0NPVU5UPj4AARgNAVNldHMgdGhlIGV4cGVjdGVkIGhhc2hlcyBmb3IgY2h1bmsgcGFnZXMgZm9yIGEgZ2l2ZW4gcmluZyBleHBvbmVudC4AIQFBbGxvd3Mgc2V0dGluZyB0aGUgZXhwZWN0ZWQgaGFzaGVzIHRoYXQgY2h1bmtzIG11c3QgbWF0Y2ggd2hlbiBhZGRlZCB2aWE0YGFkZF9jaHVua3NgLgCsVGhlIG9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5VBRA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAABZBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAF0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AAGEFDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQQQ2FsbAQEVAABOCxtZXJnZV9yaW5ncwwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8YmFzZV9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAFEdGFyZ2V0X3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAABhRAU1lcmdlIHRoZSBtZW1iZXJzIGluIHR3byByaW5ncyBpbnRvIGEgc2luZ2xlLCBuZXcgcmluZy4gSW4gb3JkZXIgZm9yIHRoZSByaW5ncyB0byBiZVUBZWxpZ2libGUgZm9yIG1lcmdpbmcsIHRoZXkgbXVzdCBib3RoIGJlIG5vbi1lbXB0eSBleGlzdGluZyByaW5ncywgYmUgYmVsb3cgMS8yIG9mIG1heEkBY2FwYWNpdHksIGhhdmUgbm8gcGVuZGluZyBzdXNwZW5zaW9ucyBhbmQgbm90IGJlIHRoZSB0b3AgcmluZyB1c2VkIGZvciBvbmJvYXJkaW5nLgBRAU9ubHkgW2BSaW5nTW9kZTo6RmxleGlibGVgXSBjb2xsZWN0aW9ucyBjYW4gYmUgbWVyZ2VkLiBUaGVpciByaW5nIHNpemUgbmV2ZXIgZXhjZWVkcwEBYE1heEZsZXhpYmxlUmluZ0V4cG9uZW50YCwgc28gYWxsIGtleXMgb2YgYSByaW5nIGxpdmUgb24gcGFnZSAwLkxzZXRfb25ib2FyZGluZ19zaXplCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxvbmJvYXJkaW5nX3NpemU4AQx1MzIAAQRNAUZvcmNlIHNldCB0aGUgb25ib2FyZGluZyBzaXplIGZvciBhIGNvbGxlY3Rpb24uIFRoaXMgY2FsbCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuMHNlbGZfaW5jbHVkZQwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEYbWVtYmVyCAEsTWVtYmVyT2Y8VD4AATRjYWxsX3ZhbGlkX2F0KAEMdTY0AAIoQQFBbGxvdyBhIG1lbWJlciB3YWl0aW5nIGluIHRoZSBvbmJvYXJkaW5nIHF1ZXVlIHRvIGluY2x1ZGUgdGhlbXNlbHZlcyBpbnRvIGEgcmluZ00BYWZ0ZXIgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZC4gVGhpcyBieXBhc3NlcyB0aGUgbm9ybWFsIGNvaG9ydC1iYXNlZCBvbmJvYXJkaW5nIHNpemUwcmVxdWlyZW1lbnQuADkBVGhpcyBjYWxsIG11c3QgYmUgZGlzcGF0Y2hlZCB3aXRoIGEgYFNlbGZJbmNsdWRlYCBvcmlnaW4sIGF1dGhlbnRpY2F0ZWQgYnkgdGhlIQFgQXNNZW1iZXJgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4gVGhlIHJpbmdzIG11c3QgYmUgaW4gYXBwZW5kLW9ubHkgbW9kZS4ATQFUaGUgYGNhbGxfdmFsaWRfYXRgIHBhcmFtZXRlciBkaWN0YXRlcyB0aGUgdGltZSB3aW5kb3cgaW4gd2hpY2ggdGhpcyB0cmFuc2FjdGlvbiBpc00BdmFsaWQgYW5kIHJlcHJlc2VudHMgdGhlIHRpbWVzdGFtcCAoaW4gc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaCkgd2hlbiB0aGlzIGNhbGw4YmVjb21lcyB2YWxpZC5UYnVpbGRfcmluZ19hdXRob3JpemVkGAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmluZ19leHBvbmVudFUFATBSaW5nRXhwb25lbnQAASByZXZpc2lvbuQBVE9wdGlvbjxSZXZpc2lvbkluZGV4PgABKHRvX2luY2x1ZGU4AQx1MzIAATRkaXNjcmltaW5hdG9yOAEMdTMyAGQs2EJ1aWxkIGEgcmluZyByb290IGZvciBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgDYU3VibWl0dGVkIGJ5IHRoZSBPQ1cgd2l0aCBhIGB0b19pbmNsdWRlYCBzbmFwc2hvdCBmcm9tMQFbYFBhbGxldDo6c2hvdWxkX2J1aWxkX3JpbmdgXS4gTGVmdG92ZXJzIGZyb20gbGF0ZXIgb25ib2FyZGluZyBhcmUgcGlja2VkIHVwGQFvbiB0aGUgbmV4dCBPQ1cgdGljaywgb3IgYnkgdGhlIG1lbWJlciB2aWEgW2BTZWxmOjpzZWxmX2luY2x1ZGVgXSB3aGVugGNvaG9ydCBnYXRpbmcgc3RhbGxzIG9uYm9hcmRpbmcuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmhvbmJvYXJkX21lbWJlcnNfYXV0aG9yaXplZBQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABEGhlYWQ4ASRQYWdlSW5kZXgAATBmaXJzdF9tZW1iZXJlBQFMT3B0aW9uPE1lbWJlck9mPFQ+PgABNGRpc2NyaW1pbmF0b3I4AQx1MzIAZSARAU9uYm9hcmQgbWVtYmVycyBmcm9tIHRoZSBvbmJvYXJkaW5nIHF1ZXVlIGZvciBhIHNwZWNpZmljIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wucG1lcmdlX3F1ZXVlX3BhZ2VzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABMGluaXRpYWxfaGVhZDgBJFBhZ2VJbmRleAABIG5ld19oZWFkOAEkUGFnZUluZGV4AGYMDQFNZXJnZSB0aGUgdG9wIHR3byBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2VzIGZvciBhIHNwZWNpZmljIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AcmVtb3ZlX3N1c3BlbmRlZF9rZXlzX2F1dGhvcml6ZWQQAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbuQBVE9wdGlvbjxSZXZpc2lvbkluZGV4PgABNGRpc2NyaW1pbmF0b3I4AQx1MzIAZyDsUmVtb3ZlIHN1c3BlbmRlZCBrZXlzIGZyb20gYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5sZGVsZXRlX3JpbmdfcGFnZV9hdXRob3JpemVkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleABoDMhEZWxldGUgYSBwYWdlIGZvciBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIugGVucXVldWVfcmluZ19kZWxldGlvbl9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AGkc7EVucXVldWUgYSByaW5nIGZvciBkZWxldGlvbiBhcyBwYXJ0IG9mIGNvbGxlY3Rpb24gZGVsZXRpb24uACEBQXJjaGl2ZXMgdGhlIHJpbmcgcm9vdCwgbm90aWZpZXMgc3Vic2NyaWJlcnMsIHJlbW92ZXMgcmluZyBtZXRhZGF0YSwgYW5k+GVucXVldWVzIHJpbmcgcGFnZXMgaW50byBgUmluZ0RlbGV0aW9uUXVldWVgIGZvciBwcm9jZXNzaW5nIGJ5eGBkZWxldGVfcmluZ19wYWdlX2F1dGhvcml6ZWRgLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIunGRlbGV0ZV9vbmJvYXJkaW5nX3F1ZXVlX3BhZ2VfYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleABqHPxEZWxldGUgYW4gb25ib2FyZGluZyBxdWV1ZSBwYWdlIGFzIHBhcnQgb2YgY29sbGVjdGlvbiBkZWxldGlvbi4AHQFSZW1vdmVzIGFsbCBgTWVtYmVyc2AgZW50cmllcyBmb3IgdGhlIG1lbWJlcnMgaW4gdGhlIHBhZ2UsIHRoZW4gcmVtb3ZlcyUBdGhlIHBhZ2UgaXRzZWxmLiBDYW4gb25seSBwcm9jZWVkIHdoZW4gYWxsIHJpbmdzIGFuZCByaW5nIHBhZ2VzIGhhdmUgYmVlbjhmdWxseSBkZWxldGVkLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIunGZpbmFsaXplX2NvbGxlY3Rpb25fZGVsZXRpb25fYXV0aG9yaXplZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAGscdEZpbmFsaXplIGNvbGxlY3Rpb24gZGVsZXRpb24uAB0BUmVtb3ZlcyBhbGwgcmVtYWluaW5nIHBlci1jb2xsZWN0aW9uIHN0b3JhZ2UgYW5kIHRoZSBvd25lcidzIGlkZW50aWZpZXIZAXJlZmVyZW5jZS4gQ2FuIG9ubHkgcHJvY2VlZCB3aGVuIGFsbCByaW5ncywgcmluZyBwYWdlcywgYW5kIG9uYm9hcmRpbmeQcXVldWUgcGFnZXMgaGF2ZSBiZWVuIGZ1bGx5IGRlbGV0ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6IcmVtb3ZlX29ycGhhbmVkX21lbWJlcnNfYXV0aG9yaXplZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAG4k9FJlbW92ZSBvcnBoYW5lZCBgTWVtYmVyc2AgZW50cmllcyBmb3IgYSBzdXNwZW5kZWQgY29sbGVjdGlvbi4AVQFTdXNwZW5kZWQgbWVtYmVycyBjYW4gbGVhdmUgZW50cmllcyBpbiBgTWVtYmVyc2AgdGhhdCBvdXRsaXZlIHRoZWlyIHJpbmcsIHNvIGJlZm9yZSBh/GNvbGxlY3Rpb24gY2FuIGJlIGZpbmFsaXplZCB0aGVzZSBtdXN0IGJlIGRyYWluZWQuIERyYWlucyB1cCB0bzkBYE9SUEhBTkVEX01FTUJFUlNfUkVNT1ZBTF9MSU1JVGAgZW50cmllcyBmb3IgYGlkZW50aWZpZXJgLiBUaGUgb2ZmY2hhaW4gd29ya2VyPQFyZXN1Ym1pdHMgdW50aWwgdGhlIHByZWZpeCBpcyBlbXB0eSwgYWZ0ZXIgd2hpY2ggdGhlIGNvbGxlY3Rpb24gZGVsZXRpb24gY2FuIGJlKGZpbmFsaXplZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLmhtYXJrX3Jpbmdfc3RhbGVfYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABsGPBNYXJrIGEgcmluZyBhcyBzdGFsZSBzbyB0aGUgb2ZmY2hhaW4gd29ya2VyIHdpbGwgcmVidWlsZCBpdC4AHQFBbnlvbmUgY2FuIHN1Ym1pdCB0aGlzIHRyYW5zYWN0aW9uIGlmIHRoZSByaW5nIGhhcyBtZW1iZXJzIHRoYXQgYXJlIG5vdCUBeWV0IGluY2x1ZGVkIGluIHRoZSByb290IChgdG90YWwgPiBpbmNsdWRlZGApIGFuZCB0aGUgcmluZyBpcyBub3QgYWxyZWFkeSUBbWFya2VkIHN0YWxlLiBUaGlzIGlzIGEgcmVjb3ZlcnkgbWVjaGFuaXNtIGluIGNhc2UgdGhlIGBTdGFsZVJpbmdzYCBlbnRyeWx3YXMgbG9zdCBvciBuZXZlciBpbnNlcnRlZC50Y2xlYW5fdXBfb2xkX3Jvb3RzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARRsaW1pdDgBDHUzMgBtIIBDbGVhbiB1cCBleHBpcmVkIG9sZCByaW5nIHJvb3RzLgARAVJlbW92ZXMgdXAgdG8gYGxpbWl0YCBvbGQgcmluZyByb290cyBmb3IgdGhlIGdpdmVuIHJpbmcgaW4gdGhlIGdpdmVuLGNvbGxlY3Rpb24uANBUaGUgdHJhbnNhY3Rpb24gc291cmNlIG11c3QgYmUgYExvY2FsYCBvciBgSW5CbG9ja2AuAPRUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmUFBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAaQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDYWxsBARUAAF4FHNwbGl0BAEoc3BsaXRfaW50b20FAX0BQm91bmRlZFZlYzwKKERlbm9taW5hdGlvbiwgQm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFNwbGl0T3V0cHV0cz4pLCBUOjoKTWF4U3BsaXRPdXRwdXRzLD4AAFCEU3BsaXQgYSBjb2luIGludG8gbXVsdGlwbGUgY29pbnMuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgDUVGhlIGNhbGwgaXMgZnJlZSBhbmQgYWdlcyB0aGUgcmVzdWx0aW5nIGNvaW5zIGJ5IG9uZS4ASQFUaGUgYHNwbGl0X2ludG9gIHBhcmFtZXRlciBjb250YWlucyBhIHZlY3RvciBvZiBwYWlycywgZWFjaCBwYWlyIGNvbnRhaW5pbmcgYSBjb2luVQF2YWx1ZSBhbmQgYSBsaXN0IG9mIGRlc3RpbmF0aW9uIGFjY291bnQgaWRzLiBGb3IgZWFjaCBwYWlyLCBhIG5ldyBjb2luIHdpdGggdGhlIGdpdmVuxHZhbHVlIGlzIGNyZWF0ZWQgZm9yIGVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBpZC4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCngKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS5VASogVGhlIGRlbm9taW5hdGlvbiBtdXN0IGJlIHdpdGhpbiB0aGUgYm91bmRzIGRlZmluZWQgYnkgW0NvbmZpZzo6TWluaW11bUV4cG9uZW50XSBhbmRwICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLi0BKiBUaGUgdG90YWwgdmFsdWUgb2YgdGhlIG5ldyBjb2lucyBtdXN0IGVxdWFsIHRoZSB2YWx1ZSBvZiB0aGUgb3JpZ2luIGNvaW4uCQEqIFRoZSBudW1iZXIgb2Ygb3V0cHV0cyBtdXN0IG5vdCBleGNlZWQgW0NvbmZpZzo6TWF4U3BsaXRPdXRwdXRzXS4lASogVGhlIGFnZSBvZiB0aGUgbmV3IGNvaW5zIGlzIHNldCB0byB0aGUgYWdlIG9mIHRoZSBvcmlnaW4gY29pbiBwbHVzIG9uZS7gKiBFYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi4gdHJhbnNmZXIEAQh0bwQBMFQ6OkFjY291bnRJZAABLIxUcmFuc2ZlciBhIGNvaW4gdG8gYW5vdGhlciBhY2NvdW50LgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4A0FRoZSBjYWxsIGlzIGZyZWUgYW5kIGFnZXMgdGhlIHJlc3VsdGluZyBjb2luIGJ5IG9uZS4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCncKiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLuAqIFRoZSBjb2luJ3MgYWdlIG11c3QgYmUgbGVzcyB0aGFuIFtDb25maWc6Ok1heGltdW1BZ2VdLlxsb2FkX3JlY3ljbGVyX3dpdGhfY29pbggBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAThTaWduYXR1cmVPZjxUPgACSGhMb2FkIGNvaW4gaW50byBhIHJlY3ljbGVyLgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4ARFRoZSBjYWxsIGlzIGZyZWUuAFkBVGhlIGBtZW1iZXJfa2V5YCBwYXJhbWV0ZXIgaXMgdGhlIG1lbWJlciBrZXkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlY3ljbGVyLCBhbmQgd2hvc2WoYWxpYXMgaXMgdXNlZCB0byB1bmxvYWQgZnJvbSB0aGUgcmVjeWNsZXIuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQpAQEqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIu0CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIChpLmUuIHdlbGwgZm9ybWVkKS5RASogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIGNvaW4ncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4FASogVGhlIHJlY3ljbGVyIGNvbGxlY3Rpb24gZm9yIHRoZSBjb2luJ3MgdmFsdWUgbXVzdCBhbHJlYWR5IGV4aXN0WQEqIE9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIG11c3QgY292ZXIgdGhlIGxvYWRlZCBrZXkncyBkZXBvc2l0LoRsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXQUASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAATBwcmVzZXJ2YXRpb259BQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAE4U2lnbmF0dXJlT2Y8VD4AA4SQTG9hZCBleHRlcm5hbCBhc3NldCBpbnRvIGEgcmVjeWNsZXIuAIxUaGUgb3JpZ2luIG11c3QgYmUgYSBzaWduZWQgb3JpZ2luLgCAVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyByZWZ1bmRlZC4ARQFUaGUgYHByZXNlcnZhdGlvbmAgcGFyYW1ldGVyIGluZGljYXRlcyBob3cgdGhlIGFzc2V0IHRyYW5zZmVyIHNob3VsZCBwcmVzZXJ2ZSB0aGVEc2lnbmVyJ3MgYWNjb3VudC4AUQFUaGUgYGluc3RhbmNlX2lkYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoaWNoIGNvaW5hZ2UgaW5zdGFuY2UgdG8gbG9hZCBpbnRvLCBhbmQgaGVuY2WYd2hpY2ggdW5kZXJseWluZyBhc3NldCBpcyB0cmFuc2ZlcnJlZC4AQQFUaGUgYHZhbHVlYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBkZW5vbWluYXRpb24gdG8gYmUgbG9hZGVkIGludG8gdGhlIHJlY3ljbGVyLj0BVGhlIGVxdWl2YWxlbnQgYW1vdW50IG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIHNpZ25lciB0b0x0aGUgcGFsbGV0IGFjY291bnQuAFkBVGhlIGBtZW1iZXJfa2V5YCBwYXJhbWV0ZXIgaXMgdGhlIG1lbWJlciBrZXkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlY3ljbGVyLCBhbmQgd2hvc2WoYWxpYXMgaXMgdXNlZCB0byB1bmxvYWQgZnJvbSB0aGUgcmVjeWNsZXIuAFUBVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIHBhcmFtZXRlciBpcyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTRgbWVtYmVyX2tleWAuADRSZXF1aXJlbWVudHM63CogVGhlIGBpbnN0YW5jZV9pZGAgbXVzdCByZWZlciB0byBhbiBleGlzdGluZyBpbnN0YW5jZS4BASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLkEBKiBUaGUgYHZhbHVlYCBtdXN0IGJlIHdpdGhpbiB0aGUgYm91bmRzIGRlZmluZWQgYnkgW0NvbmZpZzo6TWluaW11bUV4cG9uZW50XSBhbmRwICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLlUBKiBUaGUgc2lnbmVyIG11c3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCB0byBjb3ZlciB0aGUgZXF1aXZhbGVudJAgIGFtb3VudCBmb3IgdGhlIGdpdmVuIGRlbm9taW5hdGlvbi5ZASogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlNGBtZW1iZXJfa2V5YC5ZASogT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgbXVzdCBjb3ZlciB0aGUgbG9hZGVkIGtleSdzIGRlcG9zaXQuoGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWQUASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAATBwcmVzZXJ2YXRpb259BQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAE4U2lnbmF0dXJlT2Y8VD4AD1AtAUxvYWQgZXh0ZXJuYWwgYXNzZXQgaW50byBhIHJlY3ljbGVyIChpbmZhbGxpYmxlLCB2YWxpZGF0ZWQgdW5wYWlkIHZhcmlhbnQpLgBNAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhldHRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YXJpYW50jQFbYEFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWRgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2VJbmZvOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkKS4A3FRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFsaWRhdGlvbiBwaGFzZSBtdXN0IGVuc3VyZTrMLSBUaGUgYGluc3RhbmNlX2lkYCByZWZlcnMgdG8gYW4gZXhpc3RpbmcgaW5zdGFuY2UuFQEtIFRoZSBgbWVtYmVyX2tleWAgaXMgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci5FAS0gVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4tAS0gVGhlIGB2YWx1ZWAgaXMgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZEEBICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLCBhbmQgY2FuIGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudC5ZAS0gVGhlIHNpZ25lciBoYXMgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnQgYW1vdW505CAgZm9yIHRoZSBnaXZlbiBkZW5vbWluYXRpb24gKHJlc3BlY3RpbmcgYHByZXNlcnZhdGlvbmApLqwtIFRoZSBub25jZSBpcyB2YWxpZCBmb3IgcmVwbGF5IHByb3RlY3Rpb24uHQEtIFRoZSByZWN5Y2xlciBjb2xsZWN0aW9uIGZvciBgaW5zdGFuY2VfaWRgIGFuZCBgdmFsdWVgIGFscmVhZHkgZXhpc3RzLkkBLSBPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBjb3ZlcnMgdGhlIGxvYWRlZCBrZXkncyBkZXBvc2l0LgBEVGhlIGNhbGwgaXMgZnJlZS64bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZF9iYXRjaAgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFGl0ZW1zgQUB1EJvdW5kZWRWZWM8VW5wYWlkTG9hZElucHV0PFQ+LCBUOjpNYXhCYXRjaFVucGFpZExvYWQ+ABBYGQFCYXRjaGVkIHZhcmlhbnQgb2YgW2BTZWxmOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkYF0uAE0BVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGV0dHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnSNAVtgQXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZGBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWQpLjEBVGhlIGV4dGVuc2lvbiB2YWxpZGF0ZXMgZWFjaCBpbm5lciBpdGVtIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdpdGhpbi1iYXRjaFUBbWVtYmVyLWtleSB1bmlxdWVuZXNzIGFuZCB0aGF0IHRoZSBzaWduZXIncyBiYWxhbmNlIGNvdmVycyB0aGUgc3VtIG9mIGFsbCBpbm5lciBhc3NldCBhbW91bnRzLgBBAVRoaXMgY2FsbCBkaXNwYXRjaGVzIGVhY2ggaW5uZXIgbG9hZCBieSByZS1ydW5uaW5nIHRoZSBzYW1lIGNoZWNrcyB0aGUgZXh0ZW5zaW9uUQFqdXN0IHBlcmZvcm1lZCAoc2VlIFtgUmVjeWNsZXJNYW5hZ2VyOjpsb2FkYF0pLiBUaGUgcmVkdW5kYW5jeSBtYXRjaGVzIHRoZSBkZWZlbnNpdmVNAXBhdHRlcm4gdXNlZCBieSBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXTogYSBkaXNwYXRjaCBwYXRoRQF0aGF0IGZhaWxzIGFueSBvZiB0aGVzZSBjaGVja3MgaXMgYSBsb2dpYyBidWcgaW4gdGhlIGV4dGVuc2lvbiwgbm90IGEgdXNlciBlcnJvci4AVQFUaGUgaW5zdGFuY2UgaXMgZml4ZWQgZm9yIHRoZSB3aG9sZSBiYXRjaCByYXRoZXIgdGhhbiBwZXIgaXRlbSwgYmVjYXVzZSB0aGUgZXh0ZW5zaW9uVQFjaGVja3MgdGhlIHNpZ25lcidzIGJhbGFuY2Ugb25jZSBhZ2FpbnN0IHRoZSBzdW1tZWQgY29zdCBvZiBldmVyeSBpdGVtLCB3aGljaCBpcyBvbmx5nG1lYW5pbmdmdWwgd2l0aGluIG9uZSB1bmRlcmx5aW5nIGFzc2V0LgBRAU9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIG11c3QgY292ZXIgdGhlIGRlcG9zaXRzIG9mIGV2ZXJ5IGtlebBsb2FkZWQgaGVyZSwgdGhlIGJhdGNoIGJlaW5nIGNoYXJnZWQgYXMgb25lLgBEVGhlIGNhbGwgaXMgZnJlZS5kdW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbhgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABHGFsaWFzZXONBQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAARolFVubG9hZCBhIHJlY3ljbGVyIHRvIG1pbnQgYSBuZXcgY29pbi4AXQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLCB3aGljaCBjYW4gYmVhAW9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkgdXNpbmdYYEFzVW5sb2FkVG9rZW5QZW9wbGVgLOxgQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGVgLCBvciBgQXNVbmxvYWRUb2tlblBhaWRgIHZhcmlhbnRzLgBJAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byBwcm92ZSB0aGV5IG93biBvbmUgb3IgbW9yZSBjb2lucyBpbiBhIHJlY3ljbGVyIHJpbmddAXdpdGhvdXQgcmV2ZWFsaW5nIHdoaWNoIHNwZWNpZmljIGNvaW5zIHRoZXkgb3duLiBJdCBjb25zb2xpZGF0ZXMgb25lIG9yIG11bHRpcGxlIGlucHV0c2hpbnRvIGEgc2luZ2xlIG91dHB1dCBjb2luLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4uNQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvwqIGBfcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzX3Byb29mcy7EKiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIG5ldyBjb2luLgA0UmVxdWlyZW1lbnRzOikBKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYC4tASogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uIQEqIFRoZSBgYWxpYXNlc2AgcHJvdmlkZWQgbXVzdCBtYXRjaCB0aGUgYWxpYXNlcyBkZXJpdmVkIGZyb20gdGhlIHByb29mcy4VASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgZnJvbSB0aGlzIHJlY3ljbGVyLrwqIFRoZSBudW1iZXIgb2YgYWxpYXNlcyBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLjUBKiBUaGUgcmVzdWx0aW5nIGNvbnNvbGlkYXRlZCB2YWx1ZSBtdXN0IG5vdCBleGNlZWQgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS6MdW5sb2FkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXQcASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARxhbGlhc2VzjQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAV08FVubG9hZCBhIHJlY3ljbGVyIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0LgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBdAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6UHJlcGFpZF0gKHZpYSBmcmVlIG9yIHBhaWQgdW5sb2FkIHRva2VuKSwgbm8gZmVlIGlzIGRlZHVjdGVkLlEBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgdGhlIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSB1bmxvYWRlZCBhc3NldHM6WQF0aGUgYXNzZXQgaXMgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSwgc28gdGhlIGFtb3VudCBkZWR1Y3RlZCBkZXBlbmRzIG9uIHRoZYxtYXJrZXQgYW5kIGlzIGJvdW5kZWQgYnkgYG1heF9mZWVgLgAxAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byB3aXRoZHJhdyB0aGVpciBjb2lucyBiYWNrIGludG8gdGhlIHVuZGVybHlpbmeAYXNzZXQgKGUuZy4sIGFuIGV4dGVybmFsIGFzc2V0KS4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLjUBKiBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC78KiBgX3JldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMu5CogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB1bmRlcmx5aW5nIGFzc2V0Ll0BKiBgbWF4X2ZlZWA6IHRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aGUgdW5sb2FkZWQgYXNzZXQgdGhlIGZlZSBtYXkgY29uc3VtZS4gV2hhdGV2ZXIgdGhlYQEgIGZlZSBkb2VzIG5vdCBjb25zdW1lIGdvZXMgdG8gYHRvYC4gSXQgaXMgaWdub3JlZCBmb3IgW1VubG9hZEZlZTo6UHJlcGFpZF0sIHdoaWNoIHRha2VzbCAgbm8gZmVlIG91dCBvZiB0aGUgb3V0cHV0LgA0UmVxdWlyZW1lbnRzOqwqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0uLQEqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLlkBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCAoZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lIHdoZW4gYGZlZWAVASAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHdoaWNoIHdhcyBwcmUtbWFya2VkIGluIHRoZSBleHRlbnNpb24pLqxwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABnApAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyBhIGNvaW4uAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBdAVRoZSBjb2luIGlzIGNvbnN1bWVkLiBUaGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIGNvaW4ncyB2YWx1ZTogdGhlIGFzc2V0IGlzIGNvbnZlcnRlZD0BaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5LCB3aGljaCBpcyB0cmFuc2ZlcnJlZCB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uIFRoZaRyZW1haW5pbmcgdmFsdWUgb2YgdGhlIGNvaW4gaXMgZGVzdHJveWVkLgDUSWYgdGhlIGNhbGwgZmFpbHMsIHRoZSBvcmlnaW4gY29pbiBpcyBzdGlsbCBjb25zdW1lZC4AXQFUbyBwcm90ZWN0IHRoZSB1c2VyIGFnYWluc3QgdmFyeWluZyBmZWVzLCBpZiB0aGUgY29pbidzIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgZmVlLCB0aGXoY2FsbCBpcyBpbnZhbGlkIChhbiBpbnZhbGlkIGNhbGwgbmV2ZXIgZ29lcyBpbnRvIGEgYmxvY2spLgBhAVRoaXMgaXMgdGhlIG9uZSBhc3NldC1wYXlpbmcgY2FsbCB3aXRoIG5vIGNhbGxlci1zZXR0YWJsZSBib3VuZCBvbiB0aGUgZmVlLCBhbmQgaXQgbmVlZHNhAW5vbmU6IHRoZSBjb2luIGlzIGNvbnN1bWVkIHdob2xlIGVpdGhlciB3YXksIHNvIGl0cyB2YWx1ZSBpcyB0aGUgYm91bmQsIGFuZCB3aGF0ZXZlciB0aGVdAWNvbnZlcnNpb24gZG9lcyBub3QgdGFrZSBpcyBkZXN0cm95ZWQgcmF0aGVyIHRoYW4gcmV0dXJuZWQuIEEgY2FsbGVyIHdobyB3YW50cyB0byBib3VuZKh3aGF0IHRoZSBmZWUgY29zdHMgcGF5cyBmb3IgdGhlIHRva2VuIHdpdGghAVtgU2VsZjo6cGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfZXh0ZXJuYWxfYXNzZXRgXSBpbnN0ZWFkLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgA0UmVxdWlyZW1lbnRzOuAqIFRoZSBjb2luJ3MgYWdlIG11c3QgYmUgbGVzcyB0aGFuIFtDb25maWc6Ok1heGltdW1BZ2VdLtwqIFRoZSBkZW5vbWluYXRpb24gbXVzdCBiZSBzdWZmaWNpZW50IHRvIGNvdmVyIHRoZSBmZWUu2CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLrRwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9uYXRpdmUIAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAHPF0BUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIHRoZSBuYXRpdmUgY3VycmVuY3kuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgBFAVRoaXMgYWRkcyB0aGUgYG1lbWJlcl9rZXlgIHRvIGEgInBhaWQgdW5sb2FkIHRva2VuIHJpbmciLiBCZWluZyBwYXJ0IG9mIHRoaXMgcmluZyEBYWxsb3dzIHRoZSB1c2VyIHRvIGxhdGVyIGdlbmVyYXRlIGFuIGBVbmxvYWRUb2tlbmAgdG8gdW5sb2FkIGEgcmVjeWNsZXIuAA0BVGhlIGZlZSBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBjYWxsZXIgdG8gW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgA0UmVxdWlyZW1lbnRzOtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC7UcGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfZXh0ZXJuYWxfYXNzZXQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAh4RQFQYXkgdGhlIGZlZSB0byByZWdpc3RlciBhIG1lbWJlciBrZXkgZm9yIGEgcGFpZCB1bmxvYWQgdG9rZW4gdXNpbmcgdGhlIHVuZGVybHlpbmdwYXNzZXQgb2YgdGhlIGdpdmVuIGluc3RhbmNlLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ARQFUaGlzIGFkZHMgdGhlIGBtZW1iZXJfa2V5YCB0byBhICJwYWlkIHVubG9hZCB0b2tlbiByaW5nIi4gQmVpbmcgcGFydCBvZiB0aGlzIHJpbmchAWFsbG93cyB0aGUgdXNlciB0byBsYXRlciBnZW5lcmF0ZSBhbiBgVW5sb2FkVG9rZW5gIHRvIHVubG9hZCBhIHJlY3ljbGVyLgBRAVRoZSBmZWUgYXJlIGNoYXJnZWQgaW4gdGhlIHVuZGVybHlpbmcgYXNzZXQgb2YgdGhlIHNwZWNpZmllZCBpbnN0YW5jZSwgYW5kIGNvbnZlcnRlZAkBaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5IHRvIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBmZWUgZGVzdGluYXRpb24u/GBtYXhfZmVlYCBib3VuZHMgaG93IG11Y2ggb2YgdGhlIGFzc2V0IHRoZSBjb252ZXJzaW9uIG1heSB0YWtlLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgBRAVRoZSBgaW5zdGFuY2VfaWRgIG9ubHkgc2VsZWN0cyB3aGljaCBpbnN0YW5jZSdzIHVuZGVybHlpbmcgYXNzZXQgdGhlIGZlZSBpcyBwYWlkIGluLk0BVGhlIHJlc3VsdGluZyB0b2tlbiBpcyBub3QgYm91bmQgdG8gdGhhdCBpbnN0YW5jZSBhbmQgY2FuIGJlIGNvbnN1bWVkIHRvIHVubG9hZCBhbnkZAWluc3RhbmNlJ3MgcmVjeWNsZXIsIHdoaWNoIGlzIHdoeSB0aGUgZmVlIGlzIHRoZSBzYW1lIGZvciBhbGwgb2YgdGhlbS4AUQFVbmxpa2UgdGhlIHNpZ25lZCB1bmxvYWQgY2FsbHMsIHRoaXMgb25lIGlzIG5vdCBwcmUtY2hlY2tlZCBhZ2FpbnN0IGBtYXhfZmVlYCBkdXJpbmddAXRyYW5zYWN0aW9uIHZhbGlkYXRpb24gYW5kIGRvZXMgbm90IHJlZnVuZCB0aGUgd2VpZ2h0IGl0IGRpZCBub3QgdXNlOiBhIGNvbnZlcnNpb24gdGhhdFUBbW92ZWQgcGFzdCBgbWF4X2ZlZWAgYmV0d2VlbiB0aGUgY2FsbGVyIHF1b3RpbmcgaXQgYW5kIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBpbmNsdWRlZE0BZmFpbHMgdGhlIGRpc3BhdGNoIGF0IHRoZSBmdWxsIGJlbmNobWFya2VkIHdlaWdodC4gQ2FsbGVycyBzaG91bGQgbGVhdmUgaGVhZHJvb20gaW4oYG1heF9mZWVgLgA0UmVxdWlyZW1lbnRzOtwqIFRoZSBgaW5zdGFuY2VfaWRgIG11c3QgcmVmZXIgdG8gYW4gZXhpc3RpbmcgaW5zdGFuY2Uu2CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLqQqIGBtYXhfZmVlYCBtdXN0IGNvdmVyIHRoZSBjb252ZXJ0ZWQgZmVlLtB1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9hbmRfbG9hZGVkX2NvaW5zJAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEcYWxpYXNlc40FAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQAAVRleHRlcm5hbF9hc3NldF9hbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwbG9hZGVkX2NvaW5zkQUB7EJvdW5kZWRWZWM8KERlbm9taW5hdGlvbiwgTWVtYmVyT2Y8VD4pLCBUOjpNYXhTcGxpdE91dHB1dHM+AAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACbBFAVVubG9hZCBhIHJlY3ljbGVyIGludG8gYSBtaXhlZCBvdXRwdXQgb2YgZXh0ZXJuYWwgYXNzZXQgYW5kIGZyZXNobHkgbG9hZGVkIGNvaW5zLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBZAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byBvZmZib2FyZCBwYXJ0IG9mIHRoZSB1bmxvYWRlZCB2YWx1ZSBpbnRvIHRoZSB1bmRlcmx5aW5nAQFhc3NldCB3aGlsZSByZW1pbnRpbmcgdGhlIHJlc3QgYXMgZnJlc2hseSBsb2FkZWQgcmVjeWNsZXIgY29pbnMuAEUBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgYXMtaXMuNQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIHNwZWNpZmllZDkBYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAsIHNvIHRoZSByZWNpcGllbnQgcmVjZWl2ZXMgdGhlIHJlbWFpbmRlci4gVGhlIGFzc2V0IGlzUQFjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5IHRvIHBheSB0aGUgZmVlLCBzbyB0aGUgYW1vdW50IGRlZHVjdGVkIGRlcGVuZHMgb26cdGhlIG1hcmtldCBhbmQgaXMgYm91bmRlZCBieSBgbWF4X2ZlZWAuACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi41ASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu+CogYHJldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhcyBwcm9vZnMu/CogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBleHRlcm5hbCBhc3NldCBwb3J0aW9uLl0BKiBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YDogdGhlIGdyb3NzIGFzc2V0IHBvcnRpb24gdG8gb2ZmYm9hcmQgZnJvbSB0aGUgdW5sb2FkZWQgdmFsdWUuXQEqIGBsb2FkZWRfY29pbnNgOiB0aGUgZnJlc2hseSBsb2FkZWQgcmVjeWNsZXIgY29pbnMgdG8gbWludCBmcm9tIHRoZSByZW1haW5pbmcgdW5sb2FkZWQgICB2YWx1ZS5hASogYG1heF9mZWVgOiB0aGUgbWF4aW11bSBhbW91bnQgb2YgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgdGhlIGZlZSBtYXkgY29uc3VtZS4gV2hhdGV2ZXJZASAgdGhlIGZlZSBkb2VzIG5vdCBjb25zdW1lIGdvZXMgdG8gYHRvYC4gSXQgaXMgaWdub3JlZCBmb3IgW1VubG9hZEZlZTo6UHJlcGFpZF0sIHdoaWNohCAgdGFrZXMgbm8gZmVlIG91dCBvZiB0aGUgb3V0cHV0LgBFAVRoZSB0b3RhbCB1bmxvYWRlZCB2YWx1ZSBtdXN0IGFsd2F5cyBlcXVhbCB0aGUgYXNzZXQgcG9ydGlvbiBwbHVzIHRoZSBsb2FkZWQtY29pbkkBcG9ydGlvbi4gSW4gYEZyb21PdXRwdXRgIG1vZGUsIHRoZSBhc3NldCBwb3J0aW9uIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGNvdmVyIHRoZSx1bmxvYWQgZmVlLgA0UmVxdWlyZW1lbnRzOqwqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0uLQEqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLlkBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCAoZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lIHdoZW4gYGZlZWAVASAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHdoaWNoIHdhcyBwcmUtbWFya2VkIGluIHRoZSBleHRlbnNpb24pLlUBKiBgbG9hZGVkX2NvaW5zYCBtdXN0IG5vdCBiZSBlbXB0eSwgYW5kIGFsbCBsb2FkZWQtY29pbiBtZW1iZXIga2V5cyBtdXN0IGJlIHZhbGlkIGFuZCQgIHVudXNlZC5hASogVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgZXF1YWwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgcGx1cyB0aGUgdG90YWwgYXNzZXQgdmFsdWVQICBvZiBgbG9hZGVkX2NvaW5zYC5FASogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgbXVzdCBjb3ZlciB0aGUgZmVlLkEBKiBPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBtdXN0IGNvdmVyIHRoZSBkZXBvc2l0cyBvZiB0aGUtASAgYGxvYWRlZF9jb2luc2Aga2V5cywgd2l0aG91dCBjcmVkaXRpbmcgdGhlIGRlcG9zaXRzIHRoaXMgdW5sb2FkIHJlbGVhc2VzLsR1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUaW5wdXSdBQGgVW5sb2FkUmVjeWNsZXJJbnB1dDxUOjpNYXhDb25zb2xpZGF0aW9uPgABMGFsaWFzX3Byb29mcxkEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3mhBQEsRmVlQ3VycmVuY3kAARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgALGDEBVW5sb2FkIGEgcmVjeWNsZXIgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQgKG5vbi1hbm9ueW1vdXMpLgBVAUNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91c110Zm9yIHRoZSBzaW5nbGUtcmVjeWNsZXIgY2FzZS4AWQFTZWUgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcnNfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzXSBmb3IgZnVsbCBkb2N1bWVudGF0aW9uLsh1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91cxgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABGGlucHV0c6UFASkBQm91bmRlZFZlYzxVbmxvYWRSZWN5Y2xlcklucHV0PFQ6Ok1heENvbnNvbGlkYXRpb24+LCBUOjoKTWF4Q29uc29saWRhdGlvbj4AATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABCHRvBAEwVDo6QWNjb3VudElkAAEwZmVlX2N1cnJlbmN5oQUBLEZlZUN1cnJlbmN5AAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADIRRAVVubG9hZCBtdWx0aXBsZSByZWN5Y2xlcnMgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQgKG5vbi1hbm9ueW1vdXMpLgBBAVRoaXMgaXMgYSBzaWduZWQtb3JpZ2luIHZlcnNpb24gb2YgW2BTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdGQF3aGVyZSB0aGUgZmVlIGlzIHBhaWQgZXhwbGljaXRseSBieSB0aGUgc2lnbmVyIHJhdGhlciB0aGFuIHRocm91Z2ggdGhl8HJpbmctYXV0aGVudGljYXRlZCB1bmxvYWQgdG9rZW4sIGFuZCBmb3IgbXVsdGlwbGUgcmVjeWNsZXJzLgAxAVRoZSBmZWUgY2hhcmdlZCBpcyBvbmUgdW5sb2FkIHRva2VuIGZlZSBwZXIgcmVjeWNsZXIgKGkuZS4sIGBpbnB1dHMubGVuKClgKS4ATQFFdmVyeSBpbnB1dCB1bmxvYWRzIGZyb20gYGluc3RhbmNlX2lkYDogb25lIGNhbGwgY2Fubm90IHNwYW4gaW5zdGFuY2VzLCBiZWNhdXNlIHRoZU0BdW5sb2FkZWQgdmFsdWUgaXMgc3VtbWVkIGFuZCBwYWlkIG91dCBhcyBhIHNpbmdsZSB0cmFuc2ZlciBvZiBvbmUgdW5kZXJseWluZyBhc3NldC4ALFBhcmFtZXRlcnM63CogYGluc3RhbmNlX2lkYDogdGhlIGluc3RhbmNlIGV2ZXJ5IGlucHV0IHVubG9hZHMgZnJvbS5RASogYGlucHV0c2A6IEEgbGlzdCBvZiBpbnB1dHMsIHNwZWNpZnlpbmcgdGhlIHJlY3ljbGVyIGFuZCBhbGlhc2VzIHRvIHVubG9hZC4gQXQgbW9zdCEBICBbYENvbmZpZzo6TWF4Q29uc29saWRhdGlvbmBdIGlucHV0cywgb25lIGFsaWFzIG9mIG9uZSBpbnB1dCBwZXIgcHJvb2YuVQEqIGBhbGlhc19wcm9vZnNgOiB0aGUgcHJvb2ZzIGZvciBhbGwgYWxpYXNlcyBhY3Jvc3MgYWxsIGlucHV0cywgc2lnbmVkIG92ZXIgYSBtZXNzYWdlVQEgIHRoYXQgaW5jbHVkZXMgdGhlIHNpZ25lci4gVGhlIHByb29mcyBtdXN0IGNvcnJlc3BvbmQgc2VxdWVudGlhbGx5IHRvIHRoZSBhbGlhc2VzIGluLCAgYGlucHV0c2AuuCogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBhc3NldC45ASogYGZlZV9jdXJyZW5jeWA6IHdoZXRoZXIgdG8gcGF5IHRoZSBmZWUgaW4gbmF0aXZlIGN1cnJlbmN5IG9yIGV4dGVybmFsIGFzc2V0LmEBKiBgbWF4X2ZlZWA6IHRoZSBtb3N0IHRoZSBmZWUgbWF5IGNvc3QgdGhlIHNpZ25lciwgaW4gYGZlZV9jdXJyZW5jeWA6IHRoZSBuYXRpdmUgZmVlIGZvclUBICBbRmVlQ3VycmVuY3k6Ok5hdGl2ZV0sIGFuZCB0aGUgYW1vdW50IG9mIHRoZSBzaWduZXIncyBhc3NldCB0aGUgY29udmVyc2lvbiBpbnRvIHRoZdwgIG5hdGl2ZSBmZWUgbWF5IHRha2UgZm9yIFtGZWVDdXJyZW5jeTo6RXh0ZXJuYWxBc3NldF0uADRSZXF1aXJlbWVudHM6cCogVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC7cKiBUaGUgYGluc3RhbmNlX2lkYCBtdXN0IHJlZmVyIHRvIGFuIGV4aXN0aW5nIGluc3RhbmNlLpQqIEFsbCBzcGVjaWZpZWQgcmVjeWNsZXJzIG11c3QgZXhpc3QuLQEqIFRoZSBhbGlhcyBwcm9vZnMgbXVzdCBjb3JyZXNwb25kIHNlcXVlbnRpYWxseSB0byB0aGUgYWxpYXNlcyBpbiBgaW5wdXRzYC45ASogYGlucHV0c2AgbXVzdCBub3QgYmUgZW1wdHkgYW5kIGVhY2ggZWxlbWVudCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGFsaWFzLi0BKiBgYWxpYXNfcHJvb2ZzYCBtdXN0IGhvbGQgZXhhY3RseSBvbmUgcHJvb2YgcGVyIGFsaWFzIGFjcm9zcyBhbGwgYGlucHV0c2AuQQEqIFRoZSBzaWduZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgYmFsYW5jZSB0byBwYXkgdGhlIGZlZSAob25lIGZlZSBwZXIgcmVjeWNsZXIpLsQqIGBtYXhfZmVlYCBtdXN0IGNvdmVyIHRoZSBmZWUgaW4gYGZlZV9jdXJyZW5jeWAusHVubG9hZF9hcmNoaXZlZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0KAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAATRyZWN5Y2xlcl9yb290rQUBME1lbWJlcnNPZjxUPgABNHVubG9hZGVkX3Jvb3Q8ARBIMjU2AAEsYWxpYXNfcHJvb2YdBAEoUHJvb2ZPZjxUPgABTG5vbl9pbmNsdXNpb25fcHJvb2axBQFlAUJvdW5kZWRWZWM8Qm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8TUFYX1RSSUVfTk9ERV9MRU4+PiwgQ29uc3RVMzI8Ck1BWF9UUklFX1BST09GX05PREVTPiw+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3mhBQEsRmVlQ3VycmVuY3kAARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgARpAUBUmVjb3ZlciBhIGNvaW4gZnJvbSBhbiBhcmNoaXZlZCByZWN5Y2xlciBpbnRvIHRoZSBleHRlcm5hbCBhc3NldC4AWFRoaXMgaXMgYSBzaWduZWQgY2FsbC4A8El0IGFsbG93cyBhIHVzZXIgdG8gdW5sb2FkIGEgY29pbiBmcm9tIGFuIGFyY2hpdmVkIHJlY3ljbGVyLkkBVGhlIHVubG9hZCB0b2tlbiBmZWUgaXMgY2hhcmdlZCB0byB0aGUgc2lnbmVyLCBhbmQgdGhlIGNhbGwgaXMgbm90IHJlZnVuZGVkLCBhcyBpdB0BYWNjb3VudHMgZm9yIHRoZSBleHRyYSBwcm9vZiB2ZXJpZmljYXRpb24gYW5kIGFyY2hpdmVkIHJlY3ljbGVyIHVwZGF0ZS4ALFBhcmFtZXRlcnM6KQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZ5IHRoZSBhcmNoaXZlZCByZWN5Y2xlciByaW5nLjEBKiBgcmVjeWNsZXJfcm9vdGA6IHRoZSBkZWxldGVkIHJpbmcncyByaW5nLVZSRiByb290OyB2YWxpZGF0ZWQgdG9nZXRoZXIgd2l0aOQgIGB1bmxvYWRlZF9yb290YCBhZ2FpbnN0IHRoZSBzdG9yZWQgYXJjaGl2YWwgY29tbWl0bWVudC4FASogYHVubG9hZGVkX3Jvb3RgOiB0aGUgY3VycmVudCByb290IG9mIHRoZSB1bmxvYWRlZC1hbGlhc2VzIHRyaWUuOQEqIGBhbGlhc19wcm9vZmA6IGEgcmluZy1WUkYgbWVtYmVyc2hpcCBwcm9vZiwgY3JlYXRlZCBvdmVyIHRoZSBtZXNzYWdlIGJpbmRpbmdZASAgYGJsYWtlMl8yNTYoVU5MT0FEX0FSQ0hJVkVEX01TR19QUkVGSVggKysgc2lnbmVyKWAgaW4gdGhlIHJlY3ljbGVyIHVubG9hZGluZyBjb250ZXh0dCAgVU5MT0FESU5HX1JFQ1lDTEVSX0NPTlRFWFQuNQEqIGBub25faW5jbHVzaW9uX3Byb29mYDogdHJpZSBub2RlcyBwcm92aW5nIHRoZSBjYWxsZXIncyBhbGlhcyBpcyBhYnNlbnQgZnJvbVUBICBgdW5sb2FkZWRfcm9vdGAgKGkuZS4gaXQgd2FzIG5ldmVyIHVubG9hZGVkKTsgbXVzdCBhbHNvIGNvdmVyIHRoZSBpbnNlcnRpb24gcGF0aCBvZrggIHRoZSBhbGlhcyBzbyB0aGUgbmV3IHJvb3QgY2FuIGJlIHJlY29tcHV0ZWQu5CogYHRvYDogdGhlIGFjY291bnQgcmVjZWl2aW5nIHRoZSByZWNvdmVyZWQgZGVub21pbmF0aW9uLlkBKiBgZmVlX2N1cnJlbmN5YDogd2hldGhlciB0aGUgdW5sb2FkIGZlZSBpcyBwYWlkIGluIG5hdGl2ZSBjdXJyZW5jeSBvciBleHRlcm5hbCBhc3NldC5hASogYG1heF9mZWVgOiB0aGUgbW9zdCB0aGUgZmVlIG1heSBjb3N0IHRoZSBzaWduZXIsIGluIGBmZWVfY3VycmVuY3lgOiB0aGUgbmF0aXZlIGZlZSBmb3JVASAgW0ZlZUN1cnJlbmN5OjpOYXRpdmVdLCBhbmQgdGhlIGFtb3VudCBvZiB0aGUgc2lnbmVyJ3MgYXNzZXQgdGhlIGNvbnZlcnNpb24gaW50byB0aGXcICBuYXRpdmUgZmVlIG1heSB0YWtlIGZvciBbRmVlQ3VycmVuY3k6OkV4dGVybmFsQXNzZXRdLgBhAU9uIHN1Y2Nlc3MgdGhlIGZ1bGwgZGVub21pbmF0aW9uIGlzIHJlbGVhc2VkIHRvIGB0b2AsIHRoZSBhbGlhcyBpcyBhZGRlZCB0byB0aGUgdW5sb2FkZWQ1AXNldCAoc28gaXQgY2Fubm90IGJlIHJlY292ZXJlZCBhZ2FpbiksIGFuZCB0aGUgYXJjaGl2ZSdzIHJlY292ZXJhYmxlIGNvdW50IGlzwGRlY3JlbWVudGVkICh0aGUgZW50cnkgaXMgcmVtb3ZlZCBvbmNlIGRyYWluZWQpLlUBKE5vIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdIGlzIHNldHRsZWQgaGVyZSwgaXQgd2FzIGFscmVhZHkgc2V0dGxlZCB3aGVuIHRoZSByZWN5Y2xlcjh3YXMgYXJjaGl2ZWQuKQBVAVRoZSB1bmxvYWRlZC1hbGlhc2VzIHRyaWUgbmVlZGVkIGZvciBgdW5sb2FkZWRfcm9vdGAgYW5kIGBub25faW5jbHVzaW9uX3Byb29mYCBjYW4gYmUxAXJlY29uc3RydWN0ZWQgb2ZmY2hhaW4gYnkgbGlzdGVuaW5nIHRvIHRoZSBbYEV2ZW50OjpSZWN5Y2xlckFsaWFzVW5sb2FkZWRgXSxRAVtgRXZlbnQ6OlJlY3ljbGVyQXJjaGl2ZWRgXSBhbmQgW2BFdmVudDo6QXJjaGl2ZWRSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXRgXRxldmVudHMuAFUBVGhpcyBjYWxsIGNvbmZsaWN0cyB3aXRoIGFueSBvdGhlciBjYWxsIHRoYXQgdW5sb2FkcyBmcm9tIHRoZSBzYW1lIGFyY2hpdmVkIHJlY3ljbGVyOmEBZWFjaCB1bmxvYWQgdXBkYXRlcyB0aGUgY29tbWl0bWVudCwgc28gdGhlIHByb29mcyBpbiB0aGUgY29tcGV0aW5nIGNhbGwgYmVjb21lIG91dGRhdGVkLkEBYHJlY3ljbGVyX3Jvb3RgIGFuZCBgdW5sb2FkZWRfcm9vdGAgYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgc3RvcmVkIGNvbW1pdG1lbnQgYXRNAXRyYW5zYWN0aW9uIHZhbGlkYXRpb24sIHRoZXJlZm9yZSByZXNvbHZpbmcgc3VjaCBjb25mbGljdHMgd2l0aG91dCBjaGFyZ2luZyBmZWVzIGJ5jG1hcmtpbmcgb3V0ZGF0ZWQgcHJvb2ZzIGFzIGludmFsaWQuaHVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5zHAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEcYWxpYXNlc40FAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoc3BsaXRfaW50b20FAX0BQm91bmRlZFZlYzwKKERlbm9taW5hdGlvbiwgQm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFNwbGl0T3V0cHV0cz4pLCBUOjoKTWF4U3BsaXRPdXRwdXRzLD4AARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgANvNRVbmxvYWQgYSByZWN5Y2xlciB0byBtaW50IG11bHRpcGxlIG5ldyBjb2lucyAoc3BsaXQpLgApAVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OlVubG9hZFRva2VuXSB3aXRoIGBmZWU6IFVubG9hZEZlZTo6UHJlcGFpZGAuAEUBVGhpcyBmdW5jdGlvbiBjb21iaW5lcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbl0gYW5kRQFbU2VsZjo6c3BsaXRdIGluIGEgc2luZ2xlIGF0b21pYyBvcGVyYXRpb24uIFRoZSByZXN1bHRpbmcgY29pbnMnIGFnZSBpcyAxIGJlY2F1c2VFAXRoZSBhY3Rpb24gb2Ygc3BsaXR0aW5nIGFnZSBjb2lucy4gVGhpcyBpcyBhbHNvIGltcG9ydGFudCBiZWNhdXNlIHJlc3VsdGluZyBjb2luc+hhcmUgbm90IGVudGlyZWx5IGZyZXNoLCB0aGV5IGNhbiBiZSBsaW5rZWQgdG8gb3RoZXIgY29pbnMuAFkBVW5saWtlIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luXSwgdGhpcyBjYWxsIGRvZXMgKipub3QqKiByZXF1aXJlIHRoZSBudW1iZXIgb2Z0YWxpYXNlcyB0byBiZSBhIHBvd2VyIG9mIHR3by4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLjUBKiBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC74KiBgcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzX3Byb29mcy5RASogYHNwbGl0X2ludG9gOiBhIHZlY3RvciBvZiBwYWlycywgZWFjaCBwYWlyIGNvbnRhaW5pbmcgYSBkZW5vbWluYXRpb24gYW5kIGEgbGlzdCBvZmggIGRlc3RpbmF0aW9uIGFjY291bnQgaWRzLlkBKiBgbWF4X2ZlZWA6IHRoZSBtYXhpbXVtIGZlZSB0aGUgY2FsbGVyIGlzIHdpbGxpbmcgdG8gcGF5LCBleHByZXNzZWQgaW4gdGhlIHVuZGVybHlpbmdJASAgYXNzZXQgYmFsYW5jZS4gSXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0b3RhbCB2YWx1ZSBvZiB0aGU5ASAgdW5sb2FkZWQgY29pbnMgYW5kIHRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIGRlZmluZWQgaW4gYHNwbGl0X2ludG9gLgBhASAgV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgaXQgbXVzdCBiZSB6ZXJvOiBub3RoaW5nIGlzIHNldCBhc2lkZSBmb3IgdGhlIGZlZSwgc2+4ICBgc3BsaXRfaW50b2AgdGFrZXMgdGhlIHdob2xlIHVubG9hZGVkIHZhbHVlLl0BICBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGlzIGFtb3VudCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBpbnB1dDogdGhlIGFzc2V0DQEgIGlzIGNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgbmV0d29yayBmZWUsIHdoaWNoIGlzIHRyYW5zZmVycmVkIHRvNQEgIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXSwgYW5kIGFueSByZW1haW5kZXIgaXMgYnVybmVkLiBUaGUgY2FsbGVyIGNhbiBxdWVyeewgIGBnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0YCB0byBlc3RpbWF0ZSB0aGUgZmVlLgBhASAgVGhpcyBwYXJhbWV0ZXIgc2VydmVzIGFzIGEgc2FmZWd1YXJkOiB0aGUgdHJhbnNhY3Rpb24gaXMgcmVqZWN0ZWQgYXQgdmFsaWRhdGlvbiBpZiB0aGVBASAgYWN0dWFsIG5ldHdvcmsgZmVlIGV4Y2VlZHMgYG1heF9mZWVgLCBwcm90ZWN0aW5nIHRoZSBjYWxsZXIgZnJvbSBleGNlc3NpdmUgZmVlXQEgIGluY3JlYXNlcyB0aGF0IHdvdWxkIHJlbmRlciB0aGUgYXJndW1lbnQgYHNwbGl0X2ludG9gIGludmFsaWQgKHVubG9hZGVkIGZ1bmRzIG11c3QgYmWYICBoaWdoZXIgdGhhbiB0aGUgc3BsaXQgcGx1cyB0aGUgZmVlKS4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLi0BKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi4hASogVGhlIGBhbGlhc2VzYCBwcm92aWRlZCBtdXN0IG1hdGNoIHRoZSBhbGlhc2VzIGRlcml2ZWQgZnJvbSB0aGUgcHJvb2ZzLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLmEBKiBUaGUgdG90YWwgdmFsdWUgb2YgdGhlIG5ldyBjb2lucyBkZWZpbmVkIGluIGBzcGxpdF9pbnRvYCBwbHVzIGBtYXhfZmVlYCBtdXN0IGVxdWFsIHRoZZAgIHRvdGFsIHZhbHVlIG9mIHRoZSB1bmxvYWRlZCBjb2lucy5VASogYG1heF9mZWVgIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgbWluaW11bSBjb2luLiAoVGhpcyBpcyBpbXBsaWVkIGJ5IHRoZSBjb25kaXRpb24kICBhYm92ZSku3CogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgYG1heF9mZWVgIG11c3QgYmUgMC4tASogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgYG1heF9mZWVgIG11c3QgY292ZXIgdGhlIG5ldHdvcmsgZmVlLqBkaXJlY3Rfb2ZmYm9hcmRfY29pbl9pbnRvX2V4dGVybmFsX2Fzc2V0BAEIdG8EATBUOjpBY2NvdW50SWQADmDwRGlyZWN0bHkgb2ZmYm9hcmQgYSBjb2luIGludG8gdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQuANRUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgb2J0YWluZWQgdGhyb3VnaOhbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkgdXNpbmcgYEFzQ29pbmAuADkBVGhpcyBjYWxsIGJ5cGFzc2VzIHRoZSByZWN5Y2xlci91bmxvYWQtdG9rZW4gb2ZmYm9hcmRpbmcgZmxvdyBhbmQgcmVsZWFzZXMgdGhlzHVuZGVybHlpbmcgYXNzZXQgZGlyZWN0bHksIHdoYXRldmVyIHRoZSBjb2luJ3MgYWdlLgBEIyBQcml2YWN5IHdhcm5pbmcAQQFEaXJlY3RseSBvZmZib2FyZGluZyBhIGNvaW4gd2l0aCBub24temVybyBhZ2UgcHVibGljbHkgbGlua3MgdGhlIGNvaW4ncyB0cmFuc2ZlclUBY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGFjY291bnQsIHdoaWNoIGNvbXByb21pc2VzLCB0byBzb21lIGV4dGVudCwgdGhlIGFub255bWl0eSBvZk0BZXZlcnkgcHJldmlvdXMgaG9sZGVyIGluIHRoZSBjaGFpbjogaWYgQWxpY2Ugc2VuZHMgYSBjb2luIHRvIEJvYiBhbmQgQm9iIHRvIENoYXJsaWVFAWFuZCBDaGFybGllIGRpcmVjdGx5IG9mZmJvYXJkcyBpdCwgQWxpY2UgbWF5IGRlZHVjZSB3aGF0IEJvYiBkaWQgd2l0aCB0aGUgY29pbi4gQVkBZnJlc2ggY29pbiAoYGFnZSA9PSAwYCkgaGFzIGp1c3QgYmVlbiB1bmxvYWRlZCBmcm9tIGEgcmVjeWNsZXIgYW5kIGNhcnJpZXMgbm8gdHJhbnNmZXJBAWhpc3RvcnksIHNvIGl0IGNhbiBiZSBvZmZib2FyZGVkIGRpcmVjdGx5IHdpdGhvdXQgdGhpcyBwcml2YWN5IGxvc3MuIEZvciBtYXhpbXVtHQFwcml2YWN5LCBvZmZib2FyZCBjb2lucyB3aXRoIG5vbi16ZXJvIGFnZSB0aHJvdWdoIHRoZSByZWN5Y2xlciBpbnN0ZWFkLgAsUGFyYW1ldGVyczo9ASogYHRvYDogZGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVzIHRoZSByZWxlYXNlZCB1bmRlcmx5aW5nIGFzc2V0IGFtb3VudC4ANFJlcXVpcmVtZW50czqQKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6Q29pbl0uEQEqIFRoZSBkZW5vbWluYXRpb24gbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIHVuZGVybHlpbmctYXNzZXQgYW1vdW50LmhjcmVhdGVfc3VmZmljaWVudF9pbnN0YW5jZQgBIGFzc2V0X2lkcQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABKGFzc2V0X3VuaXRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABJA9ENyZWF0ZSBhIHN1ZmZpY2llbnQgY29pbmFnZSBpbnN0YW5jZSBmb3IgYW4gdW5kZXJseWluZyBhc3NldC4AIQFUaGUgb3JpZ2luIG11c3Qgc2F0aXNmeSBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4gVGhlIGFzc2V0IG11c3QgZXhpc3QgaW5FAVtgQ29uZmlnOjpGdW5naWJsZXNgXTsgaXQgbWF5IGFscmVhZHkgYmUgd3JhcHBlZCBieSBvdGhlciBpbnN0YW5jZXMsIHNvIGFkbWluIGNhbiEBYWx3YXlzIHdyYXAgaXQgYXQgdGhlIGdyYW51bGFyaXR5IGl0IHdhbnRzLCB3aGF0ZXZlciB3YXMgY3JlYXRlZCBiZWZvcmUuAFEBVGhlIGluc3RhbmNlJ3MgcmVjeWNsZXIgY29sbGVjdGlvbnMgYXJlIGNyZWF0ZWQgd2l0aGluIHRoaXMgY2FsbC4gVGhlIHBhbGxldCBhY2NvdW50TQFtdXN0IGFscmVhZHkgYmUgYWJsZSB0byByZWNlaXZlIHRoZSB1bmRlcmx5aW5nIGFzc2V0OiBmb3IgYSBub24tc3VmZmljaWVudCBhc3NldCBpdEEBbXVzdCBoYXZlIGJlZW4gdG91Y2hlZCBiZWZvcmVoYW5kLiBJdCBtdXN0IGFsc28gYWxyZWFkeSBob2xkIHRoZSBhc3NldCdzIG1pbmltdW2YYmFsYW5jZSBhcyBhIGJ1ZmZlciB0byBhdm9pZCBkdXN0aW5ncy4ALFBhcmFtZXRlcnM6BQEqIGBhc3NldF9pZGA6IHRoZSB1bmRlcmx5aW5nIGFzc2V0IGJhY2tpbmcgdGhpcyBpbnN0YW5jZSdzIGNvaW5zLlkBKiBgYXNzZXRfdW5pdGA6IHRoZSBhc3NldCBhbW91bnQgb2YgYSBjb2luIG9mIGRlbm9taW5hdGlvbiB6ZXJvLiBNdXN0IGJlIG5vbi16ZXJvLCBhbmRNASAgbXVzdCByZXByZXNlbnQgZXZlcnkgZGVub21pbmF0aW9uIGluIGBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYCB3aXRob3V0NCAgdHJ1bmNhdGlvbi5kY3JlYXRlX3Nwb25zb3JlZF9pbnN0YW5jZQwBIGFzc2V0X2lkcQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABKGFzc2V0X3VuaXRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAE8aW5pdGlhbF9mdW5kaW5nvQUB2E9wdGlvbjwoRnVuZ2libGVzQXNzZXRJZE9mPFQ+LCBGdW5naWJsZXNCYWxhbmNlT2Y8VD4pPgATgOBDcmVhdGUgYSBzcG9uc29yZWQgY29pbmFnZSBpbnN0YW5jZSB3cmFwcGluZyBgYXNzZXRfaWRgLgBNAVRoZSBvcmlnaW4gbXVzdCBzYXRpc2Z5IFtgQ29uZmlnOjpTcG9uc29yT3JpZ2luYF0sIHdoaWNoIHlpZWxkcyB0aGUgcGF5aW5nIGFjY291bnQ7SQF3aXRoIGBFbnN1cmVTaWduZWRgIGFueW9uZSBjYW4gY2FsbCB0aGlzLiBbYENvbmZpZzo6RW5hYmxlUGVybWlzc2lvbmxlc3NgXSBtdXN0IGJlVQF0cnVlLCBvdGhlcndpc2Ugbm8gc3BvbnNvcmVkIGluc3RhbmNlIGNhbiBiZSBjcmVhdGVkIGF0IGFsbC4gVGhlIGluc3RhbmNlJ3MgbG9hZC1zaWRlJQFjb3N0cyBhcmUgdW5kZXJ3cml0dGVuIGJ5IGEgcG90IGFjY291bnQgZGVyaXZlZCBmcm9tIHRoZSBpbnN0YW5jZSBpZCAoc2VlPQFbYFBhbGxldDo6cG90X2FjY291bnRgXSksIGtlcHQgZnVuZGVkIGJ5IHNwb25zb3JzIHRocm91Z2ggW2BQYWxsZXQ6OmZ1bmRfcG90YF0uAFBUaGUgY2FsbGVyIHByb3ZpZGVzOlEBLSB0aGUgaW5zdGFuY2UgY3JlYXRpb24gZGVwb3NpdCAoW2BDb25maWc6Okluc3RhbmNlQ3JlYXRpb25EZXBvc2l0YF0sIHRha2VuIGZyb20gdGhlVQEgIGNhbGxlciBhbmQga2VwdCBmb3IgYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2UgaXMgc3BvbnNvcmVkLCBzaW5jZSBpbnN0YW5jZXMgYXJlIG5ldmVySQEgIHJlbW92ZWQ7IHRoZSBjYWxsZXIgYW5kIGl0cyB0aWNrZXQgYXJlIHJlY29yZGVkIGluIFtgSW5zdGFuY2VSZWNvcmQ6OmNyZWF0b3JgXSksXQEtIHRoZSBwYWxsZXQgYWNjb3VudCdzIG1pbmltdW0gYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCAodHJhbnNmZXJyZWQgcmF0aGVyIHRoYW4FASAgbWludGVkLCBzbyBhIHBlcm1pc3Npb25sZXNzIGNhbGwgY2Fubm90IGNyZWF0ZSB1bmJhY2tlZCBmdW5kcyksUQEtIG9wdGlvbmFsbHkgYGluaXRpYWxfZnVuZGluZ2AsIHJlY29yZGVkIGFzIHRoZSBjYWxsZXIncyBwb3QgY29udHJpYnV0aW9uIGV4YWN0bHkgYXNNASAgW2BQYWxsZXQ6OmZ1bmRfcG90YF0gd291bGQuIEJ1bmRsZWQgaGVyZSBiZWNhdXNlIHRoZSBpbnN0YW5jZSBpZCBpcyBvbmx5IGFzc2lnbmVkPQEgIGluc2lkZSB0aGUgY2FsbCwgc28gYSBzZXBhcmF0ZSBgZnVuZF9wb3RgIGNhbm5vdCBiZSBiYXRjaGVkIHdpdGggdGhlIGNyZWF0aW9uMCAgcmFjZS1mcmVlLgBZAWBhc3NldF91bml0YCBpcyBmaXhlZCBhdCBjcmVhdGlvbiBhbmQgaW5zdGFuY2VzIGFyZSBuZXZlciByZW1vdmVkLCBidXQgYW4gYXNzZXQgaXMgbm90MQFmaXJzdC1jb21lOiBhbnlvbmUsIGFkbWluIGluY2x1ZGVkLCBjYW4gd3JhcCB0aGUgc2FtZSBhc3NldCBhZ2FpbiBpbiBpdHMgb3duUQFpbnN0YW5jZSBhdCBhbm90aGVyIHVuaXQsIHNvIG9uZSBjcmVhdG9yIGNhbm5vdCBmaXggdGhlIGNvaW4gZ3JhbnVsYXJpdHkgb2YgYW4gYXNzZXQVAWZvciBldmVyeWJvZHkgZWxzZS4gV2hhdCBzdG9wcyBhIGZsb29kIG9mIG5lYXItZHVwbGljYXRlIGluc3RhbmNlcyBpc1UBW2BDb25maWc6Okluc3RhbmNlQ3JlYXRpb25EZXBvc2l0YF0sIGhlbGQgb24gZWFjaCBjcmVhdG9yIGZvciBhcyBsb25nIGFzIGl0cyBpbnN0YW5jZTRpcyBzcG9uc29yZWQuACxQYXJhbWV0ZXJzOgUBKiBgYXNzZXRfaWRgOiB0aGUgdW5kZXJseWluZyBhc3NldCBiYWNraW5nIHRoaXMgaW5zdGFuY2UncyBjb2lucy5ZASogYGFzc2V0X3VuaXRgOiB0aGUgYXNzZXQgYW1vdW50IG9mIGEgY29pbiBvZiBkZW5vbWluYXRpb24gemVyby4gTXVzdCBiZSBub24temVybywgYW5kTQEgIG11c3QgcmVwcmVzZW50IGV2ZXJ5IGRlbm9taW5hdGlvbiBpbiBgW01pbmltdW1FeHBvbmVudCwgTWF4aW11bUV4cG9uZW50XWAgd2l0aG91dDQgIHRydW5jYXRpb24uHQEqIGBpbml0aWFsX2Z1bmRpbmdgOiBhbiBvcHRpb25hbCBgKGN1cnJlbmN5LCBhbW91bnQpYCBwb3QgY29udHJpYnV0aW9uLiBmdW5kX3BvdAwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGN1cnJlbmN5cQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AFDxFAUZ1bmQgdGhlIHBvdCBvZiB0aGUgc3BvbnNvcmVkIGluc3RhbmNlIGBpbnN0YW5jZV9pZGAgd2l0aCBgYW1vdW50YCBvZiBgY3VycmVuY3lgLgAxAVRoZSBjb250cmlidXRpb24gaXMgcmVjb3JkZWQgcGVyIGZ1bmRlciBhbmQgcGVyIGN1cnJlbmN5OiB0aGUgcGFydCBvZiBpdCBub3QBAWN1cnJlbnRseSBoZWxkIGFzIGxvYWQtZGVwb3NpdCBjb2xsYXRlcmFsIGNhbiBiZSB0YWtlbiBiYWNrIHdpdGhNAVtgUGFsbGV0Ojp3aXRoZHJhd19wb3RfZnVuZHNgXS4gQSBwbGFpbiB0cmFuc2ZlciB0byB0aGUgcG90IGFjY291bnQgYmFja3MgbG9hZHMgYWxstHRoZSBzYW1lIGJ1dCBpcyBhIGRvbmF0aW9uLCBub3Qgd2l0aGRyYXdhYmxlLgBBAUFueSBleGlzdGluZyBgY3VycmVuY3lgIGlzIGFjY2VwdGVkLCBub3QganVzdCB0aGUgY3VycmVudCBkZXBvc2l0IGN1cnJlbmN5LCBzbyBh2HNwb25zb3IgY2FuIHByZWZ1bmQgYWhlYWQgb2YgYW4gYWRtaW4gY3VycmVuY3kgc3dpdGNoLgBJAUEgcG90IHdpdGggbm8gYWNjb3VudCBmb3IgYGN1cnJlbmN5YCBoYXMgb25lIGNyZWF0ZWQgZm9yIGl0IGZpcnN0LCBhdCB0aGUgY2FsbGVyJ3NJAWV4cGVuc2UuIFdoYXRldmVyIHRoYXQgY29zdHMgaXMgbm90IHBhcnQgb2YgdGhlIHJlY29yZGVkIGNvbnRyaWJ1dGlvbiBhbmQgaXMgbmV2ZXIxAXJlZnVuZGVkLiBUaGUgYGFtb3VudGAgbXVzdCBiZSBhdCBsZWFzdCB0aGUgY3VycmVuY3kncyBtaW5pbXVtIGJhbGFuY2UsIHNvIGFNAWZ1bmRpbmcgY2Fubm90IGJlIGR1c3RlZCBvbiBhcnJpdmFsOyB0aGUgcG90J3MgYWNjb3VudCB0aGVuIHN1cnZpdmVzIGFueSB3aXRoZHJhd2FsIG9yIGhvbGQuSHdpdGhkcmF3X3BvdF9mdW5kcwwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGN1cnJlbmN5cQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AFRBFAVRha2UgYmFjayB1cCB0byB0aGUgY2FsbGVyJ3MgcmVjb3JkZWQgY29udHJpYnV0aW9uIHRvIHRoZSBwb3Qgb2YgYGluc3RhbmNlX2lkYCBpbixgY3VycmVuY3lgLgA5AU9ubHkgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBjYW4gYmUgd2l0aGRyYXduOiBoZWxkIGNvbGxhdGVyYWwgaXMgb3V0IG9mIHJlYWNoLlhjb2xsYXBzZV9sb2FkX2RlcG9zaXRzBAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkABc0AQFSZS1wcmljZSBldmVyeSBsaXZlIGxvYWQgZGVwb3NpdCBvZiBgaW5zdGFuY2VfaWRgIHRvIHRoZSBjdXJyZW50LQFbYENvbmZpZzo6TG9hZERlcG9zaXRgXSwgY29udmVydGluZyB0aGUgY29sbGF0ZXJhbCB0byB0aGUgY3VycmVudCBjdXJyZW5jeS4AQQFBbnlib2R5IG1heSBjYWxsIHRoaXMuIEl0IGlzIHRoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGNoYW5nZXMgaG93IG11Y2ggY29sbGF0ZXJhbFUBYmFja3MgYWxyZWFkeS1sb2FkZWQga2V5cywgaW4gZWl0aGVyIGRpcmVjdGlvbjogdGhlIHBvdCBpcyBjaGFyZ2VkIHRoZSBzaG9ydGZhbGwgd2hlbjUBYWRtaW4gaGFzIHJhaXNlZCB0aGUgcHJpY2Ugc2luY2UgdGhvc2UgbG9hZHMsIGFuZCByZWZ1bmRlZCB0aGUgZXhjZXNzIHdoZW4gaXRNAWhhcyBsb3dlcmVkIGl0LiBOb3RoaW5nIGlzIGNvbnZlcnRlZCBiZXR3ZWVuIGN1cnJlbmNpZXM6IG9sZCBjb2xsYXRlcmFsIGlzIHJlbGVhc2VkUQF0byB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIGFuZCB0aGUgbmV3IHJlcXVpcmVtZW50IGlzIHRha2VuIGZyZXNoLCBzbyBubyByYXRlIGZlZWQgaXMkaW52b2x2ZWQuADEBVGhpcyBpcyB0aGUgY29tcGFuaW9uIHRvIGFuIGFkbWluIGNoYW5nZSBvZiBbYENvbmZpZzo6TG9hZERlcG9zaXRgXSwgYW5kIHRoZVUBcGVybWlzc2lvbmxlc3MgcmVtZWR5IGZvciBhbiBpbnN0YW5jZSB3aG9zZSBsb2FkcyBhcmUgcmVmdXNlZCBiZWNhdXNlIGl0cyBvbGQgdGllciBpczxzdGlsbCBvY2N1cGllZC5gbWFrZV9pbnN0YW5jZV9zdWZmaWNpZW50BAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkABgo6FN3aXRjaCBhIHNwb25zb3JlZCBpbnN0YW5jZSB0byBgSW5zdGFuY2VNb2RlOjpTdWZmaWNpZW50YC4AHQFUaGUgb3JpZ2luIG11c3Qgc2F0aXNmeSBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXTogdGhpcyBpcyBhZG1pbiBibGVzc2luZ1EBYW4gaW5zdGFuY2UgaW50byB0aGUgc3RyYW5kZWQtdmFsdWUgZWNvbm9taWNzLiBFdmVyeSBsb2FkIGRlcG9zaXQgaXMgcmVsZWFzZWQgdG8gdGhlFQFwb3QncyBmcmVlIGJhbGFuY2UsIHdoZXJlIGZ1bmRlcnMgcmVjbGFpbSB0aGVpciBjb250cmlidXRpb25zIHRocm91Z2g5AVtgUGFsbGV0Ojp3aXRoZHJhd19wb3RfZnVuZHNgXSAod2l0aGRyYXdhbCBkb2VzIG5vdCByZXF1aXJlIHRoZSBpbnN0YW5jZSB0byBiZUUBc3BvbnNvcmVkKTsgb25seSBkb25hdGlvbnMgc3RheSBzdHJhbmRlZC4gVGhlIGxlZGdlciBpcyByZW1vdmVkLCBhbmQgZnJvbSBoZXJlIG9uvGxvYWRzIHRha2Ugbm8gZGVwb3NpdCBhbmQgdW5sb2FkcyByZWxlYXNlIG5vbmUuAMhUaGUgaW5zdGFuY2UgY3JlYXRpb24gZGVwb3NpdCBpcyByZWxlYXNlZCBpZiBzb21lLlxtYWtlX2luc3RhbmNlX3Nwb25zb3JlZAQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAAZQOhTd2l0Y2ggYSBzdWZmaWNpZW50IGluc3RhbmNlIHRvIGBJbnN0YW5jZU1vZGU6OlNwb25zb3JlZGAuADEBVGhlIG9yaWdpbiBtdXN0IHNhdGlzZnkgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uIFRoZSBkZXBvc2l0IGxlZGdlciByZXN0YXJ0c00BZnJvbSB6ZXJvOiBrZXlzIGxvYWRlZCB3aGlsZSB0aGUgaW5zdGFuY2Ugd2FzIHN1ZmZpY2llbnQgY2Fycnkgbm8gZGVwb3NpdCwgc28gdGhlaXJBAXVubG9hZHMgc2V0dGxlIGFnYWluc3Qgd2hhdGV2ZXIgdGhlIGxlZGdlciBob2xkcyBhdCB0aGUgdGltZSwgcG9zc2libHkgcmVsZWFzaW5nOQFkZXBvc2l0cyB0YWtlbiBmb3Iga2V5cyBsb2FkZWQgYWZ0ZXIgdGhlIHN3aXRjaCwgb3Igbm90aGluZyBvbmNlIHRoZSBsZWRnZXIgaXNNAWRyYWluZWQuIFRoZSBpbnN0YW5jZSB0aGVyZWZvcmUgcnVucyB1bmRlci1jb2xsYXRlcmFsaXplZCB1bnRpbCBpdHMgcHJlLXN3aXRjaCBrZXlz5HN0b3AgcmVzb2x2aW5nLCB3aGljaCBhZG1pbiBhY2NlcHRzIGJ5IG1ha2luZyB0aGUgc3dpdGNoLgBVAUxvYWRzIHN0YXkgaW52YWxpZCB1bnRpbCBbYENvbmZpZzo6TG9hZERlcG9zaXRgXSBpcyBzZXQgYW5kIHRoZSBwb3QgaXMgZnVuZGVkIHRocm91Z2hUW2BQYWxsZXQ6OmZ1bmRfcG90YF0uANBObyBbYENvbmZpZzo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXRgXSBpcyB0YWtlbiwgYW5kMQFbYEluc3RhbmNlUmVjb3JkOjpjcmVhdG9yYF0gc3RheXMgYXMgaXQgaXMsIHNvIGFuIGluc3RhbmNlIHRoYXQgd2VudCB0aHJvdWdoTQFbYFBhbGxldDo6bWFrZV9pbnN0YW5jZV9zdWZmaWNpZW50YF0gY29tZXMgYmFjayB3aXRoIG5vIGNyZWF0b3IgYW5kIG5vIGRlcG9zaXQsIHRoZWhzYW1lIGFzIG9uZSBhZG1pbiBjcmVhdGVkLjhjbGVhbl9yZWN5Y2xlcggBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgBlLHRDbGVhbiB1cCBhbiBleHBpcmVkIHJlY3ljbGVyLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuAA0BVGhpcyByZW1vdmVzIGFuIG9sZCByZWN5Y2xlciB0aGF0IGhhcyBleGNlZWRlZCBpdHMgZXhwaXJhdGlvbiB0aW1lLmEBQW55IHJlbWFpbmluZyAobm90LXlldC11bmxvYWRlZCkgY29pbnMgYXJlIG5vdCBkZXN0cm95ZWQ6IHRoZSByaW5nIGlzIGFyY2hpdmVkIGFuZCB0aGVpcvxiYWNraW5nIGFzc2V0IHN0YXlzIGhlbGQgaW4gdGhlIHBhbGxldCBhY2NvdW50LCByZWNvdmVyYWJsZSB2aWHkW2BQYWxsZXQ6OnVubG9hZF9hcmNoaXZlZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0YF0uAE0BT24gYSBzcG9uc29yZWQgaW5zdGFuY2UgdGhpcyBzZXR0bGVzIHRoZSBbYENvbmZpZzo6TG9hZERlcG9zaXRgXSBvZiBldmVyeSByZW1haW5pbmcQa2V5LmRjbGVhbl9jb25zdW1lZF9mcmVlX3Rva2VuBAEYcGVyaW9kOAEYUGVyaW9kAGYM/ENsZWFudXAgc3RvcmFnZSBmb3IgY29uc3VtZWQgZnJlZSB1bmxvYWQgdG9rZW5zIG9mIG9sZCBwZXJpb2RzLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UucGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmcIARhwZXJpb2Q4ARhQZXJpb2QAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AGgYCQFDbGVhbiB1cCBhIHNpbmdsZSByaW5nIGluIGFuIGV4cGlyZWQgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbi4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLikBUmluZ3MgbXVzdCBiZSBjbGVhbmVkIHNlcXVlbnRpYWxseSAocmluZyAwIGZpcnN0LCB0aGVuIDEsIGV0Yy4pIGJlZm9yZSB0aGV0Y29sbGVjdGlvbiBjYW4gYmUgZGVsZXRlZCB2aWGNAVtgZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbmBdKFNlbGY6OmRlbGV0ZV9leHBpcmVkX3BhaWRfdW5sb2FkX3Rva2VuX2NvbGxlY3Rpb24pLkxjbGVhbl9yZWN5Y2xlcl9kdXN0AGkUcENsZWFuIHVwIGR1c3QgZm9yIHJlY3ljbGVycy4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLlEBUmVtb3ZlcyB1cCB0byBEVVNUX0NMRUFOVVBfQkFUQ0hfU0laRSBlbnRyaWVzIGZyb20gW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIHBlciBjYWxsIHRvUGJvdW5kIHRoZSBvcGVyYXRpb24ucGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX2R1c3QAagyUQ2xlYW4gdXAgZHVzdCBmb3IgcGFpZCB1bmxvYWQgdG9rZW5zLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UurGRlbGV0ZV9leHBpcmVkX3BhaWRfdW5sb2FkX3Rva2VuX2NvbGxlY3Rpb24EARhwZXJpb2Q4ARhQZXJpb2QAaxhFAURlbGV0ZSBhbiBleHBpcmVkIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb24gYWZ0ZXIgYWxsIHJpbmdzIGhhdmUgYmVlbiBjbGVhbmVkLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UukEFsbCByaW5ncyBtdXN0IGhhdmUgYmVlbiBjbGVhbmVkIHZpYUEBW2BjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nYF0oU2VsZjo6Y2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZykgYmVmb3JlIHRoaXM4Y2FuIGJlIGNhbGxlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFxBQRTAAAEAHkFARhWZWM8VD4AAHEFAAAECBUEdQUAdQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAeQUAAAJxBQB9BQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0RENvZGVjUHJlc2VydmF0aW9uAAEMKEV4cGVuZGFibGUAAAAcUHJvdGVjdAABACBQcmVzZXJ2ZQACAACBBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUFBFMAAAQAiQUBGFZlYzxUPgAAhQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldDxVbnBhaWRMb2FkSW5wdXQEBFQAABABMHByZXNlcnZhdGlvbn0FAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAThTaWduYXR1cmVPZjxUPgAAiQUAAAKFBQCNBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABABRBAEYVmVjPFQ+AACRBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZUFBFMAAAQAmQUBGFZlYzxUPgAAlQUAAAQIFQQIAJkFAAAClQUAnQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldExVbmxvYWRSZWN5Y2xlcklucHV0BDBBbGlhc2VzQm91bmQAABABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcYWxpYXNlc40FAXxCb3VuZGVkVmVjPEFsaWFzLCBBbGlhc2VzQm91bmQ+AAChBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0LEZlZUN1cnJlbmN5AAEIGE5hdGl2ZQAAADRFeHRlcm5hbEFzc2V0AAEAAKUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQUEUwAABACpBQEYVmVjPFQ+AACpBQAAAp0FAK0FDCh2ZXJpZmlhYmxlEHJpbmdETWVtYmVyc0NvbW1pdG1lbnQAAyABAAAMALEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBtQUEUwAABAC5BQEYVmVjPFQ+AAC1BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AALkFAAACtQUAvQUEGE9wdGlvbgQEVAHBBQEIEE5vbmUAAAAQU29tZQQAwQUAAAEAAMEFAAAECHEBRQEAxQUMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBBDYWxsBARUAAEgJHN1YnNjcmliZQwBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lknAEYUGFyYUlkAAFMbWVtYmVyc19jb2xsZWN0aW9uc8kFAR0BQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyLD4AATBwYWxsZXRfaW5kZXgMAQh1OAAALKBSZWdpc3RlcnMgdGhlIHBhcmFjaGFpbiBhcyBhIHN1YnNjcmliZXIu0FRoZSBpbml0aWFsIHN0YXRlIHdpbGwgYmUgc2VudCBvdmVyIHNob3J0bHkgdmlhIFhDTS4AJCMjIE9yaWdpbqhSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYCAoZ292ZXJuYW5jZS9yb290KS4ANCMjIFBhcmFtZXRlcnMVAS0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJpbmcgcGFyYWNoYWluLkUBLSBgbWVtYmVyc19jb2xsZWN0aW9uc2A6IExpc3Qgb2YgY29sbGVjdGlvbiBpZGVudGlmaWVycyB0byBzdWJzY3JpYmUgdG8gYW5kIHRoZWlycCAgcmVzcGVjdGl2ZSByaW5nIGV4cG9uZW50cy41AS0gYHBhbGxldF9pbmRleGA6IFBhbGxldCBpbmRleCBvZiBtZW1iZXJzLXN1YnNjcmliZXIgb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uLHVuc3Vic2NyaWJlBAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWTVBQE4T3B0aW9uPFBhcmFJZD4AASRkVW5zdWJzY3JpYmVzIGEgcGFyYWNoYWluLgAkIyMgT3JpZ2luPQEtICoqU2VsZi11bnN1YnNjcmliZSoqOiBTdWJzY3JpYmVyIHBhcmFjaGFpbiB2aWEgWENNIChgRW5zdXJlU3Vic2NyaWJlck9yaWdpbmAp1C0gKipHb3Zlcm5hbmNlIHVuc3Vic2NyaWJlKio6IFJlcXVpcmVzIGBNYW5hZ2VPcmlnaW5gADQjIyBQYXJhbWV0ZXJzYQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgdG8gdW5zdWJzY3JpYmUuIFJlcXVpcmVkIGZvciBnb3Zlcm5hbmNlLCBpZ25vcmVkxCAgZm9yIHNlbGYtdW5zdWJzY3JpYmUgKGRlcml2ZWQgZnJvbSBYQ00gb3JpZ2luKS44cmVxdWVzdF9yZXBsYXkMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAFEcmluZ19yb290X2luZGljZXPZBQGwQm91bmRlZFZlYzxSaW5nSW5kZXgsIFQ6Ok1heFVwZGF0ZXNQZXJCYXRjaD4AAiScUmVxdWVzdHMgcmVwbGF5IG9mIHNwZWNpZmljIHJpbmcgcm9vdHMuADUBUGVybWlzc2lvbmxlc3Mg4oCUIGFueSBzaWduZWQgb3JpZ2luIGNhbiByZXF1ZXN0IGEgcmVwbGF5IGZvciBhbnkgc3Vic2NyaWJlci5JAVRoZSBzdWJzY3JpYmVyIHBhcmFjaGFpbiBpcyBpZGVudGlmaWVkIGJ5IHRoZSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgIHBhcmFtZXRlci4ALFBhcmFtZXRlcnM66C0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJlci6YLSBgaWRlbnRpZmllcmA6IENvbGxlY3Rpb24gaWRlbnRpZmllci5ZAS0gYHJpbmdfcm9vdF9pbmRpY2VzYDogTGlzdCBvZiByaW5nIHJvb3QgaW5kaWNlcywgbXVzdCBiZSBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuPGVucXVldWVfdXBkYXRlcwgBJHNlbmRfcGFnZc0DAQx1MTYAATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4AAwz4RW5xdWV1ZXMgcGVuZGluZyB1cGRhdGVzIGludG8gYSBzZWFsZWQgYmF0Y2ggZm9yIGRpc3RyaWJ1dGlvbi4AxEF1dGhvcml6ZWQgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4oc2VuZF9iYXRjaAwBHHBhcmFfaWScARhQYXJhSWQAASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAQMxFNlbmRzIHRoZSBjdXJyZW50IGJhdGNoIHRvIGEgc3BlY2lmaWMgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci44c2VuZF9pbml0X3BhZ2UQARxwYXJhX2lknAEYUGFyYUlkAAFgY3VycmVudF9jb2xsZWN0aW9uX2luZGV4OAEMdTMyAAFAYWZ0ZXJfcmluZ19pbmRleOQBRE9wdGlvbjxSaW5nSW5kZXg+AAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAUM2FNlbmRzIG9uZSBwYWdlIG9mIGluaXRpYWxpemF0aW9uIGRhdGEgdG8gYSBzdWJzY3JpYmVyLgD0QXV0aG9yaXplZCBtYWludGVuYW5jZSBjYWxsIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLkxhYmFuZG9uX3N0dWNrX2JhdGNoBAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAYU5EFiYW5kb25zIGEgc3R1Y2sgYmF0Y2ggdGhhdCBleGNlZWRlZCBgU3R1Y2tCYXRjaFRpbWVvdXRgLjEBU3Vic2NyaWJlcnMgdGhhdCBkaWQgbm90IHJlY2VpdmUgdGhlIGJhdGNoIGNhbiByZWNvdmVyIHZpYSBgcmVxdWVzdF9yZXBsYXlgLgA1AUF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlciB3aGVuIGEgYmF0Y2ggaGFzsGJlZW4gYWN0aXZlIGxvbmdlciB0aGFuIGBTdHVja0JhdGNoVGltZW91dGAuVHN1YnNjcmliZV93aGl0ZWxpc3RlZAQBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lknAEYUGFyYUlkAAcUTQFSZWdpc3RlcnMgYSB3aGl0ZWxpc3RlZCBwYXJhY2hhaW4gYXMgYSBzdWJzY3JpYmVyLCB1c2luZyB0aGUgY29sbGVjdGlvbnMgYW5kIHBhbGxldIBpbmRleCByZWNvcmRlZCBpbiB0aGUgd2hpdGVsaXN0LgA9AVRoZSB3aGl0ZWxpc3QgZW50cnkgaXMgY29uc3VtZWQsIHNvIGEgcGFyYWNoYWluIGNhbiBiZSBzdWJzY3JpYmVkIHRoaXMgd2F5IG9ubHklAW9uY2UuIEFmdGVyIGFuIGB1bnN1YnNjcmliZWAsIG9ubHkgYE1hbmFnZU9yaWdpbmAgY2FuIHN1YnNjcmliZSBpdCBhZ2Fpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHNBQRTAAAEANEFARhWZWM8VD4AAM0FAAAECAhVBQDRBQAAAs0FANUFBBhPcHRpb24EBFQBnAEIEE5vbmUAAAAQU29tZQQAnAAAAQAA2QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA3QUMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBBDYWxsBARUAAE0OHNjaGVkdWxlX2V2ZW50CAEgZXZlbnRfaWQIARxFdmVudElkAAEQaW5mb+EFAThFdmVudEluZm9PZjxUPgAAFFUBU2NoZWR1bGUgYSBuZXcgYWlyZHJvcCBldmVudC4gT3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gLiBUaGUgcHJpemUgYWxsb2NhdGlvbiBpcxkBaGVsZCBpbiB0aGUgcGFsbGV0J3MgcG90IGFjY291bnQuIFRoZSBwb3QgaXMgYXNzdW1lZCB0byBiZSBwcmUtZnVuZGVkLgBRAUNyb3NzLXBhbGxldCBjYWxsZXJzIHNob3VsZCB1c2UgdGhlIFtgY3JhdGU6OnR5cGVzOjpBaXJkcm9wOjpzY2hlZHVsZWBdIHRyYWl0IG1ldGhvZORpbnN0ZWFkLCB3aGljaCBkZWJpdHMgYSBjYWxsZXItc3VwcGxpZWQgYHNvdXJjZWAgYWNjb3VudC5YcmVtb3ZlX3NjaGVkdWxlZF9ldmVudAQBIGV2ZW50X2lkCAEcRXZlbnRJZAABCBEBUmVtb3ZlIGEgcHJldmlvdXNseSBzY2hlZHVsZWQgZXZlbnQuIFRoZSBldmVudCBtdXN0IG5vdCBoYXZlIGFscmVhZHmcc3RhcnRlZCwgb3RoZXJ3aXNlIHRoaXMgY2FsbCB3aWxsIGZhaWwuMGVuYWJsZV9hc3NldAgBIGFzc2V0X2lkcQEBMEFzc2V0SWRPZjxUPgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAAKEE0BRW5hYmxlIGFuIGFzc2V0IGZvciB1c2UgaW4gYWlyZHJvcCBldmVudHMuIFRoZSBvcmlnaW4gbXVzdCBiZSBgTWFuYWdlck9yaWdpbmAgb25seS4AWQFUcmFuc2ZlcnMgdGhlIGFzc2V0J3MgY3VycmVudCBtaW5pbXVtIGJhbGFuY2UgZnJvbSBgc291cmNlYCB0byB0aGUgcGFsbGV0J3MgcG90IHNvIHRoZSUBcG90J3MgYXNzZXQgYWNjb3VudCBzdGF5cyBhbGl2ZSB3aGlsZSBldmVudHMgaG9sZCBwcml6ZSBmdW5kcyBhZ2FpbnN0IGl0LjRkaXNhYmxlX2Fzc2V0CAEgYXNzZXRfaWRxAQEwQXNzZXRJZE9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQACxRZAURpc2FibGUgYW4gYXNzZXQgcHJldmlvdXNseSBlbmFibGVkIHdpdGggYGVuYWJsZV9hc3NldGAuIFJlZnVuZHMgdGhlIG9yaWdpbmFsbHktZnVuZGVkOQFhbW91bnQgZnJvbSB0aGUgcG90IHRvIGBiZW5lZmljaWFyeWAuIFRoZSBvcmlnaW4gbXVzdCBiZSBgTWFuYWdlck9yaWdpbmAgb25seS4ATQFUaGUgbWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgbm8gZXZlbnRzIHN0aWxsIHJlZmVyZW5jZSB0aGlzIGFzc2V0IGJlZm9yZRkBZGlzYWJsaW5nLCBidXQgdGhpcyBpcyBzYWZlIHNpbmNlIHNjaGVkdWxpbmcgYW4gZXZlbnQgaXMgcGVybWlzc2lvbmVkLnRzdGFydF9yZWdpc3RyYXRpb25fYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIAAhzcT0NXLWRyaXZlbjogdHJhbnNpdGlvbiBgU2NoZWR1bGVkIOKGkiBSZWdpc3RlcmluZ2Agd2hlboRgcmVnaXN0cmF0aW9uX3N0YXJ0c2AgaXMgcmVhY2hlZC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wudGNsb3NlX3JlZ2lzdHJhdGlvbl9hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgADNGxPQ1ctZHJpdmVuOiBhdCBgZHJhd190aW1lYDpQLSBjbG9zZSByZWdpc3RyYXRpb26ELSBjb21wdXRlIHRoZSB0YXJnZXQgd2lubmVyIGNvdW50zC0gcmVsZWFzZSB0aGUgdW51c2VkLXNsb3QgcHJpemUgYWxsb2NhdGlvbiB1cC1mcm9udPgtIHJlY29yZCB0aGUgcmFuZG9tbmVzcyBzb3VyY2UncyBjdXJyZW50IG1vbWVudCBhcyBhIHdhdGVybWFya7gtIHRyYW5zaXRpb24gYFJlZ2lzdGVyaW5nIOKGkiBBd2FpdGluZ0VudHJvcHlgAB0BVGhlIGVudHJvcHkgY2FwdHVyZSBhbmQgdGhlIHdpbm5lciBkcmF3cyBhcmUgcGVyZm9ybWVkIGluIGxhdGVyIHN0YWdlcy4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuaGNhcHR1cmVfZW50cm9weV9hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAMLFkBT0NXLWRyaXZlbjogc2VlZCB0aGUgZHJhdyB3aXRoIGZyZXNoIHJhbmRvbW5lc3MgcHJvZHVjZWQgYWZ0ZXIgcmVnaXN0cmF0aW9uIGNsb3NlZCBhbmS0dHJhbnNpdGlvbiBgQXdhaXRpbmdFbnRyb3B5IOKGkiBEcmF3V2lubmVyc2AuAC0BVGhlIGBhdXRob3JpemVgIGdhdGUgb25seSBsZXRzIHRoaXMgY2FsbCB0aHJvdWdoIG9uY2UgdGhlIHJhbmRvbW5lc3Mgc291cmNlKQFyZXBvcnRzIGEgdmFsdWUgd2l0aCBhIG1vbWVudCBzdHJpY3RseSBncmVhdGVyIHRoYW4gdGhlIHdhdGVybWFyayByZWNvcmRlZAEBd2hlbiByZWdpc3RyYXRpb24gY2xvc2VkOyB1bnRpbCB0aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZV0BYWZ0ZXIgYSByZS1vcmcsIG9yIGludmFsaWRhdGVkIGJlY2F1c2UgdGhlIHJhbmRvbW5lc3MgaXMgbm90IGZyZXNoIHlldC4gQXMgdGhlIGFjY2VwdGVkFQF0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG8gc3BhbSB0aGUgcG9vbC5cZHJhd193aW5uZXJzX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAQk0E9DVy1kcml2ZW46IGRyYXcgdXAgdG8gYERyYXdMaW1pdGAgd2lubmVycyBwZXIgY2FsbC4ARQFBZnRlciBhbGwgdGhlIHdpbm5lcnMgYXJlIGRyYXduLCB0aGUgdHJhbnNpdGlvbiB0byBgQ2xhaW1pbmdgIGlzIHBlcmZvcm1lZCBieSB0aGWQc2VwYXJhdGUgYGNsb3NlX2RyYXdpbmdfYXV0aG9yaXplZGAuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmBjbG9zZV9kcmF3aW5nX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAUcUQFPQ1ctZHJpdmVuOiBvbmNlIGBkcmF3X3dpbm5lcnNfYXV0aG9yaXplZGAgaGFzIGZpbGxlZCB0aGUgd2lubmVyIHNldCwgdHJhbnNpdGlvbiB0aGWcZXZlbnQgZnJvbSBgRHJhd1dpbm5lcnNgIHRvIGBDbGFpbWluZ2AuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmRjbG9zZV9jbGFpbWluZ19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAGGDEBT0NXLWRyaXZlbjogYXQgYGVuZF90aW1lYCBjbG9zZSBjbGFpbWluZyBhbmQgZW50ZXIgdGhlIGZpcnN0IGNsZWFuLXVwIHBoYXNlLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC6EY2xlYW5fdXBfcmVnaXN0cmF0aW9uc19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAHHDkBT0NXLWRyaXZlbjogRmlyc3Qgc3RlcCBvZiBjbGVhbi11cCBpcyB0byBjbGVhciB1cCB0byBgQ2xlYXJMaW1pdGAgZW50cmllcyBmcm9tVQFgUmVnaXN0cmF0aW9uc2AuIFdoZW4gdGhlIHN0b3JhZ2UgaXMgZnVsbHkgZHJhaW5lZCwgdHJhbnNpdGlvbnMgdG8gYENsZWFyaW5nV2lubmVyc2AuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmxjbGVhbl91cF93aW5uZXJzX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAgcPQFPQ1ctZHJpdmVuOiBTZWNvbmQgc3RlcCBvZiBjbGVhbi11cCBpcyB0byBjbGVhciB1cCB0byBgQ2xlYXJMaW1pdGAgZW50cmllcyBmcm9tKQFgV2lubmVyc2AuIFdoZW4gdGhlIHN0b3JhZ2UgaXMgZnVsbHkgZHJhaW5lZCwgdHJhbnNpdGlvbnMgdG8gYEZpbmFsaXppbmdgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5MZmluYWxpemVfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIACRxNAU9DVy1kcml2ZW46IFRoaXJkIHN0ZXAgb2YgY2xlYW4tdXAgaXMgdG8gcmVsZWFzZSB0aGUgdW5jbGFpbWVkIHByaXplIGFsbG9jYXRpb24gYW5kRHJlbW92ZSB0aGUgZXZlbnQuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7hBQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMkRXZlbnRJbmZvCBxBc3NldElkAXEBMEFzc2V0QmFsYW5jZQFFAQAUATBwcm9kdWN0X25hbWU9BQEsUHJvZHVjdE5hbWUAARRwcml6ZdUEAYxBaXJkcm9wUHJpemU8QXNzZXRJZCwgQXNzZXRCYWxhbmNlPgABTHJlZ2lzdHJhdGlvbl9zdGFydHMoAQx1NjQAASRkcmF3X3RpbWUoAQx1NjQAASBlbmRfdGltZSgBDHU2NAAA5QUMTGluZGl2X3BhbGxldF9ob25vdXIYcGFsbGV0EENhbGwEBFQAAQQYYmVzdG93CAEQdm90ZekFASBWb3RlRGF0YQABPGNhbGxfdmFsaWRfZnJvbSgBHFNlY29uZHMAABA4QmVzdG93IGEgdm90ZS4AVQFBY2NlcHRzIG9ubHkgdGhlIFtgT3JpZ2luOjpWb3RlcmBdIG9yaWdpbiwgd2hpY2ggaXMgY3JlYXRlZCBieSB2ZXJpZnlpbmcgYSByaW5nIHByb29mBQFpbiB0aGUgW2BWb3RlckF1dGhgXShleHRlbnNpb246OlZvdGVyQXV0aCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pBQxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyBWb3RlRGF0YQAADAEcc3ViamVjdAgBJFN1YmplY3RJZAABFHBvaW50DAEcUG9pbnRJZAABJGRpcmVjdGlvbu0FASREaXJlY3Rpb24AAO0FDExpbmRpdl9wYWxsZXRfaG9ub3VyFHR5cGVzJERpcmVjdGlvbgABCChIb25vdXJhYmxlAAAANERpc2hvbm91cmFibGUAAQAA8QUMcGluZGl2X3BhbGxldF9wZW9wbGVfYWlyZHJvcHMYcGFsbGV0EENhbGwEBFQAARg4c2NoZWR1bGVfZHJhd3MEARRkcmF3c/UFAdhCb3VuZGVkVmVjPEFpcmRyb3BFdmVudEluZm9PZjxUPiwgVDo6TWF4U2NoZWR1bGVCYXRjaD4AABxJAVNjaGVkdWxlIGEgYmF0Y2ggb2YgZHJhd3MsIGluIG9yZGVyLCBhc3NpZ25pbmcgZWFjaCB0aGUgbmV4dCBkcmF3IGluZGV4LiBUaGUgcHJpemVVAWFsbG9jYXRpb24gb2YgZXZlcnkgZHJhdyBpcyB0cmFuc2ZlcnJlZCBmcm9tIFtgQ29uZmlnOjpQcml6ZVNvdXJjZWBdIGludG8gdGhlIGFpcmRyb3AQcG90LgAxAVRoZSBgcHJvZHVjdF9uYW1lYCBvZiBldmVyeSBlbnRyeSBpcyByZXBsYWNlZCB3aXRoIFtgUGFsbGV0Ojpwcm9kdWN0X25hbWVgXS4AVQFJZiBhbnkgZXZlbnQgZmFpbHMgdG8gYmUgc2NoZWR1bGVkLCB0aGUgd2hvbGUgY2FsbCBmYWlscyBhbmQgbm8gZXZlbnRzIGFyZSBzY2hlZHVsZWQuVHJlbW92ZV9zY2hlZHVsZWRfZHJhdwQBIGV2ZW50X2lkCAEcRXZlbnRJZAABDEkBUmVtb3ZlIGEgc2NoZWR1bGVkIGRyYXcgdGhhdCBoYXMgbm90IG9wZW5lZCB5ZXQsIHJlZnVuZGluZyBpdHMgcHJpemUgYWxsb2NhdGlvbiB0b1EBW2BDb25maWc6OlByaXplU291cmNlYF0uIEJlc3QtZWZmb3J0OiBhIG5vLW9wIGZvciBhbiB1bmtub3duIG9yIGFscmVhZHktb3BlbmVkIGRyYXcuOQFUaGUgZHJhdydzIHNhbHQgaXMga2VwdCwgc2luY2UgdGhlIGRyYXcgbWF5IHN0aWxsIGJlIGxpdmUgKHNlZSBbYERyYXdTYWx0c2BdKS4sY2FuY2VsX2RyYXcEASBldmVudF9pZAgBHEV2ZW50SWQAAgw5AUNhbmNlbCBhIGRyYXcgaW4gYW55IHN0YXRlOiBwYXJ0aWNpcGF0aW9uIGFuZCBjbGFpbXMgY2xvc2UgaW1tZWRpYXRlbHkgYW5kIHRoZUUBc3RpbGwtaGVsZCBwcml6ZSBhbGxvY2F0aW9uIGlzIHJlZnVuZGVkIHRvIFtgQ29uZmlnOjpQcml6ZVNvdXJjZWBdIGJ5IHRoZSBhaXJkcm9wKQFjbGVhbi11cC4gQmVzdC1lZmZvcnQ6IGEgbm8tb3AgZm9yIGFuIHVua25vd24gb3IgYWxyZWFkeS10ZXJtaW5hdGluZyBkcmF3LiByZWdpc3RlcgQBJGV2ZW50X2lkc/0FAaBCb3VuZGVkVmVjPEV2ZW50SWQsIFQ6Ok1heFJlZ2lzdGVyQmF0Y2g+AAMUWQFSZWdpc3RlciB0aGUgY2FsbGluZyBwZXJzb24gZm9yIGV2ZXJ5IGRyYXcgaW4gYGV2ZW50X2lkc2AuIEFsbCBvciBub3RoaW5nOiBhbnkgZmFpbHVyZSkBKHVua25vd24gZHJhdywgZHJhdyBub3Qgb3BlbiwgYWxyZWFkeSByZWdpc3RlcmVkKSByZXZlcnRzIHRoZSB3aG9sZSBiYXRjaC4APQFGcmVlIG9uIHN1Y2Nlc3MuIFN1Y2Nlc3MgaXMgYm91bmRlZCB0byBvbmUgcmVnaXN0cmF0aW9uIHBlciBwZXJzb24gYW5kIGRyYXcsIHNvcHJlcGVhdGVkIGNhbGxzIGZhaWwgYW5kIHBheS4UY2xhaW0IASBldmVudF9pZAgBHEV2ZW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAEGCUBQ2xhaW0gdGhlIGNhbGxpbmcgcGVyc29uJ3MgcHJpemUgaW4gdGhlIGRyYXcgYGV2ZW50X2lkYCwgcGF5aW5nIGl0IG91dCB0b00BYGRlc3RpbmF0aW9uYC4gT25seSBkcmF3biB3aW5uZXJzIGhvbGQgYSBjbGFpbWFibGUgcHJpemUsIGFuZCBvbmx5IHVudGlsIHRoZSBkcmF3J3NQY2xhaW0gd2luZG93IGNsb3Nlcy4AAQFTdWNjZXNzIGlzIGJvdW5kZWQgdG8gb25lIGNsYWltIHBlciBwZXJzb24gYW5kIGRyYXcsIHNvIHJlcGVhdGVkTGNhbGxzIGZhaWwgYW5kIHBheS5IY2xlYW5fdXBfZHJhd19zYWx0BAEgZXZlbnRfaWQIARxFdmVudElkAAUYYQFPQ1ctZHJpdmVuOiByZW1vdmUgYSBkcmF3J3MgW2BEcmF3U2FsdHNgXSBlbnRyeSBvbmNlIHRoZSBkcmF3J3MgZW5kIHRpbWUgaGFzIHBhc3NlZC4gVGhlUQFzYWx0IGlzIG9ubHkgcmVhZCBkdXJpbmcgcmVnaXN0cmF0aW9uLCB3aGljaCBjbG9zZXMgc3RyaWN0bHkgYmVmb3JlIHRoZSBlbmQgdGltZSwgc29odGhlIGVudHJ5IGlzIGRlYWQgYnkgdGhlbi4ARQFUaGUgdHJhbnNhY3Rpb24gaXMgb25seSBhY2NlcHRlZCBmcm9tIGEgbG9jYWwgb3IgaW4tYmxvY2sgc291cmNlLCBzbyBpdCBjYW5ub3QgYmVUc3VibWl0dGVkIGV4dGVybmFsbHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB4QUEUwAABAD5BQEYVmVjPFQ+AAD5BQAAAuEFAP0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AAAEGDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yBQYBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvchUGAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdOQBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3IZBgGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuBQYEGE9wdGlvbgQEVAEJBgEIEE5vbmUAAAAQU29tZQQACQYAAAEAAAkGCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgENBixCbG9ja051bWJlcgE4AQgYQWN0aXZlBAARBgGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAA0GDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQYIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yAQ0GLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3IVBgE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAABUGBBhPcHRpb24EBFQBDQYBCBBOb25lAAAAEFNvbWUEAA0GAAABAAAZBghEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAR0GAQggU3BlY2lmaWMEACEGARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTkASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvciUGATxPcHRpb248VmVjPHU4Pj4AAQAAHQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAhBgAAAh0GACUGBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAAKQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zOGF1dGhvcml6ZV9jYWxsNEF1dGhvcml6ZUNhbGwEBFQAAAAALQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAAMQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAADUGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAADkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAAA9BhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEAEEGAQxFcmEAAEEGEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQADAAAAQAcTW9ydGFsMgQADAAAAgAcTW9ydGFsMwQADAAAAwAcTW9ydGFsNAQADAAABAAcTW9ydGFsNQQADAAABQAcTW9ydGFsNgQADAAABgAcTW9ydGFsNwQADAAABwAcTW9ydGFsOAQADAAACAAcTW9ydGFsOQQADAAACQAgTW9ydGFsMTAEAAwAAAoAIE1vcnRhbDExBAAMAAALACBNb3J0YWwxMgQADAAADAAgTW9ydGFsMTMEAAwAAA0AIE1vcnRhbDE0BAAMAAAOACBNb3J0YWwxNQQADAAADwAgTW9ydGFsMTYEAAwAABAAIE1vcnRhbDE3BAAMAAARACBNb3J0YWwxOAQADAAAEgAgTW9ydGFsMTkEAAwAABMAIE1vcnRhbDIwBAAMAAAUACBNb3J0YWwyMQQADAAAFQAgTW9ydGFsMjIEAAwAABYAIE1vcnRhbDIzBAAMAAAXACBNb3J0YWwyNAQADAAAGAAgTW9ydGFsMjUEAAwAABkAIE1vcnRhbDI2BAAMAAAaACBNb3J0YWwyNwQADAAAGwAgTW9ydGFsMjgEAAwAABwAIE1vcnRhbDI5BAAMAAAdACBNb3J0YWwzMAQADAAAHgAgTW9ydGFsMzEEAAwAAB8AIE1vcnRhbDMyBAAMAAAgACBNb3J0YWwzMwQADAAAIQAgTW9ydGFsMzQEAAwAACIAIE1vcnRhbDM1BAAMAAAjACBNb3J0YWwzNgQADAAAJAAgTW9ydGFsMzcEAAwAACUAIE1vcnRhbDM4BAAMAAAmACBNb3J0YWwzOQQADAAAJwAgTW9ydGFsNDAEAAwAACgAIE1vcnRhbDQxBAAMAAApACBNb3J0YWw0MgQADAAAKgAgTW9ydGFsNDMEAAwAACsAIE1vcnRhbDQ0BAAMAAAsACBNb3J0YWw0NQQADAAALQAgTW9ydGFsNDYEAAwAAC4AIE1vcnRhbDQ3BAAMAAAvACBNb3J0YWw0OAQADAAAMAAgTW9ydGFsNDkEAAwAADEAIE1vcnRhbDUwBAAMAAAyACBNb3J0YWw1MQQADAAAMwAgTW9ydGFsNTIEAAwAADQAIE1vcnRhbDUzBAAMAAA1ACBNb3J0YWw1NAQADAAANgAgTW9ydGFsNTUEAAwAADcAIE1vcnRhbDU2BAAMAAA4ACBNb3J0YWw1NwQADAAAOQAgTW9ydGFsNTgEAAwAADoAIE1vcnRhbDU5BAAMAAA7ACBNb3J0YWw2MAQADAAAPAAgTW9ydGFsNjEEAAwAAD0AIE1vcnRhbDYyBAAMAAA+ACBNb3J0YWw2MwQADAAAPwAgTW9ydGFsNjQEAAwAAEAAIE1vcnRhbDY1BAAMAABBACBNb3J0YWw2NgQADAAAQgAgTW9ydGFsNjcEAAwAAEMAIE1vcnRhbDY4BAAMAABEACBNb3J0YWw2OQQADAAARQAgTW9ydGFsNzAEAAwAAEYAIE1vcnRhbDcxBAAMAABHACBNb3J0YWw3MgQADAAASAAgTW9ydGFsNzMEAAwAAEkAIE1vcnRhbDc0BAAMAABKACBNb3J0YWw3NQQADAAASwAgTW9ydGFsNzYEAAwAAEwAIE1vcnRhbDc3BAAMAABNACBNb3J0YWw3OAQADAAATgAgTW9ydGFsNzkEAAwAAE8AIE1vcnRhbDgwBAAMAABQACBNb3J0YWw4MQQADAAAUQAgTW9ydGFsODIEAAwAAFIAIE1vcnRhbDgzBAAMAABTACBNb3J0YWw4NAQADAAAVAAgTW9ydGFsODUEAAwAAFUAIE1vcnRhbDg2BAAMAABWACBNb3J0YWw4NwQADAAAVwAgTW9ydGFsODgEAAwAAFgAIE1vcnRhbDg5BAAMAABZACBNb3J0YWw5MAQADAAAWgAgTW9ydGFsOTEEAAwAAFsAIE1vcnRhbDkyBAAMAABcACBNb3J0YWw5MwQADAAAXQAgTW9ydGFsOTQEAAwAAF4AIE1vcnRhbDk1BAAMAABfACBNb3J0YWw5NgQADAAAYAAgTW9ydGFsOTcEAAwAAGEAIE1vcnRhbDk4BAAMAABiACBNb3J0YWw5OQQADAAAYwAkTW9ydGFsMTAwBAAMAABkACRNb3J0YWwxMDEEAAwAAGUAJE1vcnRhbDEwMgQADAAAZgAkTW9ydGFsMTAzBAAMAABnACRNb3J0YWwxMDQEAAwAAGgAJE1vcnRhbDEwNQQADAAAaQAkTW9ydGFsMTA2BAAMAABqACRNb3J0YWwxMDcEAAwAAGsAJE1vcnRhbDEwOAQADAAAbAAkTW9ydGFsMTA5BAAMAABtACRNb3J0YWwxMTAEAAwAAG4AJE1vcnRhbDExMQQADAAAbwAkTW9ydGFsMTEyBAAMAABwACRNb3J0YWwxMTMEAAwAAHEAJE1vcnRhbDExNAQADAAAcgAkTW9ydGFsMTE1BAAMAABzACRNb3J0YWwxMTYEAAwAAHQAJE1vcnRhbDExNwQADAAAdQAkTW9ydGFsMTE4BAAMAAB2ACRNb3J0YWwxMTkEAAwAAHcAJE1vcnRhbDEyMAQADAAAeAAkTW9ydGFsMTIxBAAMAAB5ACRNb3J0YWwxMjIEAAwAAHoAJE1vcnRhbDEyMwQADAAAewAkTW9ydGFsMTI0BAAMAAB8ACRNb3J0YWwxMjUEAAwAAH0AJE1vcnRhbDEyNgQADAAAfgAkTW9ydGFsMTI3BAAMAAB/ACRNb3J0YWwxMjgEAAwAAIAAJE1vcnRhbDEyOQQADAAAgQAkTW9ydGFsMTMwBAAMAACCACRNb3J0YWwxMzEEAAwAAIMAJE1vcnRhbDEzMgQADAAAhAAkTW9ydGFsMTMzBAAMAACFACRNb3J0YWwxMzQEAAwAAIYAJE1vcnRhbDEzNQQADAAAhwAkTW9ydGFsMTM2BAAMAACIACRNb3J0YWwxMzcEAAwAAIkAJE1vcnRhbDEzOAQADAAAigAkTW9ydGFsMTM5BAAMAACLACRNb3J0YWwxNDAEAAwAAIwAJE1vcnRhbDE0MQQADAAAjQAkTW9ydGFsMTQyBAAMAACOACRNb3J0YWwxNDMEAAwAAI8AJE1vcnRhbDE0NAQADAAAkAAkTW9ydGFsMTQ1BAAMAACRACRNb3J0YWwxNDYEAAwAAJIAJE1vcnRhbDE0NwQADAAAkwAkTW9ydGFsMTQ4BAAMAACUACRNb3J0YWwxNDkEAAwAAJUAJE1vcnRhbDE1MAQADAAAlgAkTW9ydGFsMTUxBAAMAACXACRNb3J0YWwxNTIEAAwAAJgAJE1vcnRhbDE1MwQADAAAmQAkTW9ydGFsMTU0BAAMAACaACRNb3J0YWwxNTUEAAwAAJsAJE1vcnRhbDE1NgQADAAAnAAkTW9ydGFsMTU3BAAMAACdACRNb3J0YWwxNTgEAAwAAJ4AJE1vcnRhbDE1OQQADAAAnwAkTW9ydGFsMTYwBAAMAACgACRNb3J0YWwxNjEEAAwAAKEAJE1vcnRhbDE2MgQADAAAogAkTW9ydGFsMTYzBAAMAACjACRNb3J0YWwxNjQEAAwAAKQAJE1vcnRhbDE2NQQADAAApQAkTW9ydGFsMTY2BAAMAACmACRNb3J0YWwxNjcEAAwAAKcAJE1vcnRhbDE2OAQADAAAqAAkTW9ydGFsMTY5BAAMAACpACRNb3J0YWwxNzAEAAwAAKoAJE1vcnRhbDE3MQQADAAAqwAkTW9ydGFsMTcyBAAMAACsACRNb3J0YWwxNzMEAAwAAK0AJE1vcnRhbDE3NAQADAAArgAkTW9ydGFsMTc1BAAMAACvACRNb3J0YWwxNzYEAAwAALAAJE1vcnRhbDE3NwQADAAAsQAkTW9ydGFsMTc4BAAMAACyACRNb3J0YWwxNzkEAAwAALMAJE1vcnRhbDE4MAQADAAAtAAkTW9ydGFsMTgxBAAMAAC1ACRNb3J0YWwxODIEAAwAALYAJE1vcnRhbDE4MwQADAAAtwAkTW9ydGFsMTg0BAAMAAC4ACRNb3J0YWwxODUEAAwAALkAJE1vcnRhbDE4NgQADAAAugAkTW9ydGFsMTg3BAAMAAC7ACRNb3J0YWwxODgEAAwAALwAJE1vcnRhbDE4OQQADAAAvQAkTW9ydGFsMTkwBAAMAAC+ACRNb3J0YWwxOTEEAAwAAL8AJE1vcnRhbDE5MgQADAAAwAAkTW9ydGFsMTkzBAAMAADBACRNb3J0YWwxOTQEAAwAAMIAJE1vcnRhbDE5NQQADAAAwwAkTW9ydGFsMTk2BAAMAADEACRNb3J0YWwxOTcEAAwAAMUAJE1vcnRhbDE5OAQADAAAxgAkTW9ydGFsMTk5BAAMAADHACRNb3J0YWwyMDAEAAwAAMgAJE1vcnRhbDIwMQQADAAAyQAkTW9ydGFsMjAyBAAMAADKACRNb3J0YWwyMDMEAAwAAMsAJE1vcnRhbDIwNAQADAAAzAAkTW9ydGFsMjA1BAAMAADNACRNb3J0YWwyMDYEAAwAAM4AJE1vcnRhbDIwNwQADAAAzwAkTW9ydGFsMjA4BAAMAADQACRNb3J0YWwyMDkEAAwAANEAJE1vcnRhbDIxMAQADAAA0gAkTW9ydGFsMjExBAAMAADTACRNb3J0YWwyMTIEAAwAANQAJE1vcnRhbDIxMwQADAAA1QAkTW9ydGFsMjE0BAAMAADWACRNb3J0YWwyMTUEAAwAANcAJE1vcnRhbDIxNgQADAAA2AAkTW9ydGFsMjE3BAAMAADZACRNb3J0YWwyMTgEAAwAANoAJE1vcnRhbDIxOQQADAAA2wAkTW9ydGFsMjIwBAAMAADcACRNb3J0YWwyMjEEAAwAAN0AJE1vcnRhbDIyMgQADAAA3gAkTW9ydGFsMjIzBAAMAADfACRNb3J0YWwyMjQEAAwAAOAAJE1vcnRhbDIyNQQADAAA4QAkTW9ydGFsMjI2BAAMAADiACRNb3J0YWwyMjcEAAwAAOMAJE1vcnRhbDIyOAQADAAA5AAkTW9ydGFsMjI5BAAMAADlACRNb3J0YWwyMzAEAAwAAOYAJE1vcnRhbDIzMQQADAAA5wAkTW9ydGFsMjMyBAAMAADoACRNb3J0YWwyMzMEAAwAAOkAJE1vcnRhbDIzNAQADAAA6gAkTW9ydGFsMjM1BAAMAADrACRNb3J0YWwyMzYEAAwAAOwAJE1vcnRhbDIzNwQADAAA7QAkTW9ydGFsMjM4BAAMAADuACRNb3J0YWwyMzkEAAwAAO8AJE1vcnRhbDI0MAQADAAA8AAkTW9ydGFsMjQxBAAMAADxACRNb3J0YWwyNDIEAAwAAPIAJE1vcnRhbDI0MwQADAAA8wAkTW9ydGFsMjQ0BAAMAAD0ACRNb3J0YWwyNDUEAAwAAPUAJE1vcnRhbDI0NgQADAAA9gAkTW9ydGFsMjQ3BAAMAAD3ACRNb3J0YWwyNDgEAAwAAPgAJE1vcnRhbDI0OQQADAAA+QAkTW9ydGFsMjUwBAAMAAD6ACRNb3J0YWwyNTEEAAwAAPsAJE1vcnRhbDI1MgQADAAA/AAkTW9ydGFsMjUzBAAMAAD9ACRNb3J0YWwyNTQEAAwAAP4AJE1vcnRhbDI1NQQADAAA/wAARQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAYAEgVDo6Tm9uY2UAAEkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczBjaGVja193ZWlnaHQsQ2hlY2tXZWlnaHQEBFQAAAAATQYIXHBhbGxldF9hc3NldF90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXBVAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRFAwFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAFEGCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZVUGARBNb2RlAABVBgh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAFkGDFxwYWxsZXRfdmVyaWZ5X3NpZ25hdHVyZSRleHRlbnNpb248VmVyaWZ5U2lnbmF0dXJlBARUAAEIIERpc2FibGVkAAAAGFNpZ25lZAgBJHNpZ25hdHVyZXkEATBUOjpTaWduYXR1cmUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEAAF0GDExpbmRpdl9wYWxsZXRfcGVvcGxlJGV4dGVuc2lvbiBBc1BlcnNvbgQEVAAABABhBgFcT3B0aW9uPEFzUGVyc29uSW5mbzxUPj4AAGEGBBhPcHRpb24EBFQBZQYBCBBOb25lAAAAEFNvbWUEAGUGAAABAABlBgxMaW5kaXZfcGFsbGV0X3Blb3BsZSRleHRlbnNpb24wQXNQZXJzb25JbmZvBARUAAEUaEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50BAA4ASBUOjpOb25jZQAAAGBBc1BlcnNvbmFsQWxpYXNXaXRoUHJvb2YQAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAgBHENvbnRleHQAAQBsQXNQZXJzb25hbElkZW50aXR5V2l0aFByb29mCABxBAE4U2lnbmF0dXJlT2Y8VD4AACgBKFBlcnNvbmFsSWQAAgB0QXNQZXJzb25hbElkZW50aXR5V2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAMAhEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBQAOAEgVDo6Tm9uY2UAAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAgBHENvbnRleHQABAAAaQYMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmskZXh0ZW5zaW9uXEFzUHJvb2ZPZklua1BhcnRpY2lwYW50BARUAAAEAG0GAZhPcHRpb248QXNQcm9vZk9mSW5rUGFydGljaXBhbnRJbmZvPFQ+PgAAbQYEGE9wdGlvbgQEVAFxBgEIEE5vbmUAAAAQU29tZQQAcQYAAAEAAHEGDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rJGV4dGVuc2lvbmxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudEluZm8EBFQAAQw4QXNBcHBseVdpdGhTaWcEADgBIFQ6Ok5vbmNlAAAAKEFzUmVmZXJyZWQEADgBIFQ6Ok5vbmNlAAEAJEFzSW52aXRlZAQAOAEgVDo6Tm9uY2UAAgAAdQYMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25IU2NvcmVBc1BhcnRpY2lwYW50BARUAAAEAHkGAaBPcHRpb248U2NvcmVBc1BhcnRpY2lwYW50RGF0YTxUOjpOb25jZT4+AAB5BgQYT3B0aW9uBARUAX0GAQgQTm9uZQAAABBTb21lBAB9BgAAAQAAfQYMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25YU2NvcmVBc1BhcnRpY2lwYW50RGF0YQQUTm9uY2UBOAAEARRub25jZTgBFE5vbmNlAACBBgxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uNEdhbWVBc0ludml0ZWQEBFQAAAQAhQYBcE9wdGlvbjxHYW1lQXNJbnZpdGVkRGF0YTxUPj4AAIUGBBhPcHRpb24EBFQBiQYBCBBOb25lAAAAEFNvbWUEAIkGAAABAACJBgxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uREdhbWVBc0ludml0ZWREYXRhBARUAAAQARRub25jZTgBIFQ6Ok5vbmNlAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJleQQBSFQ6OlRpY2tldFNpZ25hdHVyZQAAjQYMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZSRleHRlbnNpb244UGVvcGxlTGl0ZUF1dGgEBFQAAAQAkQYBfE9wdGlvbjxQZW9wbGVMaXRlQXV0aERhdGFPZjxUPj4AAJEGBBhPcHRpb24EBFQBlQYBCBBOb25lAAAAEFNvbWUEAJUGAAABAACVBgxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlJGV4dGVuc2lvbkhQZW9wbGVMaXRlQXV0aERhdGEIFE5vbmNlATgUUHJvb2YBHQQBEDBBc0xpdGVQZXJzb24EADgBFE5vbmNlAAAAWEFzTGl0ZUFsaWFzV2l0aEFjY291bnQEADgBFE5vbmNlAAEAUEFzTGl0ZUFsaWFzV2l0aFByb29mEAAdBAEUUHJvb2YAADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAACAEcQ29udGV4dAACAHRBc0xpdGVBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBQAOAEUTm9uY2UAAB0EARRQcm9vZgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAAIARxDb250ZXh0AAMAAJkGDFBpbmRpdl9wYWxsZXRfbWVtYmVycyRleHRlbnNpb24gQXNNZW1iZXIEBFQAAAQAnQYBXE9wdGlvbjxBc01lbWJlckluZm88VD4+AACdBgQYT3B0aW9uBARUAaEGAQgQTm9uZQAAABBTb21lBAChBgAAAQAAoQYMUGluZGl2X3BhbGxldF9tZW1iZXJzJGV4dGVuc2lvbjBBc01lbWJlckluZm8EBFQAAQQsU2VsZkluY2x1ZGUEAHEEAThTaWduYXR1cmVPZjxUPgAAAAClBgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UkZXh0ZW5zaW9uJEFzQ29pbmFnZQQEVAAABACpBgFgT3B0aW9uPEFzQ29pbmFnZUluZm88VD4+AACpBgQYT3B0aW9uBARUAa0GAQgQTm9uZQAAABBTb21lBACtBgAAAQAArQYMUGluZGl2X3BhbGxldF9jb2luYWdlJGV4dGVuc2lvbjRBc0NvaW5hZ2VJbmZvBARUAAEYGEFzQ29pbgAAAExBc1VubG9hZFRva2VuUGVvcGxlEAEUcHJvb2axBgGwPFQ6Ok1lbWJlcnNoaXBQcm9vZiBhcyBWYWxpZGF0ZVByb29mPjo6UHJvb2YAARhwZXJpb2Q4ARhQZXJpb2QAARxjb3VudGVyOAEMdTMyAAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQBcQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGUQARRwcm9vZrEGAbA8VDo6TWVtYmVyc2hpcFByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgACAERBc1VubG9hZFRva2VuUGFpZBQBFHByb29mHQQBKFByb29mT2Y8VD4AARhwZXJpb2Q4ARhQZXJpb2QAAVRwYWlkX3Rva2VuX3JpbmdfaW5kZXg4AQx1MzIAAWBwYWlkX3Rva2VuX3JpbmdfcmV2aXNpb244AQx1MzIAATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgADAFxBc1VubG9hZFRva2VuRnJvbU91dHB1dBQBSGZlZV9yZWN5Y2xlcl92YWx1ZRUEATBEZW5vbWluYXRpb24AAUhmZWVfcmVjeWNsZXJfaW5kZXg4ASRSaW5nSW5kZXgAAVRmZWVfcmVjeWNsZXJfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAE0cmV0cnlfY291bnRlcgwBCHU4AAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4ABABYSW5mYWxsaWJsZVVucGFpZFNpZ25lZAQBFG5vbmNlOAEgVDo6Tm9uY2UABQAAsQYMTGluZGl2X3BhbGxldF9wZW9wbGUUdHlwZXM8TWVtYmVyc2hpcFByb29mBARUAAAMARRwcm9vZh0EAShQcm9vZk9mPFQ+AAEQcmluZzgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAAAtQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uLEFzUmVzb3VyY2VzBARUAAAEALkGAWhPcHRpb248QXNSZXNvdXJjZXNJbmZvPFQ+PgAAuQYEGE9wdGlvbgQEVAG9BgEIEE5vbmUAAAAQU29tZQQAvQYAAAEAAL0GDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzJGV4dGVuc2lvbjxBc1Jlc291cmNlc0luZm8EBFQAARB0UmVnaXN0ZXJOb3RpZmljYXRpb25XaXRoUHJvb2YMAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAACEUmVnaXN0ZXJOb3RpZmljYXRpb25Gb3JDb2xsZWN0aW9uEAAdBAEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAABBAFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAQB8UmVnaXN0ZXJTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZRAAHQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAAQQBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAIAUENsYWltTG9uZ1Rlcm1TdG9yYWdlEAAdBAEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAABBAFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAwAAwQYMTGluZGl2X3BhbGxldF9ob25vdXIkZXh0ZW5zaW9uJFZvdGVyQXV0aAQEVAAABADFBgFgT3B0aW9uPFZvdGVyQXV0aERhdGE8VD4+AADFBgQYT3B0aW9uBARUAckGAQgQTm9uZQAAABBTb21lBADJBgAAAQAAyQYMTGluZGl2X3BhbGxldF9ob25vdXIkZXh0ZW5zaW9uNFZvdGVyQXV0aERhdGEEBFQAAAwBFHByb29mHQQBOFJpbmdQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAAAzQYIfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb244UmVzdHJpY3RPcmlnaW4EBFQAAAQAWQEBEGJvb2wAANEGCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEB1QYAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YdUGASxBY2NvdW50RGF0YQAA1QYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQFFAQAQARBmcmVlRQEBHEJhbGFuY2UAASByZXNlcnZlZEUBARxCYWxhbmNlAAEYZnJvemVuRQEBHEJhbGFuY2UAARRmbGFnc9kGAShFeHRyYUZsYWdzAADZBgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQARQEBEHUxMjgAAN0GDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBeQIADAEYbm9ybWFseQIBBFQAASxvcGVyYXRpb25hbHkCAQRUAAEkbWFuZGF0b3J5eQIBBFQAAOEGAAAC5QYA5QYIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQHpBgRUATwADAEUcGhhc2VFCAEUUGhhc2UAARRldmVudOkGAQRFAAEYdG9waWNzSQgBGFZlYzxUPgAA6QYIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwUnVudGltZUV2ZW50AAGgGFN5c3RlbQQA7QYBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAAVBwG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQAoUGFyYW1ldGVycwQAGQcBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgBJADROZXR3b3JrU3VmZml4BABJBwGsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4OjpFdmVudDxSdW50aW1lPgBKACBCYWxhbmNlcwQATQcBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BAB9BwGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsARE9yaWdpblJlc3RyaWN0aW9uBACBBwG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXZlbnQ8UnVudGltZT4ADQAYQXNzZXRzBACFBwF0cGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZT4ADgAwQXNzZXRzSG9sZGVyBACJBwGQcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkV2ZW50PFJ1bnRpbWU+AA8AJEFzc2V0UmF0ZQQAjQcBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgAQADhBc3NldFR4UGF5bWVudAQAkQcBnHBhbGxldF9hc3NldF90eF9wYXltZW50OjpFdmVudDxSdW50aW1lPgARADxBc3NldENvbnZlcnNpb24EAJUHAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4AEgAoUG9vbEFzc2V0cwQAoQcB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AEwBEQ29sbGF0b3JTZWxlY3Rpb24EAKUHAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBACpBwF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQArQcBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBACxBwFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAwQcBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBADFBwGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACIAHFV0aWxpdHkEAM0HAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAKAAgTXVsdGlzaWcEANUHAXxwYWxsZXRfbXVsdGlzaWc6OkV2ZW50PFJ1bnRpbWU+ACkAEFN1ZG8EANkHAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4AKgAUUHJveHkEAN0HAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACwAGFBlb3BsZQQA5QcBjGluZGl2X3BhbGxldF9wZW9wbGU6OkV2ZW50PFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAOkHAZRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkV2ZW50PFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEAPEHAaRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpFdmVudDxSdW50aW1lPgA1ABBHYW1lBAD1BwGEaW5kaXZfcGFsbGV0X2dhbWU6OkV2ZW50PFJ1bnRpbWU+ADcAFFNjb3JlBAD5BwGIaW5kaXZfcGFsbGV0X3Njb3JlOjpFdmVudDxSdW50aW1lPgA4AChOZnRDcmVkaXRzBAD9BwGgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzOjpFdmVudDxSdW50aW1lPgA5ACBEdW1teURpbQQACQgBmGluZGl2X3BhbGxldF9kdW1teV9kaW06OkV2ZW50PFJ1bnRpbWU+ADsAKFBlb3BsZUxpdGUEAA0IAaBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6OkV2ZW50PFJ1bnRpbWU+AD4AJFJlc291cmNlcwQAEQgBmGluZGl2X3BhbGxldF9yZXNvdXJjZXM6OkV2ZW50PFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEABUIAaxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXI6OkV2ZW50PFJ1bnRpbWU+AEAAHE1lbWJlcnMEABkIAZBpbmRpdl9wYWxsZXRfbWVtYmVyczo6RXZlbnQ8UnVudGltZT4AQwAcQ29pbmFnZQQAHQgBkGluZGl2X3BhbGxldF9jb2luYWdlOjpFdmVudDxSdW50aW1lPgBEADxNZW1iZXJzTm90aWZpZXIEACUIAbRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllcjo6RXZlbnQ8UnVudGltZT4ARQAcQWlyZHJvcAQAKQgBkGluZGl2X3BhbGxldF9haXJkcm9wOjpFdmVudDxSdW50aW1lPgBGABhIb25vdXIEADUIAYxpbmRpdl9wYWxsZXRfaG9ub3VyOjpFdmVudDxSdW50aW1lPgBHADhQZW9wbGVBaXJkcm9wcwQAPQgBsGluZGl2X3BhbGxldF9wZW9wbGVfYWlyZHJvcHM6OkV2ZW50PFJ1bnRpbWU+AEgAUE11bHRpQmxvY2tNaWdyYXRpb25zBABBCAGEcGFsbGV0X21pZ3JhdGlvbnM6OkV2ZW50PFJ1bnRpbWU+AGIAAO0GDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZv8QYBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcv0GATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb/EGAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2g8ARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2g8ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvblkBARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9y/QYBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQu8QYIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0eQIBGFdlaWdodAABFGNsYXNz9QYBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZfkGARBQYXlzAAD1Bgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAA+QYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAA/QYIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAAQcBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAAUHAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAAkHATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQADQcBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBAARBwEkVHJpZUVycm9yAA4AAAEHCChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAABQcIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAACQcINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAANBwgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAEQcMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AABUHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZHkCARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoZQUBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQcMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5HQcBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZTEHAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlMQcB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQdBwxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzUFJ1bnRpbWVQYXJhbWV0ZXJzS2V5AAEQQFN0YXRlbWVudFN0b3JhZ2UEACEHAckBPGR5bmFtaWNfcGFyYW1zOjpzdGF0ZW1lbnRfc3RvcmFnZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAAAPEJ1bGxldGluU3RvcmFnZQQAJQcBxQE8ZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQABADhQZW9wbGVBaXJkcm9wcwQAKQcBwQE8ZHluYW1pY19wYXJhbXM6OnBlb3BsZV9haXJkcm9wczo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAIAOExpdGVQZXJzb25ob29kBAAtBwHBATxkeW5hbWljX3BhcmFtczo6bGl0ZV9wZXJzb25ob29kOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAwAAIQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZTRQYXJhbWV0ZXJzS2V5AAEwUEFjY291bnRzQXBpQWxsb3dhbmNlBADIAVBBY2NvdW50c0FwaUFsbG93YW5jZQAAAFROb3RpZmljYXRpb25BbGxvd2FuY2UEANQBVE5vdGlmaWNhdGlvbkFsbG93YW5jZQAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQEANgBYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAKAFBQZXJzb25TdGF0ZW1lbnRMaW1pdAQA3AFQUGVyc29uU3RhdGVtZW50TGltaXQACwBcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QEAOABXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAQA6AFsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAIAVFN0bXRTdG9yZUNsZWFudXBMaW1pdAQA7AFUU3RtdFN0b3JlQ2xlYW51cExpbWl0AAMAcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24EAPABcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24ABABQU3RtdFN0b3JlR3JhY2VXaW5kb3cEAPQBUFN0bXRTdG9yZUdyYWNlV2luZG93AAUAaE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kBAD4AWhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAHAHhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAAEBAXhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QACABoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24EAAUBAWhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgAJAAAlBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2U0UGFyYW1ldGVyc0tleQABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbgQADQEBdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAAAAaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93BAARAQFoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3cAAQB4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kBAAVAQF4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kAAIAbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdAQAGQEBbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdAADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUEAB0BAYRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQQAKQEBlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUABQAAKQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHM0UGFyYW1ldGVyc0tleQABBCxQcml6ZVNvdXJjZQQAMQEBLFByaXplU291cmNlAAAAAC0HFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8bGl0ZV9wZXJzb25ob29kNFBhcmFtZXRlcnNLZXkAAQQ8UmVnaXN0cmF0aW9uRmVlBAA9AQE8UmVnaXN0cmF0aW9uRmVlAAAAADEHBBhPcHRpb24EBFQBNQcBCBBOb25lAAAAEFNvbWUEADUHAAABAAA1BwxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzWFJ1bnRpbWVQYXJhbWV0ZXJzVmFsdWUAARBAU3RhdGVtZW50U3RvcmFnZQQAOQcB0QE8ZHluYW1pY19wYXJhbXM6OnN0YXRlbWVudF9zdG9yYWdlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQAAADxCdWxsZXRpblN0b3JhZ2UEAD0HAc0BPGR5bmFtaWNfcGFyYW1zOjpidWxsZXRpbl9zdG9yYWdlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQABADhQZW9wbGVBaXJkcm9wcwQAQQcByQE8ZHluYW1pY19wYXJhbXM6OnBlb3BsZV9haXJkcm9wczo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAgA4TGl0ZVBlcnNvbmhvb2QEAEUHAckBPGR5bmFtaWNfcGFyYW1zOjpsaXRlX3BlcnNvbmhvb2Q6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAMAADkHFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2U8UGFyYW1ldGVyc1ZhbHVlAAEwUEFjY291bnRzQXBpQWxsb3dhbmNlBADQAWxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXIAAABUTm90aWZpY2F0aW9uQWxsb3dhbmNlBADQAWxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXIABgBgTGl0ZVBlcnNvblN0YXRlbWVudExpbWl0BADQAWxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXIACgBQUGVyc29uU3RhdGVtZW50TGltaXQEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAQAOAEMdTMyAAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAQAOAEMdTMyAAIAVFN0bXRTdG9yZUNsZWFudXBMaW1pdAQAOAEMdTMyAAMAcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24EADgBDHUzMgAEAFBTdG10U3RvcmVHcmFjZVdpbmRvdwQAOAEMdTMyAAUAaE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kBAAMAQh1OAAHAHhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAAwBCHU4AAgAaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uBAA4AQx1MzIACQAAPQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdlPFBhcmFtZXRlcnNWYWx1ZQABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbgQAOAEMdTMyAAAAaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93BAA4AQx1MzIAAQB4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kBAAMAQh1OAACAGxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXQEADgBDHUzMgADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUEACUBAWRMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uAAQAlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUEACUBAWRMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uAAUAAEEHFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8cGVvcGxlX2FpcmRyb3BzPFBhcmFtZXRlcnNWYWx1ZQABBCxQcml6ZVNvdXJjZQQABAFcc3BfcnVudGltZTo6QWNjb3VudElkMzIAAAAARQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxsaXRlX3BlcnNvbmhvb2Q8UGFyYW1ldGVyc1ZhbHVlAAEEPFJlZ2lzdHJhdGlvbkZlZQQARQEBHEJhbGFuY2UAAAAASQcMbGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeBhwYWxsZXQURXZlbnQEBFQAAQRATmV0d29ya1N1ZmZpeFNldAgBDG9sZE0BAWxQcm9kdWN0Q29udGV4dE5ldHdvcmtTdWZmaXgAAQxuZXdNAQFsUHJvZHVjdENvbnRleHROZXR3b3JrU3VmZml4AAAEbFRoZSBuZXR3b3JrIHN1ZmZpeCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldE0HDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAF4HEVuZG93ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlRQEBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcmVlRQEBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c1EHARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UACwTgU29tZSBjcmVkaXQgd2FzIGJhbGFuY2VkIGFuZCBhZGRlZCB0byB0aGUgVG90YWxJc3N1YW5jZS4YQnVybmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnRFAQEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UADgQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnRFAQEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudEUBAShUOjpCYWxhbmNlABIEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABUEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZEUBAShUOjpCYWxhbmNlAAEMbmV3RQEBKFQ6OkJhbGFuY2UAFwSsVGhlIGBUb3RhbElzc3VhbmNlYCB3YXMgZm9yY2VmdWxseSBjaGFuZ2VkLhBIZWxkDAEYcmVhc29uVQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvblUHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb25VBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGgQVAUEgdHJhbnNmZXIgb2YgYGFtb3VudGAgb24gaG9sZCBmcm9tIGBzb3VyY2VgIHRvIGBkZXN0YCB3YXMgaW5pdGlhdGVkLjxUcmFuc2ZlckFuZEhvbGQQARhyZWFzb25VBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEsdHJhbnNmZXJyZWRFAQEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29uVQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAHkHAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFEHFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAVQcIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AASAcU2Vzc2lvbgQAWQcBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBABdBwFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfABxNb2JSdWxlBABhBwGEaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpIb2xkUmVhc29uADQAKFByb29mT2ZJbmsEAGUHAZRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpIb2xkUmVhc29uADUAEEdhbWUEAGkHAXRpbmRpdl9wYWxsZXRfZ2FtZTo6SG9sZFJlYXNvbgA3ABRTY29yZQQAbQcBeGluZGl2X3BhbGxldF9zY29yZTo6SG9sZFJlYXNvbgA4ABxDb2luYWdlBABxBwGAaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkhvbGRSZWFzb24ARAAcQWlyZHJvcAQAdQcBgGluZGl2X3BhbGxldF9haXJkcm9wOjpIb2xkUmVhc29uAEYAAFkHDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAF0HDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAGEHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAABlBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoSG9sZFJlYXNvbgABBChQcm9vZk9mSW5rAAAAAGkHDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQoSG9sZFJlYXNvbgABBCxQbGF5RGVwb3NpdAAAAABtBwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldChIb2xkUmVhc29uAAEIGFBheW91dAAAABhDcmVkaXQAAQAAcQcMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChIb2xkUmVhc29uAAEMHFdyYXBwZWQAAAAsTG9hZERlcG9zaXQAAQBcSW5zdGFuY2VDcmVhdGlvbkRlcG9zaXQAAgAAdQcMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldChIb2xkUmVhc29uAAEEHEFpcmRyb3AAAAAAeQcMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAH0HDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZUUBATBCYWxhbmNlT2Y8VD4AAQx0aXBFAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIEHDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHlpAQFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0hQcMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlRQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZHEBAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAASByZXNlcnZlc7UBAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIkHDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhyZWFzb25VBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRFAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHJlYXNvblUHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YC4YQnVybmVkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHJlYXNvblUHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSNBwxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kcQEBMFQ6OkFzc2V0S2luZAABEHJhdGW9AQEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kcQEBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZHEBATBUOjpBc3NldEtpbmQAAQxvbGS9AQEkRml4ZWRVMTI4AAEMbmV3vQEBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJEHDFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQ4QXNzZXRUeEZlZVBhaWQQAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlRQEBREFzc2V0QmFsYW5jZU9mPFQ+AAEMdGlwRQEBREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRFAwFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSVBwxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEV2ZW50BARUAAEYLFBvb2xDcmVhdGVkEAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZASIVGhlIGFjY291bnQgdGhhdCBjcmVhdGVkIHRoZSBwb29sLgEccG9vbF9pZJkHASRUOjpQb29sSWQISQFUaGUgcG9vbCBpZCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2wuIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGFzc2V0cyBtYXkgbm90IGJl9HRoZSBzYW1lIGFzIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gdGhlIGNyZWF0ZSBwb29sIGV4dHJpbnNpYy4BMHBvb2xfYWNjb3VudAQBMFQ6OkFjY291bnRJZARsVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkCEEBVGhlIGlkIG9mIHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgd2lsbCBiZSBtaW50ZWQgd2hlbiBhc3NldHMgYXJlIGFkZGVkIHRvIHRoaXMUcG9vbC4ABB0BQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBDcmVhdGVQb29sYCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC44TGlxdWlkaXR5QWRkZWQcAQx3aG8EATBUOjpBY2NvdW50SWQEuFRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgdGFrZW4gZnJvbS4BHG1pbnRfdG8EATBUOjpBY2NvdW50SWQE1FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBtaW50ZWQgdG8uARxwb29sX2lkmQcBJFQ6OlBvb2xJZATgVGhlIHBvb2wgaWQgb2YgdGhlIHBvb2wgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyBhZGRlZCB0by4BQGFtb3VudDFfcHJvdmlkZWRFAQEoVDo6QmFsYW5jZQTkVGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuAUBhbW91bnQyX3Byb3ZpZGVkRQEBKFQ6OkJhbGFuY2UE6FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgbWludGVkLgE8bHBfdG9rZW5fbWludGVkRQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBtaW50ZWQgb2YgdGhhdCBpZC4BBCUBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBBZGRMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LkBMaXF1aWRpdHlSZW1vdmVkIAEMd2hvBAEwVDo6QWNjb3VudElkBNxUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgYnVybmVkIGZyb20uASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uARxwb29sX2lkmQcBJFQ6OlBvb2xJZATAVGhlIHBvb2wgaWQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyByZW1vdmVkIGZyb20uARxhbW91bnQxRQEBKFQ6OkJhbGFuY2UE9FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BHGFtb3VudDJFAQEoVDo6QmFsYW5jZQT4VGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgYnVybmVkLgE8bHBfdG9rZW5fYnVybmVkRQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBidXJuZWQgb2YgdGhhdCBpZC4BOHdpdGhkcmF3YWxfZmVl2QQBHFBlcm1pbGwEdExpcXVpZGl0eSB3aXRoZHJhd2FsIGZlZSAoJSkuAgQxAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgUmVtb3ZlTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC4wU3dhcEV4ZWN1dGVkFAEMd2hvBAEwVDo6QWNjb3VudElkBLRXaGljaCBhY2NvdW50IHdhcyB0aGUgaW5zdGlnYXRvciBvZiB0aGUgc3dhcC4BHHNlbmRfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0RQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGidBwE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQMINQFBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLiBCb3RoIGBTd2FwRXhhY3RUb2tlbkZvclRva2VuYNhhbmQgYFN3YXBUb2tlbkZvckV4YWN0VG9rZW5gIHdpbGwgZ2VuZXJhdGUgdGhpcyBldmVudC5IU3dhcENyZWRpdEV4ZWN1dGVkDAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0RQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGidBwE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQQEvEFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuHFRvdWNoZWQIARxwb29sX2lkmQcBJFQ6OlBvb2xJZARMVGhlIElEIG9mIHRoZSBwb29sLgEMd2hvBAEwVDo6QWNjb3VudElkBIRUaGUgYWNjb3VudCBpbml0aWF0aW5nIHRoZSB0b3VjaC4FBA0BUG9vbCBoYXMgYmVlbiB0b3VjaGVkIGluIG9yZGVyIHRvIGZ1bGZpbGwgb3BlcmF0aW9uYWwgcmVxdWlyZW1lbnRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJkHAAAECHEBcQEAnQcAAALBBQChBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZUUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVz0QEBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUHDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFdmVudAQEVAABKEBOZXdJbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc10BAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50RQEBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABQRcQSBuZXcgY2FuZGlkYXRlIGpvaW5lZC5QQ2FuZGlkYXRlQm9uZFVwZGF0ZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKkHDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldK0HDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLEHDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21ltQcBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lucQEBIExvY2F0aW9uAAEsZGVzdGluYXRpb25xAQEgTG9jYXRpb24AARxtZXNzYWdlAQMBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbnEBASBMb2NhdGlvbgABLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEUZXJyb3K9BwEkU2VuZEVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAgR4QW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHNlbmQuPFByb2Nlc3NYY21FcnJvcgwBGG9yaWdpbnEBASBMb2NhdGlvbgABFGVycm9yMQMBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2UlAwEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodHkCARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h0eQIBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABRGV4cGVjdGVkX2xvY2F0aW9uRQMBQE9wdGlvbjxMb2NhdGlvbj4ACgxZAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgb3JpZ2luIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzVQFub3QgbWF0Y2ggdGhhdCBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlxJbnZhbGlkUmVzcG9uZGVyVmVyc2lvbggBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbnEBASBMb2NhdGlvbgABGGFzc2V0c30DATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABGHJlc3VsdDgBKFhjbVZlcnNpb24AARBjb3N0DQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoAA4MJQFBbiBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgaGFzIGJlZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnQuAOBUaGUgY29zdCBvZiBzZW5kaW5nIGl0IChib3JuZSBieSB0aGUgY2hhaW4pIGlzIGluY2x1ZGVkLlxTdXBwb3J0ZWRWZXJzaW9uQ2hhbmdlZAgBIGxvY2F0aW9ucQEBIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9yMQMBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbu0BAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAASHFUBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBxdWVyaWVyIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC44SW52YWxpZFF1ZXJpZXIQARhvcmlnaW5xAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVycQEBIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJFAwFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb25xAQEgTG9jYXRpb24AARBjb3N0DQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABQIWQFBIHJlbW90ZSBoYXMgcmVxdWVzdGVkIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gZnJvbSB1cyBhbmQgd2UgaGF2ZSBob25vcmVkIGl0Lh0BQSB2ZXJzaW9uIGluZm9ybWF0aW9uIG1lc3NhZ2UgaXMgc2VudCB0byB0aGVtIGFuZCBpdHMgY29zdCBpcyBpbmNsdWRlZC5YVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAwBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEQY29zdA0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABEGNvc3QNAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmdxAQEgTG9jYXRpb24AARBmZWVzDQMBGEFzc2V0cwAXBDEBRmVlcyB3ZXJlIHBhaWQgZnJvbSBhIGxvY2F0aW9uIGZvciBhbiBvcGVyYXRpb24gKG9mdGVuIGZvciB1c2luZyBgU2VuZFhjbWApLjRBc3NldHNDbGFpbWVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW5xAQEgTG9jYXRpb24AARhhc3NldHN9AwE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcnEBASBMb2NhdGlvbgABGHRhcmdldHEBASBMb2NhdGlvbgABGGV4cGlyebUDASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXJxAQEgTG9jYXRpb24AARh0YXJnZXRxAQEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXRxAQEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0tQcQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZHkCARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWR5AgEYV2VpZ2h0AAEUZXJyb3K5BwFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQAuQcBQEluc3RydWN0aW9uRXJyb3IAAgAAuQcQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcjEDARRFcnJvcgAAvQcQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAAwQcMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAAtQcBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUHDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3LJBwFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWR5AgEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NZAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7BAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7BAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMkHEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEAHkCARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAAzQcMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcv0GATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcv0GATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHTRBwE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcv0GATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNEHBBhSZXN1bHQIBFQBEARFAf0GAQgIT2sEABAAAAAADEVycgQA/QYAAAEAANUHDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50OQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQ5BAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHTRBwE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDkEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNkHDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdNEHAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAARwQSBzdWRvIGNhbGwganVzdCB0b29rIHBsYWNlLihLZXlDaGFuZ2VkCAEMb2xkNQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+BLRUaGUgb2xkIHN1ZG8ga2V5IChpZiBvbmUgd2FzIHByZXZpb3VzbHkgc2V0KS4BDG5ldwQBMFQ6OkFjY291bnRJZASIVGhlIG5ldyBzdWRvIGtleSAoaWYgb25lIHdhcyBzZXQpLgEEeFRoZSBzdWRvIGtleSBoYXMgYmVlbiB1cGRhdGVkLihLZXlSZW1vdmVkAAIEgFRoZSBrZXkgd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQuKFN1ZG9Bc0RvbmUEASxzdWRvX3Jlc3VsdNEHAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAwTIQSBbc3Vkb19hc10oUGFsbGV0OjpzdWRvX2FzKSBjYWxsIGp1c3QgdG9vayBwbGFjZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTdBwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx00QcBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjNAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlSQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4zQMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlSQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZOEHASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV04QcIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA5QcMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0FEV2ZW50BARUAAEoUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvKAEoUGVyc29uYWxJZAABDGtleQgBLE1lbWJlck9mPFQ+AAAE+EFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuQFBlcnNvbk9uYm9hcmRpbmcIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQQRAUFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYWdhaW4gYW5kIGluZGV4ZWQuPEFsaWFzRGlzcGF0Y2hlZAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgSUQSBjYWxsIHdhcyBkaXNwYXRjaGVkIHVuZGVyIGFuIGFsaWFzLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc+kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXPpAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuUFBlcnNvbmFsSWRBY2NvdW50U2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQTQQSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHNldCBvciB1cGRhdGVkLlhQZXJzb25hbElkQWNjb3VudFVuc2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABgS0QSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuRENvbGxlY3Rpb25DcmVhdGVkAAcEiFRoZSBwZW9wbGUgY29sbGVjdGlvbiB3YXMgY3JlYXRlZC5kRm9yY2VQZXJzb25ob29kUmVjb2duaXplZAQBGHBlb3BsZVEEAUBWZWM8TWVtYmVyT2Y8VD4+AAgEtFBlcnNvbmhvb2Qgd2FzIGZvcmNlZnVsbHkgcmVjb2duaXplZCBieSByb290LjhBbGlhc0NsZWFuZWRVcAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQACQSsQW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEV2ZW50BARUAAFELENhc2VDcmVhdGVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASAVGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY3JlYXRlZC4ABGBBIGNhc2UgaGFzIGJlZW4gY3JlYXRlZC4gQ2FsbGJhY2sEARhyZXN1bHTRBwE4RGlzcGF0Y2hSZXN1bHQEbFRoZSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLgEEnEEgY2FsbGJhY2sgd2FzIHRyaWdnZXJlZCBmcm9tIG1vYi1ydWxlLjRDYWxsYmFja0Vycm9yCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASkVGhlIGNhc2Ugd2hvc2UgY2FsbGJhY2sgZmFpbGVkIHRvIGRlY29kZS4BHHRyaWdnZXLtBwE8Q2FsbGJhY2tUcmlnZ2VyBBEBVGhlIG1vYi1ydWxlIGV4dHJpbnNpYyBjYWxsIHdoaWNoIGF0dGVtcHRlZCB0byB0cmlnZ2VyIHRoZSBjYWxsYmFjay4CBAEBVGhlcmUgd2FzIGEgY29kZWMgZXJyb3Igd2hlbiB0cnlpbmcgdG8gZGVjb2RlIHRoZSBjYWxsYmFjayBjYWxsLihDYXNlQ2xvc2VkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAR8VGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY2xvc2VkLgEcdmVyZGljdGEEASRKdWRnZW1lbnQEfFRoZSB2ZXJkaWN0IG9mIHRoZSBjbG9zZWQgY2FzZS4DBMxUaGUgY2FzZSBoYXMgYmVlbiBjbG9zZWQgd2l0aCB0aGUgZm9sbG93aW5nIHJlc3VsdC4UVm90ZWQMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEcb3BpbmlvbmEEASRKdWRnZW1lbnQEZFRoZSBvcGluaW9uIG9mIHRoZSB2b3Rlci4EBIRBIHZvdGUgaGFzIGJlZW4gcGxhY2VkIG9uIGEgY2FzZS4sVm90ZUNsZWFuZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgUEYEEgdm90ZSBoYXMgYmVlbiBjbGVhbmVkLixDYXNlUmVtb3ZlZAQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgYEYEEgY2FzZSBoYXMgYmVlbiByZW1vdmVkLjhDYXNlSW50ZXJ2ZW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEiFRoZSBjYXNlIHRoYXQgaGFzIGJlZW4gaW50ZXJ2ZW5lZC4BHHZlcmRpY3RhBAEkSnVkZ2VtZW50BIBUaGUgdmVyZGljdCBhcHBsaWVkIHRvIHRoZSBjYXNlLgcEbEEgY2FzZSBoYXMgYmVlbiBpbnRlcnZlbmVkLjBWb3Rlc0NsYWltZWQIARR2b3RlcggBFEFsaWFzBFRUaGUgYWxpYXMgdGhhdCB2b3RlZC4BMGNhc2VfaW5kaWNlc2kEAThWZWM8Q2FzZUluZGV4PgSIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLggEkENyZWRpdHMgZm9yIHZvdGVzIGhhdmUgYmVlbiBjbGFpbWVkLjBSZXdhcmRQYXlvdXQMARR2b3RlcggBFEFsaWFzBHxUaGUgYWxpYXMgdGhhdCBlYXJuZWQgYSByZXdhcmQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAScVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBwYXlvdXQuARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BJxUaGUgcGF5b3V0IGFtb3VudCB0aGF0IHdhcyB0cmFuc2ZlcnJlZC4JBIBBIHJld2FyZCB0aGF0IGhhcyBiZWVuIHBhaWQgb3V0LkhQYXlvdXRSb3VuZFN0YXJ0ZWQMARRyb3VuZDgBKFJvdW5kSW5kZXgEiFRoZSBpbmRleCBvZiB0aGUgbmV3IHBheW91dCByb3VuZC4BPGluaXRpYWxfYmFsYW5jZUUBATBCYWxhbmNlT2Y8VD4EsFRoZSBpbml0aWFsIGJhbGFuY2UgYWxsb2NhdGVkIGZvciB0aGUgcm91bmQuATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQExFRvdGFsIGFjY3VtdWxhdGVkIHBvaW50cyBjbGFpbWFibGUgaW4gdGhpcyByb3VuZC4KBJBBIG5ldyBwYXlvdXQgcm91bmQgaGFzIGJlZW4gc3RhcnRlZC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW50RQEBMEJhbGFuY2VPZjxUPgR4VGhlIGFtb3VudCBvZiBmdW5kcyBwZXIgcm91bmQuARRjb3VudDgBDHUzMgR8VGhlIG51bWJlciBvZiByb3VuZHMgc2NoZWR1bGVkLgEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4EuFRoZSBtaW5pbXVtIHBlcmlvZCAoaW4gYmxvY2tzKSBiZXR3ZWVuIHJvdW5kcy4LBIhQYXlvdXQgcm91bmRzIGhhdmUgYmVlbiBzY2hlZHVsZWQuVFBheW91dFNjaGVkdWxlUmVtb3ZlZAQBFGluZGV4OAEMdTMyBIhUaGUgaW5kZXggb2YgdGhlIHJlbW92ZWQgc2NoZWR1bGUuDASMQSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gcmVtb3ZlZC40Q3JlZGl0Q2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEjFRoZSBhbGlhcyBvZiB0aGUgdm90ZXIgd2hvIGNsYWltZWQuARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BHRUaGUgYW1vdW50IG9mIGNyZWRpdCBjbGFpbWVkLg0E1ENyZWRpdCBoYXMgYmVlbiBjbGFpbWVkIGZyb20gdGhlIHBheW91dCBkaXN0cmlidXRpb24uNFBvaW50c0NsZWFuZWQIARRyb3VuZDgBKFJvdW5kSW5kZXgEvFRoZSByb3VuZCBpbmRleCBmcm9tIHdoaWNoIHBvaW50cyB3ZXJlIHJlbW92ZWQuARR2b3RlcggBFEFsaWFzBJBUaGUgYWxpYXMgd2hvc2UgcG9pbnRzIHdlcmUgcmVtb3ZlZC4OBJhTdGFsZSB2b3RpbmcgcG9pbnRzIGhhdmUgYmVlbiBjbGVhbmVkLixDYXNlVG91Y2hlZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEaFRoZSBjYXNlIHRoYXQgd2FzIHRvdWNoZWQuARxyaXBlbmVkWQEBEGJvb2wEpFdoZXRoZXIgdGhlIGNhc2Ugd2FzIHJpcGVuZWQgYXMgYSByZXN1bHQuDwScQSBjYXNlIGhhcyBiZWVuIHRvdWNoZWQgKHJlLWV2YWx1YXRlZCkuUFZvdGluZ1BlbmFsdHlDbGVhcmVkBAEMd2hvCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwZW5hbHR5IHdhcyBjbGVhcmVkLhAEiEEgdm90aW5nIHBlbmFsdHkgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTtBwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDxDYWxsYmFja1RyaWdnZXIAAQgkQ2xvc2VDYXNlAAAAJEludGVydmVuZQABAADxBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQURXZlbnQEBFQAAVxAQ2FuZGlkYXRlQXBwbGllZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAASMQ2FuZGlkYXRlIGFwcGxpZWQgZm9yIHZlcmlmaWNhdGlvbi5ISnVkZ2VtZW50UmVxdWVzdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBAUBQ2FuZGlkYXRlIG9wZW5lZCBhIE1vYiBSdWxlIGNhc2UgZm9yIHRoZWlyIHZlcmlmaWNhdGlvbiBldmlkZW5jZS5ESnVkZ2VtZW50UHJvdmlkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEkanVkZ2VtZW50YQQBJEp1ZGdlbWVudAACBNhPcmFjbGUgaGFzIHByb3ZpZGVkIHRoZSBqdWRnZW1lbnQgZm9yIGEgTW9iIFJ1bGUgY2FzZS4wUmV0cnlHcmFudGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIGZhaWx1cmVzOAEMdTMyAAMIRQFBIGNhbmRpZGF0ZSBoYXMgYmVlbiBncmFudGVkIGEgZnJlZSByZXRyeSBhdHRlbXB0IGFmdGVyIGEgZmFpbHVyZSB0byB2ZXJpZnkgdGhlaXIkZXZpZGVuY2UuQFBlcnNvblJlZ2lzdGVyZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscGVyc29uYWxfaWQoAShQZXJzb25hbElkAAQEgFJlZ2lzdGVyIGFuIGFjY291bnQgYXMgYSBwZXJzb24uRENhbmRpZGF0ZVJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEgcmVmZXJyZWQEATBUOjpBY2NvdW50SWQABQRsUGVyc29uIHJlZmVycmVkIGFuIGFjY291bnQuIFJlcm9sbGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAGBLRFbnRyb3B5IGZvciBhIGNhbmRpZGF0ZSBjaGFuZ2VkIGFmdGVyIGV4cGlyeS48RGVzaWduQ29tbWl0dGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHJlc2VydmVkX2lkKAEoUGVyc29uYWxJZAAHBJRDYW5kaWRhdGUgY29tbWl0dGVkIHRvIGFuIGluayBkZXNpZ24uOEZ1bGx5QWxsb2NhdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIBLxTdG9yYWdlIGZ1bGx5IGFsbG9jYXRlZCBmb3IgYSBjb21taXR0ZWQgZGVzaWduLiBUaW1lZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQSAQ2FuZGlkYXRlIHJlbW92ZWQgYWZ0ZXIgdGltZW91dC4kRmxha2VkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAKBHhVbmNvbW1pdHRlZCBjYW5kaWRhdGUgcmVtb3ZlZC44VGlja2V0UmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQACwTsUmVmZXJyYWwgdGlja2V0IGNyZWF0ZWQgYnkgc3RvcmluZyB0aGUgcHVibGljIGtleSBvbiBjaGFpbi48VGlja2V0Q2FuY2VsbGVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAwEGQFSZWZlcnJhbCB0aWNrZXQgcmVtb3ZlZCBieSByZW1vdmluZyB0aGUgcHVibGljIGtleSBmcm9tIGNoYWluIHN0b3JhZ2UuNFRpY2tldEFwcGxpZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgcmVmZXJyZXIoAShQZXJzb25hbElkAA0EqENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGEgcmVmZXJyYWwgdGlja2V0LixGYW1pbHlBZGRlZAwBFGluZGV4zQMBLEZhbWlseUluZGV4AAEQa2luZIEEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAAOBFBEZXNpZ24gZmFtaWx5IGFkZGVkLkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABAEDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuXEludml0ZWRDYW5kaWRhdGVBcHBsaWVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAARBJhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhbiBpbnZpdGF0aW9uLmRSZWZlcnJhbFZvdWNoZXJSZWdpc3RlcmVkBAEgcmVmZXJyZXIoAShQZXJzb25hbElkABIEwEEgcmVmZXJyZXIncyByZXdhcmQgdm91Y2hlciBoYXMgYmVlbiByZWdpc3RlcmVkLjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgATBKBJbnZpdGVzIGhhdmUgYmVlbiBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFAR4QW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFQSQQW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBjYW5jZWxsZWQuQENvbmZpZ3VyYXRpb25TZXQEARhjb25maWeFBAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAWBKhUaGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT1BwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEV2ZW50BARUAAFQHE5ld0dhbWUMAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAAEXEEgbmV3IGdhbWUgaXMgc3RhcnRpbmcuJEdhbWVFbmRlZAQBFGluZGV4OAEcR2FtZUlkeAABBKBUaGUgZ2FtZSBhbmQgaXRzIHBvc3QtcHJvY2VzcyBoYXMgZW5kZWQuNEdhbWVQaGFzZXNTZXQEARhwaGFzZXPhBAFMUGhhc2VEdXJhdGlvblZhbHVlcwACBBkBVGhlIGdhbWUgcGhhc2UgZHVyYXRpb25zIHdlcmUgb3ZlcnJpZGRlbiBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLiBTaWduZWRVcAQBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgADBIBBIHBsYXllciBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLjxSZXBvcnRTdWJtaXR0ZWQIAQx3aG8JBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4AAShnYW1lX2luZGV4OAEcR2FtZUlkeAAEBIBBIHBsYXllciBzdWJtaXR0ZWQgdGhlaXIgcmVwb3J0LihPZmZib2FyZGVkBAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAUEiEEgcGxheWVyIG9mZmJvYXJkZWQgZnJvbSB0aGUgZ2FtZS4kS2lja2VkT3V0BAEYcGxheWVyCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAYEiEFuIGFyY2hpdmVkIHBsYXllciB3YXMga2lja2VkIG91dC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIABwSMSW52aXRlcyB3ZXJlIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0BAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAIBGRBbiBpbnZpdGUgdGlja2V0IHdhcyBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQACQR8QW4gaW52aXRlIHRpY2tldCB3YXMgY2FuY2VsbGVkLixMaXRlSW52aXRlZAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAKCEkBQSBsaXRlIHBlcnNvbiBpbnZpdGVkIHRoZSBhY2NvdW50IGBwbGF5ZXJgIHRvIHBsYXkgb24gdGhlaXIgYmVoYWxmLCB3aGljaCBpcyBub3cgYYxwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LjhHYW1lc1NjaGVkdWxlZAQBFGNvdW50OAEMdTMyAAsEVEdhbWVzIHdlcmUgc2NoZWR1bGVkLlBTY2hlZHVsZWRHYW1lUmVtb3ZlZAQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAwEdEEgc2NoZWR1bGVkIGdhbWUgd2FzIHJlbW92ZWQuQFN0bXRVc2FnZVJlbW92ZWQEAQx3aG8IASBbdTg7IDMyXQANBLhTdGF0ZW1lbnQgc3RvcmUgdXNhZ2UgcmVtb3ZlZCBmb3IgdGhlIGFjY291bnQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAOBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy44UGxheURlcG9zaXRTZXQEARhhbW91bnRFAQFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEoFRoZSBjb25maWd1cmVkIHBsYXkgZGVwb3NpdCB3YXMgdXBkYXRlZC5AQWlyZHJvcFNjaGVkdWxlZAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEgZXZlbnRfaWQIAThBaXJkcm9wRXZlbnRJZAARBNBBbiBhaXJkcm9wIGV2ZW50IHdhcyBzY2hlZHVsZWQgZm9yIHRoZSBjdXJyZW50IGdhbWUuVEFpcmRyb3BTY2hlZHVsZUZhaWxlZAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEUZXJyb3L9BgE0RGlzcGF0Y2hFcnJvcgASBORBbiBhaXJkcm9wIGV2ZW50IGZvciB0aGUgY3VycmVudCBnYW1lIGZhaWxlZCB0byBzY2hlZHVsZS40R2FtZUNhbmNlbGxlZAQBKGdhbWVfaW5kZXg4ARxHYW1lSWR4ABMEgEdhbWUgYGdhbWVfaW5kZXhgIHdhcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0+QcMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXZlbnQEBFQAASg0Q3JlZGl0Q2xhaW1lZAwBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR4VGhlIHBlcnNvbiB3aG8gY2xhaW1lZCBjcmVkaXQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAS8RGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVkIHRoZSB0cmFuc2Zlci4BGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4ETEFtb3VudCB0cmFuc2ZlcnJlZC4ABHBBIHBlcnNvbiBoYXMgY2xhaW1lZCBjcmVkaXQuUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BLBUaGUgYWNjb3VudCB3aG9zZSBwZXJzb25ob29kIHdhcyByZWNvZ25pemVkLgEccmVzdW1lZFkBARBib29sBBEBV2hldGhlciB0aGlzIHdhcyByZXN1bWluZyBmcm9tIHN1c3BlbnNpb24gb3IgZmlyc3QtdGltZSByZWNvZ25pdGlvbi4BBKRQZXJzb25ob29kIHdhcyByZWNvZ25pemVkIGZvciBhbiBhY2NvdW50LlRQYXlvdXRSb3VuZHNTY2hlZHVsZWQMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BFRUaGUgYW1vdW50IHBlciByb3VuZC4BFGNvdW50OAEMdTMyBFRUaGUgbnVtYmVyIG9mIHJvdW5kcy4BIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4EhFRoZSBkdXJhdGlvbiBwZXIgcm91bmQgaW4gYmxvY2tzLgIEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4DBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLkRSb3VuZFRyYW5zaXRpb25lZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASYVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIHRyYW5zaXRpb25lZC4EBHhBIHJvdW5kIGhhcyBiZWVuIHRyYW5zaXRpb25lZC5MUGF5b3V0Um91bmRPcGVyYXRlZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASIVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIG9wZXJhdGVkLgUEGQFBIHBheW91dCByb3VuZCBoYXMgYmVlbiBvcGVyYXRlZCAoY3JlZGl0IGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cykuJENhc2hlZE91dAQBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR8VGhlIHBhcnRpY2lwYW50IHdobyBjYXNoZWQgb3V0LgYEuEEgcGFydGljaXBhbnQgaGFzIGNhc2hlZCBvdXQgc2NvcmUgZm9yIHBvaW50cy54UGVyc29uaG9vZFRocmVzaG9sZFNjaGVkdWxlU2V0AAcEvFRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuXEFic2VuY2VHcmFjZVNjaGVkdWxlU2V0AAgEoFRoZSBhYnNlbmNlLWdyYWNlIHNjaGVkdWxlIGhhcyBiZWVuIHNldC5AQXR0ZW5kYW5jZUZvcmNlZAwBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgSkVGhlIHBhcnRpY2lwYW50IHdob3NlIGF0dGVuZGFuY2Ugd2FzIHNldC4BIGF0dGVuZGVkWQEBEGJvb2wEvFdoZXRoZXIgdGhlIHBhcnRpY2lwYW50IHdhcyBtYXJrZWQgYXMgYXR0ZW5kZWQuAShnYW1lX2luZGV4OAEMdTMyBLxUaGUgZ2FtZSBpbmRleCB0aGUgYXR0ZW5kYW5jZSB3YXMgcmVjb3JkZWQgZm9yLgkEwFRoZSBhdHRlbmRhbmNlIG9mIGEgcGFydGljaXBhbnQgd2FzIHNldCBieSByb290LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0HDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0FEV2ZW50BARUAAEsVE5mdENsYWltQ3JlZGl0QXdhcmRlZBABIGNsYWltYW50CQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEobGVhZl9pbmRleDgBDHUzMgAALFkBQW4gTkZUIGNsYWltIGNyZWRpdCB3YXMgYXdhcmRlZCB0byBgY2xhaW1hbnRgIGFuZCByZWNvcmRlZCBhcyBsZWFmIGBsZWFmX2luZGV4YCBvZiB0aGVAdHJlZSBvZiBgYmxvY2tgLgBdAWBibG9ja2AgaXMgdGhlIGJsb2NrIHdob3NlIHJvb3QgY29tbWl0cyB0aGUgY3JlZGl0LCB3aGljaCBpcyB0aGUgY3VycmVudCBvbmUgdW5sZXNzIGl0c1kBdHJlZSB3YXMgYWxyZWFkeSBmdWxsLiBBbiBpbmRleGVyIGtleXMgdGhlIGxlYWYgYnkgYGJsb2NrYCwgbm90IGJ5IHRoZSBibG9jayB0aGUgZXZlbnQ8d2FzIGVtaXR0ZWQgaW4uAE0BT25lIGV2ZW50IHBlciBhd2FyZGVkIGNyZWRpdCwgaW4gbGVhZiBvcmRlciwgbGV0cyBhbiBpbmNsdXNpb24gcHJvb2Ygc3RpbGwgYmUgYnVpbHRRAW9uY2UgYSBibG9jaydzIGF3YXJkcyBoYXZlIGJlZW4gcHJ1bmVkOiB0aGUgbGVhZiBpcyBgYmxha2UyXzI1NihjbGFpbWFudCArKyBjcmVkaXQpYEkBYW5kIHRoZSBibG9jaydzIGxlYWYgc2V0IGlzIHRoZSBgbGVhZl9pbmRleGAtb3JkZXJlZCBzZXF1ZW5jZSBvZiB0aGUgZXZlbnRzIG5hbWluZ4RpdCwgc28gbm8gYmxvY2sgcmVwbGF5IGlzIG5lZWRlZC5oTmZ0Q2xhaW1DcmVkaXRSb290UmVjb3JkZWQIARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEsY3JlZGl0X3Jvb3QBCAFITmZ0Q2xhaW1DcmVkaXRUcmVlAAEIVQFUaGUgY3JlZGl0cyBgYmxvY2tgIGNvbW1pdHRlZCBjYW4gYmUgbWludGVkIGZyb20gbm93IG9uOiBgY3JlZGl0X3Jvb3RgJ3Mgcm9vdCBpcyB3aGF0HQFhbiBpbmNsdXNpb24gcHJvb2YgZm9yIGFueSBvZiB0aGVtIHZlcmlmaWVzIGFnYWluc3QsIGFuZCBuZXZlciBjaGFuZ2VzLlROZnRDbGFpbUNyZWRpdERyb3BwZWQIASBjbGFpbWFudAkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABGGNyZWRpdAgBOE5mdENsYWltQ3JlZGl0AAIUKQFBbiBlYXJuZWQgTkZUIGNsYWltIGNyZWRpdCB3YXMgbm90IHJlY29yZGVkLCBubyBidWZmZXIgaGF2aW5nIHJvb20gZm9yIGl0LgBdAVRoZSBjcmVkaXQgaXMgY29tbWl0dGVkIHRvIG5vIHJvb3QgYW5kIGNhbm5vdCBiZSBtaW50ZWQuIEl0cyBzbG90IGlzIGxlZnQgdW5zZXQsIHNvIHRoZU0BYXR0ZW5kYW5jZSBiYWNrZmlsbCBhd2FyZHMgaXQgYWdhaW4gaWYgdGhlIGNsYWltYW50IGdvZXMgb24gdG8gYXR0ZW5kLiBFdmVyeSBjYWxsZXJBAWNoZWNrcyBbYFBhbGxldDo6cmVtYWluaW5nX2NyZWRpdF9jYXBhY2l0eWBdIGZpcnN0LCBzbyB0aGlzIGV2ZW50IHJlcG9ydHMgYSBidWcuPENyZWRpdFRyZWVzU2VudAQBFHRyZWVzEQUB4EJvdW5kZWRWZWM8Q3JlZGl0VHJlZUJsb2NrLCBUOjpNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2U+GC0BVGhlIHRyZWUgYmxvY2sgb2YgZXZlcnkgdHJlZSB0aGUgbWVzc2FnZSBjYXJyaWVzLCBpbiB0aGUgb3JkZXIgdGhleSBnbyBvdXQuOQFFbXB0eSBtZWFucyBldmVyeSB0cmVlIG9mIHRoaXMgbWVzc2FnZSBoYWQgbG9zdCBpdHMgcm9vdCwgc28gbm90aGluZyB3YXMgc2VudC4ANQFUaGUgc2VxdWVuY2UgZWFjaCBibG9jayB0cmF2ZWxzIHVuZGVyIGlzIG5vdCBzcGVsbGVkIG91dDogdGhlIG1lc3NhZ2UgdGFrZXMgYU0BY29udGlndW91cyBydW4gb2Ygc2VxdWVuY2VzIG9mZiB0aGUgcXVldWUsIHN0YXJ0aW5nIGF0IHRoZSBjYWxsJ3MgYGZpcnN0X3NlcXVlbmNlYCwdAW1pbnVzIHRoZSBvbmVzIHRoaXMgYmxvY2sncyBbYEV2ZW50OjpDcmVkaXRUcmVlRGVsaXZlcnlTa2lwcGVkYF0gbmFtZXMuAwRBAUNyZWRpdCB0cmVlcyB3ZXJlIGhhbmRlZCB0byB0aGUgWENNIHJvdXRlciBmb3IgZGVsaXZlcnkgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uZENyZWRpdFRyZWVEZWxpdmVyeVNraXBwZWQIASBzZXF1ZW5jZSgBMFRyZWVTZXF1ZW5jZQABFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABBAlAUEgcXVldWVkIGNyZWRpdCB0cmVlIHdhcyBub3Qgc2VudCBiZWNhdXNlIGl0cyByb290IGlzIG5vIGxvbmdlciByZWNvcmRlZC4AWQFJdHMgc2VxdWVuY2UgaXMgc3BlbnQgd2l0aG91dCBhIHRyZWUgZXZlciBhcnJpdmluZywgc28gdGhlIGNsYWltcyBjaGFpbiByZXBvcnRzIGEgZ2FwLl0BTm8gW2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXSBjYW4gZmlsbCBpdDogdGhlIHJvb3QgcHJvb2ZzIHZlcmlmeSBhZ2FpbnN0IGlzIGdvbmUuUENyZWRpdFRyZWVTZW5kRmFpbGVkAAUIVQFEZWxpdmVyaW5nIGNyZWRpdCB0cmVlcyB0byB0aGUgTkZUIGNsYWltcyBjaGFpbiBmYWlsZWQuIFRoZSB0cmVlcyBzdGF5IHF1ZXVlZCBhbmQgdGhloG5leHQgb2ZmY2hhaW4gd29ya2VyIGN5Y2xlIHJldHJpZXMgdGhlbS5MQ3JlZGl0VHJlZXNSZXBsYXllZAQBFGNvdW50OAEMdTMyAAYE9ENyZWRpdCB0cmVlcyB3ZXJlIHJlc2VudCB0byB0aGUgTkZUIGNsYWltcyBjaGFpbiBvdXQgb2YgYmFuZC5kQ3JlZGl0VHJlZURlbGl2ZXJ5RHJvcHBlZAQBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABxARAUEgZnJlc2hseSBidWlsdCBjcmVkaXQgdHJlZSBjb3VsZCBub3QgYmUgcXVldWVkIGZvciBkZWxpdmVyeSBiZWNhdXNlMQFgQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWVgIGlzIGZ1bGwsIHdoaWNoIG1lYW5zIGRlbGl2ZXJ5IGhhcyBiZWVuIGZhaWxpbmcgZm9yBQFgTWF4UXVldWVkQ3JlZGl0VHJlZXNgIHRyZWVzLiBJdHMgY3JlZGl0cyBzdGF5IHVubWludGFibGUgdW50aWwgYbhbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdIG5hbWVzIGBibG9ja2AuSENyZWRpdFJvb3RzRGVsZXRlZAgBFG5hbWVkOAEMdTMyAAEUY291bnQ4AQx1MzIACBRdAVRoZSBjbGFpbXMgY2hhaW4gaGFzIGZpbmlzaGVkIHdpdGggdGhlc2Ugcm9vdHMsIHNvIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtIHRvby4gYGNvdW50YIhvZiB0aGUgYG5hbWVkYCBibG9ja3MgaGVsZCBhIHJvb3QuAFUBRXZlcnkgY3JlZGl0IHRob3NlIHJvb3RzIGNvbW1pdHRlZCB0byBoYXMgYmVlbiBtaW50ZWQsIG9yIHRoZSBjbGFpbXMgY2hhaW4ncyBkZWFkbGluZfhmb3IgdGhlbSBoYXMgcGFzc2VkLiBObyBwcm9vZiBjYW4gYmUgYnVpbHQgYWdhaW5zdCB0aGVtIGFnYWluLkhDcmVkaXRSb290c0V4cGlyZWQEARRjb3VudDgBDHUzMgAJGEkBYGNvdW50YCByb290cyBvdXRsaXZlZCBbYFBhbGxldDo6cm9vdF90dGxgXSB3aXRoIHRoZSBjbGFpbXMgY2hhaW4gbmV2ZXIgYXNraW5nIGZvckkBdGhlaXIgZGVsZXRpb24sIHNvIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtLiBJdHMgZGVhZGxpbmUgZm9yIHRoZW0gcGFzc2VkIGZpcnN0LCBzb2Rub3RoaW5nIG1pbnRhYmxlIGlzIGxvc3QuAFkBVGhlIGJsb2NrcyBhcmUgbm90IG5hbWVkLiBBIHJvb3QgdGhpcyBzd2VlcCByZW1vdmVzIGlzIG9uZSB0aGUgY2xhaW1zIGNoYWluIGdhdmUgdXAgb27IbG9uZyBiZWZvcmUsIHNvIG5vdGhpbmcgaXMgd2FpdGluZyBvbiB0aGUgcmVtb3ZhbC5MQ3JlZGl0QXdhcmRzRXhwaXJlZAQBFGNvdW50OAEMdTMyAAoUQQFgY291bnRgIHRyZWUgYmxvY2tzIG91dGxpdmVkIFtgQ29uZmlnOjpBd2FyZFJldGVudGlvblR0bGBdLCBzbyB0aGVpciBhd2FyZHMgd2VyZfhyZW1vdmVkLiBUaGVpciByb290cyBzdGF5IHVudGlsIFtgUGFsbGV0Ojpyb290X3R0bGBdIHJ1bnMgb3V0LgBJAUEgY3JlZGl0IG9mIHRoZWlycyBpcyBzdGlsbCBtaW50YWJsZSwgYnV0IGl0cyBwcm9vZiBub3cgaGFzIHRvIGJlIHJlYnVpbHQgZnJvbSB0aGUhAXRyZWUgYmxvY2sncyBgTmZ0Q2xhaW1DcmVkaXRBd2FyZGVkYCBldmVudHMgcmF0aGVyIHRoYW4gcmVhZCBmcm9tIHN0YXRlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAEIDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlc0hOZnRDbGFpbUNyZWRpdFRyZWUAABABKGdhbWVfaW5kZXg4AQx1MzIAARByb290BQgBPENyZWRpdFByb29mTm9kZQABKGxlYWZfY291bnQ4AQx1MzIAASR0aW1lc3RhbXA4AQx1MzIAAAUIDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlczxDcmVkaXRQcm9vZk5vZGUAAAQACAEgW3U4OyAzMl0AAAkIDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBRFdmVudAQEVAABICxJZHNSZXNlcnZlZAQBFGNvdW50OAEMdTMyAAAEdEEgbnVtYmVyIG9mIElEcyB3YXMgcmVzZXJ2ZWQuJElkUmVuZXdlZAQBCGlkKAEoUGVyc29uYWxJZAABBEhBbiBJRCB3YXMgcmVuZXdlZC4wSWRVbnJlc2VydmVkBAEIaWQoAShQZXJzb25hbElkAAIEaEEgcmVzZXJ2ZWQgSUQgd2FzIHJlbW92ZWQuQFBlb3BsZVJlZ2lzdGVyZWQEARRjb3VudDgBDHUzMgADBGRSZWdpc3RlciBtdWx0aXBsZSBwZW9wbGUuPFBlb3BsZVN1c3BlbmRlZAQBFGNvdW50OAEMdTMyAAQEbFN1c3BlbmQgYSBudW1iZXIgb2YgcGVvcGxlLkRQZXJzb25ob29kUmVzdW1lZAQBCGlkKAEoUGVyc29uYWxJZAAFBIRTb21lb25lJ3MgcGVyc29uaG9vZCB3YXMgcmVzdW1lZC5IU3VzcGVuc2lvbnNTdGFydGVkAAYEfFRoZSBwYWxsZXQgZW5hYmxlZCBzdXNwZW5zaW9ucy5AU3VzcGVuc2lvbnNFbmRlZAAHBIBUaGUgcGFsbGV0IGRpc2FibGVkIHN1c3BlbnNpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldA0IDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0FEV2ZW50BARUAAEgeEFsbEF0dGVzdGF0aW9uQWxsb3dhbmNlQ2xlYXJlZAQBIHZlcmlmaWVyBAEwVDo6QWNjb3VudElkAAAE8EFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgaGFzIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIHZlcmlmaWVyLnRBdHRlc3RhdGlvbkFsbG93YW5jZUluY3JlYXNlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgABBC0BQXR0ZXN0YXRpb24gYWxsb3dhbmNlIHdhcyBpbmNyZWFzZWQgZm9yIGFuIGFjY291bnQgYnkgYGNvdW50YCBhdHRlc3RhdGlvbnMuOFBlcnNvbkF0dGVzdGVkCAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAEgdmVyaWZpZXIEATBUOjpBY2NvdW50SWQAAgTUQSBuZXcgbGl0ZSBwZXJzb24gd2FzIHJlZ2lzdGVyZWQgdGhyb3VnaCBhdHRlc3RhdGlvbi5cUGVyc29uUmVnaXN0ZXJlZFdpdGhGZWUEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAAwQBAUEgbmV3IGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIGJ5IHBheWluZyB0aGUgcmVnaXN0cmF0aW9uIGZlZS5IQ29uc3VtZXJSZWdpc3RlcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBKxBIGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc+kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAYEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5EQ29sbGVjdGlvbkNyZWF0ZWQABwS4VGhlIGxpdGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEIDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBRFdmVudAQEVAABOEBQZXJzb25SZWdpc3RlcmVkCAEUYWxpYXMIARRBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAASYQSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5QTGl0ZVBlcnNvblJlZ2lzdGVyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEErEEgbGl0ZSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5gTm90aWZpY2F0aW9uU3RtdFVzYWdlU2V0EAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABDHNlcQwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBPhOb3RpZmljYXRpb24gc3RhdGVtZW50IHVzYWdlIGhhcyBiZWVuIGFzc2lnbmVkIGZvciBhIHNlcXVlbmNlLnBOb3RpZmljYXRpb25TdG10VXNhZ2VSZW1vdmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBLhOb3RpZmljYXRpb24gc3RhdGVtZW50IHVzYWdlIGhhcyBiZWVuIHJlbW92ZWQuaFBlcnNvbkF1dGhvcml6YXRpb25Ub3VjaGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBJRBIHBlcnNvbidzIGF1dGhvcml6YXRpb24gd2FzIHRvdWNoZWQuhEV4cGlyZWRVc2VybmFtZVJlc2VydmF0aW9uUmVtb3ZlZAgBIHVzZXJuYW1lPQUBIFVzZXJuYW1lAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBLBBbiBleHBpcmVkIHVzZXJuYW1lIHJlc2VydmF0aW9uIHdhcyByZW1vdmVkLlBJZGVudGlmaWVyS2V5VXBkYXRlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABgSgQSBjb25zdW1lcidzIGlkZW50aWZpZXIga2V5IHdhcyB1cGRhdGVkLnhVc2VybmFtZVJlc2VydmF0aW9uRHVyYXRpb25TZXQEASBkdXJhdGlvbigBDHU2NAAHBKhUaGUgdXNlcm5hbWUgcmVzZXJ2YXRpb24gZHVyYXRpb24gd2FzIHNldC5UU3RtdFN0b3JlQWxsb3dhbmNlU2V0EAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABDHNlcTgBDHUzMgABHGFjY291bnQEATBUOjpBY2NvdW50SWQACATMQW4gYW5vbnltb3VzIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2Ugd2FzIGdyYW50ZWQuaFN0bXRTdG9yZUFsbG93YW5jZXNDbGVhcmVkDAEYcGVyaW9kOAEMdTMyAAEkZmlyc3Rfa2V5CAEUQWxpYXMAARRjb3VudDgBDHUzMgAJBMxFeHBpcmVkIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2VzIHdlcmUgY2xlYW5lZCB1cC40UGVyc29uRGVtb3RlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQACgTcQSBmdWxsIHBlcnNvbiB3YXMgZGVtb3RlZCBkdWUgdG8gZXhwaXJlZCBhdXRob3JpemF0aW9uLlhMb25nVGVybVN0b3JhZ2VDbGFpbWVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9uAQQBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAsEyExvbmctdGVybSBzdG9yYWdlIGhhcyBiZWVuIGNsYWltZWQgZm9yIGFuIGFjY291bnQufExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb25GYWlsZWQUARRhbGlhcwgBFEFsaWFzAAEYcGVyaW9kOAEMdTMyAAEcY291bnRlcgwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABKGNvbGxlY3Rpb24BBAFQTWVtYmVyc2hpcENvbGxlY3Rpb24ADAhZAUEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW0gd2FzIGFjY2VwdGVkIGJ1dCB0aGUgZG93bnN0cmVhbSBhbGxvY2F0aW9uIGZhaWxlZC4gVGhlIGFsaWFzlGlzIHN0aWxsIG1hcmtlZCBzcGVudCBmb3IgdGhlIHBlcmlvZC50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlc0NsZWFyZWQIARhwZXJpb2Q4AQx1MzIAARRjb3VudDgBDHUzMgANBAUBRXhwaXJlZCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIGhhdmUgYmVlbiBjbGVhcmVkIGZvciBhIHBlcmlvZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCAxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBRFdmVudAQEVAABCGhDaHVua1BhZ2VIYXNoZXNJbml0aWFsaXplZAgBNHJpbmdfZXhwb25lbnRVBQEwUmluZ0V4cG9uZW50AAEsdG90YWxfcGFnZXM4AQx1MzIAAAQZAUEgbmV3IGNodW5rIHBhZ2UgaGFzaCBzZXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgKGUuZy4sIGR1cmluZyBnZW5lc2lzKS4sQ2h1bmtzQWRkZWQMATRyaW5nX2V4cG9uZW50VQUBMFJpbmdFeHBvbmVudAABLHN0YXJ0X2luZGV4OAEMdTMyAAEUY291bnQ4AQx1MzIAAQQhAU5ldyBjaHVua3MgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byBhbiBleGlzdGluZyBvciBuZXcgY2h1bmsgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBkIDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQURXZlbnQEBFQAASgsTWVtYmVyQWRkZWQEAQxrZXkIASxNZW1iZXJPZjxUPgAABOhBbiBlbnRpdHkgaGFzIGhhZCB0aGVpciBtZW1iZXJzaGlwIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuNE1lbWJlclJlbW92ZWQEAQxrZXkIASxNZW1iZXJPZjxUPgABBKxBbiBlbnRpdHkgaGFzIGhhZCB0aGVpciBtZW1iZXJzaGlwIHJldm9rZWQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAIEqEEgY29sbGVjdGlvbiBoYXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLkRDb2xsZWN0aW9uRGVsZXRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAMEkEEgY29sbGVjdGlvbiBoYXMgYmVlbiBmdWxseSBkZWxldGVkLiRSaW5nQnVpbHQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgABARYQSByaW5nIHJvb3Qgd2FzIGJ1aWx0LkBNZW1iZXJzT25ib2FyZGVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIABQRcTWVtYmVycyB3ZXJlIG9uYm9hcmRlZC4sUmluZ3NNZXJnZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPGJhc2VfcmluZ19pbmRleDgBJFJpbmdJbmRleAABRHRhcmdldF9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAYEWFR3byByaW5ncyB3ZXJlIG1lcmdlZC5ET25ib2FyZGluZ1NpemVTZXQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPG9uYm9hcmRpbmdfc2l6ZTgBDHUzMgAHBLRUaGUgb25ib2FyZGluZyBzaXplIHdhcyBzZXQgZm9yIGEgY29sbGVjdGlvbi5ITWVtYmVyU2VsZkluY2x1ZGVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAQxrZXkIASxNZW1iZXJPZjxUPgAIBIxBIG1lbWJlciBzZWxmLWluY2x1ZGVkIGludG8gYSByaW5nLkBPbGRSb290Q2xlYW5lZFVwDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244AQx1MzIACQSkQW4gb2xkIHJvb3QgcmV2aXNpb24gaGFzIGJlZW4gY2xlYW5lZCB1cC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQdCAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0FEV2ZW50BARUAAGEJENvaW5TcGxpdAgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMG91dHB1dF9jb3VudDgBDHUzMgAAADxDb2luVHJhbnNmZXJyZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABHG5ld19hZ2XNAwEMdTE2AAEAWFJlY3ljbGVyTG9hZGVkV2l0aENvaW4IASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAgB8UmVjeWNsZXJMb2FkZWRXaXRoRXh0ZXJuYWxBc3NldBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AAwBgUmVjeWNsZXJVbmxvYWRlZEludG9Db2luFAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF92YWx1ZRUEATBEZW5vbWluYXRpb24AATBvdXRwdXRfdmFsdWUVBAEwRGVub21pbmF0aW9uAAEsaW5wdXRfY291bnQ4AQx1MzIABACEUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0FAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ABQC8UmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0QW5kTG9hZGVkQ29pbnMYASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABLGlucHV0X2NvdW50OAEMdTMyAAFUZXh0ZXJuYWxfYXNzZXRfYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABRGxvYWRlZF9jb2luX2NvdW50OAEMdTMyAAYAVFJlY3ljbGVyQWxpYXNVbmxvYWRlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARRhbGlhcwgBFEFsaWFzAAcgGQFBbiBhbGlhcyB3YXMgcGVybWFuZW50bHkgbWFya2VkIGFzIHVubG9hZGVkIGZyb20gYSBsaXZlIHJlY3ljbGVyIHJpbmcuAC0BRW1pdHRlZCBvbmNlIHBlciBhbGlhcyBvbiBldmVyeSB1bmxvYWQgZnJvbSBhIGxpdmUgKG5vdCB5ZXQgYXJjaGl2ZWQpIHJpbmc7lHJlY292ZXJpZXMgZnJvbSBhbiBhcmNoaXZlZCByaW5nIGVtaXRRAVtgRXZlbnQ6OkFyY2hpdmVkUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0YF0gaW5zdGVhZC4gVG9nZXRoZXIsIHRoZXNlIGV2ZW50czUBbGV0IGFuIG9mZmNoYWluIHNlcnZpY2UgcmVjb25zdHJ1Y3QgdGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZSBjb21taXR0ZWQgdG8gYnkFAVtgRXZlbnQ6OlJlY3ljbGVyQXJjaGl2ZWRgXSwgYW5kIGhlbmNlIGJ1aWxkIHRoZSBwcm9vZnMgbmVlZGVkIGJ55FtgUGFsbGV0Ojp1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdLoRQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aENvaW4MASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQxmZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEkZGVzdHJveWVkRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAIAIxQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aE5hdGl2ZQgBDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZUUBAUhOYXRpdmVCYWxhbmNlT2Y8VD4ACQCoUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhFeHRlcm5hbEFzc2V0DAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEMZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAKAHRQZW9wbGVGcmVlVW5sb2FkVG9rZW5Db25zdW1lZAQBGHBlcmlvZDgBGFBlcmlvZAALAIRMaXRlUGVvcGxlRnJlZVVubG9hZFRva2VuQ29uc3VtZWQEARhwZXJpb2Q4ARhQZXJpb2QADABkUmVjeWNsZXJzVW5sb2FkZWRJbnRvQ29pbhABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEwb3V0cHV0X3ZhbHVlFQQBMERlbm9taW5hdGlvbgABLGlucHV0X2NvdW50OAEMdTMyAA0AiFJlY3ljbGVyc1VubG9hZGVkSW50b0V4dGVybmFsQXNzZXQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAOALhSZWN5Y2xlcnNVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0Tm9uQW5vbnltb3VzGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBmZWVfY3VycmVuY3mhBQEsRmVlQ3VycmVuY3kADwBkUmVjeWNsZXJVbmxvYWRlZEludG9Db2lucwgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMG91dHB1dF9jb3VudDgBDHUzMgAQAHxDb2luT2ZmYm9hcmRlZEludG9FeHRlcm5hbEFzc2V0EAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABEAPFJlY3ljbGVyQ2xlYW5lZAwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABPHJlbWFpbmluZ19jb2luczgBDHUzMgASDF0BQSByZWN5Y2xlciByaW5nIHdhcyBjbGVhbmVkLiBgcmVtYWluaW5nX2NvaW5zYCBpcyB0aGUgbnVtYmVyIG9mIG5vdC15ZXQtdW5sb2FkZWQgY29pbnM7UQF3aGVuIG5vbi16ZXJvIHRoZSByaW5nIGlzIGFyY2hpdmVkIChzZWUgW0V2ZW50OjpSZWN5Y2xlckFyY2hpdmVkXSkgYW5kIHRoYXQgdmFsdWUgaXOwcmV0YWluZWQgZm9yIHJlY292ZXJ5IHJhdGhlciB0aGFuIGRlc3Ryb3llZC5AUmVjeWNsZXJBcmNoaXZlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyZWN5Y2xlcl9yb290rQUBME1lbWJlcnNPZjxUPgATHFEBQSBjbGVhbmVkIHJlY3ljbGVyIHJpbmcgd2l0aCByZWNvdmVyYWJsZSBjb2lucyB3YXMgYXJjaGl2ZWQ6IGl0cyBhcmNoaXZhbCBjb21taXRtZW50BQEoc2VlIFtgYXJjaGl2ZV9jb21taXRtZW50YF0pIHdhcyByZWNvcmRlZCBpbiBbUmVjeWNsZXJzQXJjaGl2ZXNdLgBVAVRoZSByaW5nLVZSRiBgcmVjeWNsZXJfcm9vdGAgaXMgZW1pdHRlZCBoZXJlIGJlY2F1c2UgdGhlIHJpbmcgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2VBAWluIHRoZSBzYW1lIG9wZXJhdGlvbjogdGhpcyBldmVudCBpcyB0aGUgbGFzdCBvbi1jaGFpbiBzb3VyY2Ugb2YgdGhlIHJvb3QsIHdoaWNo+G9mZmNoYWluIHNlcnZpY2VzIG11c3QgcmV0YWluIHRvIGJ1aWxkIHRoZSByZWNvdmVyeSBwcm9vZnMgZm9y5FtgUGFsbGV0Ojp1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdLqRBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldCABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBmZWVfY3VycmVuY3mhBQEsRmVlQ3VycmVuY3kAARRhbGlhcwgBFEFsaWFzABQEMQFBIGNvaW4gd2FzIHJlY292ZXJlZCBmcm9tIGFuIGFyY2hpdmVkIHJlY3ljbGVyIHJpbmcgaW50byB0aGUgZXh0ZXJuYWwgYXNzZXQuZENvbnN1bWVkRnJlZVRva2Vuc0NsZWFuZWQEARhwZXJpb2Q4ARhQZXJpb2QAFQBoUGFpZFVubG9hZFRva2VuUmluZ0NsZWFuZWQIARhwZXJpb2Q4ARhQZXJpb2QAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4ABYATFJlY3ljbGVyRHVzdENsZWFuZWQAFwBoUGFpZFVubG9hZFRva2VuRHVzdENsZWFuZWQAGACcRXhwaXJlZFBhaWRVbmxvYWRUb2tlbkNvbGxlY3Rpb25EZWxldGVkBAEYcGVyaW9kOAEYUGVyaW9kABkAPEluc3RhbmNlQ3JlYXRlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGFzc2V0X2lkcQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABKGFzc2V0X3VuaXRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEQbW9kZSEIATBJbnN0YW5jZU1vZGUAGgTcQSBjb2luYWdlIGluc3RhbmNlIHdhcyBjcmVhdGVkIGZvciBhbiB1bmRlcmx5aW5nIGFzc2V0LiRQb3RGdW5kZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARhmdW5kZXIEATBUOjpBY2NvdW50SWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABsE/EEgdHJhY2tlZCBjb250cmlidXRpb24gd2FzIGFkZGVkIHRvIGEgc3BvbnNvcmVkIGluc3RhbmNlJ3MgcG90LkRQb3RGdW5kc1dpdGhkcmF3bhABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABGGZ1bmRlcgQBMFQ6OkFjY291bnRJZAABIGN1cnJlbmN5cQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AHATsQSBmdW5kZXIgdG9vayBiYWNrIHBhcnQgb2YgdGhlaXIgcmVjb3JkZWQgcG90IGNvbnRyaWJ1dGlvbi5ATG9hZERlcG9zaXRzSGVsZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGN1cnJlbmN5cQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABFHByaWNlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAB0ERQFgY291bnRgIGxvYWQgZGVwb3NpdHMgb2YgYHByaWNlYCBlYWNoIHdlcmUgdGFrZW4gZnJvbSBhIHNwb25zb3JlZCBpbnN0YW5jZSdzIHBvdC5QTG9hZERlcG9zaXRzUmVsZWFzZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAHgQ9AWBjb3VudGAgc2V0dGxlZCBrZXlzIHJlbGVhc2VkIGBhbW91bnRgIG9mIGBjdXJyZW5jeWAgdG8gdGhlIHBvdCdzIGZyZWUgYmFsYW5jZS5UTG9hZERlcG9zaXRzQ29sbGFwc2VkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEUcHJpY2VFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAHwgRAUV2ZXJ5IGxpdmUgbG9hZCBkZXBvc2l0IG9mIHRoZSBpbnN0YW5jZSB3YXMgcmUtcHJpY2VkIHRvIHRoZSBjdXJyZW50YFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdLjxJbnN0YW5jZU1vZGVTZXQIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARBtb2RlIQgBMEluc3RhbmNlTW9kZQAgBKBHb3Zlcm5hbmNlIHN3aXRjaGVkIHRoZSBpbnN0YW5jZSdzIG1vZGUuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQgMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldDBJbnN0YW5jZU1vZGUAAQgoU3VmZmljaWVudAAAACRTcG9uc29yZWQAAQAAJQgMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBRFdmVudAQEVAABGChTdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAAABFxBIHBhcmFjaGFpbiBzdWJzY3JpYmVkLjBVbnN1YnNjcmliZWQEARxwYXJhX2lknAEYUGFyYUlkAAEEZEEgcGFyYWNoYWluIHVuc3Vic2NyaWJlZC4sVXBkYXRlc1NlbnQIARxwYXJhX2lknAEYUGFyYUlkAAEwdXBkYXRlX2NvdW50OAEMdTMyAAIEgFVwZGF0ZSBiYXRjaCBzZW50IHRvIHN1YnNjcmliZXIuQFVwZGF0ZVNlbmRGYWlsZWQEARxwYXJhX2lknAEYUGFyYUlkAAMExFNlbmRpbmcgcmluZyByb290IHVwZGF0ZXMgdG8gYSBzdWJzY3JpYmVyIGZhaWxlZC48UmVwbGF5UmVxdWVzdGVkDAEccGFyYV9pZJwBGFBhcmFJZAABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE0aW5kaWNlc19jb3VudDgBDHUzMgAEBLxSZXBsYXkgb2YgcmluZyByb290cyByZXF1ZXN0ZWQgYnkgYSBzdWJzY3JpYmVyLjhCYXRjaEFiYW5kb25lZAQBIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIABQTMQSBzdHVjayBiYXRjaCB3YXMgYWJhbmRvbmVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQgMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBRFdmVudAQEVAABSDhFdmVudFNjaGVkdWxlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAAAFRTY2hlZHVsZWRFdmVudFJlbW92ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAQA4RXZlbnRDYW5jZWxsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAgBMUmVnaXN0cmF0aW9uU3RhcnRlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAADADxBbGlhc1JlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90LQgBNEJpZ0VuZGlhblUyNTYAAUhwYXJ0aWNpcGFudF9vcmlnaW4xCAFYUmVnaXN0cmF0aW9uRW50cnlPZjxUPgAEAERBY2NvdW50UmVnaXN0ZXJlZAwBIGV2ZW50X2lkCAEcRXZlbnRJZAABEHNsb3QtCAE0QmlnRW5kaWFuVTI1NgABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABQA4U2xvdFJlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90LQgBNEJpZ0VuZGlhblUyNTYAARRlbnRyeTEIAVhSZWdpc3RyYXRpb25FbnRyeU9mPFQ+AAYASFJlZ2lzdHJhdGlvbkNsb3NlZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAcAOERyYXdpbmdXaW5uZXJzCAEgZXZlbnRfaWQIARxFdmVudElkAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIACAA8Q2xhaW1pbmdTdGFydGVkCAEgZXZlbnRfaWQIARxFdmVudElkAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIACQA0RXZlbnRDYW5jZWxlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAKADBQcml6ZUNsYWltZWQUASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90LQgBNEJpZ0VuZGlhblUyNTYAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkcQEBMEFzc2V0SWRPZjxUPgABGGFtb3VudEUBAURBc3NldEJhbGFuY2VPZjxUPgALAFRDbGVhcmluZ1JlZ2lzdHJhdGlvbnMIASBldmVudF9pZAgBHEV2ZW50SWQAASR1bmNsYWltZWQ4AQx1MzIADAA8Q2xlYXJpbmdXaW5uZXJzBAEgZXZlbnRfaWQIARxFdmVudElkAA0APEZpbmFsaXppbmdFdmVudAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAOADhFdmVudENvbXBsZXRlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAPADBBc3NldEVuYWJsZWQIASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AARhmdW5kZWRFAQFEQXNzZXRCYWxhbmNlT2Y8VD4AEAA0QXNzZXREaXNhYmxlZAgBIGFzc2V0X2lkcQEBMEFzc2V0SWRPZjxUPgABIHJlZnVuZGVkRQEBREFzc2V0QmFsYW5jZU9mPFQ+ABEABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQgMNGluZGl2X3N1cHBvcnQUdXRpbHM0QmlnRW5kaWFuVTI1NgADIAAAAAwEHQFBIFUyNTYgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLjEIDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlc0RSZWdpc3RyYXRpb25FbnRyeQQkQWNjb3VudElkAQQBCBRBbGlhcwQBFGFsaWFzCAEUQWxpYXMAAAAcQWNjb3VudAQBKGFjY291bnRfaWQEASRBY2NvdW50SWQAAQAANQgMTGluZGl2X3BhbGxldF9ob25vdXIYcGFsbGV0FEV2ZW50BARUAAEMIFZvdGVDYXN0CAEcc3ViamVjdAgBJFN1YmplY3RJZAR4VGhlIHN1YmplY3QgdGhhdCB3YXMgdm90ZWQgb24uASRkaXJlY3Rpb27tBQEkRGlyZWN0aW9uBGhUaGUgZGlyZWN0aW9uIG9mIHRoZSB2b3RlLgAE2EEgc3ViamVjdCB3YXMgdm90ZWQgb24gd2l0aCBhIHByZXZpb3VzbHkgdW51c2VkIHBvaW50LihWb3RlUmV1c2VkEAEsb2xkX3N1YmplY3QIASRTdWJqZWN0SWQE2FRoZSBzdWJqZWN0IHRoYXQgcHJldmlvdXNseSBoZWxkIHRoZSByZWRpcmVjdGVkIHBvaW50LgE0b2xkX2RpcmVjdGlvbu0FASREaXJlY3Rpb24EkFRoZSBwcmV2aW91cyBkaXJlY3Rpb24gb2YgdGhlIHBvaW50LgEsbmV3X3N1YmplY3QIASRTdWJqZWN0SWQEwFRoZSBzdWJqZWN0IHRoYXQgbm93IGhvbGRzIHRoZSByZWRpcmVjdGVkIHBvaW50LgE0bmV3X2RpcmVjdGlvbu0FASREaXJlY3Rpb24EeFRoZSBuZXcgZGlyZWN0aW9uIG9mIHRoZSB2b3RlLgEEzEEgcG9pbnQgd2FzIHJlZGlyZWN0ZWQgZnJvbSBvbmUgc3ViamVjdCB0byBhbm90aGVyLjRIb25vdXJDaGFuZ2VkDAEcc3ViamVjdAgBJFN1YmplY3RJZAScVGhlIHN1YmplY3Qgd2hvc2UgaG9ub3VyIHNjb3JlIGNoYW5nZWQuASRvbGRfdmFsdWU5CAEYSG9ub3VyBIxUaGUgaG9ub3VyIHZhbHVlIGJlZm9yZSB0aGUgdXBkYXRlLgEkbmV3X3ZhbHVlOQgBGEhvbm91cgSIVGhlIGhvbm91ciB2YWx1ZSBhZnRlciB0aGUgdXBkYXRlLgIEqFRoZSBob25vdXIgc2NvcmUgb2YgYSBzdWJqZWN0IGhhcyBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDkIAAAFCwA9CAxwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wcxhwYWxsZXQURXZlbnQEBFQAARA0RHJhd1NjaGVkdWxlZAgBKGRyYXdfaW5kZXgoAQx1NjQAASBldmVudF9pZAgBHEV2ZW50SWQAAAg5AUEgZHJhdyB3YXMgc2NoZWR1bGVkLiBSZWdpc3RyYXRpb24gYW5kIGNsYWltIGV2ZW50cyBhcmUgZW1pdHRlZCBieSB0aGUgYWlyZHJvcJRpbXBsZW1lbnRhdGlvbiB1bmRlciB0aGlzIGBldmVudF9pZGAuLERyYXdSZW1vdmVkBAEgZXZlbnRfaWQIARxFdmVudElkAAEE4EEgc2NoZWR1bGVkIGRyYXcgd2FzIGFza2VkIHRvIGJlIHJlbW92ZWQgYmVmb3JlIG9wZW5pbmcuNERyYXdDYW5jZWxsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAgSEQSBkcmF3IHdhcyBhc2tlZCB0byBiZSBjYW5jZWxsZWQuPERyYXdTYWx0UmVtb3ZlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAADBMxBIGRyYXcncyBzYWx0IGVudHJ5IHdhcyByZW1vdmVkIGFmdGVyIGl0cyBlbmQgdGltZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBCAxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEV2ZW50BARUAAEgOFVwZ3JhZGVTdGFydGVkBAEobWlncmF0aW9uczgBDHUzMhDQVGhlIG51bWJlciBvZiBtaWdyYXRpb25zIHRoYXQgdGhpcyB1cGdyYWRlIGNvbnRhaW5zLgBBAVRoaXMgY2FuIGJlIHVzZWQgdG8gZGVzaWduIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yIGluIGNvbWJpbmF0aW9uIHdpdGggY291bnRpbmcgdGhlzGBNaWdyYXRpb25Db21wbGV0ZWRgIGFuZCBgTWlncmF0aW9uU2tpcHBlZGAgZXZlbnRzLgAMaEEgUnVudGltZSB1cGdyYWRlIHN0YXJ0ZWQuAPhJdHMgZW5kIGlzIGluZGljYXRlZCBieSBgVXBncmFkZUNvbXBsZXRlZGAgb3IgYFVwZ3JhZGVGYWlsZWRgLkBVcGdyYWRlQ29tcGxldGVkAAEMmFRoZSBjdXJyZW50IHJ1bnRpbWUgdXBncmFkZSBjb21wbGV0ZWQuAB0BVGhpcyBpbXBsaWVzIHRoYXQgYWxsIG9mIGl0cyBtaWdyYXRpb25zIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYXMgd2VsbC40VXBncmFkZUZhaWxlZAACDFxSdW50aW1lIHVwZ3JhZGUgZmFpbGVkLgDoVGhpcyBpcyB2ZXJ5IGJhZCBhbmQgd2lsbCByZXF1aXJlIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uLkBNaWdyYXRpb25Ta2lwcGVkBAEUaW5kZXg4AQx1MzIEKQFUaGUgaW5kZXggb2YgdGhlIHNraXBwZWQgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgMECQFBIG1pZ3JhdGlvbiB3YXMgc2tpcHBlZCBzaW5jZSBpdCB3YXMgYWxyZWFkeSBleGVjdXRlZCBpbiB0aGUgcGFzdC5ETWlncmF0aW9uQWR2YW5jZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgQEXEEgbWlncmF0aW9uIHByb2dyZXNzZWQuSE1pZ3JhdGlvbkNvbXBsZXRlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBQRYQSBNaWdyYXRpb24gY29tcGxldGVkLjxNaWdyYXRpb25GYWlsZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgYMTEEgTWlncmF0aW9uIGZhaWxlZC4ATQFUaGlzIGltcGxpZXMgdGhhdCB0aGUgd2hvbGUgdXBncmFkZSBmYWlsZWQgYW5kIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHJlcXVpcmVkLjxIaXN0b3JpY0NsZWFyZWQEASxuZXh0X2N1cnNvciUGATxPcHRpb248VmVjPHU4Pj4E6FNob3VsZCBiZSBwYXNzZWQgdG8gYGNsZWFyX2hpc3RvcmljYCBpbiBhIHN1Y2Nlc3NpdmUgY2FsbC4HBMhUaGUgc2V0IG9mIGhpc3RvcmljYWwgbWlncmF0aW9ucyBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEUICDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAASQgAAAI8AE0IAAACUQgAUQgAAAQIODgAVQgIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25gAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lWQgBRENvdzwnc3RhdGljLCBzdHI+AABZCAQMQ293BARUAV0IAAQAXQgAAABdCAAABQIAYQgIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uWQEBEGJvb2wAAGUIDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja3kCARhXZWlnaHQAASRtYXhfYmxvY2t5AgEYV2VpZ2h0AAEkcGVyX2NsYXNzaQgBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAaQgMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAFtCAAMARhub3JtYWxtCAEEVAABLG9wZXJhdGlvbmFsbQgBBFQAASRtYW5kYXRvcnltCAEEVAAAbQgMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY3kCARhXZWlnaHQAATRtYXhfZXh0cmluc2ljSQMBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsSQMBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWRJAwE4T3B0aW9uPFdlaWdodD4AAHEIDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXh1CAFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXpl5AEsT3B0aW9uPHUzMj4AAHUIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBOAAMARhub3JtYWw4AQRUAAEsb3BlcmF0aW9uYWw4AQRUAAEkbWFuZGF0b3J5OAEEVAAAeQgIKHNwX3dlaWdodHM8UnVudGltZURiV2VpZ2h0AAAIARByZWFkKAEMdTY0AAEUd3JpdGUoAQx1NjQAAH0ICChzcF92ZXJzaW9uOFJ1bnRpbWVWZXJzaW9uAAAgASRzcGVjX25hbWVZCAFEQ293PCdzdGF0aWMsIHN0cj4AASRpbXBsX25hbWVZCAFEQ293PCdzdGF0aWMsIHN0cj4AAURhdXRob3JpbmdfdmVyc2lvbjgBDHUzMgABMHNwZWNfdmVyc2lvbjgBDHUzMgABMGltcGxfdmVyc2lvbjgBDHUzMgABEGFwaXOBCAEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb244AQx1MzIAAThzeXN0ZW1fdmVyc2lvbgwBCHU4AACBCAQMQ293BARUAYUIAAQAhQgAAACFCAAAAokIAIkIAAAECGECOACNCAwwZnJhbWVfc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABJDxJbnZhbGlkU3BlY05hbWUAAAgRAVRoZSBuYW1lIG9mIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUuaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEIQQFUaGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGlzIG5vdCBhbGxvd2VkIHRvIGRlY3JlYXNlIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLnRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgACDOxGYWlsZWQgdG8gZXh0cmFjdCB0aGUgcnVudGltZSB2ZXJzaW9uIGZyb20gdGhlIG5ldyBydW50aW1lLgAJAUVpdGhlciBjYWxsaW5nIGBDb3JlX3ZlcnNpb25gIG9yIGRlY29kaW5nIGBSdW50aW1lVmVyc2lvbmAgZmFpbGVkLkxOb25EZWZhdWx0Q29tcG9zaXRlAAME/FN1aWNpZGUgY2FsbGVkIHdoZW4gdGhlIGFjY291bnQgaGFzIG5vbi1kZWZhdWx0IGNvbXBvc2l0ZSBkYXRhLjxOb25aZXJvUmVmQ291bnQABAQ1AVRoZXJlIGlzIGEgbm9uLXplcm8gcmVmZXJlbmNlIGNvdW50IHByZXZlbnRpbmcgdGhlIGFjY291bnQgZnJvbSBiZWluZyBwdXJnZWQuMENhbGxGaWx0ZXJlZAAFBNBUaGUgb3JpZ2luIGZpbHRlciBwcmV2ZW50IHRoZSBjYWxsIHRvIGJlIGRpc3BhdGNoZWQubE11bHRpQmxvY2tNaWdyYXRpb25zT25nb2luZwAGBFUBQSBtdWx0aS1ibG9jayBtaWdyYXRpb24gaXMgb25nb2luZyBhbmQgcHJldmVudHMgdGhlIGN1cnJlbnQgY29kZSBmcm9tIGJlaW5nIHJlcGxhY2VkLkROb3RoaW5nQXV0aG9yaXplZAAHBFhObyB1cGdyYWRlIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAIBJRUaGUgc3VibWl0dGVkIGNvZGUgaXMgbm90IGF1dGhvcml6ZWQuBGxFcnJvciBmb3IgdGhlIFN5c3RlbSBwYWxsZXSRCAwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAlQgQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAZkIAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3OlCAE4VmVjPEV4dHJpbnNpYz4AAJkIEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAXkEFEV4dHJhAZ0IAAQAGAAAAJ0ICHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwGhCAAEAKEIAQRTAAChCAAABCgpBi0GMQY1BjkGPQZFBkkGTQZRBgClCAAAApkIAKkIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleOQBLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodHkCARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleOQBLE9wdGlvbjx1MzI+AAIAAK0IAAAGzQMAsQgAAAK1CAC1CAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBPAAMATh1c2VkX2JhbmR3aWR0aLkIATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2jNCAEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFs0QgBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAC5CAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbme9CAGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AAL0IBCBCVHJlZU1hcAgESwGcBFYBwQgABADFCAAAAMEIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAMUIAAACyQgAyQgAAAQInMEIAM0IBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAA0QgEGE9wdGlvbgQEVAHVCAEIEE5vbmUAAAAQU29tZQQA1QgAAAEAANUIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAA2QgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGi5CAE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr5AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzRCAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAN0IBBhPcHRpb24EBFQB4QgBCBBOb25lAAAAEFNvbWUEAOEIAAABAADhCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAADlCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0eekIAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHPtCAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc+0IAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AADpCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAO0IAAAC8QgA8QgAAAQInPUIAPUIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZM0IATBPcHRpb248SGFzaD4AAPkIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1z/QgBSEFzeW5jQmFja2luZ1BhcmFtcwAA/QgQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAAQkIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAAAFCQQgQlRyZWVNYXAIBEsBnARWAQEJAAQACQkAAAAJCQAAAg0JAA0JAAAECJwBCQARCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAABUJAAACGQkAGQkIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAB0JCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50cyEJASxWZWM8UGFyYUlkPgAAIQkAAAKcACUJDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LikJCHRpbmRpdl9wYWxsZXRfcmVsYXlfcmFuZG9tbmVzc0BSYW5kb21uZXNzVmFsdWVzAAAIARRibG9jay0JAVxPcHRpb248UmFuZG9tbmVzc0VudHJ5PgABNG9uZV9lcG9jaF9hZ28tCQFcT3B0aW9uPFJhbmRvbW5lc3NFbnRyeT4AAC0JBBhPcHRpb24EBFQBMQkBCBBOb25lAAAAEFNvbWUEADEJAAABAAAxCQh0aW5kaXZfcGFsbGV0X3JlbGF5X3JhbmRvbW5lc3M8UmFuZG9tbmVzc0VudHJ5AAAIAShyYW5kb21uZXNzCAEgW3U4OyAzMl0AARhtb21lbnQ4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAADUJDGxpbmRpdl9wYWxsZXRfbmV0d29ya19zdWZmaXgYcGFsbGV0FEVycm9yBARUAAEELEVtcHR5U3VmZml4AAAEhEEgbmV0d29yayBzdWZmaXggY2Fubm90IGJlIGVtcHR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45CQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAT0JBFMAAAQARQkBGFZlYzxUPgAAPQkMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQFFAQAMAQhpZGECAThMb2NrSWRlbnRpZmllcgABGGFtb3VudEUBARxCYWxhbmNlAAEccmVhc29uc0EJARxSZWFzb25zAABBCQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAEUJAAACPQkASQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNCQRTAAAEAFEJARhWZWM8VD4AAE0JDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAWECHEJhbGFuY2UBRQEACAEIaWRhAgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnRFAQEcQmFsYW5jZQAAUQkAAAJNCQBVCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVkJBFMAAAQAXQkBGFZlYzxUPgAAWQkUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAFVBxxCYWxhbmNlAUUBAAgBCGlkVQcBCElkAAEYYW1vdW50RQEBHEJhbGFuY2UAAF0JAAACWQkAYQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFlCQRTAAAEAGkJARhWZWM8VD4AAGUJFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAUUBAAgBCGlkEAEISWQAARhhbW91bnRFAQEcQmFsYW5jZQAAaQkAAAJlCQBtCQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQucQkIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAAB1CRA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBeQkABAB5CQEEVAAAeQkYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCAUUBGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudEUBAQRCAAB9CQx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQUVXNhZ2UIHEJhbGFuY2UBRQEsQmxvY2tOdW1iZXIBOAAIARB1c2VkRQEBHEJhbGFuY2UAASBhdF9ibG9jazgBLEJsb2NrTnVtYmVyAACBCQx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXJyb3IEBFQAAQgcTm9Vc2FnZQAABIBUaGUgb3JpZ2luIGhhcyBubyB1c2FnZSB0cmFja2VkLhxOb3RaZXJvAAEEWFRoZSB1c2FnZSBpcyBub3QgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuhQkMNHBhbGxldF9hc3NldHMUdHlwZXMwQXNzZXREZXRhaWxzDBxCYWxhbmNlAUUBJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAUUBADABFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAEYc3VwcGx5RQEBHEJhbGFuY2UAARxkZXBvc2l0RQEBOERlcG9zaXRCYWxhbmNlAAEsbWluX2JhbGFuY2VFAQEcQmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABIGFjY291bnRzOAEMdTMyAAEsc3VmZmljaWVudHM4AQx1MzIAASRhcHByb3ZhbHM4AQx1MzIAARhzdGF0dXOJCQEsQXNzZXRTdGF0dXMAAIkJDDRwYWxsZXRfYXNzZXRzFHR5cGVzLEFzc2V0U3RhdHVzAAEMEExpdmUAAAAYRnJvemVuAAEAKERlc3Ryb3lpbmcAAgAAjQkAAAQIcQEEAJEJDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudBAcQmFsYW5jZQFFAThEZXBvc2l0QmFsYW5jZQFFARRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2VFAQEcQmFsYW5jZQABGHN0YXR1c5UJATRBY2NvdW50U3RhdHVzAAEYcmVhc29umQkBqEV4aXN0ZW5jZVJlYXNvbjxEZXBvc2l0QmFsYW5jZSwgQWNjb3VudElkPgABFGV4dHJhEAEURXh0cmEAAJUJDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAJkJDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQFFASRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAEUBARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAABFAQEcQmFsYW5jZQAEAACdCQAABAxxAQQEAKEJDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAUUBOERlcG9zaXRCYWxhbmNlAUUBAAgBGGFtb3VudEUBARxCYWxhbmNlAAEcZGVwb3NpdEUBAThEZXBvc2l0QmFsYW5jZQAApQkMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBRQE0Qm91bmRlZFN0cmluZwGpCQAUARxkZXBvc2l0RQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZakJATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sqQkBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuWQEBEGJvb2wAAKkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAArQkMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFkKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFAQVAVRoZSBhc3NldCBJRCBpcyBub3QgdGhlIG9uZSByZXF1aXJlZCBieSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdLlxBc3NldElkQWxsb2NhdGlvbkZhaWxlZAAVCDkBVGhlIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gY2Fubm90IGFsbG9jYXRlIHRoZSBhc3NldCBJRDogdGhlIGlkIHNwYWNlIGlzKGV4aGF1c3RlZC48Q29udGFpbnNGcmVlemVzABYETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABcERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABgEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrEJBBhPcHRpb24EBFQBhQkBCBBOb25lAAAAEFNvbWUEAIUJAAABAAC1CQQYT3B0aW9uBARUAaUJAQgQTm9uZQAAABBTb21lBAClCQAAAQAAuQkMUHBhbGxldF9hc3NldHNfaG9sZGVyGHBhbGxldBRFcnJvcggEVAAESQABBDBUb29NYW55SG9sZHMAAAQxAU51bWJlciBvZiBob2xkcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCB0aGUgY291bnQgb2YgYFJ1bnRpbWVIb2xkUmVhc29uYC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuvQkMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFcnJvcgQEVAABDEBVbmtub3duQXNzZXRLaW5kAAAEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAEEUQFUaGUgZ2l2ZW4gYXNzZXQgSUQgYWxyZWFkeSBoYXMgYW4gYXNzaWduZWQgY29udmVyc2lvbiByYXRlIGFuZCBjYW5ub3QgYmUgcmUtY3JlYXRlZC4gT3ZlcmZsb3cAAgTMT3ZlcmZsb3cgb2N1cnJlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBpbnZlcnNlIHJhdGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsEJDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhR0eXBlcyBQb29sSW5mbwQsUG9vbEFzc2V0SWQBOAAEASBscF90b2tlbjgBLFBvb2xBc3NldElkAADFCQg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABABhAgEcW3U4OyA4XQAAyQkMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABYEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuJFBvb2xFbXB0eQAXBDEBVGhlIHBvb2wgZXhpc3RzIGJ1dCBoYXMgbm8gbGlxdWlkaXR5IChhdCBsZWFzdCBvbmUgb2YgdGhlIHJlc2VydmVzIGlzIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7NCQQYUmVzdWx0CARUAdEJBEUByQkBCAhPawQA0QkAAAAADEVycgQAyQkAAAEAANEJAAAECEUBRQEA1QkAAAQIOAQA2QkAAAQMOAQEAN0JDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABZChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEFQFUaGUgYXNzZXQgSUQgaXMgbm90IHRoZSBvbmUgcmVxdWlyZWQgYnkgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXS5cQXNzZXRJZEFsbG9jYXRpb25GYWlsZWQAFQg5AVRoZSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGNhbm5vdCBhbGxvY2F0ZSB0aGUgYXNzZXQgSUQ6IHRoZSBpZCBzcGFjZSBpcyhleGhhdXN0ZWQuPENvbnRhaW5zRnJlZXplcwAWBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAXBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAYBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7hCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AADlCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAekJBFMAAAQA7QkBGFZlYzxUPgAA6QkMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0NENhbmRpZGF0ZUluZm8IJEFjY291bnRJZAEEHEJhbGFuY2UBRQEACAEMd2hvBAEkQWNjb3VudElkAAEcZGVwb3NpdEUBARxCYWxhbmNlAADtCQAAAukJAPEJDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFcnJvcgQEVAABRERUb29NYW55Q2FuZGlkYXRlcwAABIxUaGUgcGFsbGV0IGhhcyB0b28gbWFueSBjYW5kaWRhdGVzLlxUb29GZXdFbGlnaWJsZUNvbGxhdG9ycwABBKxMZWF2aW5nIHdvdWxkIHJlc3VsdCBpbiB0b28gZmV3IGNhbmRpZGF0ZXMuQEFscmVhZHlDYW5kaWRhdGUAAgR8QWNjb3VudCBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLjBOb3RDYW5kaWRhdGUAAwRsQWNjb3VudCBpcyBub3QgYSBjYW5kaWRhdGUuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAQEhFRoZXJlIGFyZSB0b28gbWFueSBJbnZ1bG5lcmFibGVzLkxBbHJlYWR5SW52dWxuZXJhYmxlAAUEjEFjY291bnQgaXMgYWxyZWFkeSBhbiBJbnZ1bG5lcmFibGUuPE5vdEludnVsbmVyYWJsZQAGBHxBY2NvdW50IGlzIG5vdCBhbiBJbnZ1bG5lcmFibGUuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAcEnEFjY291bnQgaGFzIG5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElELlhWYWxpZGF0b3JOb3RSZWdpc3RlcmVkAAgEjFZhbGlkYXRvciBJRCBpcyBub3QgeWV0IHJlZ2lzdGVyZWQubEluc2VydFRvQ2FuZGlkYXRlTGlzdEZhaWxlZAAJBJxDb3VsZCBub3QgaW5zZXJ0IGluIHRoZSBjYW5kaWRhdGUgbGlzdC50UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQACgSkQ291bGQgbm90IHJlbW92ZSBmcm9tIHRoZSBjYW5kaWRhdGUgbGlzdC40RGVwb3NpdFRvb0xvdwALBPROZXcgZGVwb3NpdCBhbW91bnQgd291bGQgYmUgYmVsb3cgdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQuZFVwZGF0ZUNhbmRpZGF0ZUxpc3RGYWlsZWQADASQQ291bGQgbm90IHVwZGF0ZSB0aGUgY2FuZGlkYXRlIGxpc3QuQEluc3VmZmljaWVudEJvbmQADQQpAURlcG9zaXQgYW1vdW50IGlzIHRvbyBsb3cgdG8gdGFrZSB0aGUgdGFyZ2V0J3Mgc2xvdCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QuUFRhcmdldElzTm90Q2FuZGlkYXRlAA4ELQFUaGUgdGFyZ2V0IGFjY291bnQgdG8gYmUgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGlzIG5vdCBhIGNhbmRpZGF0ZS5ASWRlbnRpY2FsRGVwb3NpdAAPBA0BVGhlIHVwZGF0ZWQgZGVwb3NpdCBhbW91bnQgaXMgZXF1YWwgdG8gdGhlIGFtb3VudCBhbHJlYWR5IHJlc2VydmVkLkBJbnZhbGlkVW5yZXNlcnZlABAEPQFDYW5ub3QgbG93ZXIgY2FuZGlkYWN5IGJvbmQgd2hpbGUgb2NjdXB5aW5nIGEgZnV0dXJlIGNvbGxhdG9yIHNsb3QgaW4gdGhlIGxpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvUJAAAC+QkA+QkAAAQIBN0BAP0JAAACAQoAAQoAAAQIOAUKAAUKDChzcF9zdGFraW5nHG9mZmVuY2U8T2ZmZW5jZVNldmVyaXR5AAAEAAkKARxQZXJiaWxsAAAJCgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmJpbGwAAAQAOAEMdTMyAAANCgAABAgRChgAEQoMHHNwX2NvcmUYY3J5cHRvJEtleVR5cGVJZAAABABwARxbdTg7IDRdAAAVCgw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEVycm9yBARUAAEUMEludmFsaWRQcm9vZgAABGBJbnZhbGlkIG93bmVyc2hpcCBwcm9vZi5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQScTm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQgZm9yIGFjY291bnQuNER1cGxpY2F0ZWRLZXkAAgRkUmVnaXN0ZXJlZCBkdXBsaWNhdGUga2V5LhhOb0tleXMAAwSkTm8ga2V5cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjb3VudC4kTm9BY2NvdW50AAQEGQFLZXkgc2V0dGluZyBhY2NvdW50IGlzIG5vdCBsaXZlLCBzbyBpdCdzIGltcG9zc2libGUgdG8gYXNzb2NpYXRlIGtleXMuBHRFcnJvciBmb3IgdGhlIHNlc3Npb24gcGFsbGV0LhkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB4QEEUwAABAAdCgEYVmVjPFQ+AAAdCgAAAuEBACEKCEhzcF9jb25zZW5zdXNfc2xvdHMQU2xvdAAABAAoAQx1NjQAACUKAAAECCEKOAApCgxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBnARTAAAEAC0KASxCVHJlZVNldDxUPgAALQoEIEJUcmVlU2V0BARUAZwABAAhCQAAADEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBNQoEUwAABABBCgEYVmVjPFQ+AAA1CghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAcASRyZWNpcGllbnScARhQYXJhSWQAARRzdGF0ZTkKATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdFkBARBib29sAAEsZmlyc3RfaW5kZXjNAwEMdTE2AAEobGFzdF9pbmRleM0DAQx1MTYAARRmbGFncz0KAVBPdXRib3VuZENoYW5uZWxGbGFncwABMHF1ZXVlZF9ieXRlczgBDHUzMgAAOQoIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAPQoIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAEEKAAACNQoARQoAAAQInM0DAEkKDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAATQoIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAAUQoMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuVQoMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcu0BAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXJZCgFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeV0KAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbu0BAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZVkBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2VlCgFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAFkKBBhPcHRpb24EBFQB7QEBCBBOb25lAAAAEFNvbWUEAO0BAAABAABdCgQYT3B0aW9uBARUAWEKAQgQTm9uZQAAABBTb21lBABhCgAAAQAAYQoAAAQIDAwAZQoIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQAaQIBMHYzOjpSZXNwb25zZQADAAhWNAQA2QIBMHY0OjpSZXNwb25zZQAEAAhWNQQAJQMBMHY1OjpSZXNwb25zZQAFAABpCgAABAg47QEAbQoAAAQMKHkCOABxCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUKBFMAAAQAeQoBGFZlYzxUPgAAdQoAAAQI7QE4AHkKAAACdQoAfQoMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQAJQYBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAACBCgAABAw4BLEDAIUKDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyARAwTWF4Q29uc3VtZXJzAAAQARhhbW91bnRFAQEQdTEyOAABFG93bmVy7QEBRFZlcnNpb25lZExvY2F0aW9uAAEYbG9ja2Vy7QEBRFZlcnNpb25lZExvY2F0aW9uAAEkY29uc3VtZXJziQoB0EJvdW5kZWRWZWM8KENvbnN1bWVySWRlbnRpZmllciwgdTEyOCksIE1heENvbnN1bWVycz4AAIkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBjQoEUwAABACRCgEYVmVjPFQ+AACNCgAABAgQRQEAkQoAAAKNCgCVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZkKBFMAAAQAnQoBGFZlYzxUPgAAmQoAAAQIRQHtAQCdCgAAApkKAKEKCChwYWxsZXRfeGNtWEF1dGhvcml6ZWRBbGlhc2VzRW50cnkIGFRpY2tldAGlCgxNQVgBqQoACAEgYWxpYXNlcnOtCgF4Qm91bmRlZFZlYzxPcmlnaW5BbGlhc2VyLCBNQVg+AAEYdGlja2V0pQoBGFRpY2tldAAApQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQARQEBKEY6OkJhbGFuY2UAAKkKDChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAACtCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEKBFMAAAQAtQoBGFZlYzxUPgAAsQoMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9u7QEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5tQMBLE9wdGlvbjx1NjQ+AAC1CgAAArEKALkKDChwYWxsZXRfeGNtGHBhbGxldBRFcnJvcgQEVAABcCxVbnJlYWNoYWJsZQAACF0BVGhlIGRlc2lyZWQgZGVzdGluYXRpb24gd2FzIHVucmVhY2hhYmxlLCBnZW5lcmFsbHkgYmVjYXVzZSB0aGVyZSBpcyBhIG5vIHdheSBvZiByb3V0aW5nGHRvIGl0LixTZW5kRmFpbHVyZQABCEEBVGhlcmUgd2FzIHNvbWUgb3RoZXIgaXNzdWUgKGkuZS4gbm90IHRvIGRvIHdpdGggcm91dGluZykgaW4gc2VuZGluZyB0aGUgbWVzc2FnZS7IUGVyaGFwcyBhIGxhY2sgb2Ygc3BhY2UgZm9yIGJ1ZmZlcmluZyB0aGUgbWVzc2FnZS4gRmlsdGVyZWQAAgScVGhlIG1lc3NhZ2UgZXhlY3V0aW9uIGZhaWxzIHRoZSBmaWx0ZXIuSFVud2VpZ2hhYmxlTWVzc2FnZQADBLRUaGUgbWVzc2FnZSdzIHdlaWdodCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC5gRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAQE3FRoZSBkZXN0aW5hdGlvbiBgTG9jYXRpb25gIHByb3ZpZGVkIGNhbm5vdCBiZSBpbnZlcnRlZC4URW1wdHkABQSAVGhlIGFzc2V0cyB0byBiZSBzZW50IGFyZSBlbXB0eS44Q2Fubm90UmVhbmNob3IABgQ1AUNvdWxkIG5vdCByZS1hbmNob3IgdGhlIGFzc2V0cyB0byBkZWNsYXJlIHRoZSBmZWVzIGZvciB0aGUgZGVzdGluYXRpb24gY2hhaW4uNFRvb01hbnlBc3NldHMABwTEVG9vIG1hbnkgYXNzZXRzIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLjRJbnZhbGlkT3JpZ2luAAgEeE9yaWdpbiBpcyBpbnZhbGlkIGZvciBzZW5kaW5nLihCYWRWZXJzaW9uAAkEIQFUaGUgdmVyc2lvbiBvZiB0aGUgYFZlcnNpb25lZGAgdmFsdWUgdXNlZCBpcyBub3QgYWJsZSB0byBiZSBpbnRlcnByZXRlZC4sQmFkTG9jYXRpb24ACghBAVRoZSBnaXZlbiBsb2NhdGlvbiBjb3VsZCBub3QgYmUgdXNlZCAoZS5nLiBiZWNhdXNlIGl0IGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlYGRlc2lyZWQgdmVyc2lvbiBvZiBYQ00pLjhOb1N1YnNjcmlwdGlvbgALBLxUaGUgcmVmZXJlbmNlZCBzdWJzY3JpcHRpb24gY291bGQgbm90IGJlIGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAAMBBEBVGhlIGxvY2F0aW9uIGlzIGludmFsaWQgc2luY2UgaXQgYWxyZWFkeSBoYXMgYSBzdWJzY3JpcHRpb24gZnJvbSB1cy5YQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAANBCkBQ291bGQgbm90IGNoZWNrLW91dCB0aGUgYXNzZXRzIGZvciB0ZWxlcG9ydGF0aW9uIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4oTG93QmFsYW5jZQAOBEEBVGhlIG93bmVyIGRvZXMgbm90IG93biAoYWxsKSBvZiB0aGUgYXNzZXQgdGhhdCB0aGV5IHdpc2ggdG8gZG8gdGhlIG9wZXJhdGlvbiBvbi4wVG9vTWFueUxvY2tzAA8EwFRoZSBhc3NldCBvd25lciBoYXMgdG9vIG1hbnkgbG9ja3Mgb24gdGhlIGFzc2V0LkxBY2NvdW50Tm90U292ZXJlaWduABAEMQFUaGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYW4gaWRlbnRpZmlhYmxlIHNvdmVyZWlnbiBhY2NvdW50IGZvciBhbnkgbG9jYXRpb24uKEZlZXNOb3RNZXQAEQQpAVRoZSBvcGVyYXRpb24gcmVxdWlyZWQgZmVlcyB0byBiZSBwYWlkIHdoaWNoIHRoZSBpbml0aWF0b3IgY291bGQgbm90IG1lZXQuMExvY2tOb3RGb3VuZAASBPRBIHJlbW90ZSBsb2NrIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBjb3VsZCBub3QgYmUgZm91bmQuFEluVXNlABMESQFUaGUgdW5sb2NrIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCBiZWNhdXNlIHRoZXJlIGFyZSBzdGlsbCBjb25zdW1lcnMgb2YgdGhlIGxvY2suaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlABUE8EludmFsaWQgYXNzZXQsIHJlc2VydmUgY2hhaW4gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIGl0LnhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAFgRFAUludmFsaWQgYXNzZXQsIGRvIG5vdCBzdXBwb3J0IHJlbW90ZSBhc3NldCByZXNlcnZlcyB3aXRoIGRpZmZlcmVudCBmZWVzIHJlc2VydmVzLjxUb29NYW55UmVzZXJ2ZXMAFwRJAVRvbyBtYW55IGFzc2V0cyB3aXRoIGRpZmZlcmVudCByZXNlcnZlIGxvY2F0aW9ucyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci5gTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlABgEfExvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZS5gVG9vTWFueUF1dGhvcml6ZWRBbGlhc2VzABkEuFRvbyBtYW55IGxvY2F0aW9ucyBhdXRob3JpemVkIHRvIGFsaWFzIG9yaWdpbi40RXhwaXJlc0luUGFzdAAaBIxFeHBpcnkgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LjRBbGlhc05vdEZvdW5kABsE0FRoZSBhbGlhcyB0byByZW1vdmUgYXV0aG9yaXphdGlvbiBmb3Igd2FzIG5vdCBmb3VuZC6ETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yCAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3K9CgE4RXhlY3V0aW9uRXJyb3IAHAg1AUxvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZSB3aXRoIHRoZSBhY3R1YWwgWENNIGVycm9yIGFuZCB0aGUgaW5kZXggb2YgdGhliGluc3RydWN0aW9uIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuvQoMKHBhbGxldF94Y20YZXJyb3JzOEV4ZWN1dGlvbkVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAwQoIUHBhbGxldF9tZXNzYWdlX3F1ZXVlJEJvb2tTdGF0ZQQ0TWVzc2FnZU9yaWdpbgHBAwAYARRiZWdpbjgBJFBhZ2VJbmRleAABDGVuZDgBJFBhZ2VJbmRleAABFGNvdW50OAEkUGFnZUluZGV4AAFAcmVhZHlfbmVpZ2hib3Vyc8UKAYRPcHRpb248TmVpZ2hib3VyczxNZXNzYWdlT3JpZ2luPj4AATRtZXNzYWdlX2NvdW50KAEMdTY0AAEQc2l6ZSgBDHU2NAAAxQoEGE9wdGlvbgQEVAHJCgEIEE5vbmUAAAAQU29tZQQAyQoAAAEAAMkKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZShOZWlnaGJvdXJzBDRNZXNzYWdlT3JpZ2luAcEDAAgBEHByZXbBAwE0TWVzc2FnZU9yaWdpbgABEG5leHTBAwE0TWVzc2FnZU9yaWdpbgAAzQoAAAQIwQM4ANEKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRBQYWdlCBBTaXplATggSGVhcFNpemUAABgBJHJlbWFpbmluZzgBEFNpemUAAThyZW1haW5pbmdfc2l6ZTgBEFNpemUAASxmaXJzdF9pbmRleDgBEFNpemUAARRmaXJzdDgBEFNpemUAARBsYXN0OAEQU2l6ZQABEGhlYXDVCgGcQm91bmRlZFZlYzx1OCwgSW50b1UzMjxIZWFwU2l6ZSwgU2l6ZT4+AADVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AANkKDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAASQsTm90UmVhcGFibGUAAAhJAVBhZ2UgaXMgbm90IHJlYXBhYmxlIGJlY2F1c2UgaXQgaGFzIGl0ZW1zIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgYW5kIGlzIG5vdCBvbGQcZW5vdWdoLhhOb1BhZ2UAAQSEUGFnZSB0byBiZSByZWFwZWQgZG9lcyBub3QgZXhpc3QuJE5vTWVzc2FnZQACBKhUaGUgcmVmZXJlbmNlZCBtZXNzYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5AQWxyZWFkeVByb2Nlc3NlZAADBAEBVGhlIG1lc3NhZ2Ugd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGFnYWluLhhRdWV1ZWQABASsVGhlIG1lc3NhZ2UgaXMgcXVldWVkIGZvciBmdXR1cmUgZXhlY3V0aW9uLkhJbnN1ZmZpY2llbnRXZWlnaHQABQQZAVRoZXJlIGlzIHRlbXBvcmFyaWx5IG5vdCBlbm91Z2ggd2VpZ2h0IHRvIGNvbnRpbnVlIHNlcnZpY2luZyBtZXNzYWdlcy5gVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAYQqFRoaXMgbWVzc2FnZSBpcyB0ZW1wb3JhcmlseSB1bnByb2Nlc3NhYmxlLgBZAVN1Y2ggZXJyb3JzIGFyZSBleHBlY3RlZCwgYnV0IG5vdCBndWFyYW50ZWVkLCB0byByZXNvbHZlIHRoZW1zZWx2ZXMgZXZlbnR1YWxseSB0aHJvdWdoJHJldHJ5aW5nLixRdWV1ZVBhdXNlZAAHDOxUaGUgcXVldWUgaXMgcGF1c2VkIGFuZCBubyBtZXNzYWdlIGNhbiBiZSBleGVjdXRlZCBmcm9tIGl0LgAdAVRoaXMgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSBhbmQgbWF5IHJlc29sdmUgaW4gdGhlIGZ1dHVyZSBieSByZS10cnlpbmcuTFJlY3Vyc2l2ZURpc2FsbG93ZWQACAQxAUFub3RoZXIgY2FsbCBpcyBpbiBwcm9ncmVzcyBhbmQgbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB0aGlzIGNhbGwgY2FuIGhhcHBlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu3QoMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QoAAAQIBAgA5QoIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAUUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbjkEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdEUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxz6QoBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AADpCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AADtCgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvEKDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQu9QoAAAQI+QpFAQD5CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0KBFMAAAQAAQsBGFZlYzxUPgAA/QoIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQFJBCxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZUkEASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAAABCwAAAv0KAAULAAAECAkLRQEACQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAENCwRTAAAEABELARhWZWM8VD4AAA0LCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBBBBIYXNoATwsQmxvY2tOdW1iZXIBOAAMARByZWFsBAEkQWNjb3VudElkAAEkY2FsbF9oYXNoPAEQSGFzaAABGGhlaWdodDgBLEJsb2NrTnVtYmVyAAARCwAAAg0LABULDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZCwxMaW5kaXZfcGFsbGV0X3Blb3BsZRR0eXBlczBQZXJzb25SZWNvcmQIGE1lbWJlcgEIJEFjY291bnRJZAEEAAgBDGtleQgBGE1lbWJlcgABHGFjY291bnQ1AQFET3B0aW9uPEFjY291bnRJZD4AAB0LDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBRFcnJvcgQEVAABlCROb3RQZXJzb24AAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgcGVyc29uLhROb0tleQABBJxUaGUgZ2l2ZW4gcGVyc29uIGhhcyBubyBhc3NvY2lhdGVkIGtleS44SW52YWxpZENvbnRleHQAAgQpAVRoZSBjb250ZXh0IGlzIG5vdCBhIG1lbWJlciBvZiB0aG9zZSBhbGxvd2VkIHRvIGhhdmUgYWNjb3VudCBhbGlhc2VzIGhlbGQuOEludmFsaWRBY2NvdW50AAMEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi4wQWNjb3VudEluVXNlAAQEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuMEludmFsaWRQcm9vZgAFBFRUaGUgcHJvb2YgaXMgaW52YWxpZC5ASW52YWxpZFNpZ25hdHVyZQAGBGRUaGUgc2lnbmF0dXJlIGlzIGludmFsaWQuJE5vTWVtYmVycwAHBNBUaGVyZSBhcmUgbm90IHlldCBhbnkgbWVtYmVycyBvZiBvdXIgcGVyc29uaG9vZCBzZXQuKEluY29tcGxldGUACAQFAVRoZSByb290IGNhbm5vdCBiZSBmaW5hbGl6ZWQgYXMgdGhlcmUgYXJlIHN0aWxsIHVucHVzaGVkIG1lbWJlcnMuKFN0aWxsRnJlc2gACQRgVGhlIHJvb3QgaXMgc3RpbGwgZnJlc2guOFRvb01hbnlNZW1iZXJzAAoEiFRvbyBtYW55IG1lbWJlcnMgaGF2ZSBiZWVuIHB1c2hlZC48S2V5QWxyZWFkeUluVXNlAAsElEtleSBhbHJlYWR5IGluIHVzZSBieSBhbm90aGVyIHBlcnNvbi4sS2V5Tm90Rm91bmQADASgVGhlIG9sZCBrZXkgd2FzIG5vdCBmb3VuZCB3aGVuIGV4cGVjdGVkLjBDb3VsZE5vdFB1c2gADQSQQ291bGQgbm90IHB1c2ggbWVtYmVyIGludG8gdGhlIHJpbmcuHFNhbWVLZXkADgSUVGhlIHJlY29yZCBpcyBhbHJlYWR5IHVzaW5nIHRoaXMga2V5LlRQZXJzb25hbElkTm90UmVzZXJ2ZWQADwR0UGVyc29uYWwgSWQgd2FzIG5vdCByZXNlcnZlZC6AUGVyc29uYWxJZFJlc2VydmF0aW9uQ2Fubm90UmVuZXcAEASQUGVyc29uYWwgSWQgaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQukFBlcnNvbmFsSWROb3RSZXNlcnZlZE9yTm90UmVjb2duaXplZAARBNxQZXJzb25hbCBJZCB3YXMgbm90IHJlc2VydmVkIG9yIG5vdCBhbHJlYWR5IHJlY29nbml6ZWQuLEludmFsaWRSaW5nABIErFJpbmcgY2Fubm90IGJlIG1lcmdlZCBpZiBpdCdzIHRoZSB0b3AgcmluZy5IU3VzcGVuc2lvbnNQZW5kaW5nABME5FJpbmcgY2Fubm90IGJlIGJ1aWx0IHdoaWxlIHRoZXJlIGFyZSBzdXNwZW5zaW9ucyBwZW5kaW5nLlxSaW5nQWJvdmVNZXJnZVRocmVzaG9sZAAUBNRSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyBub3QgYmVsb3cgMS8yIGNhcGFjaXR5LkhJbnZhbGlkU3VzcGVuc2lvbnMAFQSgU3VzcGVuc2lvbiBpbmRpY2VzIHByb3ZpZGVkIGFyZSBpbnZhbGlkLkROb011dGF0aW9uU2Vzc2lvbgAWBDUBQW4gbXV0YXRpbmcgYWN0aW9uIHdhcyBxdWV1ZWQgd2hlbiB0aGVyZSB3YXMgbm8gbXV0YXRpb24gc2Vzc2lvbiBpbiBwcm9ncmVzcy5wQ291bGROb3RTdGFydE11dGF0aW9uU2Vzc2lvbgAXBKRBbiBtdXRhdGluZyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBzdGFydGVkLmxTdXNwZW5zaW9uU2Vzc2lvbkluUHJvZ3Jlc3MAGAT0Q2Fubm90IG1lcmdlIHJpbmdzIHdoaWxlIGEgc3VzcGVuc2lvbiBzZXNzaW9uIGlzIGluIHByb2dyZXNzLjRBbGlhc05vdFN0YWxlABkEfFRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZS44VGltZU91dE9mUmFuZ2UAGgR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuWEFsaWFzQWNjb3VudEFscmVhZHlTZXQAGwTAQWxpYXMgPC0+IEFjY291bnQgaXMgYWxyZWFkeSBzZXQgYW5kIHVwIHRvIGRhdGUuME5vdFN1c3BlbmRlZAAcBNBQZXJzb25ob29kIGNhbm5vdCBiZSByZXN1bWVkIGlmIGl0IGlzIG5vdCBzdXNwZW5kZWQuJFN1c3BlbmRlZAAdBGBQZXJzb25ob29kIGlzIHN1c3BlbmRlZC5MSW52YWxpZEtleU1pZ3JhdGlvbgAeBKhJbnZhbGlkIHN0YXRlIGZvciBhdHRlbXB0ZWQga2V5IG1pZ3JhdGlvbi5MS2V5QWxyZWFkeVN1c3BlbmRlZAAfCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIHBlcnNvbiB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAgBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAIQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLnRQZW9wbGVDb2xsZWN0aW9uQWxyZWFkeUV4aXN0cwAiBLxUaGUgcGVvcGxlIGNvbGxlY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLjRBbGlhc01pc21hdGNoACMEGQFUaGUgcHJvdmlkZWQgYWxpYXMgZG9lcyBub3QgbWF0Y2ggdGhlIGFjY291bnQncyBjdXJyZW50IGFsaWFzIG1hcHBpbmcuOE5vU3RhbGVBbGlhc2VzACQEoE5vbmUgb2YgdGhlIHN1cHBsaWVkIGFsaWFzZXMgd2VyZSBzdGFsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQkTW9iQ3JlZGl0BBxCYWxhbmNlAUUBABABFHZvdGVkOAEMdTMyAAEcY2xlYW5lZDgBDHUzMgABHGNvcnJlY3Q4AQx1MzIAARhjcmVkaXRFAQEcQmFsYW5jZQAAJQsAAAQIOAgAKQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgT3BlbkNhc2UELFJ1bnRpbWVDYWxsASAADAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcZGV0YWlscy0LAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARR0YWxseUELASRWb3RlVGFsbHkAAC0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0LENhc2VEZXRhaWxzBCxSdW50aW1lQ2FsbAEgAAwBJHN0YXRlbWVudDELASRTdGF0ZW1lbnQAARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABIGNhbGxiYWNrPQsB/ENhbGxiYWNrPChDYXNlSW5kZXgsIEp1ZGdlbWVudENvbnRleHQsIEp1ZGdlbWVudCksIFJ1bnRpbWVDYWxsPgAAMQsQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkU3RhdGVtZW50AAEMKFByb29mT2ZJbmsMARhkZXNpZ241CwFUcHJvb2Zfb2ZfaW5rOjpJbmtTcGVjAAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAAUxwcm9iYWJsZV9hY2NlcHRhYmxlWQEBEGJvb2wAAABISWRlbnRpdHlDcmVkZW50aWFsCAEgcGxhdGZvcm05CwFAaWRlbnRpdHk6OlNvY2lhbAABIGV2aWRlbmNlPQUBOGlkZW50aXR5OjpEYXRhAAEANFVzZXJuYW1lVmFsaWQEASB1c2VybmFtZT0FAThpZGVudGl0eTo6RGF0YQACAAA1CxQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBwcm9vZl9vZl9pbmscSW5rU3BlYwABEEBEZXNpZ25lZEVsZWN0aXZlCADNAwEsRmFtaWx5SW5kZXgAAM0DASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAgAzQMBLEZhbWlseUluZGV4AAAIASRBY2NvdW50SWQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsCADNAwEsRmFtaWx5SW5kZXgAACgBKFBlcnNvbmFsSWQAAgAoUHJvY2VkdXJhbAgAzQMBLEZhbWlseUluZGV4AABwAThQcm9jZWR1cmFsU2VlZAADAAA5CxQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBpZGVudGl0eRhTb2NpYWwAAQwcVHdpdHRlcgQBIHVzZXJuYW1lPQUBEERhdGEAAAAYR2l0aHViBAEgdXNlcm5hbWU9BQEQRGF0YQABABxEaXNjb3JkBAE8ZGlzcGxheV9hbmRfdGFnPQUBEERhdGEAAgAAPQsQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkgQ2FsbGJhY2sIGFBhcmFtcwAsUnVudGltZUNhbGwAAAgBMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AABBCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRWb3RlVGFsbHkAAAwBDGF5ZTgBDHUzMgABDG5heTgBDHUzMgABIGNvbnRlbXB0OAEMdTMyAABFCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBSaXBlQ2FzZQQsUnVudGltZUNhbGwBIAAIARxkZXRhaWxzLQsBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABHHZlcmRpY3RhBAEkSnVkZ2VtZW50AABJCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBEb25lQ2FzZQAACAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcdmVyZGljdGEEASRKdWRnZW1lbnQAAE0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0SENyZWRpdERpc3RyaWJ1dGlvbggcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4ABQBFHJvdW5kOAEoUm91bmRJbmRleAABPGluaXRpYWxfYmFsYW5jZUUBARxCYWxhbmNlAAFEcmVtYWluaW5nX2JhbGFuY2VFAQEcQmFsYW5jZQABMHRvdGFsX3BvaW50cygBJFZvdGVDb3VudAABFHN0YXJ0OAEsQmxvY2tOdW1iZXIAAFELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQsEUwAABABZCwEYVmVjPFQ+AABVCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBKFJvdW5kSW5kZXgAAUBhbW91bnRfcGVyX3JvdW5kRQEBHEJhbGFuY2UAARhwZXJpb2Q4ASxCbG9ja051bWJlcgAAWQsAAAJVCwBdCww0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAGELDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEVycm9yBARUAAFUKE5vU3VjaENhc2UAAARgVGhlIGNhc2UgZG9lcyBub3QgZXhpc3QuKE5vU3VjaFZvdGUAAQRgVGhlIHZvdGUgZG9lcyBub3QgZXhpc3QuHE5vdE9wZW4AAgRUVGhlIGNhc2UgaXMgbm90IG9wZW4uHE5vdFJpcGUAAwRUVGhlIGNhc2UgaXMgbm90IHJpcGUuHE5vdERvbmUABARkVGhlIGNhc2UgaXMgbm90IHlldCBkb25lLihDb2RlY0Vycm9yAAUEVQFUaGUgZGVjb2RlIG9mIHRoZSBjYWxsIGZhaWxlZC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/NERpc3BhdGNoRXJyb3IABgRNAVRoZSBjYWxsIGZhaWxlZCB0byBkaXNwYXRjaC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/GFJlY2VudAAHBJBUaGUgY2FzZSBpcyB0b28gcmVjZW50IHRvIGJlIHJlYXBlZC4gTm9DcmVkaXQACASgTm90IGVub3VnaCBjcmVkaXQgdG8gcGF5b3V0IHRoZSByZXdhcmRzLiBOb1Jld2FyZAAJBNRObyBtb2IgY3JlZGl0IGRpc3RyaWJ1dGlvbiBpbiBwbGFjZSB0byByZXdhcmQgdm90ZXJzLiBOb1BvaW50cwAKBKBObyBwb2ludHMgdG8gYmUgY29udmVydGVkIHRvIG1vYiBjcmVkaXQuNFRvb01hbnlDbGFpbXMACwRUVG9vIG1hbnkgdm90ZSBjbGFpbXMuIE5vUGF5b3V0AAwEWE5vIHBheW91dCBpbiBwcm9ncmVzcy5IQXJpdGhtZXRpY092ZXJmbG93AA0EtFRoZSBwb2ludCBhbmQvb3IgY3JlZGl0IGFyaXRobWV0aWMgb3ZlcmZsb3dzLkBUb29NYW55U2NoZWR1bGVzAA4EgFRvbyBtYW55IHBheW91dCByb3VuZCBzY2hlZHVsZXMuKE5vU2NoZWR1bGUADwR8Tm8gcGF5b3V0IHJvdW5kIHNjaGVkdWxlIGZvdW5kLiROb1BlbmFsdHkAEARYTm8gdm90ZSBwZW5hbHR5IGZvdW5kLhRFYXJseQARBJRUaGUgdm90ZSBwZW5hbHR5IGhhcyBub3QgZXhwaXJlZCB5ZXQuMFVuZGVyUGVuYWx0eQASBOhUaGUgdm90ZSBjYW5ub3QgYmUgY2FzdCBkdWUgdG8gYSB2b3RpbmcgcGVuYWx0eSBpbiBlZmZlY3QuWENhc2VFeHBpcmF0aW9uRGlzYWJsZWQAEwQdAVRoZSBvcGVuIGNhc2UgZXhwaXJhdGlvbiBpcyBkaXNhYmxlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGFjdGl2ZSB2b3RlcnMuUENhbGxiYWNrV2VpZ2h0VG9vTG93ABQIRQFUaGUgZGlzcGF0Y2hlZCBjYWxsYmFjaydzIHdlaWdodCBleGNlZWRzIHRoZSBkZWNsYXJlZCBgbWF4X2NhbGxiYWNrX3dlaWdodGAgdXBwZXIYYm91bmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRDYW5kaWRhdGUQLEp1ZGdlbWVudElkATgcRGVwb3NpdAFpCyxCbG9ja051bWJlcgE4JEFjY291bnRJZAEEAQwcQXBwbGllZAwBEGNyZWRtCwGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABHGVudHJvcHkIARxFbnRyb3B5AAE0ZW50cm9weV9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAIFNlbGVjdGVkIAEUc2luY2U4ASxCbG9ja051bWJlcgABEGNyZWRtCwGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABIHJlc2VydmVkKAEoUGVyc29uYWxJZAABHGVudHJvcHkIARxFbnRyb3B5AAEYZGVzaWduNQsBHElua1NwZWMAAShhbGxvY2F0aW9ucQsBKEFsbG9jYXRpb24AARxqdWRnaW5n5AFMT3B0aW9uPEp1ZGdlbWVudElkPgABGGZhaWxlZDgBHENvdW50ZXIAAQAYUHJvdmVuEAEYZGVzaWduNQsBHElua1NwZWMAASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAATB3YXNfcmVmZXJyZWRZAQEQYm9vbAABLHdhc19pbnZpdGVkWQEBEGJvb2wAAgAAaQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQARQEBKEY6OkJhbGFuY2UAAG0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCxDcmVkaWJpbGl0eQwcRGVwb3NpdAFpCyhQZXJzb25hbElkASgkQWNjb3VudElkAQQBDCBSZWZlcnJlZAQAKAEoUGVyc29uYWxJZAAAABxEZXBvc2l0BABpCwEcRGVwb3NpdAABABxJbnZpdGVkBAAEASRBY2NvdW50SWQAAgAAcQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0KEFsbG9jYXRpb24AAQwcSW5pdGlhbAAAACBJbml0RG9uZQABABBGdWxsAAIAAHULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhQZXJzb24EPEJvdW5kZWRBY2NvdW50cwF5CwAkARhkZXNpZ259CwE8T3B0aW9uPElua1NwZWM+AAFAYWN0aXZlX3JlZmVycmFsc3kLATxCb3VuZGVkQWNjb3VudHMAAWBhbGxvd2VkX3JlZmVycmFsX3RpY2tldHM4ARxDb3VudGVyAAE0YmFkX3JlZmVycmFsczgBHENvdW50ZXIAAVBzdWNjZXNzZnVsX3JlZmVycmFsczgBHENvdW50ZXIAASRyZWZlcnJhbHM4ARxDb3VudGVyAAEsZGVyaXZhdGl2ZXM4ARxDb3VudGVyAAEYYmFubmVkWQEBEGJvb2wAAWBwZW5kaW5nX3JlZmVycmFsX3Jld2FyZHM4ARxDb3VudGVyAAB5CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AAB9CwQYT3B0aW9uBARUATULAQgQTm9uZQAAABBTb21lBAA1CwAAAQAAgQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFCwRTAAAEAIkLARhWZWM8VD4AAIULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDhSZWZlcnJhbFRpY2tldAQYVGlja2V0AQQABAEYdGlja2V0BAEYVGlja2V0AACJCwAAAoULAI0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhGYW1pbHkAAAgBEGtpbmSBBAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQAAJELAAAECM0DzQMAlQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MERlc2lnblN0YXR1cwABCCBSZXNlcnZlZAAAACRDb21taXR0ZWQAAQAAmQsAAAQIBAQAnQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0FEVycm9yBARUAAGgKEluUHJvZ3Jlc3MAAATMQWNjb3VudCBpcyBhbHJlYWR5IGFwcGx5aW5nIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuKE5vUmVmZXJyYWwAAQR4QWNjb3VudCBoYXMgbm90IGJlZW4gcmVmZXJyZWQuKEJhZENvbnRleHQAAgToVGhlIGNhbGxiYWNrIGNvbnRleHQgaXMgaW52YWxpZDsgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLkxVbmV4cGVjdGVkSnVkZ2VtZW50AAMEIQFUaGUgaW5jb21pbmcganVkZ2VtZW50IElEIGlzIG5vdCB3aGF0IHdlIHdlcmUgZXhwZWN0aW5nIGZvciB0aGUgYWNjb3VudC4YTm9BcmdzAAQEuE5vIGFyZ3VtZW50cyB3ZXJlIHN1cHBsaWVkIHdpdGggdGhlIGp1ZGdlbWVudC4oTm90QXBwbGllZAAFBMxUaGUgYWNjb3VudCBoYXMgbm90IGFwcGxpZWQgdG8gbWFrZSBhIHByb29mLW9mLWluay4sTm90U2VsZWN0ZWQABgSwVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGNvbW1pdHRlZCB0byBhIGRlc2lnbi4kTm90UHJvdmVuAAcErFRoZSBjYW5kaWRhdGUgZGlkIG5vdCBwcm92ZSB0aGVtc2VsdmVzIHlldC44QWxyZWFkeVN0YXJ0ZWQACATIVGhlIGNhbmRpZGF0ZSBoYXMgYWxyZWFkeSBzdGFydGVkIHRoZWlyIGp1ZGdlbWVudC4oT3V0T2ZSYW5nZQAJBIBUaGUgcGVyc29uYWwgSUQgaXMgbm90IGluIHJhbmdlLjBBbHJlYWR5VGFrZW4ACgScVGhlIHBlcnNvbmFsIElEIGhhcyBhbHJlYWR5IGJlZW4gdGFrZW4uPE5vTW9yZVJlZmVycmFscwALBLhUaGUgcGVyc29uIGhhcyBubyBtb3JlIHJlZmVycmFscyBsZWZ0IHRvIGdpdmUuIFRvb0Vhcmx5AAwEYFRoZSByZXJvbGwgaXMgdG9vIGVhcmx5LjREZXNpZ25JbnZhbGlkAA0EoFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBub3QgcHJvY2VkdXJhbC4sRGVzaWduVGFrZW4ADgScVGhlIHJlZmVycmVyJ3MgZGVzaWduIGlzIGFscmVhZHkgdGFrZW4uJEJhZFBhcmVudAAPBBUBVGhlIHJlZmVycmVyIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgcGVyc29uLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJEJhZEZhbWlseQAQBIBUaGUgZGVzaWduIGZhbWlseSBkb2Vzbid0IGV4aXN0LixXcm9uZ0ZhbWlseQARBLRUaGUgZGVzaWduIGZhbWlseSBpcyBpbnZhbGlkIGZvciB0aGlzIGNob2ljZS4sSW5kZXhUb29CaWcAEgRBAVRoZSBpbmRleCBvZiB0aGUgZGVzaWduIG9yIHZhcmlhbnQgaXMgYmV5b25kIHRoZSBhbGxvd2VkIG1heGltdW0gZm9yIHRoZSBmYW1pbHkuEEJ1c3kAEwT4VGhlIHN5c3RlbSBpcyBidXN5IHdpdGggdG9vIG1hbnkgY29tbWl0bWVudHM7IHRyeSBhZ2FpbiBsYXRlci4YQmFubmVkABQEqFRoZSBwZXJzb24gaGFzIGJlZW4gYmFubmVkIGZyb20gcmVmZXJyaW5nLihJbXByb2JhYmxlABUEJQFUaGUgY2FuZGlkYXRlIGhhcyBub3QgZGVtb25zdHJhdGVkIHByb2JhYmx5IHRocm91Z2ggdGhlIGluaXRpYWwgZXZpZGVuY2UuKElkUmVzZXJ2ZWQAFgTAVGhlIHBlcnNvbmFsIGlkZW50aXR5IGhhcyBhbHJlYWR5IGJlZW4gcmVzZXJ2ZWQuGElkVXNlZAAXBOhUaGUgcGVyc29uYWwgaWRlbnRpdHkgaXMgYWxyZWFkeSB0YWtlbiBieSBhIHByb3ZlbiBwZXJzb24uNEludmFsaWRUaWNrZXQAGAR8VGhlIHRpY2tldCBwcm92aWRlZCBpcyBpbnZhbGlkLiBOb1RpY2tldAAZBPBUaGUgY2FsbGVyIGhhcyBub3QgcHJvdmlkZWQgYSByZWZlcnJhbCBvciBpbnZpdGF0aW9uIHRpY2tldC40Tm90QXV0aG9yaXplZAAaBKRUaGUgYWNjb3VudCBpcyBub3QgYXV0aG9yaXplZCB0byBkbyB0aGlzLiROb3RQZXJzb24AGwSQVGhlIHBlcnNvbmFsIGlkZW50aXR5IGRvZXNuJ3QgZXhpc3QuRFJlZmVycmVkQ2FuZGlkYXRlABwEXQFUaGUgY2FuZGlkYXRlIGlzIHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIG5vdCBiZSByZWZlcnJlZC5QTm90UmVmZXJyZWRDYW5kaWRhdGUAHQRdAVRoZSBjYW5kaWRhdGUgaXMgbm90IHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIGJlIHJlZmVycmVkLkhOb1Jld2FyZFRvUmVnaXN0ZXIAHgSgVGhlcmUgaXMgbm8gcmVmZXJyYWwgcmV3YXJkIHRvIHJlZ2lzdGVyLkBSZXdhcmRUb1JlZ2lzdGVyAB8EBQFUaGVyZSBpcyBhIHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkIHRoYXQgbXVzdCBiZSByZWdpc3RlcmVkIGZpcnN0LiROb0ludml0ZXIAIARETm8gaW52aXRlciBmb3VuZC5ASW52YWxpZFNpZ25hdHVyZQAhBEhJbnZhbGlkIHNpZ25hdHVyZS4kTm9JbnZpdGVzACIEUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkACMEWEludml0ZSBpcyBhbHJlYWR5IHNldC4oTm9SZWZlcnJlcgAkBHRUaGUgcmVmZXJyZXIgaXMgbm90IGEgcGVyc29uLjBOb3RQb2lQZXJzb24AJQToVGhlIGluZGl2aWR1YWwgaXMgbm90IGEgcGVyc29uIHJlY29nbml6ZWQgYnkgcHJvb2Ygb2YgaW5rLlxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAAmBIhUaGUgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuaEludmFsaWRSZWltYnVyc2VtZW50VmFsdWVzACcElFRoZSByZWltYnVyc2VtZW50IHZhbHVlcyBhcmUgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuoQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzOEFyY2hpdmVkUGxheWVyBCxCbG9ja051bWJlcgE4AQggS2lja2FibGUIAShmaXJzdF9nYW1lOAEcR2FtZUlkeAABOGFyY2hpdmVkX3NpbmNlOAEsQmxvY2tOdW1iZXIAAAAoVW5raWNrYWJsZQQBKGZpcnN0X2dhbWU4ARxHYW1lSWR4AAEAAKULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhQbGF5ZXIELFBsYXlEZXBvc2l0AakLACQBKGZpcnN0X2dhbWU4ARxHYW1lSWR4AAEocmVnaXN0ZXJlZFkBARBib29sAAEsc2VudF9yZXBvcnRZAQEQYm9vbAABaGVhcmx5X2F0dGVuZGFuY2VfZW5hY3RtZW50rQsBgE9wdGlvbjxFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQ+AAEoeWVzX3BlcnNvbgwBCHU4AAE0bm9fbm90X3BlcnNvbgwBCHU4AAFgZXhwZWN0ZWRfbWF4X3ZvdGVfd2VpZ2h0zQMBDHUxNgABLHZvdGVfd2VpZ2h0DAEIdTgAASxjcmVkaWJpbGl0ebkLAXhQbGF5ZXJDcmVkaWJpbGl0eTxQbGF5RGVwb3NpdD4AAKkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAEUBAShGOjpCYWxhbmNlAACtCwQYT3B0aW9uBARUAbELAQgQTm9uZQAAABBTb21lBACxCwAAAQAAsQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzYEVhcmx5QXR0ZW5kYW5jZUVuYWN0bWVudAAACAEoYXR0ZW5kYW5jZVkBARBib29sAAEsZGlzcG9zaXRpb261CwFEUGxheWVyRGlzcG9zaXRpb24AALULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0RQbGF5ZXJEaXNwb3NpdGlvbgABDBBLZWVwAAAAPEFyY2hpdmVLaWNrYWJsZQABAERBcmNoaXZlVW5raWNrYWJsZQACAAC5CwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyQ3JlZGliaWxpdHkELFBsYXlEZXBvc2l0AakLAQwcSW52aXRlZAAAAChSZWNvZ25pemVkAAEAHERlcG9zaXQEAKkLASxQbGF5RGVwb3NpdAACAAC9CwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMgR2FtZUluZm8EJEFjY291bnRJZAEEACgBFGluZGV4OAEcR2FtZUlkeAABRHJlZ2lzdHJhdGlvbl9lbmRzOAEMdTMyAAFAc2h1ZmZsZV9kZWFkbGluZTgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAEUc3RhdGXBCwFQR2FtZVN0YXRlPEFjY291bnRJZD4AAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABGHJvdW5kcwwBCHU4AAFIcGVuZGluZ19hdHRlbmRhbmNlOAEMdTMyAAFIYWlyZHJvcHNfc2NoZWR1bGVkDAEIdTgAAMELDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyRHYW1lU3RhdGUEJEFjY291bnRJZAEEARQwUmVnaXN0cmF0aW9uBAFEbmV4dF9wbGF5ZXJfaW5kZXg4ASxQbGF5ZXJJbmRleAAAABxTaHVmZmxlBAEQc3RlcMULAVhTaHVmZmxlU3RlcDxBY2NvdW50SWQ+AAEAJFJlcG9ydGluZwQBMHBsYXllcl9jb3VudDgBDHUzMgACADRQbGF5ZXJQcm9jZXNzBAEQc3RlcNELAXBQbGF5ZXJQcm9jZXNzU3RlcDxBY2NvdW50SWQ+AAMAKENhbmNlbGxpbmcEARBzdGVw1QsBZENhbmNlbGxpbmdTdGVwPEFjY291bnRJZD4ABAAAxQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLFNodWZmbGVTdGVwBCRBY2NvdW50SWQBBAEQLFN0ZXAxSW5zZXJ0BAE4bGFzdF9pdGVyYXRpb27JCwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgAAADRTdGVwMlJldHJpZXZlCAFEbmV4dF9wbGF5ZXJfaW5kZXg4ASxQbGF5ZXJJbmRleAABFHBoYXNlzQsBUFNodWZmbGVSZXRyaWV2ZVBoYXNlAAEATFN0ZXAzQ29tcHV0ZVdlaWdodHMMAThsYXN0X2l0ZXJhdGlvbskLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAFAcmVjb2duaXplZF9jb3VudDgBDHUzMgACAERTdGVwNEF3YWl0U2Vzc2lvbgQBMHBsYXllcl9jb3VudDgBDHUzMgADAADJCwQYT3B0aW9uBARUAQkFAQgQTm9uZQAAABBTb21lBAAJBQAAAQAAzQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzUFNodWZmbGVSZXRyaWV2ZVBoYXNlAAEIKFJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAQBQHJlY29nbml6ZWRfY291bnQ4AQx1MzIAAQAA0QsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllclByb2Nlc3NTdGVwBCRBY2NvdW50SWQBBAEITFN0ZXAxUHJvY2Vzc1BsYXllcnMIAThsYXN0X2l0ZXJhdGlvbskLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAAARFN0ZXAyQ2xlYXJJbmRpY2VzAAEAANULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczhDYW5jZWxsaW5nU3RlcAQkQWNjb3VudElkAQQBCERTdGVwMURyYWluU2h1ZmZsZQAAAERTdGVwMkRyYWluUGxheWVycwQBOGxhc3RfaXRlcmF0aW9uyQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AAQAA2QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA3QsAAAQIDDgA4QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA5QsAAAQIDAgA6QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJBARTAAAEAMUEARhWZWM8VD4AAO0LAAADGwAAAAwA8QsMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBRFcnJvcgQEVAABiCxHYW1lT25nb2luZwAABDRHYW1lIG9uZ29pbmcuOE5vUmVnaXN0cmF0aW9uAAEEeE5vIHJlZ2lzdHJhdGlvbiBwaGFzZSBvbmdvaW5nLkRPdXRkYXRlZEdhbWVTZXR1cAACBFhUaGUgc2V0dXAgaXMgb3V0ZGF0ZWQuQEludmFsaWRHYW1lU2V0dXAAAwQ4SW52YWxpZCBzZXR1cC40SW52YWxpZFJlcG9ydAAEBDxJbnZhbGlkIHJlcG9ydC4YTm9HYW1lAAUEQE5vIGdhbWUgb25nb2luZy4sTm9SZXBvcnRpbmcABgRgTm8gcmVwb3J0IHBoYXNlIG9uZ29pbmcuNE5vdFJlZ2lzdGVyZWQABwQ8Tm90IHJlZ2lzdGVyZWQuREFscmVhZHlSZWdpc3RlcmVkAAgEaFBsYXllciBhbHJlYWR5IHJlZ2lzdGVyZWQuRFJlcG9ydEFscmVhZHlTZW50AAkEUFJlcG9ydCBhbHJlYWR5IHNlbnQuFEVhcmx5AAoEbE9wZXJhdGlvbiBpcyBub3QgdmFsaWQgeWV0LkROb3RLaWNrYWJsZVBsYXllcgALBJhUaGUgb3BlcmF0aW9uIGV4cGVjdCBhIHBsYXllciBhY2NvdW50LkBOb0FyY2hpdmVkUGxheWVyAAwEZE5vIGFyY2hpdmVkIHBsYXllciBmb3VuZC4gTm9UaWNrZXQADQRATm8gdGlja2V0IGZvdW5kLiROb0ludml0ZXMADgRQTm8gaW52aXRlIGF2YWlsYWJsZS44QWxyZWFkeUludml0ZWQADwRYSW52aXRlIGlzIGFscmVhZHkgc2V0LkBOb3RBY2NvdW50UGxheWVyABAE+E5vdCBhbiBhY2NvdW50IGJhc2VkIHBsYXllciwgZXhwZWN0ZWQgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIuaFVzZUludml0ZUJ1dEFscmVhZHlQbGF5aW5nABEEyFRoZSBwbGF5ZXIgY2FuJ3QgdXNlIGFuIGludml0ZSBpZiBhbHJlYWR5IHBsYXlpbmcuVEFub3RoZXJBY2NvdW50SW52aXRlZAASBE0BVGhlIGxpdGUgcGVyc29uIGFscmVhZHkgaW52aXRlZCBhbm90aGVyIGFjY291bnQsIGFuZCBpbnZpdGVzIG9ubHkgb25lIGFjY291bnQgZXZlci5QVG9vTWFueUdhbWVTY2hlZHVsZXMAEwRBAVRoZSBudW1iZXIgb2YgZXhpc3Rpbmcgc2NoZWR1bGVzIGFuZCBuZXcgc2NoZWR1bGVzIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgbGltaXQuTE5vU3VjaEdhbWVTY2hlZHVsZWQAFAQpAVRoZSBnYW1lIHRoYXQgd2FzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgd2FzIG5vdCBmb3VuZCBpbiBzY2hlZHVsZWQgZ2FtZXMugEludmFsaWRTdGF0ZW1lbnRBY2NvdW50U2lnbmF0dXJlABUErFRoZSBzdGF0ZW1lbnQgYWNjb3VudCBzaWduYXR1cmUgaXMgaW52YWxpZC5wU3RhdGVtZW50QWNjb3VudEFscmVhZHlJblVzZQAWBOxUaGUgc3RhdGVtZW50IGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2VkIGJ5IGFub3RoZXIgcGxheWVyLmRJbnRlcm5hbEVycm9ySW52YWxpZFN0YXRlABcEdEludGVybmFsIGVycm9yIGludmFsaWQgc3RhdGUuQEludmFsaWRHYW1lU3RhdGUAGATwVGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIGluIHRoZSBjdXJyZW50IGdhbWUgc3RhdGUuIE5vUGxheWVyABkEQE5vIHBsYXllciBmb3VuZC6QQ2Fubm90T2ZmYm9hcmRXaGlsZVJlZ2lzdGVyZWRGb3JHYW1lABoE3FRoZSBwbGF5ZXIgY2Fubm90IG9mZmJvYXJkIHdoaWxlIHJlZ2lzdGVyZWQgZm9yIGEgZ2FtZS4wSW52YWxpZFN0YXRlABsENEludmFsaWQgc3RhdGVISW52YWxpZFBsYXlEZXBvc2l0ABwE5GBzZXRfcGxheV9kZXBvc2l0YDogdGhlIHN1cHBsaWVkIGFtb3VudCBtdXN0IGJlIG5vbi16ZXJvLohJbnZhbGlkQWlyZHJvcFZyZlZhcmlhbnRGb3JBY2NvdW50AB0AmEludmFsaWRBaXJkcm9wVnJmVmFyaWFudEZvclJlY29nbml0aW9uAB4AWEludmFsaWRBaXJkcm9wVnJmQ291bnQAHwhFAVRoZSBudW1iZXIgb2Ygc3VwcGxpZWQgYWlyZHJvcCBWUkYgZW50cmllcyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHNjaGVkdWxlZDxhaXJkcm9wIGV2ZW50cy5UTm90RWxpZ2libGVGb3JBaXJkcm9wACAIVQFgY2xhaW1fYWlyZHJvcGA6IHRoZSBjbGFpbWFudCBpcyBub3QgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUsIG9yIHRoZWlyIG1vc3QgcmVjZW509GF0dGVuZGVkIGdhbWUgZG9lcyBub3QgbWF0Y2ggdGhlIGBnYW1lX2luZGV4YCBvZiB0aGUgYWlyZHJvcC5cQ3JlZGl0Q2FwYWNpdHlFeGhhdXN0ZWQAIQhZAWByZXBvcnRgOiBmZXdlciBORlQgY2xhaW0gY3JlZGl0cyBjYW4gYmUgcmVjb3JkZWQgcmlnaHQgbm93IHRoYW4gdGhlIHJlcG9ydCBtYXkgYXdhcmQuGQFTdWJtaXQgaXQgYWdhaW4gb25jZSBsYXRlciBibG9ja3MgaGF2ZSBjb21taXR0ZWQgdGhlIGJ1ZmZlcmVkIGNyZWRpdHMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvULDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UBRQEAJAEUc2NvcmUMAQh1OAABGHN0cmVha/kLARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3Rvcnn9CwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXRFAQEcQmFsYW5jZQABKGNhc2hlZF9vdXRZAQEQYm9vbAABSHJlYWNoZWRfcGVyc29uaG9vZFkBARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29kWQEBEGJvb2wAASxyZWNvZ25pdGlvbgEMASxSZWNvZ25pdGlvbgABSGxhc3RfYXR0ZW5kZWRfZ2FtZeQBLE9wdGlvbjx1MzI+AAD5CwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzGFN0cmVhawABCCBBdHRlbmRlZAQADAEIdTgAAAAYQWJzZW50BAAMAQh1OAABAAD9CwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzREF0dGVuZGFuY2VIaXN0b3J5AAAEAAwBCHU4AAABDAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzLFJlY29nbml0aW9uAAEQUEV4dGVybmFsbHlSZWNvZ25pemVkAAAANE5vdFJlY29nbml6ZWQAAQAkU3VzcGVuZGVkBAAoAShQZXJzb25hbElkAAIAKFJlY29nbml6ZWQEACgBKFBlcnNvbmFsSWQAAwAABQwAAAQIOAkFAAkMDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUm91bmRQYXlvdXQEHEJhbGFuY2UBRQEAEAFEcmVtYWluaW5nX2JhbGFuY2VFAQEcQmFsYW5jZQABLHBvaW50X3ByaWNlRQEBHEJhbGFuY2UAASRyZW1haW5kZXJFAQEcQmFsYW5jZQABMHRvdGFsX3BvaW50czgBDHUzMgAADQwMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyRSb3VuZEluZm8ILEJsb2NrTnVtYmVyATgcQmFsYW5jZQFFAQAIASRmaW5pc2hfYXQ4ASxCbG9ja051bWJlcgABGGNyZWRpdEUBARxCYWxhbmNlAAARDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARUMBFMAAAQAGQwBGFZlYzxUPgAAFQwMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlczhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBDHUzMgABQGFtb3VudF9wZXJfcm91bmRFAQEcQmFsYW5jZQABIGR1cmF0aW9uOAEsQmxvY2tOdW1iZXIAABkMAAACFQwAHQwMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXJyb3IEBFQAAWwkTm90UGVyc29uAAAEjFRoZSBjYWxsaW5nIG9yaWdpbiBpcyBub3QgYSBwZXJzb24uXEhhc05vdFJlYWNoZWRQZXJzb25ob29kAAEEjFRoZSBwZXJzb24gZGlkbid0IHJlYWNoIHBlcnNvbmhvb2QuIE5vUmV3YXJkAAIEUE5vIHJld2FyZCBhdmFpbGFibGUuHE5vU2NvcmUAAwSMVGhlIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBzY29yZS4oTm9TY2hlZHVsZQAEBHRObyBwYXlvdXQgc2NoZWR1bGUgYXZhaWxhYmxlLkBUb29NYW55U2NoZWR1bGVzAAUEtFRvbyBtYW55IHBheW91dCBzY2hlZHVsZXMgYWxyZWFkeSByZWdpc3RlcmVkLihSZWNvZ25pemVkAAYEBQFUaGUgcGFydGljaXBhbnQgaXMgcmVjb2duaXplZCBvciBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcGVyc29uLjxDYXNoT3V0Q29vbGRvd24ABwTMVGhlIHBhcnRpY2lwYW50IGhhcyBhbHJlYWR5IGNhc2hlZCBvdXQgaW4gdGhpcyBlcmEuYFJvdW5kT25Hb2luZ09yTm9TY2hlZHVsZQAIBJRUaGUgcm91bmQgaXMgb24gZ29pbmcgb3Igbm8gc2NoZWR1bGUuHE5vUm91bmQACQSEVGhlIHBheW91dCByb3VuZCBoYXMgbm90IHN0YXJ0ZWQubEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZAAKBNBUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQuwEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAALBD0BVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgcGVyc29uIG5vciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LpxCYWRPcmlnaW5Ob3RTaWduZWROb3RBY2NvdW50UGFydGljaXBhbnQADAQJAVRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LlBBbHJlYWR5UGFydGljaXBhdGluZwANBKRUaGUgcGFydGljaXBhbnQgaXMgYWxyZWFkeSBwYXJ0aWNpcGF0aW5nLkRLZXlNdXN0QmVQcm92aWRlZAAOBGRUaGUga2V5IG11c3QgYmUgcHJvdmlkZWQuUEtleU11c3ROb3RCZVByb3ZpZGVkAA8EdFRoZSBrZXkgbXVzdCBub3QgYmUgcHJvdmlkZWQuUEhhc1JlYWNoZWRQZXJzb25ob29kABAEjEhhcyByZWFjaGVkIHBlcnNvbmhvb2QgaW4gdGhlIHBhc3QuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwABEEiFRoZSBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC44V2luZG93VG9vTGFyZ2UAEgQ9AUFuIGFic2VuY2UgZ3JhY2UgdGllciBoYXMgYSB3aW5kb3cgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIHRyYWNrYWJsZSBoaXN0b3J5ICg4KS5UQWxsb3dlZE1pc3Nlc1Rvb0xhcmdlABMEIQFUaGUgYWxsb3dlZCBtaXNzZXMgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHdpbmRvdyAob3IgYm90aCB6ZXJvKS5gQWJzZW5jZVNjaGVkdWxlTm90U29ydGVkABQEMQFBYnNlbmNlLWdyYWNlIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuXFBlcnNvbmhvb2RTY2hlZHVsZUVtcHR5ABUEBQFUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB0aWVyLnBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRaZXJvABYE3EEgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBoYXMgYHNjb3JlX3RocmVzaG9sZCA9PSAwYC6AUGVyc29uaG9vZFNjb3JlVGhyZXNob2xkVG9vTGFyZ2UAFwT8QSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGV4Y2VlZHMgYE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAubFBlcnNvbmhvb2RTY2hlZHVsZU5vdFNvcnRlZAAYCNhQZXJzb25ob29kLXRocmVzaG9sZCB0aWVycyBtdXN0IGJlIHNvcnRlZCBieSBhc2NlbmRpbmdwYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLnhQZXJzb25ob29kU2NoZWR1bGVOb3RNb25vdG9uaWMAGQgRAVBlcnNvbmhvb2QtdGhyZXNob2xkIGBzY29yZV90aHJlc2hvbGRgIHZhbHVlcyBtdXN0IGJlIG5vbi1kZWNyZWFzaW5n9GFjcm9zcyB0aWVycyAoYSBsYXJnZXIgcG9wdWxhdGlvbiBtdXN0IG5vdCBoYXZlIGEgbG93ZXIgYmFyKS5oUGVyc29uaG9vZFNjaGVkdWxlTm90VG90YWwAGgj0VGhlIGxhc3QgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBtdXN0IGNvdmVyIGFsbCBwb3B1bGF0aW9uc6goYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQwMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlczhBd2FyZGVkQ3JlZGl0cwAABABFAQEQdTEyOAAAJQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAAKQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEtDARTAAAEADEMARhWZWM8VD4AAC0MDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMUdHlwZXNMTmZ0Q2xhaW1DcmVkaXRBd2FyZAQkQWNjb3VudElkAQQACAEgY2xhaW1hbnQJBQFoQWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4AARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAAAMQwAAAItDAA1DAAABAg5DDgAOQwMNGluZGl2X3N1cHBvcnQUdXRpbHMwQmlnRW5kaWFuVTMyAAMEAAAADAQZAUEgdTMyIGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy49DAxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzMENyZWRpdEJ1ZmZlcgAADAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAASR0aW1lc3RhbXA4AQx1MzIAARhhd2FyZHM4AQx1MzIAAEEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBRQwEUwAABABJDAEYVmVjPFQ+AABFDAAABAgoOABJDAAAAkUMAE0MDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0FEVycm9yBARUAAEgQE5vQmxvY2tzVG9SZXBsYXkAAAT8QSBjcmVkaXQgdHJlZSByZXBsYXkgd2FzIHJlcXVlc3RlZCBmb3IgYW4gZW1wdHkgbGlzdCBvZiBibG9ja3MuUFVuc29ydGVkUmVwbGF5QmxvY2tzAAEE5FRoZSBibG9ja3MgdG8gcmVwbGF5IGFyZSBub3QgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLlBOb0NyZWRpdFRyZWVGb3JCbG9jawACBLxOb25lIG9mIHRoZSBibG9ja3MgdG8gcmVwbGF5IGhhcyBhIGNyZWRpdCB0cmVlLlBSZXBsYXlDb29sZG93bkFjdGl2ZQADCFkBQSBjcmVkaXQgdHJlZSByZXBsYXkgcmFuIHdpdGhpbiBgUmVwbGF5Q29vbGRvd25TZWNvbmRzYCBvZiB0aGUgbGFzdCBvbmUuIFRoZSB3aW5kb3cgaXNcc2hhcmVkIGJ5IGV2ZXJ5IGNhbGxlci5wRXhjZWVkc0NsYWltc0NoYW5uZWxDYXBhY2l0eQAECEkBVGhlIHJlcGxheSBkb2VzIG5vdCBmaXQgd2hhdCB0aGUgSFJNUCBjaGFubmVsIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIGNhbiBjYXJyeSBpbjBvbmUgbWVzc2FnZS5MQ3JlZGl0VHJlZVhjbUZhaWxlZAAFBAUBU2VuZGluZyB0aGUgY3JlZGl0IHRyZWVzIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIG92ZXIgWENNIGZhaWxlZC5UQ3JlZGl0U2xvdE91dE9mQm91bmRzAAYIVQFUaGUgcm91bmQgaXMgbm90IGJlbG93IGBNYXhSb3VuZHNgLCBvciB0aGUgYXR0ZXN0ZXIgc2xvdCBpcyBub3QgYmVsb3cgYE1heEdyb3VwU2l6ZWAsuHNvIHRoZSB0d28gbmFtZSBhIGNyZWRpdCBzbG90IG5vIGdhbWUgY2FuIHVzZS5AQ3JlZGl0Tm90QXdhcmRlZAAHCFUBTm8gY3JlZGl0IHdhcyBhd2FyZGVkOiB0aGUgY2xhaW1hbnQgYWxyZWFkeSBob2xkcyB0aGUgc2xvdCdzIGNyZWRpdCBmb3IgdGhhdCBnYW1lLCBvcpRubyBidWZmZXIgaGFzIHJvb20gZm9yIGFub3RoZXIgYXdhcmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEMDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBhSZWNvcmQEDEtleQEIAAgBDGtleQgBDEtleQABJHN1c3BlbmRlZFkBARBib29sAABVDAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXJyb3IEBFQAARAkTm90UGVyc29uAAAE3FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSByZWNvZ25pemVkIHBlcnNvbi4wTm90U3VzcGVuZGVkAAEE2FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzdXNwZW5kZWQgcGVyc29uLixOb3RSZXNlcnZlZAACBORUaGUgcGVyc29uYWwgSUQgaXMgbm90IHJlc2VydmVkIGFuZCBhd2FpdGluZyByZWNvZ25pdGlvbi40VG9vTWFueVBlb3BsZQADBMBUaGUgb3BlcmF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtYW55IHBlb3BsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuWQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlczhMaXRlUGVyc29uSW5mbwgYTWVtYmVyAQgYTWV0aG9kAV0MAAgBMHJpbmdfdnJmX2tleQgBGE1lbWJlcgABGG1ldGhvZF0MARhNZXRob2QAAF0MDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXNEUmVjb2duaXRpb25NZXRob2QEHEFjY291bnQBBAEIMFVuaXF1ZURldmljZQQABAEcQWNjb3VudAAAAAxGZWUAAQAAYQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAATBYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC6ISW52YWxpZENvbnN1bWVyUmVnaXN0cmF0aW9uQWNjb3VudAALBPxUaGUgY29uc3VtZXIgcmVnaXN0cmF0aW9uIGFjY291bnQgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbmRpZGF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuZQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleX0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWVBBQFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWU9BQEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eWkMASxDcmVkaWJpbGl0eQAAaQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkWQEBEGJvb2wAAQAAbQwAAAQIOQwIAHEMDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzXFN0bXRTdG9yZUFsbG93YW5jZUVudHJ5BARUAAAMAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEMc2VxOAEMdTMyAAEUc2luY2UoAQx1NjQAAHUMAAAECAR5DAB5DAAABAw5DDgIAH0MDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzYE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbgQcQWNjb3VudAEEAAgBKGFjY291bnRfaWQEARxBY2NvdW50AAEkcmVmZXJlbmNlTQUBVE5vdGlmaWNhdGlvblJlZmVyZW5jZQAAgQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFDARTAAAEAIkMARhWZWM8VD4AAIUMDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzVFJlc2VydmF0aW9uUXVldWVFbnRyeQQcQWNjb3VudAEEAAgBHGFjY291bnQEARxBY2NvdW50AAEkam9pbmVkX2F0KAEMdTY0AACJDAAAAoUMAI0MCEhzcF9zdGF0ZW1lbnRfc3RvcmVIU3RhdGVtZW50QWxsb3dhbmNlAAAIASRtYXhfY291bnQ4AQx1MzIAASBtYXhfc2l6ZTgBDHUzMgAAkQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0FEVycm9yBARUAAFgPEludmFsaWRVc2VybmFtZQAABJxVc2VybmFtZSBkb2VzIG5vdCBmaXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgABBGhVc2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLkRBbHJlYWR5UmVnaXN0ZXJlZAACBHxDb25zdW1lciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwAAMEnFByb3ZpZGVkIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjROb3RSZWdpc3RlcmVkAAQEnFBlcnNvbiBpcyBub3QgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjROb3RGdWxsUGVyc29uAAUEeENvbnN1bWVyIGlzIG5vdCBhIGZ1bGwgcGVyc29uLjRUb3VjaE5vdFJlYWR5AAYEzEF0dGVtcHRlZCB0byB1cGRhdGUgcGVyc29uIGF1dGhvcml6YXRpb24gdG9vIGVhcmx5LjROb1Jlc2VydmF0aW9uAAcEaFJlc2VydmF0aW9uIGlzIG5vdCBhY3RpdmUuUE5vdFJlc2VydmF0aW9uSG9sZGVyAAgEFQFUaGUgbGlua2VkIGxpdGUgaWRlbnRpdHkgaXMgbm90IHRoZSBhY3RpdmUgaG9sZGVyIG9mIHRoZSByZXNlcnZhdGlvbi5gVXNlcm5hbWVSZXNlcnZhdGlvblRha2VuAAkE5FRoZSB1c2VybmFtZSBpbiB0aGUgcmVzZXJ2YXRpb24gcmVxdWVzdCBpcyBhbHJlYWR5IHRha2VuLkBSZXNlcnZhdGlvbkZyZXNoAAoEgFRoZSByZXNlcnZhdGlvbiBoYXMgbm90IGV4cGlyZWQuQE5vTGlua2VkSWRlbnRpdHkACwScVGhlcmUgaXMgbm8gbGl0ZSBjb25zdW1lciB0byBiZSBsaW5rZWQuNEFscmVhZHlMaW5rZWQADAT4VGhlIGxpdGUgY29uc3VtZXIgaXMgYWxyZWFkeSBsaW5rZWQgdG8gYSBmdWxsIHBlcnNvbiBjb25zdW1lci5QUGVyc29uQXV0aE5vdEV4cGlyZWQADQS8VGhlIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaGFzIG5vdCBleHBpcmVkIHlldC44QWxyZWFkeURlbW90ZWQADgSQVGhlIHBlcnNvbiBoYXMgYWxyZWFkeSBiZWVuIGRlbW90ZWQuJFF1ZXVlRnVsbAAPBIBRdWV1ZSBmb3IgdGhpcyB1c2VybmFtZSBpcyBmdWxsLihOb3RJblF1ZXVlABAEuEFjY291bnQgaXMgbm90IGluIHRoZSBxdWV1ZSBmb3IgdGhpcyB1c2VybmFtZS5UQWxyZWFkeUhhc1Jlc2VydmF0aW9uABEE3EFjY291bnQgYWxyZWFkeSBoYXMgYSByZXNlcnZhdGlvbiBmb3IgYW5vdGhlciB1c2VybmFtZS5sSW52YWxpZE5vdGlmaWNhdGlvblNlcXVlbmNlABIEyE5vdGlmaWNhdGlvbiBzZXF1ZW5jZSBpcyBpbnZhbGlkIGZvciB0aGUgY29uc3VtZXIuZEludmFsaWROb3RpZmljYXRpb25QZXJpb2QAEwTkTm90aWZpY2F0aW9uIHBlcmlvZCBpcyBvdXRzaWRlIHRoZSBhY2NlcHRlZCBjbGFpbSB3aW5kb3cuiE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbk5vdEV4cGlyZWQAFAS0Tm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBpcyBub3QgZXhwaXJlZCB5ZXQulE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbkFscmVhZHlFeGlzdHMAFQT8Tm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGFsaWFzL2NvbnRleHQucFN0bXRTdG9yZVJlcGxhY2VtZW50VG9vRWFybHkAFgQZAVRoZSByZXBsYWNlbWVudCBjb29sZG93biBoYXMgbm90IGVsYXBzZWQgc2luY2UgdGhlIGVudHJ5IHdhcyBsYXN0IHNldC6MTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0RXhjZWVkZWQAFwTsVGhlIHByb3ZpZGVkIGBsaW1pdGAgZXhjZWVkcyBgTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0YC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulQwAAAQIVQU4AJkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQwEUwAABAClDAEYVmVjPFQ+AACdDAxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldDhVbmNoZWNrZWRDaHVuawQEVAAABAChDAEgVDo6Q2h1bmsAAKEMDCh2ZXJpZmlhYmxlEHJpbmcsU3RhdGljQ2h1bmsAA2AAAAAMAKUMAAACnQwAqQwMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXJyb3IEBFQAAQw0Q2h1bmtOb3RGb3VuZAAABKBUaGUgcmVxdWVzdGVkIGNodW5rIGluZGV4IGRvZXNuJ3QgZXhpc3QuNEludmFsaWRDaHVua3MAAQSwVGhlIHByb3ZpZGVkIGNodW5rIGRhdGEgY291bGRuJ3QgYmUgZGVjb2RlZC5ESW52YWxpZENodW5rUmFuZ2UAAgTcVGhlIHN0YXJ0IGluZGV4IGlzbid0IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGluZGV4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM4Q29sbGVjdGlvbkluZm8IHEFjY291bnQBBCBMb2NhdGlvbgFxAQAQARRvd25lcrEMAYhDb2xsZWN0aW9uT3duZXI8QWNjb3VudCwgTG9jYXRpb24+AAEQbW9kZbUMASBSaW5nTW9kZQABJHJpbmdfc2l6ZVUFATBSaW5nRXhwb25lbnQAAVBzZWxmX2luY2x1c2lvbl9kZWxhebUDASxPcHRpb248dTY0PgAAsQwMUGluZGl2X3BhbGxldF9tZW1iZXJzFHR5cGVzPENvbGxlY3Rpb25Pd25lcggcQWNjb3VudAEEIExvY2F0aW9uAXEBAQggRXh0ZXJuYWwEAHEBASBMb2NhdGlvbgAAABRMb2NhbAQABAEcQWNjb3VudAABAAC1DBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBSaW5nTW9kZQABCChBcHBlbmRPbmx5AAAAIEZsZXhpYmxlAAEAALkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AAL0MAAAECAg4AMEMDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcyBSaW5nUm9vdAQEVAAADAEQcm9vdK0FATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBpbnRlcm1lZGlhdGXFDAFESW50ZXJtZWRpYXRlT2Y8VD4AAMUMDCh2ZXJpZmlhYmxlEHJpbmcoTWVtYmVyc1NldAADUAMAAAwAyQwAAAQMCDg5DADNDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXMcT2xkUm9vdAQEVAAACAEQcm9vdK0FATBNZW1iZXJzT2Y8VD4AASxhcmNoaXZlZF9hdCgBDHU2NAAA0QwAAAQMCDg4ANUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AANkMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5KFJpbmdTdGF0dXMAAAwBFHRvdGFsOAEMdTMyAAEgaW5jbHVkZWQ4AQx1MzIAATxpbW11dGFibGVfc2luY2W1AwEsT3B0aW9uPHU2ND4AAN0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGkEARhWZWM8VD4AAOEMAAAECAgIAOUMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdQb3NpdGlvbgABDChPbmJvYXJkaW5nCAEocXVldWVfcGFnZTgBJFBhZ2VJbmRleAABJHF1ZXVlZF9hdCgBDHU2NAAAACBJbmNsdWRlZAwBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRyaW5nX3BhZ2U4ASRQYWdlSW5kZXgAATRyaW5nX3Bvc2l0aW9uOAEMdTMyAAEAJFN1c3BlbmRlZAACAADpDBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eUBSaW5nTWVtYmVyc1N0YXRlAAAEARBtb2Rl7QwBQFJpbmdNdXRhdGlvbk1vZGUAAO0MEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNdXRhdGlvbk1vZGUAAQgoQXBwZW5kT25seQAAACBNdXRhdGluZwQADAEIdTgAAQAA8QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAUQQBGFZlYzxUPgAA9QwMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFcnJvcgQEVAABeCROb3RNZW1iZXIAAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgbWVtYmVyLhhOb1Jvb3QAAQREUmluZyBoYXMgbm8gcm9vdC4wSW52YWxpZFByb29mAAIEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLihJbmNvbXBsZXRlAAMEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLjhUb29NYW55TWVtYmVycwAEBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQAFBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBtZW1iZXIuLEtleU5vdEZvdW5kAAYEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAAcEkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLixJbnZhbGlkUmluZwAICFEBVGhlIHJpbmcgaW5kZXggaXMgbm90IHZhbGlkIGZvciB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbjogaXQgaXMgdGhlIHRvcCByaW5nIHVzZWQgZm9ypG9uYm9hcmRpbmcgb3IgaXQgcmVmZXJzIHRvIGFuIGVtcHR5IHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwAJBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQACgTUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zAAsEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ATm9SZW1vdmFsU2Vzc2lvbgAMBC0BQSBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyByZW1vdmFsIHNlc3Npb24gaW4gcHJvZ3Jlc3MubENvdWxkTm90U3RhcnRSZW1vdmFsU2Vzc2lvbgANBJxBIHJlbW92YWwgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5gUmVtb3ZhbFNlc3Npb25JblByb2dyZXNzAA4E6ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHJlbW92YWwgc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy5MS2V5QWxyZWFkeVN1c3BlbmRlZAAPCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIG1lbWJlciB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAQBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAEQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLkhDb2xsZWN0aW9uTm90Rm91bmQAEgR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuXENvbGxlY3Rpb25BbHJlYWR5RXhpc3RzABMEeFRoZSBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLkRJZGVudGlmaWVyUmV0aXJlZAAUBBUBVGhlIGlkZW50aWZpZXIgYmVsb25nZWQgdG8gYSBkZWxldGVkIGNvbGxlY3Rpb24gYW5kIGNhbm5vdCBiZSByZXVzZWQuSFRvb01hbnlDb2xsZWN0aW9ucwAVBJBUb28gbWFueSBjb2xsZWN0aW9ucyBmb3IgdGhpcyBvd25lci5oSW52YWxpZFJpbmdTaXplRm9yRmxleGlibGUAFgQRAUZsZXhpYmxlIGNvbGxlY3Rpb25zIG11c3QgdXNlIHRoZSBNYXhGbGV4aWJsZVJpbmdFeHBvbmVudCByaW5nIHNpemUuTEludmFsaWRSaW5nRXhwb25lbnQAFwSMVGhlIHJpbmcgZXhwb25lbnQgaXMgbm90IHN1cHBvcnRlZC5MUHJlbWF0dXJlT25ib2FyZGluZwAYBLRJbnN1ZmZpY2llbnQgbWVtYmVycyBpbiB0aGUgcXVldWUgdG8gb25ib2FyZC5sQ29sbGVjdGlvbk1hcmtlZEZvckRlbGV0aW9uABkE9FRoZSBjb2xsZWN0aW9uIGlzIG1hcmtlZCBmb3IgZGVsZXRpb24gYW5kIGNhbm5vdCBiZSBtb2RpZmllZC5ITm90Q29sbGVjdGlvbk93bmVyABoEuFRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGUgY29sbGVjdGlvbi40Tm90T25ib2FyZGluZwAbBKhUaGUgbWVtYmVyIGlzIG5vdCBpbiB0aGUgb25ib2FyZGluZyBxdWV1ZS44Tm90aGluZ1RvQnVpbGQAHAR8VGhlcmUgaXMgbm8gcmluZyByb290IHRvIGJ1aWxkLlRDb2xsZWN0aW9uTm90RmxleGlibGUAHQTYT25seSB0aGUgcmluZ3Mgb2YgYSBmbGV4aWJsZSBjb2xsZWN0aW9uIGNhbiBiZSBtZXJnZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkMDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQgTG9ja0luZm8AAAgBGHJlYXNvbv0MAShMb2NrUmVhc29uAAEUdW50aWwoAQx1NjQAAP0MDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQoTG9ja1JlYXNvbgABBDhGYWlsZWREaXNwYXRjaAQBHHJldHJpZXMMAQh1OAAAAAABDQAABAg4FQQABQ0AAAQQOBUEOAgACQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChBbGlhc1N0YXRlAAEIGExvY2tlZAQA+QwBIExvY2tJbmZvAAAAIFVubG9hZGVkAAEAAA0NAAAEDDgVBDgAEQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldEBBcmNoaXZlZFJlY3ljbGVyAAAIAShjb21taXRtZW50PAEQSDI1NgABJHJlbWFpbmluZzgBDHUzMgAAFQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldDhJbnN0YW5jZVJlY29yZAQEVAAAGAEgYXNzZXRfaWRxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEoYXNzZXRfdW5pdEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AARBtb2RlIQgBMEluc3RhbmNlTW9kZQABUGN1cnJlbnRfbG9hZF9kZXBvc2l0GQ0BBQFPcHRpb248RGVwb3NpdFRpZXI8RnVuZ2libGVzQXNzZXRJZE9mPFQ+LCBGdW5naWJsZXNCYWxhbmNlT2Y8VD4+PgABQG9sZF9sb2FkX2RlcG9zaXQZDQEFAU9wdGlvbjxEZXBvc2l0VGllcjxGdW5naWJsZXNBc3NldElkT2Y8VD4sIEZ1bmdpYmxlc0JhbGFuY2VPZjxUPj4+AAEcY3JlYXRvciENAchPcHRpb248KFQ6OkFjY291bnRJZCwgVDo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXQpPgAAGQ0EGE9wdGlvbgQEVAEdDQEIEE5vbmUAAAAQU29tZQQAHQ0AAAEAAB0NDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQsRGVwb3NpdFRpZXIIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAMASBhc3NldF9pZHEBARxBc3NldElkAAEUcHJpY2VFAQEcQmFsYW5jZQABFGNvdW50OAEMdTMyAAAhDQQYT3B0aW9uBARUASUNAQgQTm9uZQAAABBTb21lBAAlDQAAAQAAJQ0AAAQIBCkNACkNFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAEUBAShGOjpCYWxhbmNlAAAtDQAABAhxATgAMQ0AAAQMOARxAQA1DQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0FEVycm9yBARUAAHAUE1lbWJlcktleUFscmVhZHlVc2VkAAAAQEludmFsaWRNZW1iZXJLZXkAAQA0SW50ZXJuYWxFcnJvcgACAFxSZWN5Y2xlckFscmVhZHlVbmxvYWRlZAADAFBJbnZhbGlkQ29uc29saWRhdGlvbgAEAExDb25zb2xpZGF0aW9uVG9vQmlnAAUASERlbm9taW5hdGlvblRvb0JpZwAGAFBEZW5vbWluYXRpb25Ub29TbWFsbAAHAEhDb2luQW1vdW50QmVsb3dGZWUACABYRGVub21pbmF0aW9uT3V0T2ZCb3VuZAAJAGxMb3NzeURlbm9taW5hdGlvbkNvbnZlcnNpb24ACgg5AVRoZSBkZW5vbWluYXRpb24gY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudCBiZWNhdXNlIHRoZfxpbnN0YW5jZSdzIGBhc3NldF91bml0YCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSBgMl58dmFsdWV8YC5ESW52YWxpZEFsaWFzUHJvb2YACwBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAMAFRQcm9vZkFuZEFsaWFzTWlzbWF0Y2gADQA4Tm90aGluZ1RvQnVpbGQADgAwVG9vTWFueVJpbmdzAA8AVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgAQAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAARACxFbXB0eUlucHV0cwASAEBSZWN5Y2xlck1pc21hdGNoABMECQFUaGUgZmVlIHJlY3ljbGVyIGluIHRoZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGwncyByZWN5Y2xlci5gSW5zdWZmaWNpZW50VW5sb2FkRm9yRmVlABQEvFRoZSB0b3RhbCB1bmxvYWRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIHRoZSBmZWUuREFsaWFzTm90UHJlbWFya2VkABUEOQFUaGUgZmlyc3QgYWxpYXMgd2FzIG5vdCBwcmUtbWFya2VkIGJ5IGV4dGVuc2lvbiAocmVxdWlyZWQgZm9yIEZyb21PdXRwdXQgZmVlKS5cSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AFgRJAVRoZSByZWN5Y2xlciByZXZpc2lvbiBkb2VzIG5vdCBtYXRjaCAocmVjeWNsZXIgbWF5IG5vdCBleGlzdCBvciBoYXMgYmVlbiByZWJ1aWx0KS4wSW52YWxpZFNwbGl0ABcAaENhbm5vdENvbnZlcnRBc3NldFRvTmF0aXZlABgEGQFUaGUgYXNzZXQgY2Fubm90IGJlIGNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3kgdG8gcGF5IHRoZSBmZWUuWEFsaWFzVGVtcG9yYXJpbHlMb2NrZWQAGQBoTWF4RmVlTm90QWxsb3dlZEZvclByZXBhaWQAGghZAVtgQ2FsbDo6dW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbnNgXSB3aXRoIFtgVW5sb2FkRmVlOjpQcmVwYWlkYF0gcmVxdWlyZXMgYG1heF9mZWVgIHRvFGJlIDAuSE1heEZlZUV4Y2VlZHNJbnB1dAAbBKhUaGUgbWF4X2ZlZSBleGNlZWRzIHRoZSB0b3RhbCBpbnB1dCB2YWx1ZS40SW52YWxpZE1heEZlZQAcBNhUaGUgbWF4IGZlZSBhcmd1bWVudCBkb2Vzbid0IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy4wVW5rbm93bkFzc2V0AB0EAQFUaGUgdW5kZXJseWluZyBhc3NldCBpZCBkb2VzIG5vdCBleGlzdCBpbiBbYENvbmZpZzo6RnVuZ2libGVzYF0uQEluc3RhbmNlTm90Rm91bmQAHgTgTm8gY29pbmFnZSBpbnN0YW5jZSBleGlzdHMgZm9yIHRoZSBnaXZlbiBbYEluc3RhbmNlSWRgXS5ASW52YWxpZEFzc2V0VW5pdAAfCAUBVGhlIGFzc2V0IHVuaXQgaXMgemVybywgb3IgY2Fubm90IHJlcHJlc2VudCBldmVyeSBkZW5vbWluYXRpb24gaW7gYFtNaW5pbXVtRXhwb25lbnQsIE1heGltdW1FeHBvbmVudF1gIHdpdGhvdXQgdHJ1bmNhdGlvbi5gQXJjaGl2ZWRSZWN5Y2xlck5vdEZvdW5kACAERQFObyBhcmNoaXZlZCByZWN5Y2xlciBleGlzdHMgZm9yIHRoZSBnaXZlbiBgKGluc3RhbmNlLCBkZW5vbWluYXRpb24sIHJpbmcgaW5kZXgpYC5QSW52YWxpZEFyY2hpdmVkUm9vdHMAIQg1AVRoZSBzdXBwbGllZCBgcmVjeWNsZXJfcm9vdGAvYHVubG9hZGVkX3Jvb3RgIGRvIG5vdCBtYXRjaCB0aGUgc3RvcmVkIGFyY2hpdmFsLGNvbW1pdG1lbnQuTEludmFsaWRSaW5nRXhwb25lbnQAIgQdAVRoZSByZWN5Y2xlciByaW5nIGV4cG9uZW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGNyeXB0byBjb25maWcueEFsaWFzV2FzVW5sb2FkZWRPckludmFsaWRQcm9vZgAjBD0BVGhlIGFsaWFzIHdhcyBhbHJlYWR5IHVubG9hZGVkLCBvciB0aGUgc3VwcGxpZWQgbm9uLWluY2x1c2lvbiBwcm9vZiBpcyBpbnZhbGlkLihaZXJvQW1vdW50ACQE0EEgYGZ1bmRfcG90YCBvciBgd2l0aGRyYXdfcG90X2Z1bmRzYCBhbW91bnQgb2YgemVyby5QSW5zdGFuY2VOb3RTcG9uc29yZWQAJQTAVGhlIGluc3RhbmNlIGlzIG5vdCBzcG9uc29yZWQsIHNvIGl0IGhhcyBubyBwb3QubFdpdGhkcmF3RXhjZWVkc0NvbnRyaWJ1dGlvbgAmBD0BVGhlIHdpdGhkcmF3YWwgZXhjZWVkcyB0aGUgY2FsbGVyJ3MgcmVjb3JkZWQgcG90IGNvbnRyaWJ1dGlvbiBpbiB0aGF0IGN1cnJlbmN5LmRQb3RDYW5ub3RDb3ZlckxvYWREZXBvc2l0ACcE9FRoZSBzcG9uc29yZWQgaW5zdGFuY2UncyBwb3QgY2Fubm90IGZ1bmQgdGhpcyBsb2FkJ3MgZGVwb3NpdC5oTG9hZERlcG9zaXRPbGRUaWVyT2NjdXBpZWQAKAhZAVRoZSBsb2FkIGRlcG9zaXQgY2hhbmdlZCB3aGlsZSB0aGUgc3BvbnNvcmVkIGluc3RhbmNlJ3Mgb2xkIHRpZXIgc3RpbGwgaG9sZHMgZGVwb3NpdHMsSQFzbyB0aGUgaW5zdGFuY2UgbmVlZHMgW2BQYWxsZXQ6OmNvbGxhcHNlX2xvYWRfZGVwb3NpdHNgXSBiZWZvcmUgaXQgY2FuIGxvYWQgYWdhaW4uRE5vdGhpbmdUb0NvbGxhcHNlACkIXQFUaGUgbGVkZ2VyIGlzIGFscmVhZHkgYSBzaW5nbGUgdGllciBhdCB0aGUgY3VycmVudCBbYENvbmZpZzo6TG9hZERlcG9zaXRgXSwgc28gdGhlcmUgaXNQbm90aGluZyB0byBjb2xsYXBzZS5gSW5zdGFuY2VBbHJlYWR5U3BvbnNvcmVkACoEiFRoZSBpbnN0YW5jZSBpcyBhbHJlYWR5IHNwb25zb3JlZC5oU3BvbnNvcmVkSW5zdGFuY2VzRGlzYWJsZWQAKwRNAVtgQ29uZmlnOjpFbmFibGVQZXJtaXNzaW9ubGVzc2BdIGlzIGZhbHNlLCBzbyBubyBzcG9uc29yZWQgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQuXFBhbGxldEFjY291bnROb3RUb3VjaGVkACwMOQFUaGUgcGFsbGV0IGFjY291bnQgY2Fubm90IHJlY2VpdmUgdGhlIHVuZGVybHlpbmcgYXNzZXQgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW5VAXRvdWNoZWQgZm9yIGl0LCB3aGljaCBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBleHBlY3RzIHRvIGhhdmUgaGFwcGVuZWQgYWxyZWFkeS6AUGFsbGV0QWNjb3VudEJlbG93TWluaW11bUJhbGFuY2UALQxBAVRoZSBwYWxsZXQgYWNjb3VudCBob2xkcyBsZXNzIHRoYW4gdGhlIHVuZGVybHlpbmcgYXNzZXQncyBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoUQFbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBleHBlY3RzIGFzIGEgYnVmZmVyIGFnYWluc3QgdGhlIGFjY291bnQgYmVpbmccZHVzdGVkLmhGdW5kaW5nQmVsb3dNaW5pbXVtQmFsYW5jZQAuCEkBQSBgZnVuZF9wb3RgIGFtb3VudCBiZWxvdyB0aGUgY3VycmVuY3kncyBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHRoZSB0cmFuc2ZlciBjb3VsZEBkdXN0IHJpZ2h0IGF3YXkuQEZlZUV4Y2VlZHNNYXhGZWUALwRZAVBheWluZyB0aGUgZmVlIHdvdWxkIGNvc3QgbW9yZSB0aGFuIHRoZSBjYWxsZXIncyBgbWF4X2ZlZWAsIGluIHRoZSBjdXJyZW5jeSBwYXlpbmcgaXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkNBBhPcHRpb24EBFQBPQ0BCBBOb25lAAAAEFNvbWUEAD0NAAABAAA9DQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UMcG90HFBvdFZpZXcIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAcATBsb2FkX2RlcG9zaXTBBQFIKEFzc2V0SWQsIEJhbGFuY2UpAAFUZnJlZV9pbl9kZXBvc2l0X2Fzc2V0RQEBHEJhbGFuY2UAAUBsb2Fkc19hZmZvcmRhYmxlOAEMdTMyAAE8cmVkZWVtYWJsZV9rZXlzOAEMdTMyAAEwY3VycmVudF90aWVyGQ0BlE9wdGlvbjxEZXBvc2l0VGllcjxBc3NldElkLCBCYWxhbmNlPj4AASBvbGRfdGllchkNAZRPcHRpb248RGVwb3NpdFRpZXI8QXNzZXRJZCwgQmFsYW5jZT4+AAE0bG9hZHNfYmxvY2tlZEENAWBPcHRpb248Q3VzdG9tSW52YWxpZGl0eT4AAEENBBhPcHRpb24EBFQBRQ0BCBBOb25lAAAAEFNvbWUEAEUNAAABAABFDQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0QEN1c3RvbUludmFsaWRpdHkAAdQYTm9Db2luACMAKENvaW5Ub29PbGQAJABIU3BsaXRJbnRvTm90U29ydGVkACUAVFNwbGl0RXhwb25lbnRUb29TbWFsbAAmADRJbnRlcm5hbEVycm9yACcALFNwbGl0VG9vQmlnACgAMEludmFsaWRTcGxpdAApAChFbXB0eVNwbGl0ACoANFRvb01hbnlTcGxpdHMAKwBQTWVtYmVyS2V5QWxyZWFkeVVzZWQALQBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQALgBIRGVub21pbmF0aW9uVG9vQmlnAC8AUERlbm9taW5hdGlvblRvb1NtYWxsADAAWERlbm9taW5hdGlvbk91dE9mQm91bmQAMQBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAyAEBJbnZhbGlkTWVtYmVyS2V5ADMALEludmFsaWRDYWxsADQAVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgA1AGhPcmlnaW5Ub0FzQ29pbk11c3RCZVNpZ25lZAA2AFxJbnZhbGlkVW5sb2FkVG9rZW5Qcm9vZgA3AGBJbnZhbGlkVW5sb2FkVG9rZW5QZXJpb2QAOABoVW5sb2FkVG9rZW5BbHJlYWR5Q29uc3VtZWQAOQBwVW5sb2FkVG9rZW5Db3VudGVyT3V0T2ZSYW5nZQA6AFxJbnZhbGlkUmVjeWNsZXJSZXZpc2lvbgA7AChOb1JlY3ljbGVyADwATFRyYW5zYWN0aW9uTm90TG9jYWwAPQA4Tm90aGluZ1RvQnVpbGQAPgBMU3BsaXRFeHBvbmVudFRvb0JpZwA/AIxJbnZhbGlkVW5sb2FkVG9rZW5QZXJpb2RPclJpbmdJbmRleABAAHBEdXBsaWNhdGVEZXN0aW5hdGlvbnNJblNwbGl0AEEASENvaW5BbW91bnRCZWxvd0ZlZQBCAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcABDAExGZWVDb2luQmVsb3dNaW5pbXVtAEQAXEZyb21PdXRwdXRGZWVOb3RBbGxvd2VkAEUAQEVtcHR5QWxpYXNQcm9vZnMARgBwSW52YWxpZFBhaWRUb2tlblJpbmdSZXZpc2lvbgBHAGhDYW5ub3RDb252ZXJ0QXNzZXRUb05hdGl2ZQBJAFRDb2luVGVtcG9yYXJpbHlMb2NrZWQASgBESW52YWxpZEFsaWFzUHJvb2YASwBsTWF4RmVlSW5zdWZmaWNpZW50Rm9yVW5sb2FkAEwAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkAE0AbExvc3N5RGVub21pbmF0aW9uQ29udmVyc2lvbgBOAFhGaXJzdENhbGxBbGlhc01pc21hdGNoAE8AoEluZmFsbGlibGVVbnBhaWRTaWduZWRPcmlnaW5NdXN0QmVTaWduZWQAUACkSW5mYWxsaWJsZVVucGFpZFNpZ25lZEluc3VmZmljaWVudEJhbGFuY2UAUQBARW1wdHlNaXhlZE91dHB1dABTAFBFbXB0eVVucGFpZExvYWRCYXRjaABUAEBJbnN0YW5jZU5vdEZvdW5kAFUAWEFsaWFzVGVtcG9yYXJpbHlMb2NrZWQAVgBkUG90Q2Fubm90Q292ZXJMb2FkRGVwb3NpdABXAGhMb2FkRGVwb3NpdE9sZFRpZXJPY2N1cGllZABYACxFbXB0eUlucHV0cwBZAFRVbmxvYWRlZFZhbHVlQmVsb3dGZWUAWgAASQ0AAAJNDQBNDQAABAxxAUUBRQEAUQ0EGE9wdGlvbgQEVAHZDAEIEE5vbmUAAAAQU29tZQQA2QwAAAEAAFUNBBhPcHRpb24EBFQBEQQBCBBOb25lAAAAEFNvbWUEABEEAAABAABZDQQYT3B0aW9uBARUAQENAQgQTm9uZQAAABBTb21lBAABDQAAAQAAXQ0EGE9wdGlvbgQEVAGtBQEIEE5vbmUAAAAQU29tZQQArQUAAAEAAGENDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlczhTdWJzY3JpYmVySW5mbwQEVAAADAEsY29sbGVjdGlvbnPJBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAUhsYXN0X2luaXRfc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABMHBhbGxldF9pbmRleAwBCHU4AABlDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNcV2hpdGVsaXN0ZWRTdWJzY3JpcHRpb24EBFQAAAgBLGNvbGxlY3Rpb25zyQUBGQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI+AAEwcGFsbGV0X2luZGV4DAEIdTgAAGkNDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlcyxQYWdpbmdTdGF0ZQQsQmxvY2tOdW1iZXIBOAAMASh3cml0ZV9wYWdlzQMBDHUxNgABJHNlbmRfcGFnZc0DAQx1MTYAAURsYXN0X3VwZGF0ZV9ibG9jazgBLEJsb2NrTnVtYmVyAABtDQAABAzNAwg4AHENDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlc0BQZW5kaW5nSW5pdFN0YXRlBARUAAAYASxjb2xsZWN0aW9uc8kFARkBQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyPgABYGN1cnJlbnRfY29sbGVjdGlvbl9pbmRleDgBDHUzMgABQGFmdGVyX3JpbmdfaW5kZXjkAURPcHRpb248UmluZ0luZGV4PgABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAASxzb3VyY2VfdGltZSgBDHU2NAABMHBhbGxldF9pbmRleAwBCHU4AAB1DQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNYQmF0Y2hEaXN0cmlidXRpb25TdGF0ZQQsQmxvY2tOdW1iZXIBOAAQASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAASRzZWFsZWRfYXQ4ASxCbG9ja051bWJlcgABVHJlbWFpbmluZ19zdWJzY3JpYmVyczgBDHUzMgAAeQ0AAAQInAgAfQ0MdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBRFcnJvcgQEVAABOEhTdWJzY3JpYmVyTm90Rm91bmQAAARUU3Vic2NyaWJlciBub3QgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAEEaFN1YnNjcmliZXIgYWxyZWFkeSBleGlzdHMuSFRvb01hbnlTdWJzY3JpYmVycwACBHBNYXhpbXVtIHN1YnNjcmliZXJzIHJlYWNoZWQuWEludmFsaWRDb2xsZWN0aW9uc0xpc3QAAwQ9AUNvbGxlY3Rpb25zIGxpc3QgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyIHdpdGggbm8gZHVwbGljYXRlcy44VG9vTWFueVVwZGF0ZXMABATQVG9vIG1hbnkgcmluZyByb290IHVwZGF0ZXMgdG8gZml0IGluIGEgc2luZ2xlIGJhdGNoLjRYY21TZW5kRmFpbGVkAAUEQFhDTSBzZW5kIGZhaWxlZC5kTm90U3Vic2NyaWJlZFRvQ29sbGVjdGlvbgAGBORTdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbi5ASW52YWxpZFJpbmdJbmRleAAHBIBSaW5nIHJvb3QgaW5kZXggaXMgb3V0IG9mIHJhbmdlLlhFeGNlZWRzQ2hhbm5lbENhcGFjaXR5AAgEAQFSZXF1ZXN0ZWQgdXBkYXRlcyBleGNlZWQgdGhlIHN1YnNjcmliZXIncyBIUk1QIGNoYW5uZWwgY2FwYWNpdHkuNE5vQmF0Y2hBY3RpdmUACQRcTm8gYWN0aXZlIGJhdGNoIGV4aXN0cy40Tm9QZW5kaW5nSW5pdAAKBLhObyBwZW5kaW5nIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIHN1YnNjcmliZXIuUFJlcGxheUNvb2xkb3duQWN0aXZlAAsEDQFSZXBsYXkgY29vbGRvd24gaGFzIG5vdCBlbGFwc2VkIGZvciB0aGlzIHN1YnNjcmliZXIgYW5kIGNvbGxlY3Rpb24uQEVtcHR5UmluZ0luZGljZXMADATkUmVwbGF5IHJlcXVlc3RlZCB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgcmluZyByb290IGluZGljZXMuOE5vdFdoaXRlbGlzdGVkAA0E7FBhcmFjaGFpbiBoYXMgbm8gd2hpdGVsaXN0ZWQgc3Vic2NyaXB0aW9uIGxlZnQgdG8gYWN0aXZhdGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoENDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcyxBY3RpdmVFdmVudAwkQWNjb3VudElkAQQcQXNzZXRJZAFxATBBc3NldEJhbGFuY2UBRQEAEAEIaWQIARxFdmVudElkAAEQaW5mb+EFAYBFdmVudEluZm88QXNzZXRJZCwgQXNzZXRCYWxhbmNlPgABGHN0YXR1c4UNARhTdGF0dXMAARhzb3VyY2U1AQFET3B0aW9uPEFjY291bnRJZD4AAIUNDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcxhTdGF0dXMAASAkU2NoZWR1bGVkAAAALFJlZ2lzdGVyaW5nBAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAEAPEF3YWl0aW5nRW50cm9weQwBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEsbGFzdF9tb21lbnQ4AQx1MzIAAgAsRHJhd1dpbm5lcnMQAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABNHdpbm5lcnNfYWRkZWQ4AQx1MzIAATxmcm9tX3dpbm5lcl9rZXktCAE0QmlnRW5kaWFuVTI1NgADACBDbGFpbWluZwwBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEcY2xhaW1lZDgBDHUzMgAEAFRDbGVhcmluZ1JlZ2lzdHJhdGlvbnMQAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIAAVRjbGVhbmVkX3JlZ2lzdHJhdGlvbnM4AQx1MzIABQA8Q2xlYXJpbmdXaW5uZXJzEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAE8Y2xlYW5lZF93aW5uZXJzOAEMdTMyAAYAKEZpbmFsaXppbmcIAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIABwAAiQ0AAAQIjQ0IAI0NDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblU2NAADCAAAAAwEGQFBIHU2NCBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcukQ0AAAQICC0IAJUNAAAECAgxCACZDQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0FEVycm9yBARUAAFYUFByaXplQmVsb3dNaW5CYWxhbmNlAAAATE5vV2lubmVyc0NvbmZpZ3VyZWQAAQA4VG9vTWFueVdpbm5lcnMAAgBESW52YWxpZEV2ZW50VGltZXMAAwBARHVwbGljYXRlRXZlbnRJZAAEAEBOb1NjaGVkdWxlZEV2ZW50AAUAMFVua25vd25FdmVudAAGACxXcm9uZ1N0YXR1cwAHBOBPcGVyYXRpb24gcmVxdWlyZXMgYSBzcGVjaWZpYyBzdGF0dXMgdGhlIGV2ZW50IGlzbid0IGluLmROb3RBY2NlcHRpbmdSZWdpc3RyYXRpb25zAAgALE5vdENsYWltaW5nAAkAUENsYWltaW5nV2luZG93Q2xvc2VkAAoEtENsYWltIGF0dGVtcHRlZCBhZnRlciB0aGUgZXZlbnQncyBgZW5kX3RpbWVgLkBFbnRyb3B5U2xvdFRha2VuAAsAPEludmFsaWRWcmZQcm9vZgAMAFRVbnN1cHBvcnRlZEFjY291bnRLZXkADQQJAVN1cHBsaWVkIGFjY291bnQgaWQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbnkgc3IyNTUxOSBwdWJsaWMga2V5LlhJbnZhbGlkTWVtYmVyc2hpcFByb29mAA4AME5vU3VjaFdpbm5lcgAPAExQYXJ0aWNpcGFudE92ZXJmbG93ABAAXFByaXplQWxsb2NhdGlvbk92ZXJmbG93ABEAPEFzc2V0Tm90RW5hYmxlZAASBOBUaGUgcHJpemUgYXNzZXQgaGFzIG5vdCBiZWVuIGVuYWJsZWQgdmlhIGBlbmFibGVfYXNzZXRgLkxBc3NldEFscmVhZHlFbmFibGVkABME/GBlbmFibGVfYXNzZXRgIHdhcyBjYWxsZWQgZm9yIGFuIGFzc2V0IHRoYXQgaXMgYWxyZWFkeSBlbmFibGVkLjxFbnRyb3B5Tm90UmVhZHkAFAQJAU5vIHJhbmRvbW5lc3MgcHJvZHVjZWQgYWZ0ZXIgcmVnaXN0cmF0aW9uIGNsb3NlZCBpcyBhdmFpbGFibGUgeWV0LkhJbnZhbGlkUHJvZHVjdE5hbWUAFQQlAVRoZSBldmVudCdzIHByb2R1Y3QgbmFtZSBpcyBub3QgYSBiYXJlIGRvdE5TIGxhYmVsIChzZWUgW2BQcm9kdWN0TmFtZWBdKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQunQ0MTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMkUG9pbnRJbmZvAAAQARxzdWJqZWN0CAEkU3ViamVjdElkAAE0c3ViamVjdF9hbGlhcwgBMFN1YmplY3RBbGlhcwABJGRpcmVjdGlvbu0FASREaXJlY3Rpb24AATBsYXN0X3VzZWRfYXQoARxTZWNvbmRzAAChDQxMaW5kaXZfcGFsbGV0X2hvbm91chhwYWxsZXQURXJyb3IEBFQAAQwoQXJpdGhtZXRpYwAABAkBQXJpdGhtZXRpYyBlcnJvciBsaWtlIG92ZXIvdW5kZXJmbG93LCBkaXZpc2lvbiBieSB6ZXJvIG9yIHNpbWlsYXIuTFN1YmplY3RBbHJlYWR5Vm90ZWQAAQT8VGhlcmUgaXMgYWxyZWFkeSBhIHZvdGUgYnkgdGhlIHNhbWUgdm90ZXIgZm9yIHRoZSBzYW1lIHN1YmplY3QuMEludmFsaWRQcm9vZgACBLBUaGUgcHJvdmlkZWQgcmluZyBwcm9vZiBmYWlsZWQgdmVyaWZpY2F0aW9uLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6lDQAABAgIKACpDQxwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wcxhwYWxsZXQURXJyb3IEBFQAAQxUUmFuZG9tbmVzc1VuYXZhaWxhYmxlAAAEEQFUaGUgcmFuZG9tbmVzcyBzb3VyY2UgaGFzIG5vIHZhbHVlIHRvIHNhbHQgdGhlIHNjaGVkdWxlZCBkcmF3cyB3aXRoLixVbmtub3duRHJhdwABBOBObyBkcmF3IHdpdGggdGhpcyBldmVudCBpZCB3YXMgc2NoZWR1bGVkIGJ5IHRoaXMgcGFsbGV0LkRFbXB0eVJlZ2lzdHJhdGlvbgACBKhgcmVnaXN0ZXJgIHdhcyBjYWxsZWQgd2l0aCBhbiBlbXB0eSBiYXRjaC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQ0MRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQ0IRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAtQ0EGE9wdGlvbgQEVAG5DQEIEE5vbmUAAAAQU29tZQQAuQ0AAAEAALkNCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPkASxPcHRpb248dTMyPgAAvQ0IRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ7ENATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc7UNAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAMENCEhzcF9jb25zZW5zdXNfc2xvdHMwU2xvdER1cmF0aW9uAAAEACgBDHU2NAAAxQ0QKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jayRMYXp5QmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGZCAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzyQ0BUFZlYzxPcGFxdWVFeHRyaW5zaWM+AADJDQAAAs0NAM0NCChzcF9ydW50aW1lPE9wYXF1ZUV4dHJpbnNpYwAABAAYARxWZWM8dTg+AADRDQgoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAADVDQgcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAAYARxWZWM8dTg+AADZDQQYT3B0aW9uBARUAdUNAQgQTm9uZQAAABBTb21lBADVDQAAAQAA3Q0MNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnM4Vmlld0Z1bmN0aW9uSWQAAAgBGHByZWZpeGUCASBbdTg7IDE2XQABGHN1ZmZpeGUCASBbdTg7IDE2XQAA4Q0EGFJlc3VsdAgEVAEYBEUB5Q0BCAhPawQAGAAAAAAMRXJyBADlDQAAAQAA5Q0MNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnNkVmlld0Z1bmN0aW9uRGlzcGF0Y2hFcnJvcgABDDhOb3RJbXBsZW1lbnRlZAAAACBOb3RGb3VuZAQA3Q0BOFZpZXdGdW5jdGlvbklkAAEAFENvZGVjAAIAAOkNBBhSZXN1bHQIBFQB0QcERQHtDQEICE9rBADRBwAAAAAMRXJyBADtDQAAAQAA7Q0MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAPENAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQA9Q0BSFVua25vd25UcmFuc2FjdGlvbgABAADxDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAAD1DQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAAD5DQgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0Yf0NAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AAD9DQQgQlRyZWVNYXAIBEsBYQIEVgEYAAQAAQ4AAAABDgAAAgUOAAUOAAAECGECGAAJDggwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5WQEBEGJvb2wAASxmYXRhbF9lcnJvclkBARBib29sAAEYZXJyb3Jz+Q0BMEluaGVyZW50RGF0YQAADQ4MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAAARDgQYUmVzdWx0CARUARUOBEUB7Q0BCAhPawQAFQ4AAAAADEVycgQA7Q0AAAEAABUODChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlWQEBEGJvb2wAABkODChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAAHQ4EGE9wdGlvbgQEVAEhDgEIEE5vbmUAAAAQU29tZQQAIQ4AAAEAACEOAAACJQ4AJQ4AAAQIGBEKACkODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlc0xSdW50aW1lRGlzcGF0Y2hJbmZvCBxCYWxhbmNlAUUBGFdlaWdodAF5AgAMARh3ZWlnaHR5AgEYV2VpZ2h0AAEUY2xhc3P1BgE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlRQEBHEJhbGFuY2UAAC0ODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAUUBAAgBNGluY2x1c2lvbl9mZWUxDgF0T3B0aW9uPEluY2x1c2lvbkZlZTxCYWxhbmNlPj4AAQx0aXBFAQEcQmFsYW5jZQAAMQ4EGE9wdGlvbgQEVAE1DgEIEE5vbmUAAAAQU29tZQQANQ4AAAEAADUODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBRQEADAEgYmFzZV9mZWVFAQEcQmFsYW5jZQABHGxlbl9mZWVFAQEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWVFAQEcQmFsYW5jZQAAOQ4EGFJlc3VsdAgEVAE9DgRFAUEOAQgIT2sEAD0OAAAAAAxFcnIEAEEOAAABAAA9DgAAArEDAEEODEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAARQ4EGFJlc3VsdAgEVAF5AgRFAUEOAQgIT2sEAHkCAAAAAAxFcnIEAEEOAAABAABJDgQYUmVzdWx0CARUAUUBBEUBQQ4BCAhPawQARQEAAAAADEVycgQAQQ4AAAEAAE0OBBhSZXN1bHQIBFQBfQMERQFBDgEICE9rBAB9AwAAAAAMRXJyBABBDgAAAQAAUQ4EGFJlc3VsdAgEVAFVDgRFAXkOAQgIT2sEAFUOAAAAAAxFcnIEAHkOAAABAABVDgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuRENhbGxEcnlSdW5FZmZlY3RzBBRFdmVudAHpBgAQAUBleGVjdXRpb25fcmVzdWx0WQ4BaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHNlDgEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbWkOAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtc20OAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAWQ4EGFJlc3VsdAgEVAFdDgRFAWEOAQgIT2sEAF0OAAAAAAxFcnIEAGEOAAABAABdDgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0SQMBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWX5BgEQUGF5cwAAYQ4IKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwFdDgAIASRwb3N0X2luZm9dDgEQSW5mbwABFGVycm9y/QYBNERpc3BhdGNoRXJyb3IAAGUOAAAC6QYAaQ4EGE9wdGlvbgQEVAE5AgEIEE5vbmUAAAAQU29tZQQAOQIAAAEAAG0OAAACcQ4AcQ4AAAQI7QF1DgB1DgAAAjkCAHkODEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAH0OBBhSZXN1bHQIBFQBgQ4ERQF5DgEICE9rBACBDgAAAAAMRXJyBAB5DgAAAQAAgQ4MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAHpBgAMAUBleGVjdXRpb25fcmVzdWx0tQcBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50c2UOAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXNtDgG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAIUOBBhSZXN1bHQIBFQBBARFAYkOAQgIT2sEAAQAAAAADEVycgQAiQ4AAAEAAIkODEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAjQ4EGFJlc3VsdAgEVAG1CgRFAZEOAQgIT2sEALUKAAAAAAxFcnIEAJEOAAABAACRDgxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXMURXJyb3IAAQR8TG9jYXRpb25WZXJzaW9uQ29udmVyc2lvbkZhaWxlZAAAAACVDgQYUmVzdWx0CARUAVkBBEUBkQ4BCAhPawQAWQEAAAAADEVycgQAkQ4AAAEAAJkOCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAFECATh2Mzo6TXVsdGlBc3NldAADAAhWNAQAyQIBJHY0OjpBc3NldAAEAAhWNQQAFQMBJHY1OjpBc3NldAAFAACdDgQYUmVzdWx0CARUAVkBBEUBoQ4BCAhPawQAWQEAAAAADEVycgQAoQ4AAAEAAKEODEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAAClDgAAAqkOAKkOAAAECDgBCACtDgQYUmVzdWx0CARUAbEOBEUBvQ4BCAhPawQAsQ4AAAAADEVycgQAvQ4AAAEAALEOAAACtQ4AtQ4MYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlc0xOZnRDbGFpbUNyZWRpdFByb29mAAAMARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAABKGxlYWZfaW5kZXg4AQx1MzIAARRwcm9vZrkOAVBWZWM8Q3JlZGl0UHJvb2ZOb2RlPgAAuQ4AAAIFCAC9DgxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzYE5mdENsYWltQ3JlZGl0UHJvb2ZFcnJvcgABFERVbmtub3duQ3JlZGl0VHJlZQAAADBBd2FyZHNQcnVuZWQAAQBETGVhZkNvdW50TWlzbWF0Y2gEASBleHBlY3RlZDgBDHUzMgACAFBMZWFmSW5kZXhPdXRPZkJvdW5kcwADADBSb290TWlzbWF0Y2gABAAAwQ4EGFJlc3VsdAgEVAG1DgRFAb0OAQgIT2sEALUOAAAAAAxFcnIEAL0OAAABAADFDghcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzNAFIVmVjPFVwd2FyZE1lc3NhZ2U+AAFMaG9yaXpvbnRhbF9tZXNzYWdlcxUJAWBWZWM8T3V0Ym91bmRIcm1wTWVzc2FnZT4AAUxuZXdfdmFsaWRhdGlvbl9jb2RlyQ4BjE9wdGlvbjxyZWxheV9jaGFpbjo6VmFsaWRhdGlvbkNvZGU+AAFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzOAEMdTMyAAE4aHJtcF93YXRlcm1hcms4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAASRoZWFkX2RhdGFMASBIZWFkRGF0YQAAyQ4EGE9wdGlvbgQEVAHNDgEIEE5vbmUAAAAQU29tZQQAzQ4AAAEAAM0ODHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzOFZhbGlkYXRpb25Db2RlAAAEABgBHFZlYzx1OD4AANEOBBhSZXN1bHQIBFQBEARFAV0IAQgIT2sEABAAAAAADEVycgQAXQgAAAEAANUOBBhPcHRpb24EBFQBXQgBCBBOb25lAAAAEFNvbWUEAF0IAAABAADZDgAAAl0IAN0OCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgABkBhTeXN0ZW0EAI0IAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAJQkBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEANE5ldHdvcmtTdWZmaXgEADUJAaxpbmRpdl9wYWxsZXRfbmV0d29ya19zdWZmaXg6OkVycm9yPFJ1bnRpbWU+AEoAIEJhbGFuY2VzBABtCQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAERPcmlnaW5SZXN0cmljdGlvbgQAgQkBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AA0AGEFzc2V0cwQArQkBdHBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWU+AA4AMEFzc2V0c0hvbGRlcgQAuQkBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lPgAPACRBc3NldFJhdGUEAL0JAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AEAA8QXNzZXRDb252ZXJzaW9uBADJCQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ABIAKFBvb2xBc3NldHMEAN0JAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ABMARENvbGxhdG9yU2VsZWN0aW9uBADxCQGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAFQoBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAFEKAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAuQoBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQA2QoBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAiABxVdGlsaXR5BADdCgF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBADtCgF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABBTdWRvBADxCgFscGFsbGV0X3N1ZG86OkVycm9yPFJ1bnRpbWU+ACoAFFByb3h5BAAVCwFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAsABhQZW9wbGUEAB0LAYxpbmRpdl9wYWxsZXRfcGVvcGxlOjpFcnJvcjxSdW50aW1lPgAzABxNb2JSdWxlBABhCwGUaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpFcnJvcjxSdW50aW1lPgA0AChQcm9vZk9mSW5rBACdCwGkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6RXJyb3I8UnVudGltZT4ANQAQR2FtZQQA8QsBhGluZGl2X3BhbGxldF9nYW1lOjpFcnJvcjxSdW50aW1lPgA3ABRTY29yZQQAHQwBiGluZGl2X3BhbGxldF9zY29yZTo6RXJyb3I8UnVudGltZT4AOAAoTmZ0Q3JlZGl0cwQATQwBoGluZGl2X3BhbGxldF9uZnRfY3JlZGl0czo6RXJyb3I8UnVudGltZT4AOQAgRHVtbXlEaW0EAFUMAZhpbmRpdl9wYWxsZXRfZHVtbXlfZGltOjpFcnJvcjxSdW50aW1lPgA7AChQZW9wbGVMaXRlBABhDAGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFcnJvcjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAJEMAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFcnJvcjxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBACpDAGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFcnJvcjxSdW50aW1lPgBAABxNZW1iZXJzBAD1DAGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkVycm9yPFJ1bnRpbWU+AEMAHENvaW5hZ2UEADUNAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXJyb3I8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBAB9DQG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkVycm9yPFJ1bnRpbWU+AEUAHEFpcmRyb3AEAJkNAZBpbmRpdl9wYWxsZXRfYWlyZHJvcDo6RXJyb3I8UnVudGltZT4ARgAYSG9ub3VyBAChDQGMaW5kaXZfcGFsbGV0X2hvbm91cjo6RXJyb3I8UnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAKkNAbBpbmRpdl9wYWxsZXRfcGVvcGxlX2FpcmRyb3BzOjpFcnJvcjxSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQArQ0BhHBhbGxldF9taWdyYXRpb25zOjpFcnJvcjxSdW50aW1lPgBiAADAGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgTRBkEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAFkBBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEA3QYYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBkBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDhBgQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCPE0IBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAVQgEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAFkBBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBZAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAAEUIBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAABhCAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBAHkCCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB7QYAGDBCbG9ja1dlaWdodHNlCIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8BWDe9FAQIAwAEBCwCY9z5dAQIA4AEBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHAIhSanQCAKAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RocQg0AAA8AAAAUAAAAFAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0eQhAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbn0IiQVEbmV4dC1wZW9wbGUtcGFzZW9EbmV4dC1wZW9wbGUtcGFzZW8BAAAAYNYtAAAAAABk3XGNXMUyYtQBAAAABOcFIaDT0vgCAAAAFivxkTerrL0BAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAzNneY5bImcoBAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAAEsjj1NfgbeABAAAAJgm+g6xEaNwBAAAA0LrHvkprCSABAAAAkof7DgIbyFQBAAAAhDtvjOyAmMcBAAAAX00Hx2MP1rkBAAAA6pPj8W89aWIDAAAA+8V3uddH79YBAAAABgAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpeM0DCCoAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABjQgAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaDwEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmeRCAQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja5UICGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGHVBghhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW18PEJsb2NrV2VpZ2h0TW9kZQAAqQgEABh8IFRoZSBjdXJyZW50IGJsb2NrIHdlaWdodCBtb2RlLgB1ASBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBibG9jayB3ZWlnaHQsIGZvciBtb3JlIGluZm9ybWF0aW9uIHNlZUggW2BibG9ja193ZWlnaHRgXS4AJQEgS2lsbGVkIGluIFtgU2VsZjo6b25faW5pdGlhbGl6ZWBdIGFuZCBzZXQgYnkgdGhlIFtgYmxvY2tfd2VpZ2h0YF0gbG9naWMuAERQcmV2aW91c0NvcmVDb3VudAAArQgEAAwFASBUaGUgY29yZSBjb3VudCBhdmFpbGFibGUgdG8gdGhlIHBhcmFjaGFpbiBpbiB0aGUgcHJldmlvdXMgYmxvY2suAHUBIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIG9mZmNoYWluIGZ1bmN0aW9uYWxpdHkgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRhcmdldCBibG9jayB3ZWlnaHQuAERVbmluY2x1ZGVkU2VnbWVudAEAsQgEABhJASBMYXRlc3QgaW5jbHVkZWQgYmxvY2sgZGVzY2VuZGFudHMgdGhlIHJ1bnRpbWUgYWNjZXB0ZWQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBhcmVhASBhbmNlc3RvcnMgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgYmxvY2sgd2hpY2ggaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUgb2JzZXJ2ZWRMIHJlbGF5LWNoYWluIHN0YXRlLgB1ASBUaGUgc2VnbWVudCBsZW5ndGggaXMgbGltaXRlZCBieSB0aGUgY2FwYWNpdHkgcmV0dXJuZWQgZnJvbSB0aGUgW2BDb25zZW5zdXNIb29rYF0gY29uZmlndXJlZDwgaW4gdGhlIHBhbGxldC4AbEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudAAA2QgEAAxpASBTdG9yYWdlIGZpZWxkIHRoYXQga2VlcHMgdHJhY2sgb2YgYmFuZHdpZHRoIHVzZWQgYnkgdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBhbG9uZyB3aXRoIHRoZS0BIGxhdGVzdCBIUk1QIHdhdGVybWFyay4gVXNlZCBmb3IgbGltaXRpbmcgdGhlIGFjY2VwdGFuY2Ugb2YgbmV3IGJsb2NrcyB3aXRokCByZXNwZWN0IHRvIHJlbGF5IGNoYWluIGNvbnN0cmFpbnRzLgBUUGVuZGluZ1ZhbGlkYXRpb25Db2RlAQAYBAAYWQEgSW4gY2FzZSBvZiBhIHNjaGVkdWxlZCB1cGdyYWRlLCB0aGlzIHN0b3JhZ2UgZmllbGQgY29udGFpbnMgdGhlIHZhbGlkYXRpb24gY29kZSB0byBiZSQgYXBwbGllZC4APQEgQXMgc29vbiBhcyB0aGUgcmVsYXkgY2hhaW4gZ2l2ZXMgdXMgdGhlIGdvLWFoZWFkIHNpZ25hbCwgd2Ugd2lsbCBvdmVyd3JpdGUgdGhlZQEgW2A6cGVuZGluZ19jb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpQRU5ESU5HX0NPREVdIHdoaWNoIHdpbGwgcmVzdWx0IHRoZXUBIG5leHQgYmxvY2sgdG8gYmUgcHJvY2Vzc2VkIHdpdGggdGhlIG5ldyB2YWxpZGF0aW9uIGNvZGUuIFRoaXMgY29uY2x1ZGVzIHRoZSB1cGdyYWRlIHByb2Nlc3MuAEROZXdWYWxpZGF0aW9uQ29kZQAAGAQAFF0BIFZhbGlkYXRpb24gY29kZSB0aGF0IGlzIHNldCBieSB0aGUgcGFyYWNoYWluIGFuZCBpcyB0byBiZSBjb21tdW5pY2F0ZWQgdG8gY29sbGF0b3IgYW5keCBjb25zZXF1ZW50bHkgdGhlIHJlbGF5LWNoYWluLgBlASBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2sgaWYgbm8gb3RoZXIgcGFsbGV0IGFscmVhZHkgc2V0LCB0aGUgdmFsdWUuADhWYWxpZGF0aW9uRGF0YQAASAQADNAgVGhlIFtgUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGFgXSBzZXQgZm9yIHRoaXMgYmxvY2suAHEBIFRoaXMgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0IG9ubHkgb25jZSBieSB0aGUgW2BQYWxsZXQ6OnNldF92YWxpZGF0aW9uX2RhdGFgXSBpbmhlcmVudC4AUERpZFNldFZhbGlkYXRpb25Db2RlAQBZAQQABOAgV2VyZSB0aGUgdmFsaWRhdGlvbiBkYXRhIHNldCB0byBub3RpZnkgdGhlIHJlbGF5IGNoYWluPwBkTGFzdFJlbGF5Q2hhaW5CbG9ja051bWJlcgEAOBAAAAAADB0BIFRoZSByZWxheSBjaGFpbiBibG9jayBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay4AiCBUaGlzIGlzIHVwZGF0ZWQgaW4gYG9uX2ZpbmFsaXplYC4AYFVwZ3JhZGVSZXN0cmljdGlvblNpZ25hbAEA3QgEABx1ASBBbiBvcHRpb24gd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSByZWxheS1jaGFpbiByZXN0cmljdHMgc2lnbmFsbGluZyBhIHZhbGlkYXRpb24gY29kZSB1cGdyYWRlLmEBIEluIG90aGVyIHdvcmRzLCBpZiB0aGlzIGlzIGBTb21lYCBhbmQgW2BOZXdWYWxpZGF0aW9uQ29kZWBdIGlzIGBTb21lYCB0aGVuIHRoZSBwcm9kdWNlZGwgY2FuZGlkYXRlIHdpbGwgYmUgaW52YWxpZC4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4AOFVwZ3JhZGVHb0FoZWFkAQDRCAQAFNwgT3B0aW9uYWwgdXBncmFkZSBnby1haGVhZCBzaWduYWwgZnJvbSB0aGUgcmVsYXktY2hhaW4uAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADxSZWxheVN0YXRlUHJvb2YAAFAEABjEIFRoZSBzdGF0ZSBwcm9vZiBmb3IgdGhlIGxhc3QgcmVsYXkgcGFyZW50IGJsb2NrLgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAFhSZWxldmFudE1lc3NhZ2luZ1N0YXRlAADlCAQAHGUBIFRoZSBzbmFwc2hvdCBvZiBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gbWVzc2FnaW5nIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBhcyBwZXJIIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AREhvc3RDb25maWd1cmF0aW9uAAD5CAQAGCkBIFRoZSBwYXJhY2hhaW4gaG9zdCBjb25maWd1cmF0aW9uIHRoYXQgd2FzIG9idGFpbmVkIGZyb20gdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgA4TGFzdERtcU1xY0hlYWQBAAEJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPQgVGhlIGxhc3QgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkIHdlIGhhdmUgb2JzZXJ2ZWQuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAEBMYXN0SHJtcE1xY0hlYWRzAQAFCQQAEEkBIFRoZSBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWRzIHdlIGhhdmUgb2JzZXJ2ZWQgcGVyIGVhY2ggY2hhbm5lbCBpbmNvbWluZyBjaGFubmVsLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBkUHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlcwEAOBAAAAAADMggTnVtYmVyIG9mIGRvd253YXJkIG1lc3NhZ2VzIHByb2Nlc3NlZCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AcExhc3RQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2UAABEJBAAMlCBUaGUgbGFzdCBwcm9jZXNzZWQgZG93bndhcmQgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4ANEhybXBXYXRlcm1hcmsBADgQAAAAAASgIEhSTVAgd2F0ZXJtYXJrIHRoYXQgd2FzIHNldCBpbiBhIGJsb2NrLgBgTGFzdFByb2Nlc3NlZEhybXBNZXNzYWdlAAARCQQADIQgVGhlIGxhc3QgcHJvY2Vzc2VkIEhSTVAgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4AUEhybXBPdXRib3VuZE1lc3NhZ2VzAQAVCQQADKQgSFJNUCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AOFVwd2FyZE1lc3NhZ2VzAQA0BAAMrCBVcHdhcmQgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A8CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgZm9yIGVhY2ggbmV3IGJsb2NrLgBUUGVuZGluZ1Vwd2FyZE1lc3NhZ2VzAQA0BAAEMQEgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uAFBQZW5kaW5nVXB3YXJkU2lnbmFscwEANAQADC0BIFVwd2FyZCBzaWduYWxzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uANggVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2ZpbmFsaXplYCBmb3IgZWFjaCBibG9jay4ATFBlbmRpbmdBcHByb3ZlZFBlZXIAAHgEAAQ5ASBUaGUgYXBwcm92ZWQgcGVlciBpZCB0byBiZSBzZW50IGFzIGEgVU1QIHNpZ25hbCBvbiB0aGUgbGFzdCBibG9jayBvZiB0aGUgUG9WLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBAL0BQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAB5AgQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAAHkCBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ASFBvVk1lc3NhZ2VzVHJhY2tlcgAAHQkEAAxVASBUcmFja3MgY3VtdWxhdGl2ZSBgVU1QYCBhbmQgYEhSTVBgIG1lc3NhZ2VzIHNlbnQgYWNyb3NzIGJsb2NrcyBpbiB0aGUgY3VycmVudCBgUG9WYC4AdQEgQWNyb3NzIGRpZmZlcmVudCBjYW5kaWRhdGVzL1BvVnMgdGhlIGJ1ZGdldHMgYXJlIHRyYWNrZWQgYnkgW2BBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnRgXS4AAUAAARUHAAQoU2VsZlBhcmFJZJwQ3gUAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABJQkAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQBZAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAECIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuADxSZWxheVJhbmRvbW5lc3MBPFJlbGF5UmFuZG9tbmVzcwQoUmFuZG9tbmVzcwEAKQkIAAAYQQEgVGhlIGxhc3QgZGlzdGluY3QgcmVsYXkgY2hhaW4gcmFuZG9tbmVzcyB2YWx1ZXMsIHJlZnJlc2hlZCBmcm9tIHRoZSByZWxheSBjaGFpbjQgc3RhdGUgcHJvb2YuADUBIFRoZSB2YWx1ZXMgcGVyc2lzdCBiZXR3ZWVuIGJsb2NrczogdGhleSByZWZsZWN0IHRoZSByZWxheSBwYXJlbnQgb2YgdGhlIGxhc3RJASBibG9jayB3aG9zZSBpbmhlcmVudCByYW4uIENvZGUgcnVubmluZyBiZWZvcmUgdGhlIGluaGVyZW50IChlLmcuIGBvbl9pbml0aWFsaXplYCmIIHNlZXMgdGhlIHByZXZpb3VzIGJsb2NrJ3MgdmFsdWVzLgAAAAAAAAAFAAAoUGFyYW1ldGVycwEoUGFyYW1ldGVycwQoUGFyYW1ldGVycwABBAIdBzUHBAAETCBTdG9yZWQgcGFyYW1ldGVycy4AAbwAARkHAAAAAABJAAA0TmV0d29ya1N1ZmZpeAE0TmV0d29ya1N1ZmZpeAQ0TmV0d29ya1N1ZmZpeAEATQEYFHBhc2VvBCUBIE5ldHdvcmsgc3VmZml4IGFwcGVuZGVkIHRvIHByb2R1Y3QgbmFtZXMgd2hlbiBkZXJpdmluZyBwcm9kdWN0IGNvbnRleHRzLgABSQEAAUkHAAABNQkAAABKAAAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQBFAUAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLgBASW5hY3RpdmVJc3N1YW5jZQEARQFAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIE1QYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQ5CQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgRJCQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBFUJBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIEYQkEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABUQEAAU0HABBIRXhpc3RlbnRpYWxEZXBvc2l0RQFAAMqaOwAAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEAIE1heExvY2tzOBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAsTWF4UmVzZXJ2ZXM4EDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gAChNYXhGcmVlemVzOBAAAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgABbQkAEERSdW50aW1lSG9sZFJlYXNvblUHBHQgVGhlIG92ZXJhcmNoaW5nIGhvbGQgcmVhc29uLhxCYWxhbmNlRQEEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllcmECDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyEARkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQC9AUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAHEJBAAAADxUeFBheW1lbnRDcmVkaXQAAHUJBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABfQcABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBAJpAX0JBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAFlAQABgQcAAAGBCQAEQFJlc3RyaWN0ZWRFbnRpdHlpASRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbawgb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGVkRW50aXR5YF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4ADQAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBAJxAYUJBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICjQmRCQQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAp0JoQkEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAnEBpQlQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAnEBrQEEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAcQEEACBtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgT25seSByZWFkIGJ5IFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF06IGNvbmZpZ3VyZSBpdCBhcyBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGFuZFUBIHByb3ZpZGUgYW4gaW5pdGlhbCB2YWx1ZSBoZXJlIHRvIGFwcGx5IGFuIGF1dG8taW5jcmVtZW50IG1vZGVsIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAFtAQABhQcAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRFAUAAypo7AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdEUBQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlRQFAAKhb6QMAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZUUBQADh9QUAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdEUBQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABrQkAFBxCYWxhbmNlRQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkcQEEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJxARxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhsQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZHEBsQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkcQFBAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWRxAbUJBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkcQG1AQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ADgAAMEFzc2V0c0hvbGRlcgEwQXNzZXRzSG9sZGVyCBRIb2xkcwEBCAICjQlVCQQABA0BIEEgbWFwIHRoYXQgc3RvcmVzIGhvbGRzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4QmFsYW5jZXNPbkhvbGQAAQgCAo0JRQEEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAYkHAAABuQkABERSdW50aW1lSG9sZFJlYXNvblUHBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uAA8AACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBAJxAb0BBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAG5AQABjQcAAAG9CQAEJEFzc2V0S2luZHEBBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuABAAADhBc3NldFR4UGF5bWVudAAAAZEHAAAAAAARAAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEApkHwQkEAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgABwQEAAZUHABwUTFBGZWXZBBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZUUBQAAyfqcCAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0cQEIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWXZBBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHlFAUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElkxQkgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAckJAAgkQXNzZXRLaW5kcQEIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZJkHBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDFxARhhc3NldDJxAc0JCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxcQEYYXNzZXQycQEYYW1vdW50RQEsaW5jbHVkZV9mZWVZAUEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MXEBGGFzc2V0MnEBGGFtb3VudEUBLGluY2x1ZGVfZmVlWQFBARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AEgAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjiFCQQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAtUJkQkEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgLZCaEJBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4pQlQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjjNAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAgbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIE9ubHkgcmVhZCBieSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdOiBjb25maWd1cmUgaXQgYXMgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBhbmRVASBwcm92aWRlIGFuIGluaXRpYWwgdmFsdWUgaGVyZSB0byBhcHBseSBhbiBhdXRvLWluY3JlbWVudCBtb2RlbCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgAByQEAAaEHABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0RQFAAAAAAAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRFAUAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZUUBQAAAAAAAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVFAUAAAAAAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRFAUAAypo7AAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAd0JABQcQmFsYW5jZUUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXI4HFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QTbBrocpvGLHtsG/wgtJECacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4sQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOEEBBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDi1CQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDjRAQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4AEwAAKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAABAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAAAAAABQAAERDb2xsYXRvclNlbGVjdGlvbgFEQ29sbGF0b3JTZWxlY3Rpb24UNEludnVsbmVyYWJsZXMBAOEJBAAEEQEgVGhlIGludnVsbmVyYWJsZSwgcGVybWlzc2lvbmVkIGNvbGxhdG9ycy4gVGhpcyBsaXN0IG11c3QgYmUgc29ydGVkLgA0Q2FuZGlkYXRlTGlzdAEA5QkEABRpASBUaGUgKGNvbW11bml0eSwgbGltaXRlZCkgY29sbGF0aW9uIGNhbmRpZGF0ZXMuIGBDYW5kaWRhdGVzYCBhbmQgYEludnVsbmVyYWJsZXNgIHNob3VsZCBiZVAgbXV0dWFsbHkgZXhjbHVzaXZlLgB1ASBUaGlzIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSBkZXBvc2l0IGFuZCB3aGVuIHRoZSBkZXBvc2l0cyBhcmUgZXF1YWwsIHRoZSBsZWFzdKAgcmVjZW50bHkgdXBkYXRlZCBpcyBjb25zaWRlcmVkIGdyZWF0ZXIuAERMYXN0QXV0aG9yZWRCbG9jawEBBAUEOBAAAAAABIQgTGFzdCBibG9jayBhdXRob3JlZCBieSBjb2xsYXRvci4ARERlc2lyZWRDYW5kaWRhdGVzAQA4EAAAAAAMeCBEZXNpcmVkIG51bWJlciBvZiBjYW5kaWRhdGVzLgB1ASBUaGlzIHNob3VsZCBpZGVhbGx5IGFsd2F5cyBiZSBsZXNzIHRoYW4gW2BDb25maWc6Ok1heENhbmRpZGF0ZXNgXSBmb3Igd2VpZ2h0cyB0byBiZSBjb3JyZWN0LgA0Q2FuZGlkYWN5Qm9uZAEARQFAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAHVAQABpQcAGBRQb3RJZMUJIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAwKgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAHxCQAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAF0BBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBAFkBBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAPUJBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBAP0JBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUE3QEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAUNCgQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAdkBAAGpBwAEKEtleURlcG9zaXRFAUAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABFQoACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXPdAQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBABkKBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBACEKIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZOEBBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBABkKBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAAAlCgQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQApCgQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBADEKBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFRQpJCgQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnEkKBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQBNCjAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQBZAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBZy9AUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAHlAQABrQcADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAFRCgAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoVQoEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBjw4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQJpCjgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQJpCigEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCaQptCgQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQBxCgQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAAB9CgQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAoEKhQoEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBJUKBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAFkBBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQBZAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AAAEDBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQC7QGhCgQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAHpAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAbEHABBEVW5pdmVyc2FsTG9jYXRpb251ARgCCQIAeRcEhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgABuQoEGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAG5AwABwQcAAAAAACAAADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBcEDwQp0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLgAsU2VydmljZUhlYWQAAMEDBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuABRQYWdlcwABCAUFzQrRCgQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAAG9AwABxQcAECBIZWFwU2l6ZTgQAJwBABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLgAgTWF4U3RhbGU4EAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy4ANFNlcnZpY2VXZWlnaHRJAywBBwBYQPuiAgDgABhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuAFBJZGxlTWF4U2VydmljZVdlaWdodEkDLAEHAFhA+6ICAOAAFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAHZCgAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AIgAAHFV0aWxpdHkAAcUDAAHNBwAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgAB3QoACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2lu0QME8CBUaGUgY2FsbGVyIG9yaWdpbiwgb3ZlcmFyY2hpbmcgdHlwZSBvZiBhbGwgcGFsbGV0cyBvcmlnaW5zLgAoAAAgTXVsdGlzaWcBIE11bHRpc2lnBCRNdWx0aXNpZ3MAAQgFAuEK5QoEAASUIFRoZSBzZXQgb2Ygb3BlbiBtdWx0aXNpZyBvcGVyYXRpb25zLgABMQQAAdUHAAwsRGVwb3NpdEJhc2VFAUAAPJFgBAAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgA0RGVwb3NpdEZhY3RvckUBQAAgvL4AAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAHtCgAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAE9BAAB2QcAAAHxCgAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuACoAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJleQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AKwAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUE9QpEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEBQtEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AAUEEAAHdBwAYQFByb3h5RGVwb3NpdEJhc2VFAUAADHdCAwAAAAAAAAAAAAAAEBEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBwcm94eS4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzJQEgYHNpemVvZihCYWxhbmNlKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuAEhQcm94eURlcG9zaXRGYWN0b3JFAUAAAbLEAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4AKE1heFByb3hpZXM4ECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LgAoTWF4UGVuZGluZzgQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLgBcQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VFAUAAFCZyAwAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JFAUAAAmSJAQAAAAAAAAAAAAAAENQgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFubm91bmNlbWVudCBtYWRlLgBZASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyBhbiBgQWNjb3VudElkYCwgYEhhc2hgIGFuZCBgQmxvY2tOdW1iZXJgICh0eXBpY2FsbHkgNjggYnl0ZXMpjCBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuAAEVCwAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuJFByb3h5VHlwZUkEEFUBIEEga2luZCBvZiBwcm94eTsgc3BlY2lmaWVkIHdpdGggdGhlIHByb3h5IGFuZCBwYXNzZWQgaW4gdG8gdGhlIGBJc1Byb3h5YWJsZWAgZmlsdGVyLlEBIFRoZSBpbnN0YW5jZSBmaWx0ZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gY2FsbCBtYXkgYmUgcHJveGllZCB1bmRlciB0aGlzIHR5cGUuAE0BIElNUE9SVEFOVDogYERlZmF1bHRgIG11c3QgYmUgcHJvdmlkZWQgYW5kIE1VU1QgQkUgdGhlIHRoZSAqbW9zdCBwZXJtaXNzaXZlKiB2YWx1ZS4IGAnXg0Zyeg71jA+gO6+jI8vFFIjZKhqnE3sDv7UO/BdEY2hlY2tfcGVybWlzc2lvbnMIEGNhbGwgKHByb3h5X3R5cGVJBFkBBPQgQ2hlY2sgaWYgYSBgUnVudGltZUNhbGxgIGlzIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gYFByb3h5VHlwZWAuABgJ14NGcnoO9YwPoDuvoyMXFLBgfWKvCjs7CtLF1VxYLGlzX3N1cGVyc2V0CCB0b19jaGVja0kEHGFnYWluc3RJBFkBBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACwAABhQZW9wbGUBGFBlb3BsZSQQS2V5cwABBAIIKAQAFEkBIFRoZSBjdXJyZW50IGluZGl2aWR1YWxzIHdlIHJlY29nbmlzZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB5ZXQgaW5jbHVkZWQgaW4gYSByaW5nLgB1ASBMb29rLXVwIGZyb20gdGhlIGNyeXB0byAocHVibGljKSBrZXkgdG8gdGhlIGltbXV0YWJsZSBJRCBvZiB0aGUgaW5kaXZpZHVhbCAoYFBlcnNvbmFsSWRgKS4gQV0BIHBlcnNvbiBjYW4gaGF2ZSB0d28gZGlmZmVyZW50IGVudHJpZXMgaW4gdGhpcyBtYXAgaWYgdGhleSBxdWV1ZWQgYSBrZXkgbWlncmF0aW9uIHdoaWNoZCBoYXNuJ3QgYmVlbiBlbmFjdGVkIHlldC4AOENvdW50ZXJGb3JLZXlzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAGFBlb3BsZQABBAIoGQsEAAxJASBUaGUgY3VycmVudCBpbmRpdmlkdWFscyB3ZSByZWNvZ25pc2UsIGJ1dCBub3QgbmVjZXNzYXJpbHkgeWV0IGluY2x1ZGVkIGluIGEgcmluZy4AZQEgSW1tdXRhYmxlIElEIG9mIHRoZSBpbmRpdmlkdWFsIChgUGVyc29uYWxJZGApIHRvIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIGtleSBhbmQgc3RhdHVzLgA4QWxpYXNUb0FjY291bnQAAQQC6QMEBAAEzCBDb252ZXJzaW9uIG9mIGEgY29udGV4dHVhbCBhbGlhcyB0byBhbiBhY2NvdW50IElELgA4QWNjb3VudFRvQWxpYXMAAQQCBOUDBAAEzCBDb252ZXJzaW9uIG9mIGFuIGFjY291bnQgSUQgdG8gYSBjb250ZXh0dWFsIGFsaWFzLgBMQWNjb3VudFRvUGVyc29uYWxJZAABBAIEKAQAELwgQXNzb2NpYXRpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIHBlcnNvbmFsIElELgAhASBNYW5hZ2VkIHdpdGggYHNldF9wZXJzb25hbF9pZF9hY2NvdW50YCBhbmQgYHVuc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgLvggUmV2ZXJzZSBsb29rdXAgaXMgaW5zaWRlIGBQZW9wbGVgIHN0b3JhZ2UsIGluc2lkZSB0aGUgcmVjb3JkLgA4TmV4dFBlcnNvbmFsSWQBACggAAAAAAAAAAAEuCBUaGUgbmV4dCBmcmVlIGFuZCBuZXZlciByZXNlcnZlZCBwZXJzb25hbCBJRC4AXFBlb3BsZUNvbGxlY3Rpb25DcmVhdGVkAQBZAQQABMAgV2hldGhlciB0aGUgcGVvcGxlIGNvbGxlY3Rpb24gaGFzIGJlZW4gY3JlYXRlZC4ASFJlc2VydmVkUGVyc29uYWxJZAABBAUoEAQABMAgQ2FuZGlkYXRlcycgcmVzZXJ2ZWQgaWRlbnRpdGllcyB3aGljaCB3ZSB0cmFjay4AAU0EAAHlBwAQMFJpbmdFeHBvbmVudFUFBAkETQEgVGhlIHJpbmcgZXhwb25lbnQgdXNlZCB0byBvcGVyYXRlIHRoZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaW4gYE1lbWJlclNlcnZpY2VgLgBcT25ib2FyZGluZ1F1ZXVlUGFnZVNpemU4EB4AAAAISQEgTWF4aW11bSBudW1iZXIgb2YgcGVvcGxlIGluY2x1ZGVkIGluIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBiZWZvcmUgYSBuZXcgb25lIGlzJCBjcmVhdGVkLgBkU3RhbGVBbGlhc0NsZWFudXBJbnRlcnZhbDgQlgAAAAQxASBJbnRlcnZhbCAoaW4gYmxvY2tzKSBhdCB3aGljaCB0aGUgb2ZmY2hhaW4gd29ya2VyIHJ1bnMgc3RhbGUgYWxpYXMgY2xlYW51cC4AcGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2U4EFgCAAAUPQEgVGhlIGFtb3VudCBvZiBibG9jayBudW1iZXIgdG9sZXJhbmNlIHdlIGFsbG93IGZvciBhIHNldHVwIGFjY291bnQgdHJhbnNhY3Rpb24uAAUBIGBzZXRfYWxpYXNfYWNjb3VudGAgYW5kIGBzZXRfcGVyc29uYWxfaWRfYWNjb3VudGAgY2FsbHMgY29udGFpbnNRASBgY2FsbF92YWxpZF9hdGAgYXMgYSBwYXJhbWV0ZXIsIHRob3NlIGNhbGxzIGFyZSB2YWxpZCBpZiB0aGUgYmxvY2sgbnVtYmVyIGlzIHdpdGhpblggdGhlIHRvbGVyYW5jZSBwZXJpb2QuAAEdCwAAADMAABxNb2JSdWxlARxNb2JSdWxlMBxDcmVkaXRzAQEEAgghC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIwgVGhlIHZvdGluZyByZWNvcmRzIG9mIGFsbCBhbGlhc2VzLgA8Vm90aW5nUGVuYWx0aWVzAAEEAgg4BAAIcQEgVGhlIHZvdGUgcGVuYWx0aWVzIG9mIHVzZXJzIGFuZCB0aGVpciBzdGFydGluZyBtb21lbnQuIFZvdGVycyB3aXRoIHBlbmFsdGllcyBjYW5ub3Qgdm90ZSBpbswgY29udGVtcHQgdW50aWwgdGhlIHBlbmFsdHkgZXhwaXJlcyBhbmQgaXMgcmVtb3ZlZC4AMFZvdGluZ1BvaW50cwEBCAYCJQs4EAAAAAAIZQEgVGhlIGFjY3VtdWxhdGVkIHBvaW50cyBvZiBhbGwgYWxpYXNlcywgZHVyaW5nIGVhY2ggZnVuZGluZyByb3VuZC4gVGhlIHBvaW50cyBhY2N1bXVsYXRlZCEBIGR1cmluZyByb3VuZCBgTmAgY2FuIGJlIHJlZGVlbWVkIGZvciByZXdhcmRzIG9ubHkgZHVyaW5nIHJvdW5kIGBOICsgMWAuABRWb3RlcwABCAICJQthBAQABLggQWxsIHZvdGVzIGNhc3QsIHNlZ3JlZ2F0ZWQgYnkgY2FzZSBhbmQgdm90ZXIuACRDYXNlQ291bnQBADgQAAAAAAQRASBUaGUgbnVtYmVyIG9mIGNhc2VzLCBvcGVuIG9yIHJlY2VudGx5IGNsb3NlZCwgc3RvcmVkIGluIHRoZSBwYWxsZXQuACRPcGVuQ2FzZXMAAQQCOCkLBAAEKQEgVGhlIG9wZW4gY2FzZXMgcmVjb3JkZWQgaW4gdGhlIHBhbGxldC4gVGhlc2UgY2FzZXMgY2FuIHN0aWxsIGJlIHZvdGVkIG9uLgAkUmlwZUNhc2VzAAEEAjhFCwQADHUBIFRoZSByaXBlIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZSB2b3RpbmcgaGFzIGNvbmNsdWRlZCBvbiB0aGVzZSBjYXNlcyBhbmQgYSB2ZXJkaWN0ZQEgaGFzIGJlZW4gcmVhY2hlZCwgYnV0IHRoZXkgY2Fubm90IGJlIHJlbW92ZWQgeWV0IGluIG9yZGVyIHRvIGFsbG93IHBlb3BsZSB0byBjbGFpbSB0aGVpchwgdm90ZXMuACREb25lQ2FzZXMAAQQCOEkLBAAIYQEgVGhlIGRvbmUgY2FzZXMgcmVjb3JkZWQgaW4gdGhlIHBhbGxldC4gVGhlc2UgY2FzZXMgYXJlIG9ic29sZXRlIGFuZCBjYW4gYmUgcmVtb3ZlZCBmcm9tJCBzdG9yYWdlLgBEQWNjdW11bGF0ZWRQb2ludHMBACggAAAAAAAAAAAIdQEgVGhlIG51bWJlciBvZiBwb2ludHMgYWNjdW11bGF0ZWQgdGhyb3VnaCBjb3JyZWN0IHZvdGVzIGR1cmluZyB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuIFRoaXN1ASBhbW91bnQgaXMgZ29pbmcgdG8gZGV0ZXJtaW5lIHRoZSBwb2ludC9yZXdhcmQgZXhjaGFuZ2UgcmF0ZSBvZiB0aGUgbmV4dCByZXdhcmQgcGF5b3V0IHJvdW5kLgBIUGF5b3V0RGlzdHJpYnV0aW9uAABNCwQABNggRGVzY3JpYmVzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBjdXJyZW50IHBheW91dCByb3VuZC4AOFJvdW5kU2NoZWR1bGVzAQBRCwQABLggRGVzY3JpYmVzIHRoZSBzY2hlZHVsZXMgb2YgdGhlIHBheW91dCByb3VuZHMuACxBY3RpdmVTaW5jZQAAKAQACG0BIFRoZSB0aW1lc3RhbXAsIGluIHNlY29uZHMsIG9mIHRoZSBtb21lbnQgZW5vdWdoIGFjdGl2ZSB2b3RlcnMgd2VyZSBkZXRlY3RlZCBhbmQgdm90aW5nIHdhczEBIGVuYWJsZWQuIFRoaXMgdmFsdWUgd2lsbCBub3QgYmUgcHJlc2VudCBpZiB0aGVyZSBhcmUgdG9vIGZldyBhY3RpdmUgdm90ZXJzLgABXQQAAekHADhQQ3VycmVuY3lMb2NhdGlvbkluZm9xATABAwBxFwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE1heFZvdGVDbGFpbUR1cmF0aW9uKCCAUQEAAAAAAAQFASBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIGEgY2FzZSB0aW1lcyBvdXQgYW5kIGNhbiBiZSByZWFwZWQuADxNaW5DYXNlRHVyYXRpb244EFgCAAAEQQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGEgY2FzZSBtdXN0IHN0YXkgb3BlbiBmb3Igdm90aW5nIGJlZm9yZSBpdCBjYW4gYmUgY2xvc2VkLgBETWF4Vm90aW5nRHVyYXRpb244ELAEAAAELQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgZm9yIHdoaWNoIGEgY2FzZSBjb3VsZCBzdGF5IG9wZW4gZm9yIHZvdGluZy4ARE1pblR1cm5vdXROb21pbmFsOBABAAAABEUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhIGNhc2UgbXVzdCByZWNlaXZlIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFBNaW5UdXJub3V0UGVyY2VudGFnZV0LBAoIZQEgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHZvdGVzIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgdm90ZXIgY291bnQgYSBjYXNlIG11c3QgcmVjZWl2ZYQgYmVmb3JlIGEgdmVyZGljdCBjYW4gYmUgcmVhY2hlZC4AVFZvdGluZ1BlbmFsdHlEdXJhdGlvbjgQwKgAAATQIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgYSBwZW5hbHR5IGlzIGFwcGxpZWQgZm9yLgBETWF4Vm90ZXNDbGFpbWFibGU4EAoAAAAE9CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgY2xhaW1hYmxlIGluIGEgc2luZ2xlIGV4dHJpbnNpYy4AUE9mZmNoYWluV29ya0ludGVydmFsOBCWAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgBMQ2xlYW5Wb3Rlc0JhdGNoU2l6ZTgQ6AMAAAQlASBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZCBkdXJpbmcgb2ZmY2hhaW4gd29ya2VyIHJ1bi4AaFZvdGVzT3BlbkZvckNsYWltc0R1cmF0aW9uOBBYAgAACBUBIFRoZSB0aW1lIGluIHNlY29uZHMgZHVyaW5nIHdoaWNoIHZvdGVzIGNhbiBiZSBjbGFpbWVkIG9uIGRvbmUgY2FzZXMuwCBNZWFzdXJlZCBmcm9tIHRoZSB0aW1lIHRoZSBjYXNlIGJlY29tZXMgJ0RvbmUnLgBUTWluaW11bVZvdGVyVGhyZXNob2xkOBADAAAACGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhY3RpdmUgdm90ZXJzIHJlcXVpcmVkIHRvIGFsbG93IHZvdGluZy4gV2hlbiB0aGlzIHRocmVzaG9sZCBpcyBub3SEIG1ldCwgb3BlbiBjYXNlcyBjYW5ub3QgdGltZSBvdXQuADxtb2JfcnVsZV9wb3RfaWQEgG1vZGxNb2JSd3JkcwAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgBAbW9iX3J1bGVfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvbW9iLXJ1bGUgICAIUQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBtb2IYIHJ1bGUuAAFhCwAAADQAAChQcm9vZk9mSW5rAShQcm9vZk9mSW5rLChDYW5kaWRhdGVzAAEEAgRlCwQABEkBIFRoZSBjdXJyZW50IHBlcnNvbmFsIGlkZW50aXRpZXMgd2hpY2ggYXJlIGdvaW5nIHRocm91Z2ggdGhlIHByb29mLW9mLWluayBwcm9jZXNzLgAYUGVvcGxlAAEEBSh1CwQACHEBIFRoZSBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIHdlIHRyYWNrOyBhbGwgd2hpY2ggaGF2ZSBiZWVuIHJlY29nbml6ZWQgdGhyb3VnaCBwcm9vZi1vZi1pbms0IGFyZSBpbiBoZXJlLgA8UmVmZXJyYWxUaWNrZXRzAAEEBSiBCwQABAkBIFRoZSB0aWNrZXRzIHN0b3JlZCBvbi1jaGFpbiByZWFkeSB0byBiZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADhEZXNpZ25GYW1pbGllcwABBALNA40LBAAEqCBUaGUgY3VycmVudCBkZXNpZ24gZmFtaWxpZXMgd2UgcmVjb2duaXNlLgBAQ29tbWl0dGVkRGVzaWducwABCAICkQuVCwQABNQgVGhlIGNvbW1pdHRlZCBkZXNpZ25zIHdoaWNoIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLgA8QWxsb2NhdGlvbkNvdW50AQA4EAAAAAAEsCBUaGUgbnVtYmVyIG9mIGp1ZGdlbWVudHMgY3VycmVudGx5IG9uZ29pbmcuADRDb25maWd1cmF0aW9uAQCFBKBAnQQABAAAAOgDAAAAAAAEAAAAACAAAAAAACAAAAAAAAgAAABAnQQABEwgVGhlIGNvbmZpZ3VyYXRpb24uAEBBdmFpbGFibGVJbnZpdGVzAQEEAgQ4EAAAAAAE+CBOdW1iZXIgb2YgaW52aXRhdGlvbnMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICmQsQBAAMHQEgUGVuZGluZyBpbnZpdGF0aW9ucyBmb3IgZWFjaCBpbnZpdGVyIChhbiBhY2NvdW50IHRoYXQgaW52aXRlcyBvdGhlcnMpLgBZASBJZiB0aGUga2V5IGAoaW52aXRlciwgdGlja2V0KWAgZXhpc3RzLCB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUuAGxSZWZlcnJlclJlaW1idXJzZW1lbnRWYWx1ZXMAAIkEBAAUYQEgVGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVycywgYWxvbmcgd2l0aCBob3cgbWFueSBvZiBlYWNoIHZhbHVlbQEgc2hvdWxkIGJlIGF3YXJkZWQuIFRoZXNlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0QQEgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lIHRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLgBFASBTdG9yYWdlIGl0ZW0gbmFtZSBrZWVwcyB0aGUgbGVnYWN5IHByZWZpeCBmb3Igc3RvcmFnZSByZWFkYWJpbGl0eSBjb21wYXRpYmlsaXR5LgBsUmVmZXJyZWRSZWltYnVyc2VtZW50VmFsdWVzAACJBAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBwZW9wbGUsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaHEBIHZhbHVlIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGVVASBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AAW0EAAHxBwAMSE1heEFjdGl2ZVJlZmVycmFsczgQCgAAAAj0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgcmVmZXJyYWxzIGEgdXNlciBjYW4gaGF2ZSBvcGVuLlggSXQgY2Fubm90IGV4Y2VlZCAyMDAuABRQb3RJZMUJIFBvSVBvdF9fIOwgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIHJld2FyZCBwb3QgaXMgZ2VuZXJhdGVkLgApASBUaGUgYWNjb3VudCBtdXN0IGJlIGZ1bmRlZCBzbyByZXdhcmRzIGNhbiBiZSBwYWlkIGR1cmluZyByZWdpc3RyYXRpb24gYW5kYCByZWZlcnJhbCByZXdhcmQgY2xhaW1zLgARASBUaGUgYFBhbGxldElkYCBtdXN0IGJlIGEgY29uc3RhbnQgYXMgaXQgaXMgZXhwb3NlZCBpbiB0aGUgbWV0YWRhdGEuZQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aXRoIGEgcnVudGltZSB1cGdyYWRlIGNhbiBiZSBkb25lIGF0IGFueSB0aW1lLCB0aGUgbmV3IGFjY291bnQgd2lsbJAgdGhlbiBuZWVkIHRvIGJlIGZ1bmRlZCBhY2NvcmRpbmdseS4ATHByb29mX29mX2lua19wb3RfaWQEgG1vZGxQb0lQb3RfXwAAAAAAAAAAAAAAAAAAAAAAAAAABNQgVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvdCB1c2VkIGZvciByZXdhcmQgdHJhbnNmZXJzLgABnQsACDxUaWNrZXRTaWduYXR1cmV5BAyIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLgABASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6OlRpY2tldFB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4YVGlja2V0BASYIFRpY2tldCB0eXBlIHVzZWQgdG8gcmVmZXIgY2FuZGlkYXRlcy4ANQAAEEdhbWUBEEdhbWVQUFN0b3JlZFBoYXNlRHVyYXRpb25zAADhBAQADPQgUGhhc2UtZHVyYXRpb24gb3ZlcnJpZGUgc2V0IGJ5IFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gdmlh4CBgc2V0X2dhbWVfcGhhc2VzYC4gYE5vbmVgIG1lYW5zIHRoZSBjaGFpbiBmYWxscyBiYWNrIHRvcCBgVDo6RGVmYXVsdFBoYXNlRHVyYXRpb25zYC4ARFBsYXlEZXBvc2l0QW1vdW50AQBFAUAAyBeoBAAAAAAAAAAAAAAAED0BIFRoZSBjb25maWd1cmVkIG5hdGl2ZSBiYWxhbmNlIGhlbGQgYXMgZGVwb3NpdCB3aGVuIGFuIGFjY291bnQgcGxheWVyIHNpZ25zIHVwLgAxASBUaGlzIHZhbHVlIGlzIG9ubHkgdXNlZCBmb3IgbmV3IGRlcG9zaXQgY3JlYXRpb25zOyBleGlzdGluZyBhY3RpdmUgZGVwb3NpdHOoIHJldGFpbiB0aGUgYW1vdW50IHRoZXkgd2VyZSBjcmVhdGVkIHdpdGguADxBcmNoaXZlZFBsYXllcnMAAQQCCQWhCwQABCkBIEFsbCB0aGUgcGxheWVyIHdpdGggemVybyBzY29yZSBidXQgc3RpbGwgb25ib2FyZGVkIGluIGluZGl2X3BhbGxldF9zY29yZS4AHFBsYXllcnMAAQQCCQWlCwQAEHAgQWxsIHRoZSBwbGF5ZXIgaW4gdGhlIGdhbWUuACEBIEFjY291bnQtYmFzZWQgcGxheWVyIGFjY291bnRzIGluIHRoaXMgc3RvcmFnZSBhbmQgc3RhdGVtZW50IGFjY291bnRzIGlupCBbYFN0bXRBY2NvdW50VG9BbGlhc2BdIG11c3Qgbm90IG92ZXJsYXAuACRHYW1lSW5kZXgBADgQAAAAAARgIFRoZSBjdXJyZW50IGdhbWUgaW5kZXguABBHYW1lAAC9CwQABMwgVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgbmV4dCBnYW1lIG9yIG9uZ29pbmcgZ2FtZS4ALEdhbWVIaXN0b3J5AAEEBTg4BAAIYQEgVGhlIG1hcHBpbmcgZnJvbSBwYXN0IGdhbWVzLCBpZGVudGlmaWVkIGJ5IHRoZWlyIGdhbWUgaW5kZXgsIHRvIHRoZSBzdGFydCB0aW1lc3RhbXAsIGlueCBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgBcUGxheWVyQXR0ZW5kYW5jZUhpc3RvcnkBAQQCCQXZCwQACDEBIEVudHJpZXMgb2YgcHJldmlvdXNseSBhdHRlbmRlZCBnYW1lcyBvZiBlYWNoIHBsYXllci4gUmV0YWluZWQgb24gYG9mZmJvYXJkYAkBIGFuZCBga2lja291dGAuIEJvdW5kZWQgYnkgYE1heEF0dGVuZGFuY2VIaXN0b3J5RGVwdGhgIHBlciBwbGF5ZXIuAFBHYW1lUGFydGljaXBhbnRDb3VudAEBBAU4OBAAAAAAEPAgQ291bnQgb2YgY29uZmlybWVkIGF0dGVuZGVlcyBwZXIgZ2FtZSBpbmRleC4gSW5jcmVtZW50ZWQgYnkZASBbYFBhbGxldDo6bm90ZV9hdHRlbmRhbmNlYF0gZm9yIGV2ZXJ5IGF0dGVuZGFuY2UgZW50cnksIHJlZ2FyZGxlc3Mgb2b8IHdoZXRoZXIgdGhlIHBsYXllciBpcyByZWNvcmRlZCBhcyBgQWNjb3VudE9yUGVyc29uOjpQZXJzb25gIG9y9CBgQWNjb3VudE9yUGVyc29uOjpBY2NvdW50YC4gRXhwb3NlZCBmb3Igb2ZmLWNoYWluIGNvbnN1bWVycy4ANEluZGV4VG9QbGF5ZXIAAQQF3QsJBQQABOQgVGhlIG1hcHBpbmcgZnJvbSByb3VuZCBpbmRleCBhbmQgcGxheWVyIGluZGV4IHRvIHBsYXllci4ANFBsYXllclRvSW5kZXgAAQQCCQXhCwQABOAgVGhlIG1hcHBpbmcgZnJvbSBwbGF5ZXIgdG8gdGhlaXIgaW5kaWNlcyBpbiBlYWNoIHJvdW5kLgBEU2h1ZmZsZVJlY29nbml6ZWQAAQgFBuULCQUEAAQBASBTdG9yYWdlIHVzZWQgdG8gY29tcHV0ZSB0aGUgc2h1ZmZsZSBvcmRlciBvZiByZWNvZ25pemVkIHBlb3BsZS4AUFNodWZmbGVOb3RSZWNvZ25pemVkAAEIBQblCwkFBAAEVQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2Ygbm90IHJlY29nbml6ZWQgcGVvcGxlLCBpLmUuIGNhbmRpZGF0ZXMuADRHYW1lU2NoZWR1bGVzAQDpCwQAAABAQXZhaWxhYmxlSW52aXRlcwEBBAIEOBAAAAAABOggTnVtYmVyIG9mIGludml0ZXMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICmQsQBAAQiCBQZW5kaW5nIGludml0ZXMgZm9yIGVhY2ggaW52aXRlci4AaQEgSWYgdGhlIGtleSBgKGludml0ZXIsIHRpY2tldClgIGV4aXN0cyB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUsIGZyb200IHRoZSBpbnZpdGVyLgAsTGl0ZUludml0ZXMAAQQCCAQEAAhpASBUaGUgYWNjb3VudCBlYWNoIGxpdGUgcGVyc29uIGRlc2lnbmF0ZWQgdG8gcGxheSB3aXRoLCBrZXllZCBieSB0aGUgbGl0ZSBwZXJzb24ncyBhbGlhcyBpbrwgW2BpbmRpdl9wYWxsZXRfc2NvcmU6OlBhbGxldDo6c2NvcmVfY29udGV4dGBdLgBIQWxpYXNUb1N0bXRBY2NvdW50AAEEAggEBAAcWQEgTWFwcGluZyBmcm9tIGFsaWFzIHRvIHRoZSBhY2NvdW50IGlkIHRvIHVzZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgBBASBBY2NvdW50LWJhc2VkIHBsYXllciBzaW1wbHkgdXNlIHRoZWlyIGFjY291bnQgYW5kIGFyZSBub3QgcGFydCBvZiB0aGlzIG1hcHBpbmcuAQEgUmV2ZXJzZSBtYXBwaW5nIGlzIGF2YWlsYWJsZSBpbiBzdG9yYWdlIFtgU3RtdEFjY291bnRUb0FsaWFzYF0uAOwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBIU3RtdEFjY291bnRUb0FsaWFzAAEEAgQIBAAkWQEgTWFwcGluZyBmcm9tIHRoZSBhY2NvdW50IGlkIHRvIHVzZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBzdGF0ZW1lbnQgc3RvcmUgdG8gdGhlIGFsaWFzLgBBASBBY2NvdW50LWJhc2VkIHBsYXllciBzaW1wbHkgdXNlIHRoZWlyIGFjY291bnQgYW5kIGFyZSBub3QgcGFydCBvZiB0aGlzIG1hcHBpbmcuAQEgUmV2ZXJzZSBtYXBwaW5nIGlzIGF2YWlsYWJsZSBpbiBzdG9yYWdlIFtgQWxpYXNUb1N0bXRBY2NvdW50YF0u7CBUaGlzIGlzIHJlbW92ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIGdldHMgYXJjaGl2ZWQuVQEgVGhpcyBpcyB1cGRhdGVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBzaWducyB1cCB3aXRoIGFub3RoZXIgc3RhdGVtZW50IGFjY291bnQuAGUBIFN0YXRlbWVudCBhY2NvdW50cyBpbiB0aGlzIHN0b3JhZ2UgYW5kIGFjY291bnQtYmFzZWQgcGxheWVyIGFjY291bnRzIGluIFtgUGxheWVyc2BdIG11c3Q0IG5vdCBvdmVybGFwLgBgQ29tbXVuaWNhdGlvbklkZW50aWZpZXJzAAEEAgR9BAQADGkBIFRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXJzIHVzZWQgYnkgcGxheWVycyB0byBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIFAyUCBjb25uZWN0aW9uIGlubQEgb3JkZXIgdG8gcGxheSB0aGUgZ2FtZS4gVGhlIGFjY291bnQgdW5kZXIgd2hpY2ggdGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllciBpcyByZWdpc3RlcmVkGQEgc2hvdWxkIGJlIHRoZSBzYW1lIGFjY291bnQgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUuAAGVBAAB9QcAOCRNYXhSb3VuZHM4EAMAAAAMoCBUaGUgbWF4aW11bSBudW1iZXIgb2Ygcm91bmRzIGluIGEgZ2FtZS4A6CBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiByb3VuZHMgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1heEdyb3VwU2l6ZTgQBgAAAAyoIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuABkBIE5vdGU6IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHBsYXllcnMgaW4gYSBncm91cCBpcyBjb25maWd1cmVkIHBlciBnYW1lLgAwTWluR3JvdXBTaXplOBAAAAAAIKggVGhlIG1pbmltdW0gbnVtYmVyIG9mIHBsYXllcnMgaW4gYSBncm91cC4AZQEgV2hlbiBzY2hlZHVsaW5nIGEgZ2FtZSB0aGUgdmFsdWUgZm9yIGBtYXhfZ3JvdXBfc2l6ZWAgbXVzdCBiZSBhdCBsZWFzdCB0aGlzIG1pbmltdW0gKyAxLgAlASBJbiBvcmRlciB0byBoYXZlIG5vIHNpbmdsZS1wbGF5ZXIgZ3JvdXBzLCB0aGlzIHZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMi4AUQEgTm90ZTogdGhlIGFjdHVhbCBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZSwgaXQgaXNYIGBtYXhfZ3JvdXBfc2l6ZSAtIDFgLgBUTm9uUGxheWluZ0tpY2tvdXRUaW1lOBCAUzsADBUBIFRoZSB0aW1lIGFmdGVyIHdoaWNoIGEgcGxheWVyIHRoYXQgaXMgbm90IHBsYXlpbmcgY2FuIGJlIGtpY2tlZCBvdXQuALwgVGhpcyBpcyBvbmx5IGZvciBhY2NvdW50IHBsYXllcnMsIG5vdCBwZXJzb25zLgBIRGVmYXVsdFBsYXlEZXBvc2l0RQFAAMgXqAQAAAAAAAAAAAAAAAhRASBUaGUgZGVmYXVsdCBwbGF5IGRlcG9zaXQgKG5hdGl2ZSBiYWxhbmNlKSB1c2VkIHdoZW4gW2BQbGF5RGVwb3NpdEFtb3VudGBdIGhhcyBuZXZlcnAgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuAFREZWZhdWx0UGhhc2VEdXJhdGlvbnPhBFAsAQAAPAAAAB4AAABYAgAAPAAAABDsIFRoZSBkZWZhdWx0IGR1cmF0aW9ucyBvZiBlYWNoIGdhbWUgcGhhc2UsIGluIHNlY29uZHMuIFdoZW78IGBTdG9yZWRQaGFzZUR1cmF0aW9uc2AgaXMgYFNvbWVgLCB0aG9zZSB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNl2CBvdmVyIHRoaXMgZGVmYXVsdDsgdGhlIG92ZXJyaWRlIGlzIHNldCBhdCBydW50aW1lIHZpYXQgW2BQYWxsZXQ6OnNldF9nYW1lX3BoYXNlc2BdLgBATWF4R2FtZVNjaGVkdWxlczgQDAAAAATsIFRoZSBNYXhpbXVtIG51bWJlciBvZiBnYW1lIHNjaGVkdWxlcyB0aGUgcGFsbGV0IGNhbiBzdG9yZS4AZE1heEF0dGVuZGFuY2VIaXN0b3J5RGVwdGg4EAwAAAAIXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhc3QgZ2FtZXMgZm9yIHdoaWNoIHBsYXllciBhdHRlbmRhbmNlIGlzIHN0b3JlZC4gQW55IGF0dGVuZGFuY2UBASBlbnRyaWVzIG9sZGVyIHRoYW4gdGhpcyB3aWxsIGJlIGltbWluZW50bHkgcHVyZ2VkIGZyb20gc3RvcmFnZS4ANEFpcmRyb3BTb3VyY2UEgG1vZGxwb3AvZ2FkcwAAAAAAAAAAAAAAAAAAAAAAAAAACOQgQWNjb3VudCB0aGF0IGZ1bmRzIHRoZSBwZXItZ2FtZSBhaXJkcm9wIHByaXplIGFsbG9jYXRpb24NASAoYG1heF93aW5uZXJzIMOXIGFzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgcGVyIHNjaGVkdWxlZCBnYW1lKS4AbHByb29mX29mX293bmVyc2hpcF9tc2dfYmFzZQiAcG9wOmdhbWU6c3RtdF9hY2NvdW50X2Zvcl9hbGlhczoQGQEgVGhlIGJhc2UgbWVzc2FnZSBvZiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIGFuIGFjY291bnQgYnkgYW4gYWxpYXMuADUBIFRoZSBmdWxsIG1lc3NhZ2UgaXMgdGhpcyBiYXNlIGNvbmNhdGVuYXRlZCB0byB0aGUgYWxpYXMgYW5kIHRoZW4gaGFzaGVkIHdpdGisIGBibGFrZTJfMjU2YCAoYmxha2UyIHdpdGggMjU2IGJpdCBvdXRwdXQpLgA4bWF4X2VuYWN0bWVudHM4EBAAAAAQOQEgTWF4aW11bSBudW1iZXIgb2YgZnVsbCBlYXJseS1hdHRlbmRhbmNlIGVuYWN0bWVudHMgYSBzaW5nbGUgYHJlcG9ydGAgY2FsbCBjYW4ZASB0cmlnZ2VyOiBldmVyeSB1bmlxdWUgY28tcGxheWVyIGFjcm9zcyBhbGwgcm91bmRzLCBwbHVzIHRoZSByZXBvcnRlci4A3CBVc2VkIGFzIHRoZSBwcmUtZGlzcGF0Y2ggb3ZlcmNoYXJnZSBib3VuZCBvbiBgcmVwb3J0YC4ASG1heF9yZWNlaXZlZF92b3RlczgQDwAAAAhVASBbYFNlbGY6Om1heF9hdHRlc3RhdGlvbnNgXSBvdmVyIGFueSBnYW1lIHRoZSBydW50aW1lIGFsbG93czogdGhlIG1vc3Qgdm90ZXMgYSBzaW5nbGUhASBwbGF5ZXIgY2FuIHJlY2VpdmUsIGFuZCBlcXVhbGx5IHRoZSBtb3N0IGNvLXBsYXllcnMgdGhleSBjYW4gcmVwb3J0IG9uLgBUYWlyZHJvcF9ldmVudF9pZF9iYXNl7QtscG9wOmdhbWU6YWlyZHJvcDogICAgICAgICAgDFkBIFRoZSBiYXNlIHN0cmluZyBmb3IgdGhlIGFpcmRyb3AgZXZlbnQgaWQgZGVyaXZhdGlvbi4gVGhlIGFjdHVhbCBldmVudCBpZCBpcyB0aGlzIGJhc2UdASBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgYWlyZHJvcCBpbmRleCBhbmQgdGhlIGdhbWUgaW5kZXggQkUgZW5jb2RlZCAoc2VlfCBbYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGBdKS4AMHByb2R1Y3RfbmFtZT0FFBBkaW0yBCEBIFtgUFJPRFVDVF9OQU1FYF0gYXMgc3RvcmVkIHdpdGggZXZlcnkgYWlyZHJvcCBldmVudCB0aGUgZ2FtZSBzY2hlZHVsZXMuAAHxCwAQPFRpY2tldFNpZ25hdHVyZXkEBIggU2lnbmF0dXJlIHVzZWQgdG8gdmVyaWZ5IHRpY2tldHMuQEFjY291bnRTaWduYXR1cmV5BARgIFNpZ25hdHVyZSBmb3IgYWNjb3VudHMuOEFpcmRyb3BBc3NldElkcQEEkCBBc3NldCBpZCB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLkxBaXJkcm9wQXNzZXRCYWxhbmNlRQEEpCBBc3NldCBiYWxhbmNlIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uADcAABRTY29yZQEUU2NvcmUsMFBhcnRpY2lwYW50cwABBAIJBfULBAAEfCBUaGUgcGFydGljaXBhbnRzIGluZm9ybWF0aW9ucy4ATFBlcnNvbmhvb2RUaHJlc2hvbGQBAAwEAATIIFRoZSBzY29yZSB0aHJlc2hvbGQgcmVxdWlyZWQgdG8gcmVhY2ggcGVyc29uaG9vZC4AbFBlcnNvbmhvb2RUaHJlc2hvbGRTY2hlZHVsZQEA/QR8GIgTAAABECcAAAMgTgAABriIAAAKUMMAAA//////FSgdASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVycywgc29ydGVkIGJ5HQEgYXNjZW5kaW5nIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC4gRWFjaCB0aWVyIHNwZWNpZmllcyB0aGUgc2NvcmUgYR0BIHBhcnRpY2lwYW50IG11c3QgcmVhY2ggdG8gYmUgcmVjb2duaXplZCBhcyBhIHBlcnNvbiBhdCB0aGF0IHBvcHVsYXRpb24cIGxldmVsLgAFASBEZWZhdWx0cyB0byBbYERlZmF1bHRQZXJzb25ob29kVGhyZXNob2xkVGllcnNgXSB1bnRpbCBnb3Zlcm5hbmNlAQEgb3ZlcnJpZGVzIGl0IHZpYSBbYFBhbGxldDo6c2V0X3BlcnNvbmhvb2RfdGhyZXNob2xkX3NjaGVkdWxlYF0uABEBIEEgbmV3IHNjaGVkdWxlIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb278IHdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlcyBgUGVyc29uaG9vZFRocmVzaG9sZGAuAFBBYnNlbmNlR3JhY2VTY2hlZHVsZQEA8QSUGIgTAAAGBRAnAAAFBCBOAAAEA7iIAAADAlDDAAACAf////8GASApASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBhYnNlbmNlLWdyYWNlIHRpZXJzLCBzb3J0ZWQgYnkgYXNjZW5kaW5nDQEgcG9wdWxhdGlvbiBzaXplIHRocmVzaG9sZC4gRWFjaCB0aWVyIHNwZWNpZmllcyBob3cgbWFueSBtaXNzZXMgYXJlDQEgdG9sZXJhdGVkIHdpdGhpbiByZWNlbnQgZ2FtZXMgYmVmb3JlIGEgcGFydGljaXBhbnQncyBwZXJzb25ob29kIGlzLCBzdXNwZW5kZWQuAB0BIERlZmF1bHRzIHRvIFtgRGVmYXVsdEFic2VuY2VHcmFjZVRpZXJzYF0gdW50aWwgZ292ZXJuYW5jZSBvdmVycmlkZXMgaXQNASB2aWEgW2BQYWxsZXQ6OnNldF9hYnNlbmNlX2dyYWNlX3NjaGVkdWxlYF0uIEFuIGVtcHR5IHNjaGVkdWxlIChzZXT4IGV4cGxpY2l0bHkgYnkgZ292ZXJuYW5jZSkgZGlzYWJsZXMgdGhlIGdyYWNlIHBlcmlvZCBlbnRpcmVseS4AREFic2VuY2VHcmFjZVJhdGlvAQBhCggAABgVASBUaGUgY3VycmVudGx5IGFjdGl2ZSBhYnNlbmNlLWdyYWNlIHJhdGlvIGAoYWxsb3dlZF9taXNzZXMsIHdpbmRvdylgLCUBIGRlcml2ZWQgZnJvbSBgQWJzZW5jZUdyYWNlU2NoZWR1bGVgIGFuZCB0aGUgY3VycmVudCBhY3RpdmUtcGVyc29uIGNvdW50LgARASBVcGRhdGVkIGVhY2ggdGltZSBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcnVucyAoYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5HQEgYXR0ZW5kYW5jZSByZXBvcnQgc2Vzc2lvbikuIFJlYWQgYnkgYHNldF9hdHRlbmRhbmNlYCB0byBkZWNpZGUgd2hldGhlcowgYSBwYXJ0aWNpcGFudCBzaG91bGQgYmUgc3VzcGVuZGVkLgBIQ3VycmVudFJvdW5kUG9pbnRzAQA4EAAAAAAEtCBUaGUgYWNjdW11bGF0ZWQgcG9pbnRzIGluIHRoZSBjdXJyZW50IHJvdW5kLgBEQ3VycmVudFJvdW5kSW5kZXgBADgQAAAAAByAIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3VuZC4AXQEgVGhpcyBtdXN0IGJlIHRoZSBzdW0gb2YgYWxsIHBvaW50cyBhY2N1bXVsYXRlZCBpbiBgUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnRgIGZvciB0aGU8IGN1cnJlbnQgcm91bmQuAFEBICoqV0FSTklORyoqOiBUaGlzIHN0b3JhZ2UgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggYFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50YCwgdXNltCBgZm4gYWRkX3BvaW50c190b19wYXJ0aWNpcGFudGAgdG8gdXBkYXRlIGl0LgBoUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnQBAQgCAgUMOBAAAAAAGNAgVGhlIHBvaW50cyBhY2N1bXVsYXRlZCBieSBhIHBhcnRpY2lwYW50IGluIGEgcm91bmQuAFEBIEZvciB0aGUgY3VycmVudCByb3VuZCwgdGhpcyBzdG9yYWdlIG11c3QgYmUgdXBkYXRlZCBhbG9uZ3NpZGUgYEN1cnJlbnRSb3VuZFBvaW50c2AuADEBICoqV0FSTklORyoqOiBUaGlzIHN0b3JhZ2UgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggYEN1cnJlbnRSb3VuZFBvaW50c2AsIHVzZbQgYGZuIGFkZF9wb2ludHNfdG9fcGFydGljaXBhbnRgIHRvIHVwZGF0ZSBpdC4AMFJvdW5kUGF5b3V0cwABBAI4CQwEABCoIFRoZSByb3VuZHMgdGhhdCBhcmUgY3VycmVudGx5IHBheWluZyBvdXQuABEBIFJvdW5kcyBhcmUgcGF5aW5nIG91dCBhZnRlciB0aGV5IGhhdmUgZmluaXNoZWQgYWNjdW11bGF0aW5nIHBvaW50cy4lASBXaGVuIGFsbCB0aGVpciBwb2ludHMgaGF2ZSBiZWVuIHBhaWQgb3V0LCB0aGV5IGFyZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJvdW5kUGxhbm5pbmcAAA0MBAAM/CBUaGUgcGxhbm5pbmcgb2YgdGhlIGN1cnJlbnQgcm91bmQgdGhhdCBpcyBhY2N1bXVsYXRpbmcgcG9pbnRzLgA9ASBJZiBub25lIHRoZSBjdXJyZW50IHJvdW5kIGlzIG9uZ29pbmcgYW5kIHdpbGwgYmUgcGxhbm5lZCBvbiB0aGUgbmV4dCBzY2hlZHVsZS4AOFJvdW5kU2NoZWR1bGVzAQARDAQABLggRGVzY3JpYmVzIHRoZSBzY2hlZHVsZXMgb2YgdGhlIHBheW91dCByb3VuZHMuAAHlBAAB+QcAEFBDdXJyZW5jeUxvY2F0aW9uSW5mb3EBMAEDAHEXBDIFdsjrCwT0IFRoZSBsb2NhdGlvbiBvZiB0aGUgdXNlZCBjdXJyZW5jeS4gSXQgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgBQT2ZmY2hhaW5Xb3JrSW50ZXJ2YWw4EAIAAAAEsCBUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggb2ZmY2hhaW4gd29ya2VyIHJ1bnMuADBzY29yZV9wb3RfaWQEgG1vZGxzY29yZXBvdAAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgA0c2NvcmVfY29udGV4dAiAZD1P9mrsMInLrcDRWZLF0DsNcct2DAeqxizmQmpUfeQIWQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBzY29yZSAgcGFsbGV0LgABHQwAAAA4AAAoTmZ0Q3JlZGl0cwEoTmZ0Q3JlZGl0cyxYQXdhcmRlZE5mdENsYWltQ3JlZGl0cwEBCAUCBQwhDEAAAAAAAAAAAAAAAAAAAAAARF0BIFdoaWNoIGNyZWRpdHMgYSBnYW1lIGhhcyBhbHJlYWR5IGF3YXJkZWQgYSBjbGFpbWFudCwga2V5ZWQgYnkgZ2FtZSBpbmRleCBhbmQgY2xhaW1hbnQuFQEgVGhlIHZhbHVlIG1hcmtzIHRoZSBzbG90cyBvZiBbYFBhbGxldDo6Y3JlZGl0X3Nsb3RgXSB0aGF0IGFyZSB0YWtlbi4AXQEgQm9va2tlZXBpbmcgZm9yIFtgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YF0sIGl0cyBvbmx5IHJlYWRlciwgYW5kIHdoYXQgbWFrZXMgYW4tASBhd2FyZCBpZGVtcG90ZW50OiBgcmVwb3J0YCBhd2FyZHMgYSBgUGVyc29uYCB2b3RlJ3MgY3JlZGl0IG9uIHRoZSBzcG90IGFuZGEBIGBhd2FyZF9hdHRlbmRhbmNlX2NyZWRpdHNgIGxhdGVyIHdhbGtzIHRoYXQgc2FtZSBjcmVkaXQsIHdoaWNoIHVuZ3VhcmRlZCB3b3VsZCBnaXZlIHRoZVUBIGNsYWltYW50IGEgc2Vjb25kIGxlYWYsIGluIGEgc2Vjb25kIGJsb2NrJ3MgdHJlZSwgYW5kIHR3byBtaW50cyBmcm9tIG9uZSBjcmVkaXQuIE9mZmUBIGNoYWluIGl0IGlzIG5vdCBuZWVkZWQsIEFzc2V0IEh1YiBtaW50aW5nIGFnYWluc3QgYSByb290IGl0IGlzIHNlbnQgYW5kIGEgd2FsbGV0IHJlYWRpbmdZASBbYE5mdENsYWltQ3JlZGl0QmxvY2tzYF0gYW5kIHRoZSBibG9ja3MnIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50cy4gT25lIHdvcmQgcGVyaQEgY2xhaW1hbnQgcmF0aGVyIHRoYW4gYW4gZW50cnkgcGVyIGNyZWRpdCwgYmVjYXVzZSB0aGF0IGVudHJ5IGNvdW50IGlzIHdoYXQgdGhlIGJhY2tmaWxsJ3NcIHByb29mIHNpemUgaXMgbWFkZSBvZi4AEQEgT25seSB0aGUgY3VycmVudCBnYW1lIGlzIGV2ZXIgaW4gaGVyZSwgZW50cmllcyBiZWluZyBkcmFpbmVkIGJlZm9yZWEBIGBwbGF5ZXJfcHJvY2Vzc19zdGVwMmAga2lsbHMgdGhlIGdhbWUgYW5kIGBuZXdfZ2FtZWAgcmVmdXNpbmcgdG8gc3RhcnQgb25lIHdoaWxlIGEgZ2FtZWEBIGV4aXN0cy4gVGhlIGdhbWUga2V5IHN0aWxsIGVhcm5zIGl0cyBwbGFjZTogYSBzbG90IG1lYW5zIG5vdGhpbmcgb3V0c2lkZSB0aGUgZ2FtZSB3aG9zZVkBIGdyb3VwcyBpdCBpbmRleGVzLCBzbyB3ZXJlIGEgZHJhaW4gbGVmdCBoYWxmIGRvbmUsIGFuIHVua2V5ZWQgZW50cnkgd291bGQgcmVhZCBhcyB0aGX4IG5leHQgZ2FtZSdzIGF3YXJkZWQgc2xvdHMgYW5kIHNpbGVudGx5IHN3YWxsb3cgdGhvc2UgY3JlZGl0cy4AUE5mdENsYWltQ3JlZGl0QmxvY2tzAQEEAgkFJQwEADxhASBUaGUgdHJlZSBibG9ja3MgY29tbWl0dGluZyBhdCBsZWFzdCBvbmUgb2YgYSBjbGFpbWFudCdzIE5GVCBjbGFpbSBjcmVkaXRzLCBpbiBhc2NlbmRpbmdsIG9yZGVyIGFuZCB3aXRob3V0IHJlcGVhdHMuAHEBIEVhY2ggZW50cnkga2V5cyBhbiBbYE5mdENsYWltQ3JlZGl0Um9vdHNgXSBlbnRyeSB3aG9zZSB0cmVlIGhvbGRzIGEgbGVhZiBvZiB0aGUgY2xhaW1hbnQncyxhASBzbyB0aGlzIGFuc3dlcnMgd2hpY2ggcm9vdHMgdGhlIGNsYWltYW50IGhhcyBzb21ldGhpbmcgdG8gbWludCBhZ2FpbnN0IHdpdGhvdXQgc2Nhbm5pbmdVASBldmVyeSBibG9jay4gVGhlIGluZGV4IHN0YXRlcyB3aGljaCBibG9ja3MgdG8gZmV0Y2g7IHRoZSBwcm9vZiBpdHNlbGYgY29tZXMgZnJvbSB0aGVxASBibG9jaydzIFtgTmZ0Q2xhaW1DcmVkaXRBd2FyZHNgXSBlbnRyeSwgb3IgZnJvbSBpdHMgYE5mdENsYWltQ3JlZGl0QXdhcmRlZGAgZXZlbnRzIG9uY2UgdGhlXQEgc3dlZXAgaGFzIHJlbW92ZWQgdGhhdCBlbnRyeS4gQW4gZW50cnkgY2FuIG5hbWUgYSBibG9jayB0aGF0IGlzIHN0aWxsIHRvIGNvbWUsIGJlY2F1c2VlASBhd2FyZGluZyBzcGlsbHMgaW50byBsYXRlciBidWZmZXJzOyB0aGF0IGJsb2NrIGdldHMgaXRzIHJvb3QsIGFuZCBpdHMgZW50cnkgaGVyZSBiZWNvbWVzeCByZXNvbHZhYmxlLCBvbmNlIGl0IGlzIGJ1aWx0LgBZASBCbG9ja3MgYXJlIGFwcGVuZGVkIGFzIGNyZWRpdHMgYXJlIGF3YXJkZWQgYW5kIG5ldmVyIHJlbW92ZWQgb25jZSBtaW50ZWQuIFRoZSBsaXN0IGlzbQEgdGhlcmVmb3JlIGEgcmluZyBib3VuZGVkIGJ5IFtgQ29uZmlnOjpNYXhDcmVkaXRCbG9ja3NQZXJDbGFpbWFudGBdLiBBIGJsb2NrIGl0IGRyb3BzIHN0YXlzaQEgbWludGFibGUsIHNvIGEgY2xhaW1hbnQgcGFzdCB0aGUgcmluZyBmaW5kcyB0aGVpciBibG9ja3MgZnJvbSB0aGUgZXZlbnRzIHJhdGhlciB0aGFuIGZyb20YIGhlcmUuAFBOZnRDbGFpbUNyZWRpdEF3YXJkcwEBCAUFUQgpDAQARHEBIFRoZSBORlQgY2xhaW0gY3JlZGl0cyBlYWNoIHJldGFpbmVkIHRyZWUgY29tbWl0cyB0bywgaW4gbGVhZiBvcmRlciwgd2hpY2ggYXJlIHRoZSBwcmVpbWFnZXNdASBvZiBpdHMgTWVya2xlIGxlYXZlcy4gVGhlIGZpcnN0IGtleSBpcyB0aGUgYmxvY2sgd2hvc2UgdHJlZSBob2xkcyB0aGVtLCB0aGUgc2Vjb25kIHRoZYggW2BDaHVua0luZGV4YF0gd2l0aGluIHRoYXQgYmxvY2suAGUBIEEgYmxvY2sncyBjaHVua3MgZG91YmxlIGFzIHRoZSBidWZmZXIgdGhlIG5leHQgYmxvY2sncyBgb25faW5pdGlhbGl6ZWAgY29tcHV0ZXMgdGhlIHJvb3RVASBvdmVyOiBgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YCBhcHBlbmRzIHRvIHRoZSBsYXN0IG9uZSwgYW5kIG9uY2UgdGhlIHJvb3QgaXN1ASByZWNvcmRlZCB0aGUgY2h1bmtzIHN0YXkgYXMgdGhleSBhcmUsIHNvIGEgY2xhaW0gY2FuIGJlIHByb3ZlbiBmcm9tIHN0YXRlIGFsb25lLiBFdmVyeSBjaHVua3EBIG9mIGEgYmxvY2sgaXMgcmVtb3ZlZCBvbmNlIFtgQ29uZmlnOjpBd2FyZFJldGVudGlvblR0bGBdIGhhcyBydW4gb3V0IG9uIHRoZSB3YWxsLWNsb2NrIHRpbWVdASBvZiB0aGUgYmxvY2sncyBmaXJzdCBhd2FyZCwgYnkgdGhlIHN3ZWVwIFtgTmZ0Q2xhaW1DcmVkaXRBd2FyZEV4cGlyaWVzYF0gZmlsZXMgaXQgZm9yLgBtASBBIGJsb2NrIGhvbGRzIGF0IG1vc3QgW2BDSFVOS1NfUEVSX1RSRUVgXSBjaHVua3MuIFRoZSBhd2FyZHMgYXJlIGNodW5rZWQgc28gdGhhdCBvbmUgYXdhcmRpASByZWFkcyBvbmUgY2h1bmsgaW5zdGVhZCBvZiBhIHdob2xlIHRyZWUncyBsZWF2ZXMsIHdoaWNoIGtlZXBzIGEgYHJlcG9ydGAncyBkZWNsYXJlZCBwcm9vZnwgc2l6ZSBjbG9zZSB0byB3aGF0IGl0IHJlY29yZHMuAGUBIFRoZSBhd2FyZHMgYXJlIGtlcHQgcmF0aGVyIHRoYW4gdGhlIGxlYXZlcyB0aGV5IGhhc2ggdG8sIGJlY2F1c2UgYSBtaW50IG5lZWRzIHRoZSBjcmVkaXRRASBpdHNlbGY6IEFzc2V0IEh1YiByZWNvbXB1dGVzIHRoZSBsZWFmIGZyb20gdGhlIGNsYWltYW50IGFuZCB0aGUgY3JlZGl0IHRoZSBjbGFpbWFudFEBIHByZXNlbnRzLCBzbyBhIGxlYWYgYWxvbmUgd291bGQgc3RpbGwgbGVhdmUgdGhlIGNyZWRpdCB0byBiZSByZWNvdmVyZWQgZnJvbSBldmVudHMuAGxOZnRDbGFpbUNyZWRpdEF3YXJkRXhwaXJpZXMAAQgGBTUMEAQAHFEBIEV2ZXJ5IHRyZWUgYmxvY2sgd2hvc2UgW2BOZnRDbGFpbUNyZWRpdEF3YXJkc2BdIGFyZSBzdGlsbCBvbiBjaGFpbiwgZmlsZWQgdW5kZXIgdGhlfCB0aW1lc3RhbXAgaXRzIHJvb3QgY29tbWl0cyB0by4AYQEgS2V5ZWQgYXMgW2BSb290RXhwaXJpZXNgXSBpcywgZnJvbSB0aGUgc2FtZSB0aW1lc3RhbXAsIHNvIHRoZSB0d28gYWdyZWUgb24gd2hlbiBhIGJsb2NrXQEgZmFsbHMgZHVlLiBLZXB0IGFwYXJ0IGZyb20gdGhhdCBtYXAgYmVjYXVzZSB0aGUgdHdvIHJ1biBvbiBkaWZmZXJlbnQgVFRMcywgYW5kIGEgc3dlZXBlASByZW1vdmVzIHRoZSBlbnRyaWVzIGl0IHJlYWRzOiBzaGFyaW5nIG9uZSBtYXAgd291bGQgaGF2ZSB3aGljaGV2ZXIgc3dlZXAgY2FtZSBmaXJzdCB0YWtlcCB0aGUgb3RoZXIncyByZWNvcmQgd2l0aCBpdC4ANENyZWRpdEJ1ZmZlcnMAAQQFOD0MBAAoYQEgVGhlIGJ1ZmZlcnMgdGhhdCBzdGlsbCBvd2UgYSB0cmVlLCBrZXllZCBieSB0aGUgYmxvY2sgd2hvc2UgdHJlZSBjb21taXRzIGVhY2guIEFuIGVudHJ5XQEgaG9sZHMgd2hhdCBpdHMgW2BOZnRDbGFpbUNyZWRpdFJvb3RzYF0gZW50cnkgd2lsbCBjYXJyeSBiZXNpZGVzIHRoZSByb290LCBhbmQgaG93IG1hbnloIGF3YXJkcyBhcmUgaW4gdGhlIGJ1ZmZlci4AYQEgV3JpdHRlbiB3aGVuIGEgYnVmZmVyJ3MgZmlyc3QgY3JlZGl0IGlzIGF3YXJkZWQsIHVwZGF0ZWQgYnkgZWFjaCBvbmUgYWZ0ZXIgaXQgYW5kIHRha2VubQEgb25jZSBpdHMgcm9vdCBpcyByZWNvcmRlZC4gQXdhcmRpbmcgYW5kIFtgUGFsbGV0OjpidWlsZF9jcmVkaXRfdHJlZWBdIHJlYWQgdGhlIGF3YXJkIGNvdW50VQEgZnJvbSBoZXJlIHJhdGhlciB0aGFuIHNjYW4gdGhlIGJ1ZmZlcidzIFtgTmZ0Q2xhaW1DcmVkaXRBd2FyZHNgXSBjaHVua3MgZm9yIGl0cyBlbmQuAF0BIEF0IG1vc3QgW2BNQVhfUEVORElOR19DUkVESVRfVFJFRVNgXSBlbnRyaWVzLCB3aGljaCBpcyB0aGUgb25seSBib3VuZCBvbiB0aGUgYXdhcmRzIG5vSCB0cmVlIGNvbW1pdHMgeWV0LgBIQ3JlZGl0QnVmZmVyQ3Vyc29yAQA4EAAAAAAYcQEgVGhlIFtgQ3JlZGl0QnVmZmVyc2BdIGVudHJ5IHRoZSBuZXh0IGF3YXJkZWQgY3JlZGl0IGdvZXMgaW50bywgbmFtZWQgYnkgaXRzIGJsb2NrLCB3aGljaCBpc4QgdGhlIGJsb2NrIHdob3NlIHRyZWUgY29tbWl0cyBpdC4AYQEgQWhlYWQgb2YgdGhlIGN1cnJlbnQgYmxvY2sgd2hlbiBhd2FyZGluZyBoYXMgc3BpbGxlZC4gQSB2YWx1ZSBhdCBvciBiZWZvcmUgdGhlIHByZXZpb3VzdQEgYmxvY2ssIHplcm8gaW5jbHVkZWQsIG5hbWVzIGEgYnVmZmVyIHdob3NlIHRyZWUgaXMgYWxyZWFkeSBidWlsdCwgc28gYXdhcmRpbmcgc3RhcnRzIGEgZnJlc2hoIG9uZSBhdCB0aGUgY3VycmVudCBibG9jay4ATE5mdENsYWltQ3JlZGl0Um9vdHMAAQQFOAEIBAAIXQEgVGhlIE1lcmtsZSBjb21taXRtZW50IHRvIHRoZSBORlQgY2xhaW0gY3JlZGl0cyBhIGJsb2NrIGNvbW1pdHRlZCwga2V5ZWQgYnkgdGhhdCBibG9jay7AIEEgYmxvY2sgd2hvc2UgYnVmZmVyIGhlbGQgbm90aGluZyBoYXMgbm8gZW50cnkuAFxDcmVkaXRUcmVlRGVsaXZlcnlRdWV1ZQEAQQwEABxhASBUaGUgdHJlZSBibG9ja3Mgd2hvc2UgY3JlZGl0IHRyZWVzIGhhdmUgbm90IGJlZW4gZGVsaXZlcmVkIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIHlldCw9ASBpbiBhc2NlbmRpbmcgYmxvY2sgb3JkZXIsIGVhY2ggd2l0aCB0aGUgc2VxdWVuY2UgbnVtYmVyIGl0IGlzIGRlbGl2ZXJlZCB1bmRlci4AIQEgQXBwZW5kZWQgYnkgW2BQYWxsZXQ6OmJ1aWxkX2NyZWRpdF90cmVlYF0gYW5kIGRyYWluZWQgZnJvbSB0aGUgZnJvbnQgYnlRASBbYFBhbGxldDo6c2VuZF9jcmVkaXRfdHJlZXNgXSBvbmNlIHRoZSBYQ00gY2FycnlpbmcgdGhlIHRyZWVzIGhhcyBiZWVuIGFjY2VwdGVkIGZvcl0BIGRlbGl2ZXJ5LiBUaGUgdHJlZXMgdGhlbXNlbHZlcyBzdGF5IGluIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdOyB0aGlzIG9ubHkgcmVjb3JkcyB3aGF0XCBzdGlsbCBvd2VzIGEgZGVsaXZlcnkuADhMYXN0UmVwbGF5VGltZQAAKAQAENQgVGhlIHRpbWUgb2YgdGhlIGxhc3QgY3JlZGl0IHRyZWUgcmVwbGF5LCBpbiBzZWNvbmRzLgDwIFtgUGFsbGV0OjpyZXBsYXlfY3JlZGl0X3RyZWVzYF0gcmVmdXNlcyB0byBydW4gYWdhaW4gd2l0aGlupCBbYENvbmZpZzo6UmVwbGF5Q29vbGRvd25TZWNvbmRzYF0gb2YgaXQuADBSb290RXhwaXJpZXMAAQgGBTUMEAQAHG0BIEV2ZXJ5IHRyZWUgYmxvY2sgd2hvc2Ugcm9vdCBpcyBzdGlsbCByZWNvcmRlZCwgZmlsZWQgdW5kZXIgdGhlIHRpbWVzdGFtcCB0aGF0IHJvb3QgY29tbWl0cxAgdG8uAF0BIFRoZSBrZXkgaXMgaGFzaGVkIHdpdGggYElkZW50aXR5YCBhbmQgZW5jb2RlZCBiaWctZW5kaWFuLCBzbyB0aGUgbWFwIGl0ZXJhdGVzIGZyb20gdGhlZQEgb2xkZXN0IGRlYWRsaW5lIHRvIHRoZSBuZXdlc3QsIHdoaWNoIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGRvZXMgbm90LiBBIHN3ZWVwIHRha2VzIHRoZWkBIHJvb3RzIHRoYXQgYXJlIGR1ZSBhbmQgc3RvcHMgYXQgdGhlIGZpcnN0IHRoYXQgaXMgbm90LiBCb3RoIHJlbW92YWwgcGF0aHMgcmVtb3ZlIGEgcm9vdCdzVCBlbnRyeSB3aXRoIHRoZSByb290LgBYTmV4dENyZWRpdFRyZWVTZXF1ZW5jZQEAKCAAAAAAAAAAABQRASBUaGUgc2VxdWVuY2UgbnVtYmVyIHRoZSBuZXh0IHF1ZXVlZCBjcmVkaXQgdHJlZSBpcyBkZWxpdmVyZWQgdW5kZXIuAHEBIE9ubHkgYSB0cmVlIHRoYXQgbWFkZSBpdCBpbnRvIFtgQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWVgXSBjb25zdW1lcyBvbmUsIHNvIHRoZSBzZXF1ZW5jZSB0aGVhASBjbGFpbXMgY2hhaW4gc2VlcyBzdGF5cyBjb250aWd1b3VzIGV2ZW4gd2hlbiB0aGUgcXVldWUgb3ZlcmZsb3dzLiBBIGdhcCB0aGVyZSB0aGVyZWZvcmXcIG1lYW5zIGEgbWVzc2FnZSB3YXMgbG9zdCwgbmV2ZXIgdGhhdCBvbmUgd2FzIG5vdCBzZW50LgABDQUAAf0HADA8TmZ0Q2xhaW1zUGFyYUlknBDcBQAADFkBIFRoZSBwYXJhY2hhaW4gdGhlIGNyZWRpdCB0cmVlcyBhcmUgZGVsaXZlcmVkIHRvLCB3aGljaCBtaW50cyB0aGUgTkZUcyBjbGFpbWVkIGFnYWluc3RdASB0aGVtLiBUaGVyZSBpcyBleGFjdGx5IG9uZSwgc28gdGhlIHJ1bnRpbWUgZml4ZXMgaXQgcmF0aGVyIHRoYW4gZ292ZXJuYW5jZSByZWdpc3RlcmluZxAgaXQuAFBOZnRDbGFpbXNQYWxsZXRJbmRleAwEYAhBASBQYWxsZXQgaW5kZXggb2YgaW5kaXYtcGFsbGV0LW5mdC1jbGFpbXMgb24gW2BDb25maWc6Ok5mdENsYWltc1BhcmFJZGBdLCB1c2VkIHRv3CBlbmNvZGUgdGhlIGBUcmFuc2FjdGAgY2FsbCB0aGUgdHJlZXMgYXJlIGRlbGl2ZXJlZCBpbi4AUE1heFF1ZXVlZENyZWRpdFRyZWVzOBAAAQAAHAUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjcmVkaXQgdHJlZXMgdGhhdCBjYW4gd2FpdCBmb3IgZGVsaXZlcnkgaW5sIGBDcmVkaXRUcmVlRGVsaXZlcnlRdWV1ZWAuAGEBIE9uZSBibG9jayBidWlsZHMgYXQgbW9zdCBvbmUgdHJlZSBhbmQgdGhlIG9mZmNoYWluIHdvcmtlciBkcmFpbnMgdGhlIHF1ZXVlIGV2ZXJ5IGJsb2NrLGEBIHNvIHRoaXMgb25seSBoYXMgdG8gY292ZXIgYW4gb3V0YWdlLiBBIHRyZWUgdGhhdCBkb2VzIG5vdCBmaXQgaXMgbmV2ZXIgcXVldWVkIGFuZCBuZWVkc9ggW2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXSwgc28gc2l6ZSBpdCB3ZWxsIHBhc3SYIFtgQ29uZmlnOjpNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2VgXS4AYE1heENyZWRpdFRyZWVzUGVyTWVzc2FnZTgQIAAAABD8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjcmVkaXQgdHJlZXMgY2FycmllZCBieSBvbmUgWENNIG1lc3NhZ2UuAFUBIFRoZSBuZnQtY2xhaW1zIHBhbGxldCdzIG93biBib3VuZCBtdXN0IGJlIGF0IGxlYXN0IHRoaXMgbGFyZ2UsIG90aGVyd2lzZSB0aGUgYmF0Y2hlc/ggc2VudCB0byBpdCBmYWlsIHRvIGRlY29kZSBhbmQgdGhlIHRyZWVzIGluIHRoZW0gbmV2ZXIgYXJyaXZlLgBUUmVwbGF5Q29vbGRvd25TZWNvbmRzKCA8AAAAAAAAABDMIENvb2xkb3duLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIGNyZWRpdCB0cmVlIHJlcGxheXMuAE0BIFtgUGFsbGV0OjpyZXBsYXlfY3JlZGl0X3RyZWVzYF0gaXMgcGVybWlzc2lvbmxlc3MsIHNvIHRoaXMgaXMgd2hhdCBib3VuZHMgdGhlIFhDTVBYIHRyYWZmaWMgaXQgY2FuIGNhdXNlLgBUTmZ0Q2xhaW1zUmVtb3RlV2VpZ2h0eQIYAkbDI6EoIAkBIFBlci10cmVlIHdlaWdodCBzdXJjaGFyZ2UgZm9yIGV4ZWN1dGluZyBgcmVjZWl2ZV9jcmVkaXRfdHJlZXNgIG9u2CBbYENvbmZpZzo6TmZ0Q2xhaW1zUGFyYUlkYF0sIGNoYXJnZWQgdG8gdGhlIGNhbGxlciBvZoQgW2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXS4AXQEgVGhpcyBwcmljZXMgdGhlIHJlbW90ZSB3b3JrIGEgcmVwbGF5IGNhdXNlczsgW2BDb25maWc6OlJlcGxheUNvb2xkb3duU2Vjb25kc2BdIGlzIHdoYXQlASBib3VuZHMgaG93IG9mdGVuIG9uZSBjYW4gaGFwcGVuLiBTZXQgaXQgdG8gYXQgbGVhc3QgdGhlIHBlci10cmVlIGNvc3Qgb2Y9ASBgcmVjZWl2ZV9jcmVkaXRfdHJlZXNgIGluIHRoZSBjbGFpbXMgY2hhaW4ncyBvd24gZ2VuZXJhdGVkIHdlaWdodHMsIHByb29mIHNpemUoIGluY2x1ZGVkLgBEQXdhcmRSZXRlbnRpb25UdGwoIACndgAAAAAAHFUBIEhvdyBsb25nLCBpbiBzZWNvbmRzLCBhIHRyZWUgYmxvY2sncyBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gc3RheSBvbiBjaGFpbiBwYXN0IHRoZS0BIHdhbGwtY2xvY2sgdGltZSBvZiBpdHMgZmlyc3QgYXdhcmQsIHdoaWNoIGlzIHRoZSB0aW1lIGl0cyByb290IGNvbW1pdHMgdG8uAF0BIFNldCBpdCB0byB0aGUgY2xhaW1zIGNoYWluJ3Mgb3duIGRlYWRsaW5lLCBbYENvbmZpZzo6Q2xhaW1zQ2hhaW5UcmVlVHRsYF06IGF3YXJkcyBoZWxkXQEgcGFzdCB0aGF0IHByb3ZlIGNsYWltcyB0aGUgY2hhaW4gbm8gbG9uZ2VyIGFjY2VwdHMsIGFuZCBhd2FyZHMgZHJvcHBlZCBiZWZvcmUgaXQgbGVhdmUdASBhIG1pbnRhYmxlIGNyZWRpdCB3aG9zZSBwcm9vZiBoYXMgdG8gY29tZSBmcm9tIHRoZSBibG9jaydzIGV2ZW50cy4gVGhlFQEgYGludGVncml0eV90ZXN0YCBob2xkcyBpdCB0byBbYFBhbGxldDo6cm9vdF90dGxgXSBhcyBhbiB1cHBlciBib3VuZC4AaE1heENyZWRpdEJsb2Nrc1BlckNsYWltYW50OBAAAQAAKD0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0cmVlIGJsb2NrcyBbYE5mdENsYWltQ3JlZGl0QmxvY2tzYF0ga2VlcHMgcGVyIGNsYWltYW50LgBVASBUaGUgaW5kZXggaXMgYSBsb29rdXAgYWlkLCBub3QgdGhlIHJlY29yZCBvZiB3aGF0IGEgY2xhaW1hbnQgaXMgb3dlZCwgc28gYSBmdWxsIGxpc3RZASBkcm9wcyBpdHMgb2xkZXN0IGJsb2NrIHJhdGhlciB0aGFuIHJlamVjdGluZyBhbiBhd2FyZC4gQSBkcm9wcGVkIGJsb2NrIHN0YXlzIG1pbnRhYmxlFQEgZm9yIFtgQ29uZmlnOjpBd2FyZFJldGVudGlvblR0bGBdLCBpdHMgcHJvb2YgY29taW5nIGZyb20gdGhlIGJsb2NrJ3MhASBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gZW50cnksIHNvIHRoZSBjbGFpbWFudCBsb3NlcyBkaXNjb3ZlcnkgdGhyb3VnaEkBIFtgUGFsbGV0OjpuZnRfY2xhaW1fY3JlZGl0X3Jvb3RzYF0gYW5kIG5vdGhpbmcgZWxzZS4gU2l6ZSBpdCB0byB0aGUgdHJlZSBibG9ja3MgYWUBIGNsYWltYW50IGFjY3VtdWxhdGVzIG92ZXIgW2BDb25maWc6OkF3YXJkUmV0ZW50aW9uVHRsYF0gYXQgdGhlIGNoYWluJ3MgZ2FtZSBjYWRlbmNlLCBhbmRFASBhY2NvdW50IGZvciB0aGUgY29zdDogdGhlIGxpc3QgaXMgcmVhZCBhbmQgd3JpdHRlbiB3aG9sZSBhdCB0aGlzIGJvdW5kLCBvbmNlIHBlcqggZGlzdGluY3QgY2xhaW1hbnQgYW4gZXh0cmluc2ljIGF3YXJkcyB0by4AaE1heFRyZWVEZWxldGlvbnNQZXJNZXNzYWdlOBBAAAAAFBEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0cmVlIGJsb2NrcyBhY2NlcHRlZCBpbiBvbmUgZGVsZXRpb24gbWVzc2FnZS4AZQEgU2V0IHRoaXMgYXQgbGVhc3QgYXMgaGlnaCBhcyB0aGUgY2xhaW1zIHBhbGxldCdzIGBNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZWAuIEEgbWVzc2FnZVUBIGFib3ZlIHRoZSBib3VuZCBmYWlscyB0byBkZWNvZGUsIGFuZCBbYFBhbGxldDo6cm9vdF90dGxgXSB0aGVuIHJlbW92ZXMgdGhlIHJvb3RzIGl0c0QgZGVsZXRpb25zIG5hbWVkLgBIQ2xhaW1zQ2hhaW5UcmVlVHRsKCAAp3YAAAAAABhJASBUaGUgY2xhaW1zIGNoYWluJ3MgVFRMIGZvciB0aGUgdHJlZXMgdGhpcyBjaGFpbiBzZW5kcyBpdCwgd2hpY2ggaXMgdGhlIGRlYWRsaW5lIGFUIGNsYWltYW50IGlzIGhlbGQgdG8uAGUBIFRoaXMgZHVwbGljYXRlcyBhIGNvbnN0YW50IG9mIGFub3RoZXIgcnVudGltZSwgYXMgW2BDb25maWc6Ok5mdENsYWltc1BhbGxldEluZGV4YF0gZG9lcy5FASBbYFBhbGxldDo6cm9vdF90dGxgXSBkZXJpdmVzIGZyb20gaXQsIHNvIGtlZXAgaXQgaW4gc3RlcCB3aXRoIHRoZSBjbGFpbXMgY2hhaW4ncywgYFRyZWVUdGxgLgBATWF4Um9vdHNQZXJTd2VlcDgQQAAAABAVASBNYXhpbXVtIG51bWJlciBvZiByb290cyBvbmUgW2BQYWxsZXQ6OnN3ZWVwX2V4cGlyZWRfcm9vdHNgXSByZW1vdmVzLgBZASBUaGlzIGJvdW5kcyB0aGUgY2FsbCdzIHdlaWdodCBhZ2FpbnN0IHRoZSBibG9jay4gVGhlIG9mZmNoYWluIHdvcmtlciBzdWJtaXRzIG9uZSBjYWxsgCBwZXIgYmxvY2sgdW50aWwgbm90aGluZyBpcyBkdWUuAFhNYXhBd2FyZEJsb2Nrc1BlclN3ZWVwOBAIAAAAGDEBIE1heGltdW0gbnVtYmVyIG9mIHRyZWUgYmxvY2tzIG9uZSBbYFBhbGxldDo6c3dlZXBfZXhwaXJlZF9hd2FyZHNgXSByZW1vdmVzLgBVASBGYXIgYmVsb3cgW2BDb25maWc6Ok1heFJvb3RzUGVyU3dlZXBgXSwgdGhvdWdoIGJvdGggc3dlZXAgdGhlIHNhbWUgd2F5OiBhIHJvb3QgaXMgNTZVASBieXRlcyB3aGVyZSBhIGJsb2NrJ3MgYXdhcmRzIGFyZSBjaGFyZ2VkIGF0IFtgQVdBUkRTX1BFUl9UUkVFYF0gb2YgdGhlbSwgc28gdGhlIHNhbWVVASBjb3VudCB3b3VsZCBjb3N0IHR3byBvcmRlcnMgb2YgbWFnbml0dWRlIG1vcmUgcHJvb2Ygc2l6ZS4gVGhlIGBpbnRlZ3JpdHlfdGVzdGAgaG9sZHMJASB0aGUgY2FsbCB0byB0aGUgYmxvY2sncyBidWRnZXQsIHdoaWNoIGlzIHdoYXQgcmVhbGx5IGJvdW5kcyB0aGlzLgABTQwAAAA5AAAgRHVtbXlEaW0BIER1bW15RGltCCxSZXNlcnZlZElkcwABBAIoEAQABNwgVGhlIHBlcnNvbmFsIElEcyB0aGF0IGFyZSByZXNlcnZlZCBieSB1bnByb3ZlbiBwZW9wbGUuABhQZW9wbGUAAQQFKFEMBAAEuCBUaGUgcGVvcGxlIHdlIHRyYWNrIGFsb25nIHdpdGggdGhlaXIgcmVjb3Jkcy4AARkFAAEJCAAAAVUMAAAAOwAAKFBlb3BsZUxpdGUBKFBlb3BsZUxpdGUUKExpdGVQZW9wbGUAAQQCBFkMBAAAADhBbGlhc1RvQWNjb3VudAABBALpAwQEAATgIENvbnZlcnNpb24gb2YgYSBsaXRlIGNvbnRleHR1YWwgYWxpYXMgdG8gYW4gYWNjb3VudCBJRC4AOEFjY291bnRUb0FsaWFzAAEEAgTlAwQABOAgQ29udmVyc2lvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzLgBsTGl0ZVBlb3BsZUNvbGxlY3Rpb25DcmVhdGVkAQBZAQQABPAgV2hldGhlciB0aGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIGJlZW4gY3JlYXRlZC4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEKQEgTnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhdmFpbGFibGUgdG8gZGlzdHJpYnV0ZSBmb3IgYSB2ZXJpZmllciBhY2NvdW50IGlkLgABMQUAAQ0IABgUUG90SWTFCSBwbGl0ZWZlZQQ9ASBBY2NvdW50IGlkZW50aWZpZXIgdXNlZCB0byBkZXJpdmUgdGhlIGFjY291bnQgdGhhdCByZWNlaXZlcyByZWdpc3RyYXRpb24gZmVlcy4AQExpdGVSaW5nRXhwb25lbnRVBQQJBMwgUmluZyBleHBvbmVudCB1c2VkIGZvciB0aGUgbGl0ZSBwZW9wbGUgY29sbGVjdGlvbi4ASExpdGVPbmJvYXJkaW5nU2l6ZTgQAwAAAAT8IE9uYm9hcmRpbmcgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGxpdGUgcGVvcGxlIGNvbGxlY3Rpb24uAEhsaXRlX3Blb3BsZV9wb3RfaWQEgG1vZGxwbGl0ZWZlZQAAAAAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBhY2NvdW50IHRoYXQgcmVjZWl2ZXMgbm9uLXJlZnVuZGFibGUgbGl0ZS1wZXJzb24gcmVnaXN0cmF0aW9uIGZlZXMuADBhdXRoX2NvbnRleHQIgBZVjlvlyiCIUSA3bx7/3Oxy5dCUnfvtF5DRqVmQ2aAuBLggVGhlIGNvbnRleHQgdXNlZCB0byBhdXRoZW50aWNhdGUgbGl0ZSBwZW9wbGUuAHRhY2NvdW50X3NldHVwX2Jsb2NrX3RvbGVyYW5jZTgQWAIAAAQtASBUaGUgbnVtYmVyIG9mIGJsb2NrcyBvZiB0b2xlcmFuY2Ugd2UgYWxsb3cgZm9yIGFuIGFsaWFzIHNldHVwIHRyYW5zYWN0aW9uLgABYQwABFBBdHRlc3RhdGlvblNpZ25hdHVyZXkECGEBIFNpZ25hdHVyZSBnZW5lcmF0ZWQgYnkgbGl0ZSBwZW9wbGUgYW5kIHVzZWQgYnkgdmVyaWZpZXJzIHRvIGNsYWltIGF0dGVzdGF0aW9ucyBvbiB0aGVpciAgYmVoYWxmLgA+AAAkUmVzb3VyY2VzASRSZXNvdXJjZXMsJENvbnN1bWVycwABBAIEZQwEAAQpASBBY2NvdW50cyB1c2VkIHRvIGlkZW50aWZ5IGNvbnN1bWVycyBtYXBwZWQgdG8gdGhlaXIgY29uc3VtZXIgaW5mb3JtYXRpb24uAGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXMAAQgGAm0McQwEABRxASBBY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBzdGF0ZW1lbnQgc3RvcmUgc2xvdCB0aHJvdWdoIGFuIGFub255bW91cyBhbGxvd2FuY2UsIHBlciBwZXJpb2QuAGEBIFRoZSBwZXJpb2Qga2V5IGlzIGEgYmlnLWVuZGlhbiBlbmNvZGVkIGRheSBudW1iZXIgKHNlY29uZHMgc2luY2UgVW5peCBlcG9jaCAvIDg2NDAwKSBzb3EBIHRoYXQgYElkZW50aXR5YC1oYXNoZWQgaXRlcmF0aW9uIHlpZWxkcyBlbnRyaWVzIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgdG8gYmUgcmVtb3ZlZCBieSB0aGVEIG9mZmNoYWluIHdvcmtlci4AbFN0bXRTdG9yZUFsbG93YW5jZUJ5QWNjb3VudAABCAICdQwQBAAUQQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhIHN0YXRlbWVudCBhY2NvdW50IHRvIGFsbCBpdHMgYWN0aXZlIGFub255bW91cyBhbGxvd2FuY2VzLgBFASBLZXllZCBieSBgKEFjY291bnRJZCwgKEJpZ0VuZGlhblUzMiBwZXJpb2QsIHUzMiBzZXEsIEFsaWFzKSlgIOKGkiBgKClgLiBNdWx0aXBsZUkBIGVudHJpZXMgcGVyIGFjY291bnQgYXJlIHBvc3NpYmxlIHdoZW4gdGhlIHNhbWUgc3RhdGVtZW50IGFjY291bnQgaXMgYXV0aG9yaXplZCBiecwgZGlmZmVyZW50IGFsaWFzZXMgb3IgYWNyb3NzIGdyYWNlLXdpbmRvdyBvdmVybGFwcy4AfE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbkJ5QWxpYXMAAQQCCH0MBAAE4CBOb3RpZmljYXRpb24gYWxsb3dhbmNlIHJlZ2lzdHJhdGlvbiBieSBhbm9ueW1vdXMgYWxpYXMuAGhOb3RpZmljYXRpb25BbGlhc0J5QWNjb3VudAABBAIECAQABB0BIFJldmVyc2UgbG9va3VwIGZyb20gbm90aWZpY2F0aW9uIHN0YXRlbWVudCBhY2NvdW50IHRvIGFub255bW91cyBhbGlhcy4AbFNwZW50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlcwABCAYCbQwQBAAgSQEgQWxpYXNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gbG9uZy10ZXJtIHN0b3JhZ2UgaW4gYSBnaXZlbiBwZXJpb2QuAFkBIEtleWVkIGJ5IGAocGVyaW9kLCBhbGlhcylgLiBFYWNoIGNvdW50ZXIgdmFsdWUgaW4gdGhlIHByb29mIGNvbnRleHQgcHJvZHVjZXMgYSB1bmlxdWVdASBhbGlhcywgc28gYSBwZXJzb24gY2FuIGhhdmUgdXAgdG8gYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgZW50cmllcyBwZXIgcGVyaW9kLjUBIE9sZCBwZXJpb2RzIGNhbiBiZSBjbGVhbmVkIHVwIHZpYSBgY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzYC4AQQEgVGhlIHBlcmlvZCBrZXkgaXMgYEJpZ0VuZGlhblUzMmAgd2l0aCBgSWRlbnRpdHlgIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbuggY2hyb25vbG9naWNhbCBvcmRlciwgbWF0Y2hpbmcgYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AuADxVc2VybmFtZU93bmVyT2YAAQQCPQUEBAAYcQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBgdXNlcm5hbWVgIHRvIHRoZSBgQWNjb3VudElkYCB0aGF0IGhhcyByZWdpc3RlcmVkIGl0LiBUaGUgYG93bmVyYCB2YWx1ZWUBIHNob3VsZCBiZSBhIGtleSBpbiB0aGUgYENvbnN1bWVyc2AgbWFwLiBUaGVyZSBjYW4gYmUgYXQgbW9zdCAyIHVzZXJuYW1lcyBwb2ludGluZyB0byB0aGU4IHNhbWUgYG93bmVyYDpxASAtIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnN1bWVyJ3MgbGl0ZSBwZXJzb24gaWRlbnRpdHkgLSB0aGlzIHdpbGwgYWx3YXlzIGJlIHByZXNlbnQ7WQEgLSBvcHRpb25hbGx5IGFub3RoZXIgdXNlcm5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25zdW1lcidzIGZ1bGwgcGVyc29uIGlkZW50aXR5LCBpZjggICBhcHBsaWNhYmxlLgA4QWNjb3VudE9mQWxpYXMAAQQCCAQEAARpASBSZXZlcnNlIGxvb2t1cCBmcm9tIHJlZ2lzdGVyZWQgYWxpYXNlcyB0byB0aGUgYEFjY291bnRJZGAgdXNlZCB0byByZWdpc3RlciBhcyBhIGNvbnN1bWVyLgBsVXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uAQAoIAAAAAAAAAAACFUBIFRoZSBhbW91bnQgb2YgdGltZSBmb3Igd2hpY2ggYSB1c2VybmFtZSByZXNlcnZhdGlvbiBpcyB2YWxpZCwgaW4gc2Vjb25kcy4gQWZ0ZXIgdGhpc9AgdGltZSBwZXJpb2QgZWxhcHNlcywgdGhlIHJlc2VydmF0aW9uIGNhbiBiZSB2b2lkZWQuAGBVc2VybmFtZVJlc2VydmF0aW9uUXVldWUAAQQCPQWBDAQACHEBIE1hcCBmcm9tIGEgcmVzZXJ2ZWQgYHVzZXJuYW1lYCB0byBhIHF1ZXVlIG9mIGBSZXNlcnZhdGlvblF1ZXVlRW50cnlgIGl0ZW1zLCBlYWNoIGhvbGRpbmcgYW5hASBhY2NvdW50IGFuZCB0aGUgdGltZXN0YW1wIHdoZW4gaXQgam9pbmVkLiBPbGQgcmVzZXJ2YXRpb25zIGNhbiBiZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJlc2VydmF0aW9uT2YAAQQCBD0FBAAIZQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhbiBhY2NvdW50IHRvIHRoZSB1c2VybmFtZSBpdCBoYXMgcmVzZXJ2ZWQuIEVhY2ggYWNjb3VudCBjYW4gaGF2ZSBhdJwgbW9zdCBvbmUgYWN0aXZlIHJlc2VydmF0aW9uIGF0IGEgdGltZS4AAUUFAAERCAAoRE1pblVzZXJuYW1lTGVuZ3RoOBAGAAAABIggVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgdXNlcm5hbWUuAEhQZXJzb25BdXRoRHVyYXRpb244EACjAgAMVQEgVGhlIGR1cmF0aW9uIG9mIHRpbWUsIGluIHNlY29uZHMsIGZvciB3aGljaCBhIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaXMgdmFsaWQuIEFmdGVyUQEgdGhpcyBwZXJpb2QgZWxhcHNlcywgcGVvcGxlIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbnNpZGVyZWQgYWN0aXZlLCBidXQgdGhlaXIgcmVzb3VyY2UNASBhbGxvd2FuY2VzIHNob3VsZCBkZWZhdWx0IHRvIHRoZSBzYW1lIHZhbHVlcyB1c2VkIGZvciBsaXRlIHBlb3BsZS4AbE1pblBlcnNvbkF1dGhVcGRhdGVJbnRlcnZhbDgQgFEBAAhVASBUaGUgbWluaW11bSBpbnRlcnZhbCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB3aGljaCBtdXN0IHBhc3MgYmVmb3JlIHVwZGF0aW5nIGEgcGVyc29uJ3M8IGF1dGhvcml6YXRpb24uAGRNYXhSZXNlcnZhdGlvblF1ZXVlTGVuZ3RoOBAKAAAABCkBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgY2FuIHF1ZXVlIGZvciBhIHNpbmdsZSByZXNlcnZlZCB1c2VybmFtZS4AUEFjY291bnRzQXBpQWxsb3dhbmNljQwgAgAAAADQBwAM0CBUaGUgU3RhdGVtZW50IFN0b3JlIGFsbG93YW5jZSBmb3IgdGhlIGFjY291bnRzIEFQSS4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgBUTm90aWZpY2F0aW9uQWxsb3dhbmNljQwgAQAAAAAoAAAMHQEgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIG5vdGlmaWNhdGlvbiBzdGF0ZW1lbnQgcmVnaXN0cmF0aW9uLgApASBDaGFuZ2luZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgbWlncmF0aW9uIHRoYXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUuAGhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbjgQgFEBACwFASBSb2xsaW5nIHRpbWUgd2luZG93IGZvciByYXRlLWxpbWl0aW5nIG5vdGlmaWNhdGlvbnMsIGluIHNlY29uZHMuADUBIFRpbWUgaXMgZGl2aWRlZCBpbnRvIGZpeGVkLWR1cmF0aW9uIHBlcmlvZHMuIFRoZSBwZXJpb2QgaW5kZXggaXMgY29tcHV0ZWQgYXOkIGBub3dfc2VjcyAvIE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uYC4AYQEgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYDg2XzQwMGAgKDI0IGhvdXJzKSwgcGVyaW9kIGAwYCBpcyB0aGUgZmlyc3QgMjQgaG91cnMgc2luY2UgdGhlGQEgVW5peCBlcG9jaCwgcGVyaW9kIGAxYCBpcyB0aGUgbmV4dCAyNCBob3VycywgYW5kIHNvIG9uLiBDb21iaW5lZCB3aXRoWQEgYE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYCwgdGhpcyBkZWZpbmVzIGhvdyBtYW55IG5vdGlmaWNhdGlvbnMgY2FuIGJlIHNlbnQgaW4gZWFjaCAgcGVyaW9kLgApASBDaGFuZ2luZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgbWlncmF0aW9uIHRoYXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABOwgTnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluLXdvcmtlciBtYWludGVuYW5jZSBydW5zLgB0TG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb244EAB1EgAcBQEgVGhlIGR1cmF0aW9uIG9mIGEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1pbmcgcGVyaW9kLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzJQEgYG5vd19zZWNzIC8gTG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb25gLiBFYWNoIHBlcnNvbiBjYW4gc3VibWl0IHVwIHRv0CBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYCBjbGFpbXMgcGVyIHBlcmlvZC4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgBoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3c4EBAOAAAcUQEgRXh0cmEgdGltZSwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHRoZSBwcmV2aW91cyBsb25nLXRlcm0gc3RvcmFnZSBwZXJpb2QgaXMgc3RpbGxsIGFjY2VwdGVkIGFmdGVyIGEgcm9sbG92ZXIuAF0BIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCB0aGUgcHJldmlvdXMgbG9uZy10ZXJtIHN0b3JhZ2UgcGVyaW9kIGlzIGFjY2VwdGVkSCBhZnRlciBhIHJvbGxvdmVyLgApASBDaGFuZ2luZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgbWlncmF0aW9uIHRoYXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUuAAGRDAAERE9mZmNoYWluU2lnbmF0dXJleQQIUQEgU2lnbmF0dXJlIHR5cGUgZm9yIGVuc3VyaW5nIG93bmVyc2hpcCBvZiBwcm92aWRlZCBhY2NvdW50cyBpbiBjYXNlIG9mIHJlZ2lzdHJhdGlvbnM8IHRocm91Z2ggYWxpYXMuMCER4N8Z3pVjtYMB5ffgB0M3LT6mizpKqhipWKis1xpDZGN1cnJlbnRfc3RtdF9zdG9yZV9wZXJpb2QAOARRASBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgcGVyaW9kIChkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2gpLgAhEeDfGd6VY7WDAeX34AdDrMglyENevZ01vA216nYOlmxzdG10X3N0b3JlX3Nsb3RfY29udGV4dF9mb3IIGHBlcmlvZDgMc2VxOAgQIQEgUmV0dXJucyB0aGUgcHJvb2YgY29udGV4dCBmb3IgYSBzdGF0ZW1lbnQgc3RvcmUgc2xvdCBjbGFpbSBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4A8CBVc2VzIHRoZSBwcm9kdWN0LW93bmVkIHN0YXRlbWVudC1zdG9yZSBzbG90IGNvbnRleHQgZmFtaWx5LgAhEeDfGd6VY7WDAeX34AdD71oNKoXO/UnFSf3n0TezMWBub3RpZmljYXRpb25fY29udGV4dF9mb3IIGHBlcmlvZDgMc2VxDAgIHQEgUmV0dXJucyB0aGUgcHJvb2YgY29udGV4dCBmb3IgYSBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGF0IHRoZSBnaXZlblAgYHBlcmlvZGAgYW5kIGBzZXFgLgAhEeDfGd6VY7WDAeX34AdDcuNmXSzDUmPSIvbMkLZeqnxnZXRfc3RtdF9zdG9yZV9zbG90c19wZXJfcGVyaW9kADgECQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6U3RtdFN0b3JlU2xvdHNQZXJQZXJpb2RgXS4AIRHg3xnelWO1gwHl9+AHQwSdGuAKtxSjOciLlVoW2YmQZ2V0X2xpdGVfc3RtdF9zdG9yZV9zbG90c19wZXJfcGVyaW9kADgEGQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0O+Utvk8B1deZhdvH/YIBr2cGdldF9zdG10X3N0b3JlX2NsZWFudXBfbGltaXQAOAQBASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpTdG10U3RvcmVDbGVhbnVwTGltaXRgXS4AIRHg3xnelWO1gwHl9+AHQ9pQIiXeq8yoXC/6OqdmmN6MZ2V0X3N0bXRfc3RvcmVfcmVwbGFjZW1lbnRfY29vbGRvd24AOAQdASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpTdG10U3RvcmVSZXBsYWNlbWVudENvb2xkb3duYF0uACER4N8Z3pVjtYMB5ffgB0Ma0JpzMFOea26fPxnoz4s8bGdldF9zdG10X3N0b3JlX2dyYWNlX3dpbmRvdwA4BPwgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6U3RtdFN0b3JlR3JhY2VXaW5kb3dgXS4AIRHg3xnelWO1gwHl9+AHQ5BCjQm+G620gTLXL8kZyXqEZ2V0X25vdGlmaWNhdGlvbl9zbG90c19wZXJfcGVyaW9kAAwEFQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6Tm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgXS4AIRHg3xnelWO1gwHl9+AHQy+ls8ntORtxlIZbMqJil9WYZ2V0X2xpdGVfbm90aWZpY2F0aW9uX3Nsb3RzX3Blcl9wZXJpb2QADAQlASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgXS4AIRHg3xnelWO1gwHl9+AHQ7xlY1EgOFReMhGcwyiJijOcZ2V0X2xvbmdfdGVybV9zdG9yYWdlX2NsYWltc19wZXJfcGVyaW9kAAwEJQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0M3EithNcUoLBQIFMa4f1wRjGdldF9sb25nX3Rlcm1fc3RvcmFnZV9jbGVhbnVwX2xpbWl0ADgEGQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0YF0uAD8AADRDaHVua3NNYW5hZ2VyATRDaHVua3NNYW5hZ2VyCBhDaHVua3MAAQgFBZUMmQwEAAQZASBQYWdpbmF0ZWQgY29sbGVjdGlvbiBvZiBjaHVua3MgKFJpbmdFeHBvbmVudCAtPiBQYWdlSW5kZXggLT4gQ2h1bmtzKS4APENodW5rUGFnZUhhc2hlcwABCAUFlQwIBAAEiCBUaGUgaGFzaCBmb3IgZWFjaCBwYWdlIG9mIGNodW5rcy4AAVEFAAEVCAAEIFBhZ2VTaXplOBD/AAAABMwgTnVtYmVyIG9mIGNodW5rcyBwZXIgcGFnZS4gTXVzdCBiZSBhIHBvd2VyIG9mIHR3by4AAakMAAQUQ2h1bmuhDARwIFRoZSB0eXBlIG9mIGEgc2luZ2xlIGNodW5rLgBAAAAcTWVtYmVycwEcTWVtYmVyc0gsQ29sbGVjdGlvbnMAAQQGCK0MBAAE4CBJbmZvcm1hdGlvbiBhYm91dCBlYWNoIGNvbGxlY3Rpb24sIGtleWVkIGJ5IGlkZW50aWZpZXIuAEhSZXRpcmVkSWRlbnRpZmllcnMAAQQGCBAEAAhhASBJZGVudGlmaWVycyBvZiBjb2xsZWN0aW9ucyBtYXJrZWQgZm9yIGRlbGV0aW9uLiBObyBuZXcgY29sbGVjdGlvbiBjYW4gdXNlIHRoZW0uIEVudHJpZXNMIGFyZSBuZXZlciByZW1vdmVkLgBQU3VzcGVuZGVkQ29sbGVjdGlvbnMAAQQGCK0MBAAIIQEgQ29sbGVjdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbiBhbmQgYXJlIGJlaW5nIHByb2Nlc3NlZC5ZASBPbmNlIGEgY29sbGVjdGlvbiBpcyBtb3ZlZCBoZXJlLCBub3JtYWwgb3BlcmF0aW9ucyB3aWxsIGZhaWwgd2l0aCBDb2xsZWN0aW9uTm90Rm91bmQuADRJZGVudGlmaWVyc09mAAEEArEMuQwEAATMIFRoZSBpZGVudGlmaWVycyBvZiBjb2xsZWN0aW9ucyBvd25lZCBieSBhbiBlbnRpdHkuABBSb290AAEIBgK9DMEMBAAEiCBUaGUgY3VycmVudCBtZW1iZXJzIHdlIHJlY29nbmlzZS4AIE9sZFJvb3RzAAEMBgYGyQzNDAQAJEEBIE9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBmb3IgYSBncmFjZSBwZXJpb2Qgc28gdGhhdCBwcm9vZnMgZ2VuZXJhdGVkIGFnYWluc3RlASBwcmV2aW91cyByZXZpc2lvbnMgcmVtYWluIHZhbGlkLiBFYWNoIHJvb3QgaW4gdGhlIG1hcCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBjb21wb3NpdGUga2V5LQEgYChjb2xsZWN0aW9uLCByaW5nIGluZGV4LCByaW5nIHJldmlzaW9uKWAuIEVudHJpZXMgY2FuIGJlIGNsZWFuZWQgdXAgYWZ0ZXIlASBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uYCBoYXMgcGFzc2VkIHNpbmNlIHRoZSBgYXJjaGl2ZWRfYXRgIHRpbWVzdGFtcC4AOQEgVGhpcyBzdG9yYWdlIGNhbiBjb250YWluIHNvbWUgcm9vdHMgZm9yIGRlbGV0ZWQgY29sbGVjdGlvbnMgb3IgcmVtb3ZlZCByaW5ncy5BASBUaGUgY2FsbCBgdmVyaWZ5X21lbWJlcnNoaXBgIGFuZCBvdGhlciBvcGVyYXRpb24gdXNpbmcgb2xkIHJvb3RzIG11c3QgY2hlY2sgdGhlQQEgZXhpc3RlbmNlIG9mIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcm9vdCBpbiBvcmRlciB0byBub3QgdmFsaWRhdGUgYWdhaW5zdCBkdXN0LvAgVGhlIG9sZCByb290cyB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIHJldGVudGlvbiBkdXJhdGlvbi4AQEN1cnJlbnRSaW5nSW5kZXgBAQQGCDgQAAAAAATkIEtlZXBzIHRyYWNrIG9mIHRoZSByaW5nIGluZGV4IGN1cnJlbnRseSBiZWluZyBwb3B1bGF0ZWQuADhPbmJvYXJkaW5nU2l6ZQEBBAYIOBAAAAAABPggTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyBxdWV1ZWQgYmVmb3JlIG9uYm9hcmRpbmcgdG8gYSByaW5nLgAgUmluZ0tleXMBAQwGAgXRDNUMBAAQYQEgQm90aCB0aGUga2V5cyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBidWlsdCByaW5ncyBhbmQgdGhlIGtleXMgdGhhdCB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlWQEgcmluZ3MuIFBhZ2luYXRlZCBieSAoSWRlbnRpZmllciwgUmluZ0luZGV4LCBQYWdlSW5kZXgpIHdoZXJlIGVhY2ggcGFnZSBjb250YWlucyB1cCB0b3UBIGBSaW5nQ2FwYWNpdHlGcm9tRXhwb25lbnRgIGtleXMuIFRoZSBwYWdlIHNpemUgZXF1YWxzIHRoZSBmbGV4aWJsZSByaW5nIGV4cG9uZW50J3MgY2FwYWNpdHks9CBlbnN1cmluZyBGbGV4aWJsZSBjb2xsZWN0aW9ucyBuZXZlciBuZWVkIG1vcmUgdGhhbiBvbmUgcGFnZS4AOFJpbmdLZXlzU3RhdHVzAQEIBgK9DNkMJAAAAAAAAAAAAAhhASBTdG9yZXMgdGhlIG1ldGEgaW5mb3JtYXRpb24gZm9yIGVhY2ggcmluZywgdGhlIG51bWJlciBvZiBrZXlzIGFuZCBob3cgbWFueSBhcmUgYWN0dWFsbHlYIGluY2x1ZGVkIGluIHRoZSByb290LgBIUGVuZGluZ1N1c3BlbnNpb25zAQEIBgW9DN0MBAAMaQEgQSBtYXAgb2YgYWxsIHJpbmdzIHdoaWNoIGN1cnJlbnRseSBoYXZlIHBlbmRpbmcgc3VzcGVuc2lvbnMgYW5kIG5lZWQgY2xlYW5pbmcsIGFsb25nIHdpdGgRASB0aGVpciByZXNwZWN0aXZlIG51bWJlciBvZiBzdXNwZW5kZWQga2V5cyB3aGljaCBuZWVkIHRvIGJlIHJlbW92ZWQubQEgTm90ZTogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgc2luZ2xlLXBhZ2UgcmluZ3MsIHNvIGJvdW5kZWQgYnkgYFJpbmdDYXBhY2l0eUZyb21FeHBvbmVudGAuADRBY3RpdmVNZW1iZXJzAQEEBgg4EAAAAAAE0CBUaGUgbnVtYmVyIG9mIG1lbWJlcnMgY3VycmVudGx5IGluY2x1ZGVkIGluIGEgcmluZy4AHE1lbWJlcnMAAQgGAuEM5QwEABhdASBUaGUgY3VycmVudCBtZW1iZXJzIGluIGVhY2ggY29sbGVjdGlvbiAoZWl0aGVyIGluY2x1ZGVkIGluIHJpbmdzLCBzdXNwZW5kZWQgYW5kIHF1ZXVlZCEBIGZvciByZW1vdmFsIGZyb20gYSByaW5nLCBzdXNwZW5kZWQgYW5kIG5vdCBpbiBhbnkgcmluZywgb3Igb25ib2FyZGluZykuAA0BIENvbGxlY3Rpb24gaWRlbnRpZmllciB0byBtZW1iZXIgcHVibGljIGtleSB0byB0aGUgbWVtYmVyJ3Mgc3RhdHVzLgCoIEEga2V5IGNhbiBiZWxvbmcgdG8gbXVsdGlwbGUgY29sbGVjdGlvbnMuAChSaW5nc1N0YXRlAQEEBgjpDAQABPwgVGhlIGN1cnJlbnQgc3RhdGUgb2YgYWxsIHJpbmdzIG1hbmFnZWQgZm9yIGEgZ2l2ZW4gaWRlbnRpZmllci4AKFN0YWxlUmluZ3MAAQgGBb0MEAQABMwgU2V0IG9mIHJpbmdzIHdoaWNoIGFyZSBzdGFsZSBhbmQgcmVxdWlyZSBidWlsZGluZy4AQFF1ZXVlUGFnZUluZGljZXMBAQQGCFEIIAAAAAAAAAAABDkBIEtlZXBzIHRyYWNrIG9mIHRoZSBwYWdlIGluZGljZXMgb2YgdGhlIGhlYWQgYW5kIHRhaWwgb2YgdGhlIG9uYm9hcmRpbmcgcXVldWUuADxPbmJvYXJkaW5nUXVldWUBAQgGBb0M8QwEAAQtASBQYWdpbmF0ZWQgY29sbGVjdGlvbiBvZiBtZW1iZXIgcHVibGljIGtleXMgcmVhZHkgdG8gYmUgaW5jbHVkZWQgaW4gYSByaW5nLgBEUmluZ0RlbGV0aW9uUXVldWUAAQwGBQXRDBAEABSYIFF1ZXVlIG9mIHJpbmcgcGFnZXMgcGVuZGluZyBkZWxldGlvbi4AFQEgVGhpcyBpcyB1c2VkIGJvdGggYnkgYHJlbW92ZV9yaW5nYCAoaW5kaXZpZHVhbCByaW5nIGRlbGV0aW9uKSBhbmQgYnkZASBjb2xsZWN0aW9uIGRlbGV0aW9uLiBSaW5nIHBhZ2VzIGFyZSBwcm9jZXNzZWQgZnJvbSB0aGlzIHF1ZXVlIHZpYSBPQ1esIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggb3BlcmF0aW9uIHF1ZXVlZCB0aGVtLgABYQUAARkIABg4TWF4Q29sbGVjdGlvbnM4EGQAAAAExCBNYXhpbXVtIG51bWJlciBvZiBjb2xsZWN0aW9ucyBhbiBvd25lciBjYW4gaGF2ZS4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBD/AAAACE0BIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgaW5jbHVkZWQgaW4gYW4gb25ib2FyZGluZyBxdWV1ZSBwYWdlIGJlZm9yZSBhIG5ldyBvbmUgaXMkIGNyZWF0ZWQuAFxNYXhGbGV4aWJsZVJpbmdFeHBvbmVudFUFBAkMXQEgVGhlIG1heGltdW0gcmluZyBleHBvbmVudCB1c2VkIGZvciBGbGV4aWJsZSBjb2xsZWN0aW9ucy4gVGhpcyBhbHNvIGRldGVybWluZXMgdGhlIHBhZ2VVASBzaXplIGZvciBwYWdpbmF0ZWQgcmluZyBrZXkgc3RvcmFnZS4gRmxleGlibGUgY29sbGVjdGlvbnMgY2FuIG9ubHkgdXNlIHJpbmcgc2l6ZXMgdXA8IHRvIHRoaXMgdmFsdWUuAFxSaW5nQnVpbGRpbmdNZW1iZXJMaW1pdDgQZAAAAAhhASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGluIGEgcmluZyB0aHJvdWdoIGEgc2luZ2xlIHJvb3QgYnVpbGRpbmcYIGNhbGwuAGBPbGRSb290UmV0ZW50aW9uRHVyYXRpb24oIFgCAAAAAAAACFEBIER1cmF0aW9uIGluIHNlY29uZHMgdGhhdCBvbGQgcmluZyByb290cyBhcmUgcmV0YWluZWQgYmVmb3JlIHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAuSQEgVGhpcyBhbGxvd3MgcHJvb2ZzIGdlbmVyYXRlZCB3aXRoIG9sZGVyIHJvb3RzIHRvIHJlbWFpbiB2YWxpZCBmb3IgYSBncmFjZSBwZXJpb2QuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABOQgVGhlIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAfUMAAQgTG9jYXRpb25xAQQ5ASBMb2NhdGlvbiB0eXBlIGZvciBpZGVudGlmeWluZyBjb2xsZWN0aW9uIG93bmVycyBmcm9tIG90aGVyIGNoYWlucy9wYXJhY2hhaW5zLgBDAAAcQ29pbmFnZQEcQ29pbmFnZVAwQ29pbnNCeU93bmVyAAEEAgQRBAQADBkBIEFsbCB0aGUgY29pbnMgaW4gYWxsIGluc3RhbmNlcyBjdXJyZW50bHkgY2lyY3VsYXRpbmcsIGtleWVkIGJ5IG93bmVyLgBRASBBIGNvaW4gaXMgbWludGVkIHdoZW4gdW5sb2FkZWQgZnJvbSBhIHJlY3ljbGVyLCBhbmQgZGVzdHJveWVkIHdoZW4gbG9hZGVkIGludG8gb25lLgAsTG9ja2VkQ29pbnMAAQQCBPkMBAAQRQEgVGVtcG9yYXJ5IGxvY2sgZXhwaXJ5IGZvciBjb2lucyB0aGF0IHByZXZpb3VzbHkgZmFpbGVkIGRpc3BhdGNoLCBrZXllZCBieSBvd25lci4AYQEgQW4gZW50cnkgaXMgbG9ja2VkIHVudGlsIHRoZSBzdG9yZWQgVW5peCB0aW1lc3RhbXAsIHByZXZlbnRpbmcgcmVwZWF0ZWQgZmFpbGVkIGRpc3BhdGNocCBhdHRlbXB0cyBpbiBhIHNob3J0IHBlcmlvZC4AaFRvdGFsVmFsdWVPZkRlc3Ryb3llZENvaW5zAQEEBThFAUAAAAAAAAAAAAAAAAAAAAAAFPQgVGhlIHRvdGFsIHZhbHVlIG9mIGNvaW5zIHRoYXQgd2VyZSBidXJudCwga2V5ZWQgYnkgaW5zdGFuY2UuAGkBIFRoaXMgdHJhY2tzIHZhbHVlIHRoYXQgaXMgaW50ZW50aW9uYWxseSBkZXN0cm95ZWQgYXMgcGFydCBvZiBwcm90b2NvbCBmbG93cyAoZm9yIGV4YW1wbGU6ZQEgcmVjeWNsZXIgZXhwaXJhdGlvbiBjbGVhbnVwIGFuZCBmZWUgcmVtYWluZGVyIGJ1cm5pbmcpLiBUaGlzIHN0b3JhZ2UgaXRlbSBrZWVwcyB0cmFjayBvZqQgdGhlIHRvdGFsIHZhbHVlIG9mIHN1Y2ggZGVzdHJveWVkIGNvaW5zLgBgQ29uc3VtZWRGcmVlVW5sb2FkVG9rZW5zAAEIBQUlCxAEABjEIENvbnN1bWVkIGZyZWUgdW5sb2FkIHRva2VucyBieSBwZXJpb2QgYW5kIGFsaWFzLgBVASBUaGlzIHN0b3JhZ2Uga2VlcHMgdHJhY2sgb2YgdGhlIGZyZWUgdW5sb2FkIHRva2VucyB0aGF0IGhhdmUgYmVlbiBjb25zdW1lZCBieSBwZW9wbGWsIGFuZCBsaXRlIHBlb3BsZSwgdG8gYXZvaWQgZG91YmxlIHNwZW5kaW5nLgBwIEl0IGlzIGNsZWFyZWQgcGVyaW9kaWNhbGx5LgBkUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZAABCAUFAQ0QBABYTQEgVHJhY2tzIHdoZXRoZXIgYSByZWN5Y2xlciBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uLgBtASBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBjcmVhdGVzIG9uZSByZWN5Y2xlciBjb2xsZWN0aW9uIHBlciBkZW5vbWluYXRpb24gaW6YIGBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYC4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHRSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleAABCAUFAQ04BABYAQEgTGFzdCByZW1vdmVkIHJpbmcgaW5kZXggcGVyIGluc3RhbmNlIGFuZCByZWN5Y2xlciBkZW5vbWluYXRpb24uAEUBIFJpbmdzIGFyZSByZW1vdmVkIHNlcXVlbnRpYWxseSBzdGFydGluZyBmcm9tIGluZGV4IDAuIFRoZSBuZXh0IHJpbmcgdG8gY2hlY2sgZm9yLQEgZXhwaXJhdGlvbiBpcyBgbGFzdF9yZW1vdmVkICsgMWAgKG9yIGAwYCBpZiBub3RoaW5nIGhhcyBiZWVuIHJlbW92ZWQgeWV0KS4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFxSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcgABBAIIAQ0EAFhNASBNYXBwaW5nIGZyb20gYSByZWN5Y2xlciBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uIGl0IGJlbG9uZ3MgdG8uAE0BIFdoZW4gYSBjb2luIGlzIGxvYWRlZCBpbnRvIGEgcmVjeWNsZXIsIHRoZSBtZW1iZXIga2V5IGlzIHJlY29yZGVkIGhlcmUgc28gdGhhdCB0aGVJASBwYWxsZXQgY2FuIGxvb2sgdXAgd2hpY2ggaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbiB0aGUgbWVtYmVyIGtleSBjb3JyZXNwb25kcyB0by4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAExSZWN5Y2xlckFsaWFzU3RhdGVzAAEQBQUFBQUNCQ0EAFhVASBTdGF0ZSBvZiByZWN5Y2xlciBhbGlhc2VzLCBpbmRleGVkIGJ5IGAoaW5zdGFuY2UsIGRlbm9taW5hdGlvbiwgcmluZyBpbmRleCwgYWxpYXMpYC4AVQEgRWFjaCBlbnRyeSByZWNvcmRzIGVpdGhlciBhIHRlbXBvcmFyeSBmYWlsZWQtZGlzcGF0Y2ggbG9jayBvciBhIHBlcm1hbmVudGx5IGNvbnN1bWVk6CBhbGlhcy4gQWJzZW5jZSBmcm9tIHRoZSBtYXAgbWVhbnMgdGhlIGFsaWFzIGlzIGF2YWlsYWJsZS4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhSZWN5Y2xlcnNVbmxvYWRlZENvdW50AAEEBQ0NOAQAYNAgTnVtYmVyIG9mIGFsaWFzZXMgdW5sb2FkZWQgZnJvbSBlYWNoIHJlY3ljbGVyIHJpbmcuACEBIEVxdWFscyB0aGUgbnVtYmVyIG9mIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSBlbnRyaWVzIG9mIHRoZSByaW5nIGluIHN0YXRldQEgW2BBbGlhc1N0YXRlOjpVbmxvYWRlZGBdLCBzbyBgUmluZ1N0YXR1czo6dG90YWxgIG1pbnVzIHRoaXMgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBjb2lucyB0aGVVASByaW5nIHN0aWxsIGhvbGRzLiBBYnNlbnQgZm9yIGEgcmluZyB0aGF0IGFscmVhZHkgaGFkIGFsaWFzIHN0YXRlcyB3aGVuIHRoZSBjb3VudCB3YXNZASBpbnRyb2R1Y2VkLCBiZWNhdXNlIHJlY292ZXJpbmcgaXRzIG51bWJlciBuZWVkcyBhIHNjYW47IHN1Y2ggYSByaW5nIGlzIG5ldmVyIGNvdW50ZWQuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguKQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRDb3VudF0gLSB0aGUgbnVtYmVyIG9mIHVubG9hZGVkIGFsaWFzZXMgb2YgZWFjaCByaW5nLkEBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC5tASAqIFtSZWN5Y2xlcnNBcmNoaXZlc10gLSBhcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUkICAgY29pbnMuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBAUmVjeWNsZXJzRHVzdGluZwABBAUNDRAEAGAdASBNYXJrcyByZWN5Y2xlciByaW5ncyB0aGF0IGhhdmUgZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwuADUBIFdoZW4gYSByZWN5Y2xlciByaW5nIGlzIHJlbW92ZWQsIHRoZSBjbGVhbnVwIG9mIGl0cyBsZWZ0b3ZlciBhbGlhcyBzdGF0ZXMgaW5ZASBbUmVjeWNsZXJBbGlhc1N0YXRlc10gaXMgcGVyZm9ybWVkIGdyYWR1YWxseSB0aHJvdWdoIHRoaXMgc3RvcmFnZSBpdGVtLiBBbiBlbnRyeSBoZXJlZQEgaW5kaWNhdGVzIHRoYXQgZW50cmllcyBpbiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gZm9yIHRoZSBnaXZlbiBpbnN0YW5jZSwgZGVub21pbmF0aW9uIGFuZLQgcmluZyBpbmRleCBzdGlsbCBleGlzdCBhbmQgc2hvdWxkIGJlIGR1c3RlZC4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAERSZWN5Y2xlcnNBcmNoaXZlcwABBAUNDRENBAB8TQEgQXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmVjeWNsZXIgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlIGNvaW5zLgBpASBXaGVuIGEgcmVjeWNsZXIgcmluZyBpcyBjbGVhbmVkIChzZWUgW2BSZWN5Y2xlck1hbmFnZXI6OmNsZWFuX3VuY2hlY2tlZGBdKSB3aGlsZSBpdCBzdGlsbF0BIGhhcyBhdCBsZWFzdCBvbmUgbm90LXVubG9hZGVkIGFsaWFzLCBhbiBbYEFyY2hpdmVkUmVjeWNsZXJgXSBpcyByZWNvcmRlZCBoZXJlIGtleWVkIGJ5XQEgYChpbnN0YW5jZSwgZGVub21pbmF0aW9uLCByaW5nIGluZGV4KWAuIEl0IGNvbW1pdHMgdG8gdGhlIHRyaWUgb2YgdW5sb2FkZWQgYWxpYXNlcyBhbmQFASB0aGUgcmVjeWNsZXIgcm9vdC4gTm90LXVubG9hZGVkIGNvaW5zIGNhbiBzdGlsbCBiZSB1bmxvYWRlZCB3aXRoZQEgW2BQYWxsZXQ6OnVubG9hZF9hcmNoaXZlZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0YF0sIHdoaWNoIHVwZGF0ZXMgdGhlIGFyY2hpdmUuIFRoZdggYXJjaGl2ZSBpcyByZW1vdmVkIG9uY2UgYWxsIGNvaW5zIGhhdmUgYmVlbiB1bmxvYWRlZC4AYQEgT25seSB0aGUgY29tbWl0bWVudHMgYXJlIHN0b3JlZCBvbi1jaGFpbi4gVGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZSBhbmQgdGhlIHJpbmcgY2FuIGJlIQEgcmVjb25zdHJ1Y3RlZCBvZmZjaGFpbiB0byBidWlsZCB0aGUgcmVjb3ZlcnkgcHJvb2ZzIGJ5IGxpc3RlbmluZyB0byB0aGUJASBbYEV2ZW50OjpSZWN5Y2xlckFsaWFzVW5sb2FkZWRgXSwgW2BFdmVudDo6UmVjeWNsZXJBcmNoaXZlZGBdIGFuZPQgW2BFdmVudDo6QXJjaGl2ZWRSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXRgXSBldmVudHMuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguKQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRDb3VudF0gLSB0aGUgbnVtYmVyIG9mIHVubG9hZGVkIGFsaWFzZXMgb2YgZWFjaCByaW5nLkEBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC5tASAqIFtSZWN5Y2xlcnNBcmNoaXZlc10gLSBhcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUkICAgY29pbnMuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBYUGFpZFVubG9hZFRva2VuTWVtYmVycwABBAIIEAQAOAkBIE1hcHBpbmcgZnJvbSBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSB0byB0aGUgcGVyaW9kIGl0IGJlbG9uZ3MgdG8uAEUBIFdoZW4gYSB1c2VyIHBheXMgZm9yIGEgcmVjeWNsZXIgdW5sb2FkIHRva2VuLCB0aGUgbWVtYmVyIGtleSBpcyByZWNvcmRlZCBoZXJlIHNvIQEgdGhhdCB0aGUgcGFsbGV0IGNhbiBsb29rIHVwIHdoaWNoIHBlcmlvZCB0aGUgbWVtYmVyIGtleSBjb3JyZXNwb25kcyB0by4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFBhaWRVbmxvYWRUb2tlbkNvbnN1bWVkAAEMBgUFeQwQBAA49CBDb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kLCByaW5nIGluZGV4IGFuZCBhbGlhcy4ASQEgV2hlbiBhIHBhaWQgdW5sb2FkIHRva2VuIGlzIGNvbnN1bWVkLCB0aGUgYWxpYXMgcHJvZHVjZWQgYnkgdGhlIHJpbmctVlJGIHByb29mIGlz9CBzdG9yZWQgaGVyZSB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyB3aXRoaW4gdGhlIHNhbWUgcmluZy4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AbFBhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZAABBAY5DBAEADgJASBUcmFja3Mgd2hldGhlciBhIHBhaWQgdG9rZW4gY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgZ2l2ZW4gcGVyaW9kLgBVASBVc2VzIGBJZGVudGl0eWAgaGFzaGVyIHNvIHRoYXQgaXRlcmF0aW9uIHlpZWxkcyBwZXJpb2RzIGluIG9yZGVyLCBlbmFibGluZyBlZmZpY2llbnRwIGNsZWFudXAgb2YgZXhwaXJlZCBwZXJpb2RzLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBYUGFpZFVubG9hZFRva2VuRHVzdGluZwABBAY5DBAEAEAtASBNYXJrcyBwYWlkIHVubG9hZCB0b2tlbiBwZXJpb2RzIHRoYXQgaGF2ZSBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBZASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBpcyByZW1vdmVkLCB0aGUgY2xlYW51cCBvZiBpdHMgY29uc3VtZWQgdG9rZW5zIGluVQEgW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSBpcyBwZXJmb3JtZWQgZ3JhZHVhbGx5IHRocm91Z2ggdGhpcyBzdG9yYWdlIGl0ZW0uIEFuIGVudHJ5TQEgaGVyZSBpbmRpY2F0ZXMgdGhhdCBjb25zdW1lZCB0b2tlbnMgZm9yIHRoZSBnaXZlbiBwZXJpb2Qgc3RpbGwgZXhpc3QgYW5kIHNob3VsZCBiZSAgZHVzdGVkLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgB4UGFpZFVubG9hZFRva2VuTmV4dFJpbmdUb0NsZWFuAAEEBjkMOAQAYPQgVHJhY2tzIHRoZSBuZXh0IHJpbmcgaW5kZXggdG8gY2xlYW4gZm9yIGVhY2ggZXhwaXJlZCBwZXJpb2QuADUBIFVzZWQgYnkgdGhlIE9DVyB0byBkZXRlcm1pbmUgY2xlYW51cCBwcm9ncmVzcyBhbmQgYnkgdGhlIGNvbGxlY3Rpb24gZGVsZXRpb27EIGV4dHJpbnNpYyB0byB2ZXJpZnkgYWxsIHJpbmdzIGhhdmUgYmVlbiBjbGVhbmVkLgA9ASBSaW5ncyBhcmUgY2xlYW5lZCBzZXF1ZW50aWFsbHkgKG9uZSBwZXIgT0NXIGludGVydmFsKSByYXRoZXIgdGhhbiBhbGwgYXQgb25jZS49ASBUaGlzIGlzIGludGVudGlvbmFsOiBhIHNpbmdsZSBzdG9yYWdlIGN1cnNvciBlbmFibGVzIE8oMSkgY29tcGxldGlvbiBjaGVja3MgaW7MIGJvdGggW2BQYWlkVGtuTWFuYWdlcjo6ZW5zdXJlX2Nhbl9jbGVhbl9yaW5nYF0gYW5kRQEgW2BQYWlkVGtuTWFuYWdlcjo6ZW5zdXJlX2Nhbl9kZWxldGVfY29sbGVjdGlvbmBdLiBUaGUgYWx0ZXJuYXRpdmUg4oCUIHN1Ym1pdHRpbmdVASBhbGwgcmluZyBjbGVhbnMgaW4gcGFyYWxsZWwg4oCUIHdvdWxkIHJlcXVpcmUgZmV0Y2hpbmcgcmluZyBtZW1iZXJzIHRvIGNoZWNrIHdoZXRoZXJNASBlYWNoIHJpbmcgd2FzIGFscmVhZHkgY2xlYW5lZCAoc2luY2UgYHJpbmdfc3RhdHVzYCBzdGlsbCByZXBvcnRzIGB0b3RhbCA+IDBgIGFmdGVyVQEgY2xlYW51cCBiZWNhdXNlIHJpbmdzIGFyZSBub3QgcmVtb3ZlZCB1bnRpbCBjb2xsZWN0aW9uIGRlbGV0aW9uKS4gQ2xlYW51cCBvZiBleHBpcmVkTQEgY29sbGVjdGlvbnMgaXMgbm90IHRpbWUtY3JpdGljYWwsIHNvIHRoZSBzaW1wbGVyIHNlcXVlbnRpYWwgYXBwcm9hY2ggaXMgcHJlZmVycmVkLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuHQEgKiBbUGFpZFVubG9hZFRva2VuTmV4dFJpbmdUb0NsZWFuXSAtIHNlcXVlbnRpYWwgcmluZyBjbGVhbnVwIHByb2dyZXNzLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AJEluc3RhbmNlcwABBAU4FQ0EABDAIFRoZSBjb2luYWdlIGluc3RhbmNlcywga2V5ZWQgYnkgW2BJbnN0YW5jZUlkYF0uAHEBIENyZWF0ZWQgYnkgW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0uIEVudHJpZXMgYXJlIG5ldmVyIHJlbW92ZWQ6IHRoZSBjb2lucyBhbmTsIHJlY3ljbGVycyBvZiBhbiBpbnN0YW5jZSBjYW4gb3V0bGl2ZSBhbnkgc2luZ2xlIG9wZXJhdGlvbi4AOE5leHRJbnN0YW5jZUlkAQA4EAAAAAAEPQEgVGhlIFtgSW5zdGFuY2VJZGBdIHRoYXQgW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gYWxsb2NhdGVzIG5leHQuADxBc3NldFRvSW5zdGFuY2UAAQgCBS0NEAQAEEEBIFJldmVyc2UgbG9va3VwIGZyb20gYW4gdW5kZXJseWluZyBhc3NldCB0byB0aGUgaW5zdGFuY2VzIHdyYXBwaW5nIGl0LCBhcyBhIHNldC4A9CBBbiBhc3NldCBtYXkgYmUgd3JhcHBlZCBieSBtdWx0aXBsZSBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnSEIFtgSW5zdGFuY2VSZWNvcmQ6OmFzc2V0X3VuaXRgXXMuAEBQb3RDb250cmlidXRpb25zAQEMBQICMQ1FAUAAAAAAAAAAAAAAAAAAAAAABDkBIFdoYXQgZWFjaCBmdW5kZXIgaGFzIHB1dCBpbnRvIGFuIGluc3RhbmNlJ3MgcG90IHRocm91Z2ggW2BQYWxsZXQ6OmZ1bmRfcG90YF0uAAFpBQABHQgAMFBSZWN5Y2xlclJpbmdFeHBvbmVudFUFBAoMsCBUaGUgcmluZyBleHBvbmVudCBmb3IgcmVjeWNsZXIgY29sbGVjdGlvbnMuAD0BIE5PVEU6IENoYW5naW5nIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIHJlcXVpcmVzIHN1YnN0YW50aWFsIG1pZ3JhdGlvbiB3b3JrLgBsUGFpZFVubG9hZFRva2VuUmluZ0V4cG9uZW50VQUECgTUIFRoZSByaW5nIGV4cG9uZW50IGZvciBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9ucy4APE1pbmltdW1FeHBvbmVudBUEBAAErCBUaGUgbWluaW11bSBleHBvbmVudCBmb3IgdGhlIGRlbm9taW5hdGlvbi4APE1heGltdW1FeHBvbmVudBUEBA4ErCBUaGUgbWF4aW11bSBleHBvbmVudCBmb3IgdGhlIGRlbm9taW5hdGlvbi4AhE1pbmltdW1FeHBvbmVudEZvck91dHB1dFVubG9hZEZlZRUEBAAwXQEgVGhlIG1pbmltdW0gY29pbiBleHBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BhdGNoIGEgY2FsbCBgdW5sb2FkX3JlY3ljbGVyXypgIHdpdGjUIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0YC4AYQEgVGhpcyBlbnN1cmVzIHRoZSBmZWUgY29pbiBpcyBsYXJnZSBlbm91Z2ggdG8gcGVuYWxpemUgZmFpbGluZyB0cmFuc2FjdGlvbnMsIGJ1dCBpdCBkb2VzuCBub3QgbmVlZCB0byBjb3ZlciB0aGUgd2hvbGUgdW5sb2FkIHRva2VuIGZlZS4AUQEgVGhlIGV4cG9uZW50IGlzIGdsb2JhbCwgc28gdGhlIGNvaW4gdmFsdWUgaXQgcmVwcmVzZW50cyBzY2FsZXMgd2l0aCBlYWNoIGluc3RhbmNlJ3NlASBbYEluc3RhbmNlUmVjb3JkOjphc3NldF91bml0YF0uIEFuIGluc3RhbmNlIHdob3NlIHVuaXQgaXMgd29ydGggbGVzcyB0aGVyZWZvcmUgcGVuYWxpemVzbCBmYWlsaW5nIHRyYW5zYWN0aW9ucyBsZXNzLgBRASBUaGUgaGVscGVyIGZ1bmN0aW9uIGB3ZWlnaHRfZm9yX3VubG9hZF9yZWN5Y2xlcl9wYXlpbmdfdXNpbmdfb3V0cHV0YCBjYW4gYmUgdXNlZCB0b8wgZXZhbHVhdGUgdGhlIHdvcnN0LWNhc2Ugd2VpZ2h0IGZvciB0aGlzIG9wZXJhdGlvbi4APE1heFNwbGl0T3V0cHV0czgQIAAAAASsIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvdXRwdXRzIGZvciBhIHNwbGl0LgBATWF4Q29uc29saWRhdGlvbjgQQAAAAATcIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGlhcyBwcm9vZnMgaW4gYSBjb25zb2xpZGF0aW9uLgBITWF4QmF0Y2hVbnBhaWRMb2FkOBAKAAAACLggVGhlIG1heGltdW0gbnVtYmVyIG9mIGlubmVyIGNhbGxzIGluIGEgc2luZ2xlDQEgW2BDYWxsOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkX2JhdGNoYF0gZGlzcGF0Y2guAJRVbmxvYWRUb2tlblRpbWVQZXJpb2RQZW9wbGVMaXRlUGVvcGxlOBCAUQEABOAgVGhlIHRpbWUgcGVyaW9kIGR1cmF0aW9uIGZvciB1bmxvYWQgdG9rZW5zLCBpbiBzZWNvbmRzLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQBAAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAFRDb2luRmFpbHVyZUxvY2tQZXJpb2QoIDwAAAAAAAAAEFEBIFRoZSBiYXNlIG51bWJlciBvZiBzZWNvbmRzIHRvIGxvY2sgYSBjb2luIGFmdGVyIGEgZmFpbGVkIGRpc3BhdGNoIGluIGBBc0NvaW5gIGZsb3cuAD0BIFRoZSBhY3R1YWwgbG9jayBkdXJhdGlvbiBpcyBleHBvbmVudGlhbDogYDJecmV0cmllcyAqIGJhc2VgIHdoZXJlIGByZXRyaWVzYCBpc5AgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBmYWlsdXJlcy4AOHBhbGxldF9hY2NvdW50BIBtb2RsY29pbmFnZSAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4IFRoZSBhY2NvdW50IGlkIG9mIHRoZSBwYWxsZXQuAAE1DQAAcHrCcSyKdqUqw7oQopAh7Jm9aXdvCHqOVSmg2qI+NaB4QGdldF9pbnN0YW5jZV9pZHMEIGFzc2V0X2lkcQFpBBDgIEdldCBldmVyeSBpbnN0YW5jZSB3cmFwcGluZyB0aGUgZ2l2ZW4gdW5kZXJseWluZyBhc3NldC4AUQEgQW4gYXNzZXQgY2FuIGJlIHdyYXBwZWQgYnkgc2V2ZXJhbCBpbnN0YW5jZXMsIGVhY2ggd2l0aCBpdHMgb3duIGNvaW4gdW5pdDsgcmVhZCB0aGWAIHVuaXQgb2Ygb25lIGZyb20gW2BJbnN0YW5jZXNgXS4AesJxLIp2pSrDuhCikCHsmTWjwy5ELhqtHnH2hHlTJ4ZAZ2V0X2xvYWRfZGVwb3NpdADBBQSkIEdldCB0aGUgbG9hZCBkZXBvc2l0IGN1cnJlbmN5IGFuZCBwcmljZS4AesJxLIp2pSrDuhCikCHsma+inX+zJU1DadCZCWzDHH08Z2V0X3BvdF9hY2NvdW50BCxpbnN0YW5jZV9pZDg1AQRVASBHZXQgdGhlIHBvdCBhY2NvdW50IG9mIGEgc3BvbnNvcmVkIGluc3RhbmNlLCBgTm9uZWAgZm9yIGEgc3VmZmljaWVudCBvciBtaXNzaW5nIG9uZS4AesJxLIp2pSrDuhCikCHsmUPC8OhejmIgVmKT9UGokPU4Z2V0X3BvdF9zdGF0dXMELGluc3RhbmNlX2lkODkNCEUBIEdldCB0aGUgc3RhdHVzIG9mIGEgc3BvbnNvcmVkIGluc3RhbmNlJ3MgcG90LCBgTm9uZWAgZm9yIGEgc3VmZmljaWVudCBvciBtaXNzaW5nKCBpbnN0YW5jZS4AesJxLIp2pSrDuhCikCHsme0F4sg0JfH1r3sGrGnlJG1UZ2V0X3BvdF9jb250cmlidXRpb25zCCxpbnN0YW5jZV9pZDgYZnVuZGVyBEkNDC0BIFBlciBhc3NldCBpZDogdGhlIGZ1bmRlcidzIHJlY29yZGVkIHBvdCBjb250cmlidXRpb24gYW5kIGhvdyBtdWNoIG9mIGl0IGlzBQEgd2l0aGRyYXdhYmxlIHJpZ2h0IG5vdywgd2hpY2ggaXMgdGhlIGNvbnRyaWJ1dGlvbiBjYXBwZWQgYnkgd2hhdFEBIFtgUGFsbGV0Ojp3aXRoZHJhd19wb3RfZnVuZHNgXSBjb3VsZCBhY3R1YWxseSBtb3ZlIG91dCBvZiB0aGUgcG90IGluIHRoYXQgY3VycmVuY3kuAHrCcSyKdqUqw7oQopAh7JmhCw1N7JASjXdVsf63Iy2CaGdldF9mcmVlX3VubG9hZF90b2tlbl9pbmZvAFEIEE0BIEdldCB0aGUgY3VycmVudCBudW1iZXIgb2YgZnJlZSB1bmxvYWQgdG9rZW5zIGRpc3RyaWJ1dGVkIHRvIHBlb3BsZSBhbmQgbGl0ZSBwZW9wbGWsIGdpdmVuIHRoZSBjdXJyZW50IHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgC4IFJldHVybnM6IGAobGltaXRfcGVvcGxlLCBsaW1pdF9saXRlX3Blb3BsZSlgLgB6wnEsinalKsO6EKKQIeyZYkTQgRkZj/QUOFuqKGEuBzxnZXRfbWF4aW11bV9hZ2UAzQME1CBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpNYXhpbXVtQWdlYF0uAHrCcSyKdqUqw7oQopAh7Jnbni5THeXDYRyTOTtfkR8y1GdldF91bmxvYWRfdG9rZW5fYWxsb3dhbmNlX3Blcl90aW1lX3BlcmlvZF9mb3JfcGVvcGxlAEUBBFUBIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6OlVubG9hZFRva2VuQWxsb3dhbmNlUGVyVGltZVBlcmlvZEZvclBlb3BsZWBdLgB6wnEsinalKsO6EKKQIeyZkG92Ds3BLjjpeUzoZAYhUuhnZXRfdW5sb2FkX3Rva2VuX2FsbG93YW5jZV9wZXJfdGltZV9wZXJpb2RfZm9yX2xpdGVfcGVvcGxlAEUBCHQgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZvAgW2BDb25maWc6OlVubG9hZFRva2VuQWxsb3dhbmNlUGVyVGltZVBlcmlvZEZvckxpdGVQZW9wbGVgXS4AesJxLIp2pSrDuhCikCHsmSKfr8vfGuFUoB0XNuhXUyuoZ2V0X21heF9mcmVlX3VubG9hZF90b2tlbnNfcGVyX3RpbWVfcGVyaW9kADgELQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TWF4RnJlZVVubG9hZFRva2Vuc1BlclRpbWVQZXJpb2RgXS4AesJxLIp2pSrDuhCikCHsmY0Gq/akf3sBiWyVRYq1aRdgZ2V0X3JlY3ljbGVyX3Jpbmdfc3RhdHVzDCxpbnN0YW5jZV9pZDgUdmFsdWUVBBRpbmRleDhRDQToIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcmVjeWNsZXIgYXQgYSBnaXZlbiByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZ67euY8hHRiBWFaofX44ltGhnZXRfcmVjeWNsZXJfcmluZ19yZXZpc2lvbgwsaW5zdGFuY2VfaWQ4FHZhbHVlFQQUaW5kZXg45ATwIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jm178aAmmvzawOuV/TGbASJaGdldF9wYWlkX3Rva2VuX3Jpbmdfc3RhdHVzCBhwZXJpb2Q4FGluZGV4OFENBB0BIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmaD2wxD2qCqffHbvIH/9njVwZ2V0X3BhaWRfdG9rZW5fcmluZ19yZXZpc2lvbggYcGVyaW9kOBRpbmRleDjkBCUBIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZMIxMWyQHupTsK3HNv41wO4hnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0BCxpbnN0YW5jZV9pZDhBARRlASBHZXQgdGhlIGFtb3VudCBvZiBhbiBpbnN0YW5jZSdzIHVuZGVybHlpbmcgYXNzZXQgdGhhdCBjdXJyZW50bHkgcGF5cyBmb3Igb25lIHBhaWQgdW5sb2FkHCB0b2tlbi4ATQEgUmV0dXJucyBgTm9uZWAgaWYgdGhlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBpdHMgYXNzZXQgY2Fubm90IGN1cnJlbnRseSBiZWEBIGNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3ksIGluIHdoaWNoIGNhc2Ugb25seSBuYXRpdmUgZmVlIHBheW1lbnQgaXMgYXZhaWxhYmxlLgB6wnEsinalKsO6EKKQIeyZfWayi3UE51UKSTzOCwx9faBnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX3F1b3RlX2luX2Fzc2V0CCxpbnN0YW5jZV9pZDgUY291bnQ4QQEcWQEgR2V0IHRoZSBhbW91bnQgb2YgYW4gaW5zdGFuY2UncyB1bmRlcmx5aW5nIGFzc2V0IHRoYXQgY3VycmVudGx5IHBheXMgZm9yIGBjb3VudGAgcGFpZDwgdW5sb2FkIHRva2Vucy4AWQEgVGhlIGJhdGNoIGlzIHF1b3RlZCBhcyBhIHNpbmdsZSBzd2FwIGludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSwgc28gcG9vbCBzbGlwcGFnZSBtYWtlc00BIHRoZSByZXN1bHQgZGlmZmVyIGZyb20gYGNvdW50YCB0aW1lcyB0aGUgc2luZ2xlLXRva2VuIHF1b3RlLiBSZXR1cm5zIGBOb25lYCBpZiB0aGVdASBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdCwgb3IgaWYgaXRzIGFzc2V0IGNhbm5vdCBjdXJyZW50bHkgYmUgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZfggY3VycmVuY3ksIGluIHdoaWNoIGNhc2Ugb25seSBuYXRpdmUgZmVlIHBheW1lbnQgaXMgYXZhaWxhYmxlLgB6wnEsinalKsO6EKKQIeyZzr1EoM9R1bqZT2wP4Czp6oxnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX25hdGl2ZQBFAQQNASBHZXQgdGhlIGN1cnJlbnQgZmVlIGluIHRoZSBuYXRpdmUgY3VycmVuY3kgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AesJxLIp2pSrDuhCikCHsmZ5ekF5ZqkCfsYBreJmmF4VEZ2V0X2NvaW5fYnlfb3duZXIEFG93bmVyBFUNBIQgR2V0IGNvaW4gZGV0YWlscyBmb3IgYW4gYWNjb3VudC4AesJxLIp2pSrDuhCikCHsmdqcFukkgqX3o5fxn/ykfxpMZ2V0X2NvaW5fbG9ja191bnRpbAQUb3duZXIEtQMMVQEgR2V0IHRoZSBVbml4IHRpbWVzdGFtcCB1bnRpbCB3aGljaCBhIGNvaW4gaXMgY3VycmVudGx5IGxvY2tlZCBhZnRlciBmYWlsZWQgZGlzcGF0Y2guAEkBIFJldHVybnMgYE5vbmVgIHdoZW4gdGhlcmUgaXMgbm8gbG9jayBvciB3aGVuIHRoZSBzdG9yZWQgbG9jayBoYXMgYWxyZWFkeSBleHBpcmVkLgB6wnEsinalKsO6EKKQIeyZ1j7EPEhAlGKtF/lH+UF12GBnZXRfcmVjeWNsZXJfbWVtYmVyX2luZm8EGG1lbWJlcghZDQQZASBHZXQgdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24gZm9yIGEgc3BlY2lmaWMgcmVjeWNsZXIgbWVtYmVyIGtleS4AesJxLIp2pSrDuhCikCHsmU8iBwpDfNFUQuU+iaAqaHRQaXNfcGFpZF90b2tlbl9tZW1iZXIEGG1lbWJlcghZAQTUIENoZWNrIHdoZXRoZXIgYSBwYWlkIHRva2VuIG1lbWJlciBrZXkgaXMgcmVnaXN0ZXJlZC4AesJxLIp2pSrDuhCikCHsmYHCftU/0aLF8kvNth2X8OpQZ2V0X3JlY3ljbGVyX21lbWJlcnMMLGluc3RhbmNlX2lkOBR2YWx1ZRUEFGluZGV4OFEECJAgR2V0IHRoZSBtZW1iZXJzIG9mIGEgcmVjeWNsZXIgcmluZy4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmU6OaoU2Bn5yvlKSiqXJDcRIcmVjeWNsZXJfcmluZ19yb290DCxpbnN0YW5jZV9pZDgUdmFsdWUVBBRpbmRleDhdDQRZASBHZXQgdGhlIHJpbmctVlJGIHJvb3QgKHRoZSAicmVjeWNsZXIgcm9vdCIpIG9mIGEgcmVjeWNsZXIgcmluZywgaWYgaXQgaGFzIGJlZW4gYnVpbHQuAHrCcSyKdqUqw7oQopAh7JnxOPwgaPI+APZVDu3OYk9hbGdldF9wYWlkX3Rva2VuX3JpbmdfbWVtYmVycwgYcGVyaW9kOBRpbmRleDhRBAiYIEdldCB0aGUgbWVtYmVycyBvZiBhIHBhaWQgdG9rZW4gcmluZy4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmcrSxjLQSXUGuKD2GP+yq5ZoaXNfcmVjeWNsZXJfYWxpYXNfdW5sb2FkZWQQLGluc3RhbmNlX2lkOBR2YWx1ZRUEFGluZGV4OBRhbGlhcwhZAQz0IENoZWNrIGlmIGEgcmVjeWNsZXIgYWxpYXMgaGFzIGFscmVhZHkgYmVlbiB1bmxvYWRlZCAoc3BlbnQpLgDwIElmIHRoZSByZWN5Y2xlciBpcyBub3QgbGl2ZSwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JkujYsqm8QIyFrkoAWIV9CPcGlzX3BhaWRfdG9rZW5fYWxpYXNfY29uc3VtZWQMGHBlcmlvZDgUaW5kZXg4FGFsaWFzCFkBDMAgQ2hlY2sgaWYgYSBwYWlkIHVubG9hZCB0b2tlbiBoYXMgYmVlbiBjb25zdW1lZC4A9CBJZiB0aGUgcGVyaW9kIGlzIG5vdCBjdXJyZW50LCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmb8S0HqINh0O9TXsi1wZ5dNwaXNfZnJlZV90b2tlbl9hbGlhc19jb25zdW1lZAgYcGVyaW9kOBRhbGlhcwhZAQzAIENoZWNrIGlmIGEgZnJlZSB1bmxvYWQgdG9rZW4gaGFzIGJlZW4gY29uc3VtZWQuAPQgSWYgdGhlIHBlcmlvZCBpcyBub3QgY3VycmVudCwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JmRsy8uvB8r+d6VykJZ3bjFuHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXQAeQIUMQEgR2V0IHRoZSB3b3JzdC1jYXNlIHdlaWdodCBmb3IgYSB0cmFuc2FjdGlvbiB1c2luZyBvdXRwdXQtYmFzZWQgZmVlIHBheW1lbnQuACkBIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbWF4aW11bSB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9ucyBkaXNwYXRjaGVkIHdpdGhVASBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLCB1c2VmdWwgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0byBmaW5kIGEgZ29vZCB2YWx1ZSBmb3KUIGBNaW5pbXVtRXhwb25lbnRGb3JPdXRwdXRVbmxvYWRGZWVgLgBEAAA8TWVtYmVyc05vdGlmaWVyATxNZW1iZXJzTm90aWZpZXI4LFN1YnNjcmliZXJzAAEEBpxhDQQABEEBIFN1YnNjcmliZXIgcmVnaXN0cnkgd2l0aCB0aGVpciBzdWJzY3JpYmVkIGNvbGxlY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiBzdGF0ZS4AVENvdW50ZXJGb3JTdWJzY3JpYmVycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAFRTdWJzY3JpcHRpb25XaGl0ZWxpc3QAAQQGnGUNBAAUjCBTdWJzY3JpcHRpb25zIGFueW9uZSBtYXkgYWN0aXZhdGUuADUBIEFuIGVudHJ5IGlzIGNvbnN1bWVkIHRoZSBmaXJzdCB0aW1lIHRoZSBwYXJhY2hhaW4gc3Vic2NyaWJlcywgdGhyb3VnaCBlaXRoZXI9ASBgc3Vic2NyaWJlX3doaXRlbGlzdGVkYCBvciBgc3Vic2NyaWJlYC4gT25jZSBjb25zdW1lZCwgb25seSBgTWFuYWdlT3JpZ2luYCBjYW6AIHN1YnNjcmliZSB0aGF0IHBhcmFjaGFpbiBhZ2Fpbi4AVFN1YnNjcmliZWRDb2xsZWN0aW9ucwABBAYIEAQABNggQ29sbGVjdGlvbnMgYXQgbGVhc3Qgb25lIHN1YnNjcmliZXIgaXMgc3Vic2NyaWJlZCB0by4ATFNlYWxlZEJhdGNoU2VxdWVuY2UBACggAAAAAAAAAAAMiCBTZXF1ZW5jZSBudW1iZXIgZm9yIHNlYWxlZCBiYXRjaC70IEluY3JlbWVudGVkIHdoZW4gYSBiYXRjaCBpcyBzZWFsZWQgLSByZWFkeSBmb3IgZGlzdHJpYnV0aW9uLvAgU2VydmVzIGFzIHRoZSBiYXRjaCBpZGVudGlmaWVyIGZvciByZXBsYXkgYW5kIGRpc3RyaWJ1dGlvbi4AJFBhZ2VTdGF0ZQEAaQ0gAAAAAAAAAAAE8CBQYWdpbmcgc3RhdGU6IHdyaXRlIHBhZ2UsIHNlbmQgcGFnZSwgYW5kIGxhc3QgdXBkYXRlIGJsb2NrLgA4UGVuZGluZ1VwZGF0ZXMAAQwGBgZtDRAEAAx8IENoYW5nZWQgcmluZyByb290IGtleXMsIHBhZ2VkLjEBIEtleTogKHBhZ2VfaW5kZXgsIGlkZW50aWZpZXIsIHJpbmdfaW5kZXgpLiBQb3B1bGF0ZWQgYnkgYE9uUmluZ1Jvb3RDaGFuZ2VgLDkBIGNvbnN1bWVkIGJ5IGBlbnF1ZXVlX3VwZGF0ZXNgIG9uZSBwYWdlIGF0IGEgdGltZSBmcm9tIGBQYWdlU3RhdGU6OnNlbmRfcGFnZWAuAEBQYWdlVXBkYXRlc0NvdW50AQEEBs0DOBAAAAAABLQgUGVyLXBhZ2UgY291bnQgb2YgZW50cmllcyBpbiBQZW5kaW5nVXBkYXRlcy4ALFBlbmRpbmdJbml0AAEEBpxxDQQABLwgU3RhdGUgZm9yIHBhZ2luYXRlZCBzdWJzY3JpYmVyIGluaXRpYWxpemF0aW9uLgBUQ291bnRlckZvclBlbmRpbmdJbml0AQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASFNlYWxlZEJhdGNoSW5kaWNlcwABBAYI2QUEAATcIEluZGljZXMgcGVyIGNvbGxlY3Rpb24gZm9yIHRoZSBzZWFsZWQgKGN1cnJlbnQpIGJhdGNoLgAwQ3VycmVudEJhdGNoAAB1DQQABIggQ3VycmVudCBiYXRjaCBkaXN0cmlidXRpb24gc3RhdGUuAGxTdWJzY3JpYmVyc1dpdGhDdXJyZW50QmF0Y2gAAQQGnBAEAAToIFRyYWNrcyB3aGljaCBzdWJzY3JpYmVycyBoYXZlIHJlY2VpdmVkIHRoZSBjdXJyZW50IGJhdGNoLgA4TGFzdFJlcGxheVRpbWUAAQgGBnkNKAQACNAgTGFzdCByZXBsYXkgdGltZSBwZXIgKHN1YnNjcmliZXIsIGNvbGxlY3Rpb24pIHBhaXIu0CBVc2VkIHRvIGVuZm9yY2UgYSBjb29sZG93biBiZXR3ZWVuIHJlcGxheSByZXF1ZXN0cy4AAcUFAAElCAAoOE1heFN1YnNjcmliZXJzOBAKAAAABJwgTWF4aW11bSBudW1iZXIgb2Ygc3Vic2NyaWJlcnMgYWxsb3dlZC4ASE1heFVwZGF0ZXNQZXJCYXRjaDgQCgAAAARsIE1heGltdW0gdXBkYXRlcyBwZXIgYmF0Y2guAGxNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI4EAMAAAAEzCBNYXhpbXVtIGNvbGxlY3Rpb25zIGEgc3Vic2NyaWJlciBjYW4gc3Vic2NyaWJlIHRvLgA4TWF4Q29sbGVjdGlvbnM4EGQAAAAEkCBNYXhpbXVtIG51bWJlciBvZiByaW5nIGNvbGxlY3Rpb25zLgBMVXBkYXRlVHJpZ2dlckJsb2NrczgQAQAAAATEIE1pbmltdW0gbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIHVwZGF0ZSBiYXRjaGVzLgBYVXBkYXRlVHJpZ2dlclRocmVzaG9sZDgQAQAAAATsIE1pbmltdW0gbnVtYmVyIG9mIHVwZGF0ZXMgdG8gdHJpZ2dlciBpbW1lZGlhdGUgYmF0Y2ggc2VuZC4AZFJlcXVlc3RSZXBsYXlSZW1vdGVXZWlnaHR5AgxBnAAEJQEgUGVyLWluZGV4IHdlaWdodCBzdXJjaGFyZ2UgZm9yIHJlbW90ZSBleGVjdXRpb24gb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABNwgTWluaW11bSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIHJ1bnMuAERTdHVja0JhdGNoVGltZW91dDgQZAAAAATkIE51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggYSBzdHVjayBiYXRjaCBpcyBhYmFuZG9uZWQuAFRSZXBsYXlDb29sZG93blNlY29uZHMoIDwAAAAAAAAABFkBIENvb2xkb3duLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHJlcGxheSByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgc3Vic2NyaWJlciBhbmQgY29sbGVjdGlvbi4AAX0NAAAARQAAHEFpcmRyb3ABHEFpcmRyb3AYGEV2ZW50cwABBAUIgQ0EAATYIFJlZ2lzdGVyZWQgYWlyZHJvcCBldmVudHMsIGtleWVkIGJ5IHRoZWlyIGlkZW50aWZpZXIuADhBY3Rpb25TY2hlZHVsZQABCAYGiQ0QBAAIXQEgUGVuZGluZyBsaWZlY3ljbGUgYWN0aW9ucyBmb3IgcmVnaXN0ZXJlZCBldmVudHMsIG9yZGVyZWQgYnkgdGhlIHRpbWVzdGFtcCBhdCB3aGljaCB0aGVoIGFjdGlvbiBzaG91bGQgdGFrZSBwbGFjZS4ANFJlZ2lzdHJhdGlvbnMAAQgFBpENMQgEAAgNASBQZXItZXZlbnQgcGFydGljaXBhbnQgcmVnaXN0cmF0aW9ucywga2V5ZWQgYnkgMzItYnl0ZSBlbnRyb3B5IHNsb3SYIGluIGJpZy1lbmRpYW4gb3JkZXIgdW5kZXIgYElkZW50aXR5YC4AHFdpbm5lcnMAAQgFApUNLQgEAAhxASBXaW5uZXJzIGZvciBhbiBldmVudCwga2V5ZWQgYnkgdGhlIGV2ZW50IGlkZW50aWZpZXIgYW5kIHRoZWlyIHJlZ2lzdHJhdGlvbiBlbnRyeS4gVGhpcyBtYXBz6CB0byB0aGUgcGFydGljaXBhbnQncyB0aWNrZXQgZm9yIG9mZmNoYWluIGxvb2t1cCBwdXJwb3Nlcy4AMEV2ZW50RW50cm9weQABBAUILQgEAAhdASBFbnRyb3B5IHNlZWQgY2FwdHVyZWQgYXQgZHJhdyB0aW1lLCBwZXIgZXZlbnQuIFRoaXMgc2VydmVzIGFzIGEgcGFydGl0aW9uIHBvaW50IGluIHRoZfAgcGFydGljaXBhdGlvbiB0aWNrZXQgb3JkZXJlZCBsaXN0IGluIG9yZGVyIHRvIHBpY2sgd2lubmVycy4APFN1cHBvcnRlZEFzc2V0cwABBAVxAUUBBAAQZQEgUGVyLWFzc2V0IGVuYWJsZW1lbnQgZ2F0ZS4gQW4gYXNzZXQgaXMgdXNhYmxlIGZvciBzY2hlZHVsaW5nIGV2ZW50cyBpZmYgaXQgaXMgcHJlc2VudCBpbmUBIHRoaXMgbWFwOyB0aGUgc3RvcmVkIHZhbHVlIGlzIHRoZSBhbW91bnQgdGhlIHBhbGxldCB0cmFuc2ZlcnJlZCBpbnRvIGl0cyBwb3QgdG8ga2VlcCB0aGVVASBwb3QncyBhc3NldCBhY2NvdW50IGFsaXZlICh0aGUgYXNzZXQncyBFRCBhdCB0aGUgdGltZSBvZiBlbmFibGluZykuIGBlbmFibGVfYXNzZXRgIC/IIGBkaXNhYmxlX2Fzc2V0YCBhcmUgdGhlIG9ubHkgd2F5cyB0byBtdXRhdGUgdGhpcy4AAd0FAAEpCAAUIFBhbGxldElkxQkgcG9wL2FkcnAEwCBQYWxsZXQgaWQgdXNlZCB0byBkZXJpdmUgdGhlIHByaXplIHBvdCBhY2NvdW50LgAoQ2xlYXJMaW1pdDgQZAAAAAjUIE1heGltdW0gbnVtYmVyIG9mIHJlZ2lzdHJhdGlvbiBlbnRyaWVzIHByb2Nlc3NlZCBwZXLoIGBjbGVhbl91cF97cmVnaXN0cmF0aW9ucyx3aW5uZXJzfV9hdXRob3JpemVkYCBpbnZvY2F0aW9uLgAkRHJhd0xpbWl0OBBkAAAABDEBIE1heGltdW0gbnVtYmVyIG9mIHdpbm5lciBzbG90cyBpbnNlcnRlZCBwZXIgYGRyYXdfd2lubmVyc19hdXRob3JpemVkYCBjYWxsLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATYIEhvdyBmcmVxdWVudGx5IHRoZSBvZmZjaGFpbiB3b3JrZXIgZmlyZXMgKGluIGJsb2NrcykuADhhaXJkcm9wX3BvdF9pZASAbW9kbHBvcC9hZHJwAAAAAAAAAAAAAAAAAAAAAAAAAAAEdCBBY2NvdW50IGlkIG9mIHRoZSBwcml6ZSBwb3QuAAGZDQAAAEYAABhIb25vdXIBGEhvbm91cgwYUG9pbnRzAAEEAgidDQQAEJggUG9pbnRzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYnkgdm90ZXJzLgB1ASBSZWNvcmRzIGluIFtgUG9pbnRzYF0gdHJhY2sgdXNlZCBwb2ludHMgdG8gcHJldmVudCBkb3VibGUtc3BlbmRpbmcgYW5kIGVuZm9yY2UgcmF0ZS1saW1pdGluZ3ggYmFzZWQgb24gdGhlIGxhc3QgdXNhZ2UgdGltZS4AFFZvdGVzAAEEAggQBAAQfCBWb3RlcyB0aGF0IGhhdmUgYmVlbiBiZXN0b3dlZC4AVQEgUHJldmVudHMgZG91YmxlLXZvdGluZyBvbiB0aGUgc2FtZSBzdWJqZWN0IGJ5IHRoZSBzYW1lIHZvdGVyLCBhcyBbYFN1YmplY3RBbGlhc2BdIGlz0CB1bmlxdWVseSBkZXJpdmVkIGZyb20gW2BTdWJqZWN0SWRgXSBmb3IgZWFjaCB2b3Rlci4AFFRhbGx5AAEEAgg5CAQABDEBIEFic29sdXRlIGhvbm91ciBzY29yZSBvZiBhIHN1YmplY3QuIEluaXRpYWxpemVkIHRvIC0xIHRvIG9mZnNldCBzZWxmLXZvdGVzLgAB5QUAATUIAAhMUG9pbnRGcmVlemVEdXJhdGlvbigggFEBAAAAAAAEBQEgRHVyYXRpb24gaW4gc2Vjb25kcyB0aGF0IG11c3QgcGFzcyBiZWZvcmUgYSBwb2ludCBjYW4gYmUgcmV1c2VkLgA0Q2FsbE1vcnRhbGl0eSggLAEAAAAAAAAEPQEgRHVyYXRpb24gaW4gc2Vjb25kcyBhIGBiZXN0b3dgIGNhbGwgcmVtYWlucyB2YWxpZCBhZnRlciBpdHMgYGNhbGxfdmFsaWRfZnJvbWAuAAGhDQAAAEcAADhQZW9wbGVBaXJkcm9wcwE4UGVvcGxlQWlyZHJvcHMINE5leHREcmF3SW5kZXgBACggAAAAAAAAAAAEFQEgSW5kZXggb2YgdGhlIG5leHQgZHJhdyB0byBzY2hlZHVsZS4gRmVlZHMgW2BQYWxsZXQ6OmRyYXdfZXZlbnRfaWRgXS4AJERyYXdTYWx0cwABBAUIpQ0EABBpASBQZXItZHJhdyBzbG90IHNhbHQsIGNhcHR1cmVkIGZyb20gdGhlIHJhbmRvbW5lc3Mgc291cmNlIGF0IHNjaGVkdWxpbmcgdGltZSwgdG9nZXRoZXIgd2l0aFkBIHRoZSBkcmF3J3MgZW5kIHRpbWUuIFRoZSBzYWx0IGlzIG9ubHkgcmVhZCBkdXJpbmcgcmVnaXN0cmF0aW9uLCB3aGljaCBjbG9zZXMgc3RyaWN0bHllASBiZWZvcmUgdGhlIGVuZCB0aW1lLCBzbyBhbiBlbnRyeSB3aG9zZSBlbmQgdGltZSBoYXMgcGFzc2VkIGlzIGRlYWQgYW5kIGlzIHJlbW92ZWQgYnkgdGhl0CBvZmZjaGFpbiB3b3JrZXIgdmlhIFtgUGFsbGV0OjpjbGVhbl91cF9kcmF3X3NhbHRgXS4AAfEFAAE9CAAMQE1heFNjaGVkdWxlQmF0Y2g4EBAAAAAE9CBNYXhpbXVtIG51bWJlciBvZiBkcmF3cyBzY2hlZHVsZWQgcGVyIGBzY2hlZHVsZV9kcmF3c2AgY2FsbC4AQE1heFJlZ2lzdGVyQmF0Y2g4EBAAAAAE8CBNYXhpbXVtIG51bWJlciBvZiBkcmF3cyByZWdpc3RlcmVkIGZvciBwZXIgYHJlZ2lzdGVyYCBjYWxsLgBccGVvcGxlX2FpcmRyb3BzX2NvbnRleHQIgC7srBH986XTj3AsAkN2Q6tQ9m0z0rKY7xu91p3WC8Y1BA0BIFRoZSBjb250ZXh0IHVzZWQgdG8gYXV0aGVudGljYXRlIHBlb3BsZSBwYXJ0aWNpcGF0aW5nIGluIGFpcmRyb3BzLgABqQ0ACDhBaXJkcm9wQXNzZXRJZHEBBJAgQXNzZXQgaWQgdXNlZCBieSBbYFNlbGY6OkFpcmRyb3BgXS5MQWlyZHJvcEFzc2V0QmFsYW5jZUUBBKQgQXNzZXQgYmFsYW5jZSB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLgBIAABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAAkGBAAM2CBUaGUgY3VycmVudGx5IGFjdGl2ZSBtaWdyYXRpb24gdG8gcnVuIGFuZCBpdHMgY3Vyc29yLgC8IGBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBtaWdyYXRpb24gaXMgcnVubmluZy4AIEhpc3RvcmljAAEEBR0GEAQAELQgU2V0IG9mIGFsbCBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgbWlncmF0aW9ucy4AcQEgVGhpcyBpcyB1c2VkIGFzIGJsYWNrbGlzdCwgdG8gbm90IHJlLWV4ZWN1dGUgbWlncmF0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZTEBIGNvZGViYXNlIHlldC4gR292ZXJuYW5jZSBjYW4gcmVndWxhcmx5IGNsZWFyIHRoaXMgb3V0IHZpYSBgY2xlYXJfaGlzdG9yaWNgLgABAQYAAUEIAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABrQ0AABALIBmazjVk0JZOLE1Km6RplE28/2ps4aTQsnxvzALSTDhvbmdvaW5nX3N0YXR1cwCxDQSoIFJldHVybnMgdGhlIG9uZ29pbmcgc3RhdHVzIG9mIG1pZ3JhdGlvbnMuAAsgGZrONWTQlk4sTUqbpGlevXdssV2bkS4njU0tYsWhIHByb2dyZXNzALUNEAkBIFJldHVybnMgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uLCBpZiBhbnkuAFEBIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uJ3MgcHJvZ3Jlc3MsHQEgaW5jbHVkaW5nIHRoZSBudW1iZXIgb2Ygc3RlcHMgY29tcGxldGVkIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHN0ZXBzLgALIBmazjVk0JZOLE1Km6RpRq9LzsbzWnu77p2fwQlb4URhZmZlY3RlZF9wcmVmaXhlcwA0DAEBIFJldHVybnMgdGhlIHN0b3JhZ2UgcHJlZml4ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgbWlncmF0aW9uLgAZASBDYW4gYmUgZW1wdHkgaWYgdGhlIG1pZ3JhdGlvbiBkb2VzIG5vdCBrbm93IG9yIHRoZXJlIGFyZSBubyBwcmVmaXhlcy4ACyAZms41ZNCWTixNSpukaapMKKBvGYhFvRuynsYgXd0Yc3RhdHVzAL0NBPAgUmV0dXJucyB0aGUgY29tcHJlaGVuc2l2ZSBzdGF0dXMgb2YgbXVsdGktYmxvY2sgbWlncmF0aW9ucy4AYgAACAQFACB5BAgALAAECAwQFBgcICQoAVwsMDQ4PEBESExQVABYBAgMEBQYHCAkKFw0QXV0aG9yaXplQ2FsbCkGEEhDaGVja05vblplcm9TZW5kZXItBhBAQ2hlY2tTcGVjVmVyc2lvbjEGODhDaGVja1R4VmVyc2lvbjUGODBDaGVja0dlbmVzaXM5Bjw4Q2hlY2tNb3J0YWxpdHk9BjwoQ2hlY2tOb25jZUUGECxDaGVja1dlaWdodEkGEFBDaGFyZ2VBc3NldFR4UGF5bWVudE0GEERDaGVja01ldGFkYXRhSGFzaFEGZQVQU3RvcmFnZVdlaWdodFJlY2xhaW0QEGBVbml0VHJhbnNhY3Rpb25FeHRlbnNpb24QEFBWZXJpZnlNdWx0aVNpZ25hdHVyZVkGECBBc1BlcnNvbl0GEFxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudGkGEEhTY29yZUFzUGFydGljaXBhbnR1BhA0R2FtZUFzSW52aXRlZIEGEDhQZW9wbGVMaXRlQXV0aI0GECBBc01lbWJlcpkGECRBc0NvaW5hZ2WlBhAsQXNSZXNvdXJjZXO1BhAoSG9ub3VyQXV0aMEGEDxSZXN0cmljdE9yaWdpbnPNBhBkHEF1cmFBcGkINHNsb3RfZHVyYXRpb24AwQ0MkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAB0KBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkITHJlbGF5X3BhcmVudF9vZmZzZXQAOAwVASBGZXRjaCB0aGUgcmVsYXkgcGFyZW50IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgBdASBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgYmxvY2tzIGJlaGluZCB0aGUgcmVsYXkgY2hhaW4gdGlwIHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlLgBYbWF4X2NsYWltX3F1ZXVlX29mZnNldAAMiOggTWF4aW11bSBjbGFpbSBxdWV1ZSBvZmZzZXQgZm9yIGFzeW5jIGJhY2tpbmcgZmxleGliaWxpdHkuADkBIEJvdW5kcyBob3cgZmFyICJpbnRvIHRoZSBmdXR1cmUiIGEgY2FuZGlkYXRlIG1heSBsb29rIGluIHRoZSBjbGFpbSBxdWV1ZSB3aGVuUQEgc2VsZWN0aW5nIGEgY29yZS4gVGhlIGVmZmVjdGl2ZSBjbGFpbSBxdWV1ZSBkZXB0aCBkZXBlbmRzIG9uIHRoZSBjYW5kaWRhdGUgdmVyc2lvbjoAYQEgLSAqKlYxL1YyIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3MgYHJlbGF5X3BhcmVudGAsSQEgICB3aGljaCBpcyBgcmVsYXlfcGFyZW50X29mZnNldGAgYmxvY2tzIGJlaGluZCB0aGUgcmVsYXktY2hhaW4gdGlwLiBUaGUgZWZmZWN0aXZl7CAgIGRlcHRoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0ICsgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuABUBIC0gKipWMyBjYW5kaWRhdGVzKio6IHRoZSBjbGFpbSBxdWV1ZSBpcyBsb29rZWQgdXAgYXQgdGhlIGNhbmRpZGF0ZSdzXQEgICBgc2NoZWR1bGluZ19wYXJlbnRgIOKAlCB0aGUgcmVsYXktY2hhaW4gYmxvY2sgb2YgdGhlICpsYXN0IGZpbmlzaGVkKiBzbG90LCBkZWNvdXBsZWQlASAgIGZyb20gdGhlIGV4ZWN1dGlvbi1jb250ZXh0IGByZWxheV9wYXJlbnRgLiBUaGUgZWZmZWN0aXZlIGRlcHRoIGlzIGp1c3RwICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgLgAhASBDb2xsYXRvcnMgc2VsZWN0IGEgY29yZSB2aWEgYW4gb2Zmc2V0IGluIGBbMCwgbWF4X2NsYWltX3F1ZXVlX29mZnNldF1gLgBRASAtICoqVjIgY2FuZGlkYXRlcyoqOiBgbWF4X2NsYWltX3F1ZXVlX29mZnNldCA9IDFgIGlzIHN1ZmZpY2llbnQuIFRoZSBjbGFpbSBxdWV1ZSBpc1kBICAgbG9va2VkIHVwIGF0IGByZWxheV9wYXJlbnRgLCB3aGljaCBzaXRzIGJlaGluZCB0aGUgdGlwLiBPZmZzZXQgMCBjb3ZlcnMgc3luY2hyb25vdXNVASAgIGJhY2tpbmcgaW4gdGhlIG5leHQgcmVsYXkgYmxvY2s7IG9mZnNldCAxIGNvdmVycyBhc3luY2hyb25vdXMgYmFja2luZyBpbiB0aGUgcmVsYXlQICAgYmxvY2sgYWZ0ZXIgdGhhdC4ALQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogb2Zmc2V0IDAgaXMgbm90IHJlYWNoYWJsZSDigJQgdGhlIGBzY2hlZHVsaW5nX3BhcmVudGBVASAgIGlzIHVzdWFsbHkgdGhlIGxlYWYgd2hlbiBwaWNrZWQsIGJ1dCBpdHMgY2hpbGQgaXMgYWxyZWFkeSBiZWluZyBidWlsdCwgc28gdGhlcmUgaXM5ASAgIG5vIG9wcG9ydHVuaXR5IHRvIGxhbmQgaW4gdGhlIG5leHQgcmVsYXkgYmxvY2suIE9mZnNldCAxIGlzIHJlYWNoYWJsZSB1bmRlclUBICAgc3luY2hyb25vdXMtYmFja2luZyBzZW1hbnRpY3MuIEZvciBlbGFzdGljIHNjYWxpbmcgdGhlIGxhc3QgYmxvY2sgaW4gdGhlIGJ1bmRsZSBpczUBICAgYnVpbHQgbmVhciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHNsb3QsIHdoaWNoIG1ha2VzIG9mZnNldCAxIHRvbyB0aWdodCDigJRVASAgIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMmAgaXMgdGhlIG1pbmltdW0gY2FwIHRoYXQga2VlcHMgZWxhc3RpYyBzY2FsaW5nIHZpYWJsZS4AVQEgTm90ZTogdGhpcyBtZXRob2Qgd2FzIGFkZGVkIGluIGBhcGlfdmVyc2lvbiA9IDJgLiBDb2xsYXRvcnMgY2FsbGluZyBvbiBydW50aW1lcyB0aGF0TQEgb25seSBpbXBsZW1lbnQgYGFwaV92ZXJzaW9uID0gMWAgb2YgW2BSZWxheVBhcmVudE9mZnNldEFwaWBdIHdpbGwgcmVjZWl2ZSBhbiBlcnJvckkBIGFuZCBzaG91bGQgZmFsbCBiYWNrIHRvIGEgc2Vuc2libGUgZGVmYXVsdCAoY3VycmVudCBjb2xsYXRvciBkZWZhdWx0czogYDFgIG9uIHRoZYQgVjMgcGF0aCwgYDBgIG9uIHRoZSBWMS9WMiBwYXRoKS4A+CBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvaXNzdWVzLzg4OTM+ADxRASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4gYW5kIGhvdyBjbGFpbSBxdWV1ZWAgb2Zmc2V0cyBhcmUgZGV0ZXJtaW5lZC4AWQEgQSBsYXJnZXIgcmVsYXkgcGFyZW50IG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZlEBIHRoZSByZWxheSBjaGFpbiwgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlJCBydW50aW1lLgBZASBUaGUgbWF4IGNsYWltIHF1ZXVlIG9mZnNldCBkZXRlcm1pbmVzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgY29sbGF0b3JzIHRhcmdldCB3aGVuUQEgc2VsZWN0aW5nIGNvcmVzIGZyb20gdGhlIGNsYWltIHF1ZXVlLiBUaGlzIHByb3ZpZGVzIGFzeW5jIGJhY2tpbmcgZmxleGliaWxpdHkgd2hpbGWoIHByZXZlbnRpbmcgY29sbGF0b3JzIGZyb20gc2tpcHBpbmcgc2xvdHMu+CBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvaXNzdWVzLzg4OTM+AEQgVmVyc2lvbiBoaXN0b3J5OvQgLSBWZXJzaW9uIDE6IEluaXRpYWwgdmVyc2lvbiB3aXRoIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBvbmx5zCAtIFZlcnNpb24gMjogQWRkZWQgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgIG1ldGhvZAgAWFNjaGVkdWxpbmdWM0VuYWJsZWRBcGkEVHNjaGVkdWxpbmdfdjNfZW5hYmxlZABZAQT0IFJldHVybnMgdHJ1ZSBpZiBWMyBzY2hlZHVsaW5nIGlzIGVuYWJsZWQgZm9yIHRoaXMgcGFyYWNoYWluLgAk8CBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIHdoZXRoZXIgVjMgc2NoZWR1bGluZyBpcyBlbmFibGVkLgDkIFdoZW4gZW5hYmxlZCwgY29sbGF0b3JzIG11c3QgcHJvZHVjZSBWMyBjYW5kaWRhdGVzIHdpdGg65CAtIFBhcmFjaGFpbkJsb2NrRGF0YTo6VjIgY29udGFpbmluZyB0aGUgc2NoZWR1bGluZyBwcm9vZrwgLSBDYW5kaWRhdGVEZXNjcmlwdG9yVjMgd2l0aCBzY2hlZHVsaW5nX3BhcmVudAAdASBUaGlzIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHJlbGF5IHBhcmVudCBvZmZzZXQgKGJ1aWxkaW5nIG9uIG9sZGVyHQEgcmVsYXkgcGFyZW50cykuIEEgcGFyYWNoYWluIGVuYWJsZXMgVjMgd2hlbiBpdCB3YW50cyBsb3ctbGF0ZW5jeSBibG9ja5wgcHJvZHVjdGlvbiB3aXRoIHRoZSBkdWFsLXBhcmVudCBtb2RlbC4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90IQpZASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AfQgEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2vFDRAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclzRDQRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQDVDQSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb2442Q0QpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAaQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWTdDRRpbnB1dBjhDQR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY5kI6Q0QbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnT5DaUIBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja8UNEGRhdGH5DQkOBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2UNDgh0eJkIKGJsb2NrX2hhc2g8EQ4kaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzCBRvd25lchgQc2VlZCUGGQ4cFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGB0ODJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSZCAxsZW44KQ4AAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0mQgMbGVuOC0OAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0eQJFAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhFAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOCkOBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOC0OBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodHkCRQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4RQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjg5DhS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlOQJFDhSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHR5AhRhc3NldLEDSQ4Y6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbu0BHG1lc3NhZ2U5AiBhc3NldF9pZLEDTQ4oYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu0QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjhRDgREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27tAQx4Y22BA30OBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9u7QGFDgSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldO0BjQ4E9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbu0BGHRhcmdldO0BlQ4EHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXSZDiBsb2NhdGlvbu0BnQ4U8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0mQ4gbG9jYXRpb27tAZ0OFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAChNb2JSdWxlQXBpBCB2b3RlZF9vbggUdm90ZXIIJGRvbmVfb25seVkBaQQMWQEgUmV0dXJucyBhIGxpc3Qgb2YgY2FzZXMgd2hlcmUgdGhlIHVzZXIgaGFzIGEgdm90ZSBzdG9yZWQgb24gY2hhaW4uIElmIHRoZSBgZG9uZV9vbmx5YFUBIGZsYWcgaXMgc2V0LCBvbmx5IGNhc2VzIHRoYXQgYXJlIGRvbmUgYW5kIHJlYWR5IHRvIGJlIGNsYWltZWQgd2lsbCBiZSByZXR1cm5lZC4gVGhpcwUBIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB2b3RlIGludG8gYWNjb3VudC4ABLQgVGhlIEFQSSB0byBxdWVyeSB0aGUgcmV3YXJkcyBmb3IgbW9iIGNyZWRpdC4EADRQcm9vZk9mSW5rQXBpBERjYW5kaWRhY3lfZGVwb3NpdABFAQTUIFJldHVybnMgdGhlIGRlcG9zaXQgbmVjZXNzYXJ5IHRvIGJlY29tZSBhIGNhbmRpZGF0ZS4ABOwgVGhlIEFQSSB0byBxdWVyeSB0aGUgZGVwb3NpdCBmb3IgYSBwcm9vZiBvZiBpbmsgY2FuZGlkYWN5LgQANFBhbGxldEdhbWVBcGkEMHBsYXlfZGVwb3NpdABFAQS4IFJldHVybnMgdGhlIGRlcG9zaXQgbmVjZXNzYXJ5IHRvIHBsYXkgYSBnYW1lLgAErCBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSBkZXBvc2l0IGZvciBnYW1lcGxheS4EADROZnRDcmVkaXRzQXBpDFhuZnRfY2xhaW1fY3JlZGl0X3Jvb3RzBCBjbGFpbWFudAkFpQ4cWQEgUmV0dXJucyB0aGUgTkZUIGNsYWltIGNyZWRpdCByb290cyBgY2xhaW1hbnRgIGhhcyBhdCBsZWFzdCBvbmUgY3JlZGl0IHVuZGVyLCBrZXllZCBieQkBIHRoZSBibG9jayB0aGF0IGNvbW1pdHRlZCB0aG9zZSBjcmVkaXRzLCBpbiBhc2NlbmRpbmcgYmxvY2sgb3JkZXIuAFUBIEEgd2FsbGV0IHN0YXJ0cyBoZXJlIGFuZCBhc2tzIGBuZnRfY2xhaW1fY3JlZGl0X3Byb29mc2AgYWJvdXQgZWFjaCBibG9jayByZXR1cm5lZC4gQVkBIGJsb2NrIGdldHMgaXRzIHJvb3Qgb25seSBpbiB0aGUgYmxvY2sgYWZ0ZXIgaXQsIHNvIHRoZSBuZXdlc3Qgb25lIGEgY2xhaW1hbnQncyBjcmVkaXRZASBsYW5kZWQgaW4gaXMgbGVmdCBvdXQgdW50aWwgdGhlbiwgYW5kIGEgY3JlZGl0IHRoYXQgc3BpbGxlZCBpbnRvIGEgbGF0ZXIgYnVmZmVyIHdhaXRzYCBmb3IgdGhhdCBidWZmZXIncyB0cmVlLgBcbmZ0X2NsYWltX2NyZWRpdF9wcm9vZnMIKHRyZWVfYmxvY2s4IGNsYWltYW50CQWtDjhZASBSZXR1cm5zIHRoZSBpbmNsdXNpb24gcHJvb2Ygb2YgZWFjaCBjcmVkaXQgb2YgYGNsYWltYW50YCB0aGF0IGB0cmVlX2Jsb2NrYCBjb21taXR0ZWQsxCB3aGljaCBpcyB3aGF0IEFzc2V0IEh1YiB2ZXJpZmllcyBhIG1pbnQgYWdhaW5zdC4AYQEgRXZlcnl0aGluZyBjb21lcyBmcm9tIGNoYWluIHN0YXRlLCBzbyBhIGNhbGxlciBuZWVkcyBubyBldmVudCBoaXN0b3J5OiB0aGUgcHJvb2ZzIGNhcnJ5YQEgdGhlIGNyZWRpdCwgaXRzIGxlYWYgaW5kZXggYW5kIHRoZSBzaWJsaW5nIGhhc2hlcy4gRW1wdHkgaWYgdGhlIGJsb2NrIGNvbW1pdHRlZCBub3RoaW5nRCBvZiBgY2xhaW1hbnRgJ3MuADkBIE9ubHkgYmxvY2tzIHdob3NlIGF3YXJkcyBhcmUgc3RpbGwgcmV0YWluZWQgY2FuIGJlIHNlcnZlZC4gQW4gb2xkZXIgb25lIGdpdmVzAQEgYE5mdENsYWltQ3JlZGl0UHJvb2ZFcnJvcjo6QXdhcmRzUHJ1bmVkYCwgYW5kIGhhcyB0byBnbyB0aHJvdWdomCBgbmZ0X2NsYWltX2NyZWRpdF9wcm9vZl9mcm9tX2F3YXJkc2AuAGEBIE9uZSBjYWxsIHJlYnVpbGRzIHRoZSBibG9jaydzIHRyZWUgb25jZSwgaG93ZXZlciBtYW55IHByb29mcyBpdCByZXR1cm5zLCBzbyB0aGUgY29zdCBpc2EBIGJvdW5kZWQgYnkgdGhlIHBhbGxldCdzIGBBV0FSRFNfUEVSX1RSRUVgLiBBIG5vZGUgc2VydmVzIHRoaXMgdW5tZXRlcmVkLCBzbyBhbiBvcGVyYXRvcgUBIGV4cG9zaW5nIGl0IHB1YmxpY2x5IG11c3QgcmF0ZS1saW1pdCBSUEMgYXMgZm9yIGFueSBydW50aW1lIEFQSS4AiG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZfZnJvbV9hd2FyZHMMKHRyZWVfYmxvY2s4GGF3YXJkczEMKGxlYWZfaW5kZXg4wQ4oQQEgUmV0dXJucyB0aGUgaW5jbHVzaW9uIHByb29mIG9mIHRoZSBjcmVkaXQgYXQgYGxlYWZfaW5kZXhgIG9mIGB0cmVlX2Jsb2NrYCwgZnJvbYQgYGF3YXJkc2Agc3VwcGxpZWQgYnkgdGhlIGNhbGxlci4AYQEgVGhlIGZhbGxiYWNrIGZvciBhIGJsb2NrIHdob3NlIGF3YXJkcyBhcmUgbm8gbG9uZ2VyIHJldGFpbmVkOiBgYXdhcmRzYCBhcmUgZXZlcnkgY3JlZGl0UQEgdGhlIGJsb2NrIGNvbW1pdHRlZCwgaW4gbGVhZiBvcmRlciwgcmVidWlsdCBmcm9tIHRoZSBgTmZ0Q2xhaW1DcmVkaXRBd2FyZGVkYCBldmVudHNZASBuYW1pbmcgdGhhdCBibG9jaywgd2hpY2ggYXJlIGVtaXR0ZWQgaW4gaXQgb3IgaW4gYW4gZWFybGllciBvbmUuIExlYWYgaGFzaGluZyBhbmQgdGhl5CB0cmVlIGxheW91dCBzdGF5IGluIHRoZSBydW50aW1lLCBhbmQgdGhlIHJlY29tcHV0ZWQgcm9vdE0BIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVjb3JkZWQgb25lLCBzbyBhd2FyZHMgdGhhdCBhcmUgaW5jb21wbGV0ZSBvciBvdXQgb2Ygb3JkZXJZASBmYWlsIHdpdGggYE5mdENsYWltQ3JlZGl0UHJvb2ZFcnJvcjo6Um9vdE1pc21hdGNoYCByYXRoZXIgdGhhbiB5aWVsZGluZyBhIHByb29mIEFzc2V0NCBIdWIgcmVqZWN0cy4ABNAgVGhlIEFQSSBhIHdhbGxldCBtaW50cyBhbiBORlQgY2xhaW0gY3JlZGl0IHRocm91Z2guBABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclzFDhCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGNEOKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWTVDiUGOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMA2Q4QUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBAAg6QbdDgA=";
|
|
2
|
+
|
|
3
|
+
export { binMeta as default };
|