@parity/product-sdk-descriptors 0.4.0 → 0.4.1

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.
Files changed (56) hide show
  1. package/README.md +19 -0
  2. package/chains/kusama-asset-hub/.papi/polkadot-api.json +1 -1
  3. package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +440 -1096
  4. package/chains/kusama-asset-hub/generated/dist/descriptors-DgSoa2t9.js +25 -0
  5. package/chains/kusama-asset-hub/generated/dist/index.js +4 -4
  6. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +304 -496
  7. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-DMsyqc9c.js +3 -0
  8. package/chains/kusama-asset-hub/generated/dist/metadataTypes-c7k6GZcy.js +3 -0
  9. package/chains/kusama-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  10. package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
  11. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +7 -2
  12. package/chains/paseo-asset-hub/generated/dist/index.js +2 -2
  13. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +7 -2
  14. package/chains/{previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-UA_IAYkc.js → paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-DxBx2MZS.js} +1 -1
  15. package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
  16. package/chains/paseo-individuality/generated/dist/common-types.d.ts +235 -148
  17. package/chains/paseo-individuality/generated/dist/descriptors-CrbK0sgs.js +25 -0
  18. package/chains/paseo-individuality/generated/dist/index.js +4 -4
  19. package/chains/paseo-individuality/generated/dist/metadataTypes-4wzPDBw3.js +3 -0
  20. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
  21. package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +192 -69
  22. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CjOc_ro7.js +3 -0
  23. package/chains/polkadot-asset-hub/.papi/polkadot-api.json +1 -1
  24. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +401 -1017
  25. package/chains/polkadot-asset-hub/generated/dist/descriptors-CoscEQ9e.js +25 -0
  26. package/chains/polkadot-asset-hub/generated/dist/index.js +4 -4
  27. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-Dk55glaU.js +3 -0
  28. package/chains/polkadot-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  29. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +301 -485
  30. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-BEYst3UH.js +3 -0
  31. package/chains/previewnet-asset-hub/.papi/polkadot-api.json +1 -1
  32. package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +7 -2
  33. package/chains/previewnet-asset-hub/generated/dist/index.js +2 -2
  34. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +7 -2
  35. package/chains/{paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-UA_IAYkc.js → previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DxBx2MZS.js} +1 -1
  36. package/chains/previewnet-individuality/.papi/polkadot-api.json +1 -1
  37. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +235 -148
  38. package/chains/previewnet-individuality/generated/dist/descriptors-CRDfgrd_.js +25 -0
  39. package/chains/previewnet-individuality/generated/dist/index.js +4 -4
  40. package/chains/previewnet-individuality/generated/dist/metadataTypes-4wzPDBw3.js +3 -0
  41. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
  42. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +192 -69
  43. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-CjOc_ro7.js +3 -0
  44. package/package.json +1 -1
  45. package/chains/kusama-asset-hub/generated/dist/descriptors-DYyEriME.js +0 -25
  46. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-C4kQ8RaO.js +0 -3
  47. package/chains/kusama-asset-hub/generated/dist/metadataTypes-DU1nurc8.js +0 -3
  48. package/chains/paseo-individuality/generated/dist/descriptors-B1XZ3XJy.js +0 -25
  49. package/chains/paseo-individuality/generated/dist/metadataTypes-BaUy_4gO.js +0 -3
  50. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-Bfu1vCrE.js +0 -3
  51. package/chains/polkadot-asset-hub/generated/dist/descriptors-BLVA_gBo.js +0 -25
  52. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-BAQsZ8u3.js +0 -3
  53. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CQQZadL1.js +0 -3
  54. package/chains/previewnet-individuality/generated/dist/descriptors-CDoklESi.js +0 -25
  55. package/chains/previewnet-individuality/generated/dist/metadataTypes-BaUy_4gO.js +0 -3
  56. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-Bfu1vCrE.js +0 -3
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRBhDQAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGIGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAgQmFsYW5jZXMEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBADUAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE9yaWdpblJlc3RyaWN0aW9uLCBSdW50aW1lPgANABhBc3NldHMEANwBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRzLCBSdW50aW1lPgAOACRBc3NldFJhdGUEACkBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AEABEQ29sbGF0b3JTZWxlY3Rpb24EADEBAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBAA1AQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAEEBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAEUBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBAAZAwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAB0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAJQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEAIkDAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBACVAwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAmQMBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAIElkZW50aXR5BAClAwG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJZGVudGl0eSwgUnVudGltZT4AMgAYUGVvcGxlBABRBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZW9wbGUsIFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAGEEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1vYlJ1bGUsIFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEAGkEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb29mT2ZJbmssIFJ1bnRpbWU+ADUAEEdhbWUEAIkEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEdhbWUsIFJ1bnRpbWU+ADcAFFNjb3JlBACtBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY29yZSwgUnVudGltZT4AOAAgRHVtbXlEaW0EANEEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPER1bW15RGltLCBSdW50aW1lPgA7AChQZW9wbGVMaXRlBADpBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZW9wbGVMaXRlLCBSdW50aW1lPgA+ACRSZXNvdXJjZXMEAPkEAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJlc291cmNlcywgUnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQABQUByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2h1bmtzTWFuYWdlciwgUnVudGltZT4AQAAcTWVtYmVycwQAFQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVycywgUnVudGltZT4AQwAcQ29pbmFnZQQAGQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29pbmFnZSwgUnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBABZBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzTm90aWZpZXIsIFJ1bnRpbWU+AEUAVFN0b3JhZ2VJbml0aWFsaXphdGlvbgQAcQUB6QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RvcmFnZUluaXRpYWxpemF0aW9uLCBSdW50aW1lPgA8ABxBaXJkcm9wBAB1BQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgA9AFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAgQUB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AGIAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWXAAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZcABKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlwAEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZcgBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnTEAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob8wBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlwAEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb27QAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGHAAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZcABKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlyAEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7AAAAGxADEAAAFBwDIAAAFAADMAAACBADQDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAADUDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBBDYWxsBARUAAEELGNsZWFuX3VzYWdlBAEYZW50aXR52AFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2AhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZUBSZXN0cmljdGVkRW50aXR5AAEYNFBlcnNvbmFsQWxpYXMEAAgBFEFsaWFzAAAAQFBlcnNvbmFsSWRlbnRpdHkEACgBDHU2NAABAERSZWZlcnJlZENhbmRpZGF0ZQQABAEkQWNjb3VudElkAAIASEFjY291bnRQYXJ0aWNpcGFudAQABAEkQWNjb3VudElkAAMAQEludml0ZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAAEAChMaXRlUGVyc29uBAAEASRBY2NvdW50SWQABQAA3Aw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2XEAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50yAEQYm9vbAABLG1pbl9iYWxhbmNlwAEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuyAEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlwAEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnTIARBib29sAAEkaXNfZnJvemVuyAEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm7IARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2XEAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZcgBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlcx0BAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu4BAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y5AEkSnVuY3Rpb25zAADkECxzdGFnaW5nX3hjbQh2NSRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAOgBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAAQEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQABQEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQACQEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQADQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAEQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAFQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAGQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADoAAADAQAAAOwA7BAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAwAEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk+AEYQm9keUlkAAEQcGFydPwBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA9AEkTmV0d29ya0lkAAkAAPAEGE9wdGlvbgQEVAH0AQgQTm9uZQAAABBTb21lBAD0AAABAAD0ECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAD4EAx4Y20IdjMganVuY3Rpb24YQm9keUlkAAEoEFVuaXQAAAAcTW9uaWtlcgQAcAEcW3U4OyA0XQABABRJbmRleAQAYAEMdTMyAAIAJEV4ZWN1dGl2ZQADACRUZWNobmljYWwABAAsTGVnaXNsYXRpdmUABQAgSnVkaWNpYWwABgAcRGVmZW5zZQAHADhBZG1pbmlzdHJhdGlvbgAIACBUcmVhc3VyeQAJAAD8EAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAAABAQAAAwIAAADsAAUBAAADAwAAAOwACQEAAAMEAAAA7AANAQAAAwUAAADsABEBAAADBgAAAOwAFQEAAAMHAAAA7AAZAQAAAwgAAADsAB0BDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIQEEUwAABAAlAQEYVmVjPFQ+AAAhAQw0YXNzZXRzX2NvbW1vbmBsb2NhbF9hbmRfZm9yZWlnbl9hc3NldHNcRm9yZWlnbkFzc2V0UmVzZXJ2ZURhdGEAAAgBHHJlc2VydmXgASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZcgBEGJvb2wAACUBAAACIQEAKQEMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTgAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUtAQEkRml4ZWRVMTI4AAAQDQFJbml0aWFsaXplIGEgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRh1cGRhdGUIAShhc3NldF9raW5k4AFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlLQEBJEZpeGVkVTEyOAABEAUBVXBkYXRlIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHJlbW92ZQQBKGFzc2V0X2tpbmTgAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQEMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAMQBEHUxMjgAADEBDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBBDYWxsBARUAAEkRHNldF9pbnZ1bG5lcmFibGVzBAEMbmV3zAFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kxAEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAccXQFVcGRhdGUgdGhlIGNhbmRpZGFjeSBib25kIG9mIGNvbGxhdG9yIGNhbmRpZGF0ZSBgb3JpZ2luYCB0byBhIG5ldyBhbW91bnQgYG5ld19kZXBvc2l0YC4AQQFTZXR0aW5nIGEgYG5ld19kZXBvc2l0YCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgZGVwb3NpdCB3aGlsZSBgb3JpZ2luYCBpc+BvY2N1cHlpbmcgYSB0b3AtYERlc2lyZWRDYW5kaWRhdGVzYCBzbG90IGlzIG5vdCBhbGxvd2VkLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgYG9yaWdpbmAgaXMgbm90IGEgY29sbGF0b3IgY2FuZGlkYXRlLCB0aGUgdXBkYXRlZCBib25kIGlzIGxvd2VyGQF0aGFuIHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLCBhbmQvb3IgdGhlIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuTHRha2VfY2FuZGlkYXRlX3Nsb3QIARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXM5AQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuOQEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmE9AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAPQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAQQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2WVAQFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2XdAgG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodNUBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbuABNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb24JAwFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbkkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb25JAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZMgBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRz2QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZQ0DAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkEQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZQ0DAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdJUBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlckkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlcxUDASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlckkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAE0BAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAYQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQA4AEwdjU6OkxvY2F0aW9uAAUAAE0BECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yUQEBJEp1bmN0aW9ucwAAUQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAFUBASBKdW5jdGlvbgABAAhYMggAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAgAIWDMMAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAwAIWDQQAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAEAAhYNRQAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24ABQAIWDYYAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24ABgAIWDccAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAHAAhYOCAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24ACAAAVQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmtZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya1kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmtZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BADAARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT4ARhCb2R5SWQAARBwYXJ0/AEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBABdAQEkTmV0d29ya0lkAAkAAFkBBBhPcHRpb24EBFQBXQEBCBBOb25lAAAAEFNvbWUEAF0BAAABAABdARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAABhARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yZQEBJEp1bmN0aW9ucwAAZQEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAaQEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAeQEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAfQEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAgQEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAhQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAiQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAjQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAkQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAABpAQAAAwEAAABtAQBtARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrcQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmtxAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrcQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAwAEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk+AEYQm9keUlkAAEQcGFydPwBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQAdQEBJE5ldHdvcmtJZAAJAABxAQQYT3B0aW9uBARUAXUBAQgQTm9uZQAAABBTb21lBAB1AQAAAQAAdQEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAB5AQAAAwIAAABtAQB9AQAAAwMAAABtAQCBAQAAAwQAAABtAQCFAQAAAwUAAABtAQCJAQAAAwYAAABtAQCNAQAAAwcAAABtAQCRAQAAAwgAAABtAQCVAQgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAJkBAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAEQIBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BABdAgFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAmQEMDHhjbQh2MwxYY20EEENhbGwAAAQAnQEBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAJ0BAAACoQEAoQEMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAClAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAClAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQApQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZcUBASBSZXNwb25zZQABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAEccXVlcmllcvEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5TQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOlAQEsTXVsdGlBc3NldHMAARBkZXN0TQEBNE11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N01QEBGFdlaWdodAABEGNhbGz5AQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABRAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAD9AQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeU0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlAQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50pQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbMgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv/QEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc60BAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACZAQEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACZAQEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABGHRpY2tldE0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQApQEBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAClAQEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADxAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/9AQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAD9AQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAFUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya10BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvblEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldK0BAShNdWx0aUFzc2V0AAEgdW5sb2NrZXJNAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARh0YXJnZXRNAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARRvd25lck0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldK0BAShNdWx0aUFzc2V0AAEYbG9ja2VyTQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7xAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAKUBEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABACpAQE8VmVjPE11bHRpQXNzZXQ+AACpAQAAAq0BAK0BEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZLEBARxBc3NldElkAAEMZnVutQEBLEZ1bmdpYmlsaXR5AACxARAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQATQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAALUBEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAwAEQdTEyOAAAACxOb25GdW5naWJsZQQAuQEBNEFzc2V0SW5zdGFuY2UAAQAAuQEQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BADAARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAL0BARxbdTg7IDhdAAMAHEFycmF5MTYEAMEBASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAC9AQAAAwgAAAAMAMEBAAADEAAAAAwAxQEMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQApQEBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAyQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADZAQGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAOkBAThNYXliZUVycm9yQ29kZQAFAADJAQQYT3B0aW9uBARUAc0BAQgQTm9uZQAAABBTb21lBADNAQAAAQAAzQEAAAQIONEBANEBEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQA1QEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAA1QEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AADZAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAd0BBFMAAAQA5QEBGFZlYzxUPgAA3QEMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWXhAQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZeEBAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAA4QEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADlAQAAAt0BAOkBDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQA7QEBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBADtAQGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAA7QEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADxAQQYT3B0aW9uBARUAU0BAQgQTm9uZQAAABBTb21lBABNAQAAAQAA9QEMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAA+QEMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAA/QEMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb25NAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAABAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQApQEBLE11bHRpQXNzZXRzAAAAEFdpbGQEAAUCAThXaWxkTXVsdGlBc3NldAABAAAFAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWSxAQEcQXNzZXRJZAABDGZ1bgkCATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlksQEBHEFzc2V0SWQAAQxmdW4JAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAACQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAANAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBADVAQEYV2VpZ2h0AAEAABECDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAFQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AABUCAAACGQIAGQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0CARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0CARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlNQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVySQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0CARhBc3NldHMAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0CARhBc3NldHMAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdNUBARhXZWlnaHQAARBjYWxs+QEBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAZQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0CAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQIBLEFzc2V0RmlsdGVyAAEQd2FudB0CARhBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1ECASxBc3NldEZpbHRlcgABHHJlc2VydmVhAQEgTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABECASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABECASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQIBGEFzc2V0cwABGHRpY2tldGEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHTVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAB0CARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0CARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAyQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADpAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBABtAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt1AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25lAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQIBFEFzc2V0AAEgdW5sb2NrZXJhAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUCARRBc3NldAABGHRhcmdldGEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQIBFEFzc2V0AAEUb3duZXJhAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQIBFEFzc2V0AAEYbG9ja2VyYQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3yAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAYQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkCAUBPcHRpb248TG9jYXRpb24+AC8AAB0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAIQIBKFZlYzxBc3NldD4AACECAAACJQIAJQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZCkCARxBc3NldElkAAEMZnVuLQIBLEZ1bmdpYmlsaXR5AAApAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABABhAQEgTG9jYXRpb24AAC0CECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAwAEQdTEyOAAAACxOb25GdW5naWJsZQQAMQIBNEFzc2V0SW5zdGFuY2UAAQAAMQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BADAARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAL0BARxbdTg7IDhdAAMAHEFycmF5MTYEAMEBASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAA1Agwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0CARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EADkCAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQA6QEBOE1heWJlRXJyb3JDb2RlAAUAADkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQIEUwAABABFAgEYVmVjPFQ+AAA9Agwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lQQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVBAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAEECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAARQIAAAI9AgBJAgQYT3B0aW9uBARUAWEBAQgQTm9uZQAAABBTb21lBABhAQAAAQAATQIMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbmEBASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AABRAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAB0CARhBc3NldHMAAAAQV2lsZAQAVQIBJFdpbGRBc3NldAABAABVAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkKQIBHEFzc2V0SWQAAQxmdW5ZAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZCkCARxBc3NldElkAAEMZnVuWQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAFkCECxzdGFnaW5nX3hjbQh2NBRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAXQIMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABABhAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAYQIAAAJlAgBlAgwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAaQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAGkCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAaQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h01QEBGFdlaWdodAABHHF1ZXJpZXKhAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzaQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNpAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodKUCAThPcHRpb248V2VpZ2h0PgABEGNhbGz5AQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACpAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWtAgEsQXNzZXRGaWx0ZXIAARB3YW50aQIBGEFzc2V0cwABHG1heGltYWzIARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNxAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAF0CASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAF0CASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzaQIBGEFzc2V0cwABGHRpY2tldOABIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAaQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAaQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+pAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACpAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAOwBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr9AEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27kAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRxAgEUQXNzZXQAASB1bmxvY2tlcuABIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRxAgEUQXNzZXQAARh0YXJnZXTgASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0cQIBFEFzc2V0AAEUb3duZXLgASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRxAgEUQXNzZXQAARhsb2NrZXLgASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd8gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOABIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqECAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldHECARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzuQIBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbsgBEGJvb2wAARhhc3NldHPBAgHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtXQIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbskCAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y21dAgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHPNAgGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAGkCECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAbQIBKFZlYzxBc3NldD4AAG0CAAACcQIAcQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZHUCARxBc3NldElkAAEMZnVueQIBLEZ1bmdpYmlsaXR5AAB1AhAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABADgASBMb2NhdGlvbgAAeQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBADAARB1MTI4AAAALE5vbkZ1bmdpYmxlBAB9AgE0QXNzZXRJbnN0YW5jZQABAAB9AhAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAMABEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAvQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAwQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAIECDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAaQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAkQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BADpAQE4TWF5YmVFcnJvckNvZGUABQAAhQIEGE9wdGlvbgQEVAGJAgEIEE5vbmUAAAAQU29tZQQAiQIAAAEAAIkCAAAECDiNAgCNAhAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQA1QEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAkQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGVAgRTAAAEAJ0CARhWZWM8VD4AAJUCDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZZkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAmQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACdAgAAApUCAKECBBhPcHRpb24EBFQB4AEIEE5vbmUAAAAQU29tZQQA4AAAAQAApQIEGE9wdGlvbgQEVAHVAQEIEE5vbmUAAAAQU29tZQQA1QEAAAEAAKkCDCxzdGFnaW5nX3hjbQh2NURRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AACtAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAGkCARhBc3NldHMAAAAQV2lsZAQAsQIBJFdpbGRBc3NldAABAACxAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkdQIBHEFzc2V0SWQAAQxmdW61AgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZHUCARxBc3NldElkAAEMZnVutQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAALUCECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAuQIEGE9wdGlvbgQEVAG9AgEIEE5vbmUAAAAQU29tZQQAvQIAAAEAAL0CECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BACtAgEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAK0CASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAK0CASxBc3NldEZpbHRlcgACAADBAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0CBFMAAAQAxQIBGFZlYzxUPgAAxQIAAAK9AgDJAgQYT3B0aW9uBARUAeQBCBBOb25lAAAAEFNvbWUEAOQAAAEAAM0CDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB0QIEUwAABADVAgEYVmVjPFQ+AADRAgwsc3RhZ2luZ194Y20IdjUQSGludAABBDBBc3NldENsYWltZXIEASBsb2NhdGlvbuABIExvY2F0aW9uAAAAANUCAAAC0QIA2QIIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAKUBATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAB0CASh2NDo6QXNzZXRzAAQACFY1BABpAgEodjU6OkFzc2V0cwAFAADdAggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAOECAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQA8QIBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAD9AgFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAA4QIMDHhjbQh2MwxYY20EEENhbGwAAAQA5QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAOUCAAAC6QIA6QIMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAClAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAClAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQApQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZcUBASBSZXNwb25zZQABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAEccXVlcmllcvEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5TQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOlAQEsTXVsdGlBc3NldHMAARBkZXN0TQEBNE11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N01QEBGFdlaWdodAABEGNhbGztAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABRAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAD9AQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeU0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlAQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50pQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbMgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv/QEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc60BAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADhAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADhAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABGHRpY2tldE0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQApQEBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAClAQEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADxAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/9AQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAD9AQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAFUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya10BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvblEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldK0BAShNdWx0aUFzc2V0AAEgdW5sb2NrZXJNAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARh0YXJnZXRNAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARRvd25lck0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldK0BAShNdWx0aUFzc2V0AAEYbG9ja2VyTQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7xAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAO0CDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAPECDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQA9QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAPUCAAAC+QIA+QIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0CARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0CARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlNQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVySQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0CARhBc3NldHMAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0CARhBc3NldHMAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdNUBARhXZWlnaHQAARBjYWxs7QIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAZQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0CAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQIBLEFzc2V0RmlsdGVyAAEQd2FudB0CARhBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1ECASxBc3NldEZpbHRlcgABHHJlc2VydmVhAQEgTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAPECASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPECASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQIBGEFzc2V0cwABGHRpY2tldGEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHTVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAB0CARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0CARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAyQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADpAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBABtAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt1AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25lAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQIBFEFzc2V0AAEgdW5sb2NrZXJhAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUCARRBc3NldAABGHRhcmdldGEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQIBFEFzc2V0AAEUb3duZXJhAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQIBFEFzc2V0AAEYbG9ja2VyYQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3yAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAYQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkCAUBPcHRpb248TG9jYXRpb24+AC8AAP0CDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAAQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAAEDAAACBQMABQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAGkCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABpAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAGkCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlgQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVyoQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c2kCARhBc3NldHMAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzaQIBGEFzc2V0cwABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmT1AQEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHSlAgE4T3B0aW9uPFdlaWdodD4AARBjYWxs7QIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA5AFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c60CASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlrQIBLEFzc2V0RmlsdGVyAAEQd2FudGkCARhBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABHHJlc2VydmXgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOtAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y21dAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb6kCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c60CASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzcQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAD9AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAD9AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c2kCARhBc3NldHMAARh0aWNrZXTgASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHTVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAGkCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAGkCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAChAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADpAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADsASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/QBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u5AFASW50ZXJpb3JMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0cQIBFEFzc2V0AAEgdW5sb2NrZXLgASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0cQIBFEFzc2V0AAEYdGFyZ2V04AEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldHECARRBc3NldAABFG93bmVy4AEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0cQIBFEFzc2V0AAEYbG9ja2Vy4AEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADgASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6hAgFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXRxAgEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AASxyZW1vdGVfZmVlc7kCAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW7IARBib29sAAEYYXNzZXRzwQIB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbV0CARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW7JAgFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNt/QIBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzzQIBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAAJAwQYT3B0aW9uBARUATgBCBBOb25lAAAAEFNvbWUEADgAAAEAAA0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQASQEBRFZlcnNpb25lZExvY2F0aW9uAAMAABEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAsQEBLHYzOjpBc3NldElkAAMACFY0BAApAgEsdjQ6OkFzc2V0SWQABAAIVjUEAHUCASx2NTo6QXNzZXRJZAAFAAAVAwQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAABkDDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2luIQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdNUBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuIQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAACUDDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQQQ2FsbAQEVAABIBRiYXRjaAQBFGNhbGxzKQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4LQMBDHUxNgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAE03FNlbmQgYSBjYWxsIHRocm91Z2ggYW4gaW5kZXhlZCBwc2V1ZG9ueW0gb2YgdGhlIHNlbmRlci4AVQFGaWx0ZXIgZnJvbSBvcmlnaW4gYXJlIHBhc3NlZCBhbG9uZy4gVGhlIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHdpdGggYW4gb3JpZ2luIHdoaWNovHVzZSB0aGUgc2FtZSBmaWx0ZXIgYXMgdGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwuAEUBTk9URTogSWYgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgYW55IGFjY291bnQtYmFzZWQgZmlsdGVyaW5nIGlzIG5vdCBob25vcmVkIChpLmUuYQFiZWNhdXNlIHlvdSBleHBlY3QgYHByb3h5YCB0byBoYXZlIGJlZW4gdXNlZCBwcmlvciBpbiB0aGUgY2FsbCBzdGFjayBhbmQgeW91IGRvIG5vdCB3YW50UQF0aGUgY2FsbCByZXN0cmljdGlvbnMgdG8gYXBwbHkgdG8gYW55IHN1Yi1hY2NvdW50cyksIHRoZW4gdXNlIGBhc19tdWx0aV90aHJlc2hvbGRfMWB8aW4gdGhlIE11bHRpc2lnIHBhbGxldCBpbnN0ZWFkLgD0Tk9URTogUHJpb3IgdG8gdmVyc2lvbiAqMTIsIHRoaXMgd2FzIGNhbGxlZCBgYXNfbGltaXRlZF9zdWJgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uJGJhdGNoX2FsbAQBFGNhbGxzKQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAjTsU2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzIGFuZCBhdG9taWNhbGx5IGV4ZWN1dGUgdGhlbS4hAVRoZSB3aG9sZSB0cmFuc2FjdGlvbiB3aWxsIHJvbGxiYWNrIGFuZCBmYWlsIGlmIGFueSBvZiB0aGUgY2FsbHMgZmFpbGVkLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLixkaXNwYXRjaF9hcwgBJGFzX29yaWdpbjEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHMpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAENHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMu1FVubGlrZSBgYmF0Y2hgLCBpdCBhbGxvd3MgZXJyb3JzIGFuZCB3b24ndCBpbnRlcnJ1cHQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAE0BSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLix3aXRoX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h01QEBGFdlaWdodAAFGMREaXNwYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHNwZWNpZmllZCB3ZWlnaHQuAC0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhluFJvb3Qgb3JpZ2luIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4caWZfZWxzZQgBEG1haW4gAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEgZmFsbGJhY2sgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAZcFQFEaXNwYXRjaCBhIGZhbGxiYWNrIGNhbGwgaW4gdGhlIGV2ZW50IHRoZSBtYWluIGNhbGwgZmFpbHMgdG8gZXhlY3V0ZS6wTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4A5FRoaXMgZnVuY3Rpb24gZmlyc3QgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggdGhlIGBtYWluYCBjYWxsLtRJZiB0aGUgYG1haW5gIGNhbGwgZmFpbHMsIHRoZSBgZmFsbGJhY2tgIGlzIGF0dGVtdGVkLhUBaWYgdGhlIGZhbGxiYWNrIGlzIHN1Y2Nlc3NmdWxseSBkaXNwYXRjaGVkLCB0aGUgd2VpZ2h0cyBvZiBib3RoIGNhbGxzJQFhcmUgYWNjdW11bGF0ZWQgYW5kIGFuIGV2ZW50IGNvbnRhaW5pbmcgdGhlIG1haW4gY2FsbCBlcnJvciBpcyBkZXBvc2l0ZWQuANxJbiB0aGUgZXZlbnQgb2YgYSBmYWxsYmFjayBmYWlsdXJlIHRoZSB3aG9sZSBjYWxsIGZhaWxzaHdpdGggdGhlIHdlaWdodHMgcmV0dXJuZWQuAEEBLSBgbWFpbmA6IFRoZSBtYWluIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC4gVGhpcyBpcyB0aGUgcHJpbWFyeSBhY3Rpb24gdG8gZXhlY3V0ZS49AS0gYGZhbGxiYWNrYDogVGhlIGZhbGxiYWNrIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZCBpbiBjYXNlIHRoZSBgbWFpbmAgY2FsbCBmYWlscy4ARCMjIERpc3BhdGNoIExvZ2ljQQEtIElmIHRoZSBvcmlnaW4gaXMgYHJvb3RgLCBib3RoIHRoZSBtYWluIGFuZCBmYWxsYmFjayBjYWxscyBhcmUgZXhlY3V0ZWQgd2l0aG91dHggIGFwcGx5aW5nIGFueSBvcmlnaW4gZmlsdGVycy5JAS0gSWYgdGhlIG9yaWdpbiBpcyBub3QgYHJvb3RgLCB0aGUgb3JpZ2luIGZpbHRlciBpcyBhcHBsaWVkIHRvIGJvdGggdGhlIGBtYWluYCBhbmRMICBgZmFsbGJhY2tgIGNhbGxzLgAsIyMgVXNlIENhc2VZAS0gU29tZSB1c2UgY2FzZXMgbWlnaHQgaW52b2x2ZSBzdWJtaXR0aW5nIGEgYGJhdGNoYCB0eXBlIGNhbGwgaW4gZWl0aGVyIG1haW4sIGZhbGxiYWNrKCAgb3IgYm90aC5QZGlzcGF0Y2hfYXNfZmFsbGlibGUIASRhc19vcmlnaW4xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABxTIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AUQFBbG1vc3QgdGhlIHNhbWUgYXMgW2BQYWxsZXQ6OmRpc3BhdGNoX2FzYF0gYnV0IGZvcndhcmRzIGFueSBlcnJvciBvZiB0aGUgaW5uZXIgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQMAAAIgAC0DAAAFBAAxAwhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZTBPcmlnaW5DYWxsZXIAASwYc3lzdGVtBAA1AwF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EADkDAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAPQMBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAGFBlb3BsZQQAQQMBbGluZGl2X3BhbGxldF9wZW9wbGU6Ok9yaWdpbgAzAChQcm9vZk9mSW5rBABNAwGoaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6T3JpZ2luPFJ1bnRpbWU+ADUAEEdhbWUEAFEDAYhpbmRpdl9wYWxsZXRfZ2FtZTo6T3JpZ2luPFJ1bnRpbWU+ADcAFFNjb3JlBABVAwGMaW5kaXZfcGFsbGV0X3Njb3JlOjpPcmlnaW48UnVudGltZT4AOAAoUGVvcGxlTGl0ZQQAWQMBpGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6T3JpZ2luPFJ1bnRpbWU+AD4AJFJlc291cmNlcwQAXQMBeGluZGl2X3BhbGxldF9yZXNvdXJjZXM6Ok9yaWdpbgA/ABxNZW1iZXJzBABlAwGUaW5kaXZfcGFsbGV0X21lbWJlcnM6Ok9yaWdpbjxSdW50aW1lPgBDABxDb2luYWdlBABtAwGUaW5kaXZfcGFsbGV0X2NvaW5hZ2U6Ok9yaWdpbjxSdW50aW1lPgBEAAA1Aww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAAOQMMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EAOABIExvY2F0aW9uAAAAIFJlc3BvbnNlBADgASBMb2NhdGlvbgABAAA9AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAnAEYUGFyYUlkAAEAAEEDDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBhPcmlnaW4AAQhAUGVyc29uYWxJZGVudGl0eQQAKAEoUGVyc29uYWxJZAAAADRQZXJzb25hbEFsaWFzBABFAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwABAABFAxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAAMASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARByaW5nOAEkUmluZ0luZGV4AAEIY2FJAwE8Q29udGV4dHVhbEFsaWFzAABJAxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTxDb250ZXh0dWFsQWxpYXMAAAgBFGFsaWFzCAEUQWxpYXMAARxjb250ZXh0CAEcQ29udGV4dAAATQMMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0GE9yaWdpbgQEVAABDFhBdXRob3JpemVkQXBwbHlXaXRoU2lnBAAEATBUOjpBY2NvdW50SWQAAABEUmVmZXJyZWRDYW5kaWRhdGUEAAQBMFQ6OkFjY291bnRJZAABAEBJbnZpdGVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAgAAUQMMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBhPcmlnaW4EBFQAAQQcSW52aXRlZAQABAEwVDo6QWNjb3VudElkAAAAAFUDDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0GE9yaWdpbgQEVAABBEhBY2NvdW50UGFydGljaXBhbnQEAAQBMFQ6OkFjY291bnRJZAAAAABZAwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBhPcmlnaW4EBFQAAQgoTGl0ZVBlcnNvbgQABAEwVDo6QWNjb3VudElkAAAAJExpdGVBbGlhcwQARQMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAAXQMMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0GE9yaWdpbgABDEhGcmllbmRSZXF1ZXN0QWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAGEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAABhAwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAABlAwxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAFpAwEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAABFAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAAaQMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAABtAwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0GE9yaWdpbgQEVAFpAwEMEENvaW4IARxjb2luX2lkBAEwVDo6QWNjb3VudElkAAEQY29pbnEDARBDb2luAAAALFVubG9hZFRva2VuDAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAShwcm92ZW5fbXNnCAEgW3U4OyAzMl0AAQxmZWWFAwEkVW5sb2FkRmVlAAEAWEluZmFsbGlibGVVbnBhaWRTaWduZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAAgAAcQMMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDb2luAAAIARR2YWx1ZXUDASRDb2luVmFsdWUAAQxhZ2UtAwEMdTE2AAB1AwAABQkAeQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF9AwRTAAAEAIEDARhWZWM8VD4AAH0DAAADFAMAAAwAgQMAAAJ9AwCFAwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0JFVubG9hZEZlZQABCBxQcmVwYWlkAAAAKEZyb21PdXRwdXQIAUhmZWVfcmVjeWNsZXJfdmFsdWV1AwEkQ29pblZhbHVlAAFIZmVlX3JlY3ljbGVyX2luZGV4OAEkUmluZ0luZGV4AAEAAIkDDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0EENhbGwEBFQAARRQYXNfbXVsdGlfdGhyZXNob2xkXzEIAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xkLQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzzAFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnSNAwGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h01QEBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZC0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50jQMBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAEobWF4X3dlaWdodNUBARhXZWlnaHQAAphVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4AOQEqKlRoaXMgZnVuY3Rpb24gd2lsbCBORVZFUiBleGVjdXRlIHRoZSBjYWxsLCBldmVuIGlmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXNRAXJlYWNoZWQuKiogSXQgb25seSByZWdpc3RlcnMgYXBwcm92YWwuIFRvIGFjdHVhbGx5IGV4ZWN1dGUgdGhlIGNhbGwsIGBhc19tdWx0aWAgbXVzdPBiZSBjYWxsZWQgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEgYnkgYW55IG9mIHRoZSBzaWduYXRvcmllcy4ATQFUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gYGFzX211bHRpYCBmb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyBzaW5jZSBpdNBvbmx5IHJlcXVpcmVzIHRoZSBjYWxsIGhhc2gsIG5vdCB0aGUgZnVsbCBjYWxsIGRhdGEuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4APQFOT1RFOiBUbyBleGVjdXRlIHRoZSBjYWxsIGFmdGVyIGFwcHJvdmFscyBhcmUgZ2F0aGVyZWQsIGFueSBzaWduYXRvcnkgbXVzdCBjYWxsKQFgYXNfbXVsdGlgIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhLiBUaGlzIGZ1bmN0aW9uIGNhbm5vdCBleGVjdXRlIHRoZSBjYWxsLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGQtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXPMAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludJEDAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZC0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLo0DBBhPcHRpb24EBFQBkQMBCBBOb25lAAAAEFNvbWUEAJEDAAABAACRAwg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAACVAwwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodNUBARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZAwwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZZ0DAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4LQMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRpbmRleC0DAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlnQMBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6dAwQYT3B0aW9uBARUAaEDAQgQTm9uZQAAABBTb21lBAChAwAAAQAAoQMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEYDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFAAClAwxUaW5kaXZfcGFsbGV0X2lkZW50aXR5GHBhbGxldBBDYWxsBARUAAF4NGFkZF9yZWdpc3RyYXIEARxhY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AABx4QWRkIGEgcmVnaXN0cmFyIHRvIHRoZSBzeXN0ZW0uAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgVDo6UmVnaXN0cmFyT3JpZ2luYC4AqC0gYGFjY291bnRgOiB0aGUgYWNjb3VudCBvZiB0aGUgcmVnaXN0cmFyLgCURW1pdHMgYFJlZ2lzdHJhckFkZGVkYCBpZiBzdWNjZXNzZnVsLjBzZXRfaWRlbnRpdHkEARBpbmZvqQMBbEJveDxUOjpJZGVudGl0eUluZm9ybWF0aW9uPgABKCkBU2V0IGFuIGFjY291bnQncyBpZGVudGl0eSBpbmZvcm1hdGlvbiBhbmQgcmVzZXJ2ZSB0aGUgYXBwcm9wcmlhdGUgZGVwb3NpdC4AVQFJZiB0aGUgYWNjb3VudCBhbHJlYWR5IGhhcyBpZGVudGl0eSBpbmZvcm1hdGlvbiwgdGhlIGRlcG9zaXQgaXMgdGFrZW4gYXMgcGFydCBwYXltZW50UGZvciB0aGUgbmV3IGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AjC0gYGluZm9gOiBUaGUgaWRlbnRpdHkgaW5mb3JtYXRpb24uAIhFbWl0cyBgSWRlbnRpdHlTZXRgIGlmIHN1Y2Nlc3NmdWwuIHNldF9zdWJzBAEQc3VicyUEAWRWZWM8KFQ6OkFjY291bnRJZCwgRGF0YSk+AAIkjFNldCB0aGUgc3ViLWFjY291bnRzIG9mIHRoZSBzZW5kZXIuAFUBUGF5bWVudDogQW55IGFnZ3JlZ2F0ZSBiYWxhbmNlIHJlc2VydmVkIGJ5IHByZXZpb3VzIGBzZXRfc3Vic2AgY2FsbHMgd2lsbCBiZSByZXR1cm5lZC0BYW5kIGFuIGFtb3VudCBgU3ViQWNjb3VudERlcG9zaXRgIHdpbGwgYmUgcmVzZXJ2ZWQgZm9yIGVhY2ggaXRlbSBpbiBgc3Vic2AuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCRpZGVudGl0eS4AsC0gYHN1YnNgOiBUaGUgaWRlbnRpdHkncyAobmV3KSBzdWItYWNjb3VudHMuOGNsZWFyX2lkZW50aXR5AAMgOQFDbGVhciBhbiBhY2NvdW50J3MgaWRlbnRpdHkgaW5mbyBhbmQgYWxsIHN1Yi1hY2NvdW50cyBhbmQgcmV0dXJuIGFsbCBkZXBvc2l0cy4A7FBheW1lbnQ6IEFsbCByZXNlcnZlZCBiYWxhbmNlcyBvbiB0aGUgYWNjb3VudCBhcmUgcmV0dXJuZWQuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCRpZGVudGl0eS4AmEVtaXRzIGBJZGVudGl0eUNsZWFyZWRgIGlmIHN1Y2Nlc3NmdWwuRHJlcXVlc3RfanVkZ2VtZW50CAEkcmVnX2luZGV4YAE4UmVnaXN0cmFySW5kZXgAARxtYXhfZmVlwAEwQmFsYW5jZU9mPFQ+AARAlFJlcXVlc3QgYSBqdWRnZW1lbnQgZnJvbSBhIHJlZ2lzdHJhci4AVQFQYXltZW50OiBBdCBtb3N0IGBtYXhfZmVlYCB3aWxsIGJlIHJlc2VydmVkIGZvciBwYXltZW50IHRvIHRoZSByZWdpc3RyYXIgaWYganVkZ2VtZW50GGdpdmVuLgA1AVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhUHJlZ2lzdGVyZWQgaWRlbnRpdHkuAB0BLSBgcmVnX2luZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UganVkZ2VtZW50IGlzIHJlcXVlc3RlZC5VAS0gYG1heF9mZWVgOiBUaGUgbWF4aW11bSBmZWUgdGhhdCBtYXkgYmUgcGFpZC4gVGhpcyBzaG91bGQganVzdCBiZSBhdXRvLXBvcHVsYXRlZCBhczoAMGBgYG5vY29tcGlsZbhTZWxmOjpyZWdpc3RyYXJzKCkuZ2V0KHJlZ19pbmRleCkudW53cmFwKCkuZmVlDGBgYACkRW1pdHMgYEp1ZGdlbWVudFJlcXVlc3RlZGAgaWYgc3VjY2Vzc2Z1bC44Y2FuY2VsX3JlcXVlc3QEASRyZWdfaW5kZXg4AThSZWdpc3RyYXJJbmRleAAFKGhDYW5jZWwgYSBwcmV2aW91cyByZXF1ZXN0LgD4UGF5bWVudDogQSBwcmV2aW91c2x5IHJlc2VydmVkIGRlcG9zaXQgaXMgcmV0dXJuZWQgb24gc3VjY2Vzcy4ANQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYVByZWdpc3RlcmVkIGlkZW50aXR5LgBFAS0gYHJlZ19pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGp1ZGdlbWVudCBpcyBubyBsb25nZXIgcmVxdWVzdGVkLgCsRW1pdHMgYEp1ZGdlbWVudFVucmVxdWVzdGVkYCBpZiBzdWNjZXNzZnVsLhxzZXRfZmVlCAEUaW5kZXhgAThSZWdpc3RyYXJJbmRleAABDGZlZcABMEJhbGFuY2VPZjxUPgAGHBkBU2V0IHRoZSBmZWUgcmVxdWlyZWQgZm9yIGEganVkZ2VtZW50IHRvIGJlIHJlcXVlc3RlZCBmcm9tIGEgcmVnaXN0cmFyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIGFjY291bnSgb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBpbmRleCBpcyBgaW5kZXhgLgD0LSBgaW5kZXhgOiB0aGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBmZWUgaXMgdG8gYmUgc2V0LlQtIGBmZWVgOiB0aGUgbmV3IGZlZS44c2V0X2FjY291bnRfaWQIARRpbmRleGABOFJlZ2lzdHJhckluZGV4AAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABxy8Q2hhbmdlIHRoZSBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCBhIHJlZ2lzdHJhci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50oG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYGluZGV4YC4A9C0gYGluZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgZmVlIGlzIHRvIGJlIHNldC5wLSBgbmV3YDogdGhlIG5ldyBhY2NvdW50IElELihzZXRfZmllbGRzCAEUaW5kZXhgAThSZWdpc3RyYXJJbmRleAABGGZpZWxkcygBKQE8VDo6SWRlbnRpdHlJbmZvcm1hdGlvbiBhcyBJZGVudGl0eUluZm9ybWF0aW9uUHJvdmlkZXI+OjoKRmllbGRzSWRlbnRpZmllcgAIHKhTZXQgdGhlIGZpZWxkIGluZm9ybWF0aW9uIGZvciBhIHJlZ2lzdHJhci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50oG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYGluZGV4YC4A9C0gYGluZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgZmVlIGlzIHRvIGJlIHNldC4NAS0gYGZpZWxkc2A6IHRoZSBmaWVsZHMgdGhhdCB0aGUgcmVnaXN0cmFyIGNvbmNlcm5zIHRoZW1zZWx2ZXMgd2l0aC5EcHJvdmlkZV9qdWRnZW1lbnQQASRyZWdfaW5kZXhgAThSZWdpc3RyYXJJbmRleAABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkanVkZ2VtZW50LQQBXEp1ZGdlbWVudDxCYWxhbmNlT2Y8VD4+AAEgaWRlbnRpdHk8ARxUOjpIYXNoAAk8uFByb3ZpZGUgYSBqdWRnZW1lbnQgZm9yIGFuIGFjY291bnQncyBpZGVudGl0eS4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50sG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYHJlZ19pbmRleGAuACEBLSBgcmVnX2luZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UganVkZ2VtZW50IGlzIGJlaW5nIG1hZGUuVQEtIGB0YXJnZXRgOiB0aGUgYWNjb3VudCB3aG9zZSBpZGVudGl0eSB0aGUganVkZ2VtZW50IGlzIHVwb24uIFRoaXMgbXVzdCBiZSBhbiBhY2NvdW50dCAgd2l0aCBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuSQEtIGBqdWRnZW1lbnRgOiB0aGUganVkZ2VtZW50IG9mIHRoZSByZWdpc3RyYXIgb2YgaW5kZXggYHJlZ19pbmRleGAgYWJvdXQgYHRhcmdldGAuXQEtIGBpZGVudGl0eWA6IFRoZSBoYXNoIG9mIHRoZSBbYElkZW50aXR5SW5mb3JtYXRpb25Qcm92aWRlcmBdIGZvciB0aGF0IHRoZSBqdWRnZW1lbnQgaXMsICBwcm92aWRlZC4AsE5vdGU6IEp1ZGdlbWVudHMgZG8gbm90IGFwcGx5IHRvIGEgdXNlcm5hbWUuAJRFbWl0cyBgSnVkZ2VtZW50R2l2ZW5gIGlmIHN1Y2Nlc3NmdWwuNGtpbGxfaWRlbnRpdHkEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAKMEEBUmVtb3ZlIGFuIGFjY291bnQncyBpZGVudGl0eSBhbmQgc3ViLWFjY291bnQgaW5mb3JtYXRpb24gYW5kIHNsYXNoIHRoZSBkZXBvc2l0cy4AYQFQYXltZW50OiBSZXNlcnZlZCBiYWxhbmNlcyBmcm9tIGBzZXRfc3Vic2AgYW5kIGBzZXRfaWRlbnRpdHlgIGFyZSBzbGFzaGVkIGFuZCBoYW5kbGVkIGJ5RQFgU2xhc2hgLiBWZXJpZmljYXRpb24gcmVxdWVzdCBkZXBvc2l0cyBhcmUgbm90IHJldHVybmVkOyB0aGV5IHNob3VsZCBiZSBjYW5jZWxsZWSAbWFudWFsbHkgdXNpbmcgYGNhbmNlbF9yZXF1ZXN0YC4A+FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuAFUBLSBgdGFyZ2V0YDogdGhlIGFjY291bnQgd2hvc2UgaWRlbnRpdHkgdGhlIGp1ZGdlbWVudCBpcyB1cG9uLiBUaGlzIG11c3QgYmUgYW4gYWNjb3VudHQgIHdpdGggYSByZWdpc3RlcmVkIGlkZW50aXR5LgCURW1pdHMgYElkZW50aXR5S2lsbGVkYCBpZiBzdWNjZXNzZnVsLhxhZGRfc3ViCAEMc3ViAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkYXRhrQMBEERhdGEACxysQWRkIHRoZSBnaXZlbiBhY2NvdW50IHRvIHRoZSBzZW5kZXIncyBzdWJzLgBdAVBheW1lbnQ6IEJhbGFuY2UgcmVzZXJ2ZWQgYnkgYSBwcmV2aW91cyBgc2V0X3N1YnNgIGNhbGwgZm9yIG9uZSBzdWIgd2lsbCBiZSByZXBhdHJpYXRlZDh0byB0aGUgc2VuZGVyLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWRYc3ViIGlkZW50aXR5IG9mIGBzdWJgLihyZW5hbWVfc3ViCAEMc3ViAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkYXRhrQMBEERhdGEADBDMQWx0ZXIgdGhlIGFzc29jaWF0ZWQgbmFtZSBvZiB0aGUgZ2l2ZW4gc3ViLWFjY291bnQuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZFhzdWIgaWRlbnRpdHkgb2YgYHN1YmAuKHJlbW92ZV9zdWIEAQxzdWIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANHMBSZW1vdmUgdGhlIGdpdmVuIGFjY291bnQgZnJvbSB0aGUgc2VuZGVyJ3Mgc3Vicy4AXQFQYXltZW50OiBCYWxhbmNlIHJlc2VydmVkIGJ5IGEgcHJldmlvdXMgYHNldF9zdWJzYCBjYWxsIGZvciBvbmUgc3ViIHdpbGwgYmUgcmVwYXRyaWF0ZWQ4dG8gdGhlIHNlbmRlci4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkWHN1YiBpZGVudGl0eSBvZiBgc3ViYC4gcXVpdF9zdWIADiiMUmVtb3ZlIHRoZSBzZW5kZXIgYXMgYSBzdWItYWNjb3VudC4AXQFQYXltZW50OiBCYWxhbmNlIHJlc2VydmVkIGJ5IGEgcHJldmlvdXMgYHNldF9zdWJzYCBjYWxsIGZvciBvbmUgc3ViIHdpbGwgYmUgcmVwYXRyaWF0ZWS0dG8gdGhlIHNlbmRlciAoKm5vdCogdGhlIG9yaWdpbmFsIGRlcG9zaXRvcikuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZDxzdXBlci1pZGVudGl0eS4ARQFOT1RFOiBUaGlzIHNob3VsZCBub3Qgbm9ybWFsbHkgYmUgdXNlZCwgYnV0IGlzIHByb3ZpZGVkIGluIHRoZSBjYXNlIHRoYXQgdGhlIG5vbi0RAWNvbnRyb2xsZXIgb2YgYW4gYWNjb3VudCBpcyBtYWxpY2lvdXNseSByZWdpc3RlcmVkIGFzIGEgc3ViLWFjY291bnQuWGFkZF91c2VybmFtZV9hdXRob3JpdHkMASRhdXRob3JpdHkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHN1ZmZpeBgBHFZlYzx1OD4AAShhbGxvY2F0aW9uOAEMdTMyAA8UVQFBZGQgYW4gYEFjY291bnRJZGAgd2l0aCBwZXJtaXNzaW9uIHRvIGdyYW50IHVzZXJuYW1lcyB3aXRoIGEgZ2l2ZW4gYHN1ZmZpeGAgYXBwZW5kZWQuAEUBVGhlIGF1dGhvcml0eSBjYW4gZ3JhbnQgdXAgdG8gYGFsbG9jYXRpb25gIHVzZXJuYW1lcy4gVG8gdG9wIHVwIHRoZSBhbGxvY2F0aW9uIG9ySQFjaGFuZ2UgdGhlIGFjY291bnQgdXNlZCB0byBncmFudCB1c2VybmFtZXMsIHRoaXMgY2FsbCBjYW4gYmUgdXNlZCB3aXRoIHRoZSB1cGRhdGVkzHBhcmFtZXRlcnMgdG8gb3ZlcndyaXRlIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uLmRyZW1vdmVfdXNlcm5hbWVfYXV0aG9yaXR5CAEYc3VmZml4GAEcVmVjPHU4PgABJGF1dGhvcml0eQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAExFJlbW92ZSBgYXV0aG9yaXR5YCBmcm9tIHRoZSB1c2VybmFtZSBhdXRob3JpdGllcy5Ac2V0X3VzZXJuYW1lX2ZvchABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgdXNlcm5hbWUYARxWZWM8dTg+AAEkc2lnbmF0dXJlMQQBcE9wdGlvbjxUOjpPZmZjaGFpblNpZ25hdHVyZT4AATh1c2VfYWxsb2NhdGlvbsgBEGJvb2wAETQNAVNldCB0aGUgdXNlcm5hbWUgZm9yIGB3aG9gLiBNdXN0IGJlIGNhbGxlZCBieSBhIHVzZXJuYW1lIGF1dGhvcml0eS4AWQFJZiBgdXNlX2FsbG9jYXRpb25gIGlzIHNldCwgdGhlIGF1dGhvcml0eSBtdXN0IGhhdmUgYSB1c2VybmFtZSBhbGxvY2F0aW9uIGF2YWlsYWJsZSB0b0UBc3BlbmQuIE90aGVyd2lzZSwgdGhlIGF1dGhvcml0eSB3aWxsIG5lZWQgdG8gcHV0IHVwIGEgZGVwb3NpdCBmb3IgcmVnaXN0ZXJpbmcgdGhlJHVzZXJuYW1lLgCwVXNlcnMgY2FuIGVpdGhlciBwcmUtc2lnbiB0aGVpciB1c2VybmFtZXMgb3JIYWNjZXB0IHRoZW0gbGF0ZXIuADxVc2VybmFtZXMgbXVzdDrYICAtIE9ubHkgY29udGFpbiBsb3dlcmNhc2UgQVNDSUkgY2hhcmFjdGVycyBvciBkaWdpdHMuNQEgIC0gV2hlbiBjb21iaW5lZCB3aXRoIHRoZSBzdWZmaXggb2YgdGhlIGlzc3VpbmcgYXV0aG9yaXR5IGJlIF9sZXNzIHRoYW5fIHRoZWAgICAgYE1heFVzZXJuYW1lTGVuZ3RoYC48YWNjZXB0X3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AEgxNAUFjY2VwdCBhIGdpdmVuIHVzZXJuYW1lIHRoYXQgYW4gYGF1dGhvcml0eWAgZ3JhbnRlZC4gVGhlIGNhbGwgbXVzdCBpbmNsdWRlIHRoZSBmdWxsVQF1c2VybmFtZSwgYXMgaW4gYHVzZXJuYW1lLnN1ZmZpeGAuIEF1dGhvcml0aWVzIGNhbm5vdCBncmFudCB1c2VybmFtZXMgdG8gcGVvcGxlLCBvbmx5UHRvIHJlZ3VsYXIgYWNjb3VudHMuXHJlbW92ZV9leHBpcmVkX2FwcHJvdmFsBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AEwxhAVJlbW92ZSBhbiBleHBpcmVkIHVzZXJuYW1lIGFwcHJvdmFsLiBUaGUgdXNlcm5hbWUgd2FzIGFwcHJvdmVkIGJ5IGFuIGF1dGhvcml0eSBidXQgbmV2ZXJVAWFjY2VwdGVkIGJ5IHRoZSB1c2VyIGFuZCBtdXN0IG5vdyBiZSBiZXlvbmQgaXRzIGV4cGlyYXRpb24uIFRoZSBjYWxsIG11c3QgaW5jbHVkZSB0aGWcZnVsbCB1c2VybmFtZSwgYXMgaW4gYHVzZXJuYW1lLnN1ZmZpeGAuUHNldF9wcmltYXJ5X3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFAxFAVNldCBhIGdpdmVuIHVzZXJuYW1lIGFzIHRoZSBwcmltYXJ5LiBUaGUgdXNlcm5hbWUgc2hvdWxkIGluY2x1ZGUgdGhlIHN1ZmZpeC4gT25seVkBcmVndWxhciBhY2NvdW50cyBjYW4gc2V0IHRoZWlyIHByaW1hcnkgdXNlcm5hbWUsIGFzIHBlb3BsZSBjYW4gb25seSBoYXZlIG9uZSB1c2VybmFtZSyQZ3JhbnRlZCB0aHJvdWdoIGEgc3lzdGVtIGFsbG9jYXRpb24uPHVuYmluZF91c2VybmFtZQQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABUMWQFTdGFydCB0aGUgcHJvY2VzcyBvZiByZW1vdmluZyBhIHVzZXJuYW1lIGJ5IHBsYWNpbmcgaXQgaW4gdGhlIHVuYmluZGluZyB1c2VybmFtZXMgbWFwLiEBT25jZSB0aGUgZ3JhY2UgcGVyaW9kIGhhcyBwYXNzZWQsIHRoZSB1c2VybmFtZSBjYW4gYmUgZGVsZXRlZCBieSBjYWxsaW5nwFtyZW1vdmVfdXNlcm5hbWVdKGNyYXRlOjpDYWxsOjpyZW1vdmVfdXNlcm5hbWUpLjxyZW1vdmVfdXNlcm5hbWUEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAWCGEBUGVybWFuZW50bHkgZGVsZXRlIGEgdXNlcm5hbWUgd2hpY2ggaGFzIGJlZW4gdW5iaW5kaW5nIGZvciBsb25nZXIgdGhhbiB0aGUgZ3JhY2UgcGVyaW9kLkkBQ2FsbGVyIGlzIHJlZnVuZGVkIHRoZSBmZWUgaWYgdGhlIHVzZXJuYW1lIGV4cGlyZWQgYW5kIHRoZSByZW1vdmFsIHdhcyBzdWNjZXNzZnVsLjRraWxsX3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFwhdAUNhbGwgd2l0aCBbRm9yY2VPcmlnaW5dKGNyYXRlOjpDb25maWc6OkZvcmNlT3JpZ2luKSBwcml2aWxlZ2VzIHdoaWNoIGRlbGV0ZXMgYSB1c2VybmFtZaxhbmQgc2xhc2hlcyBhbnkgZGVwb3NpdCBhc3NvY2lhdGVkIHdpdGggaXQuVHNldF9wZXJzb25hbF9pZGVudGl0eQwBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASRzaWduYXR1cmU1BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAYLF0BU2V0cyB0aGUgdXNlcm5hbWUgYW5kIG9uLWNoYWluIGFjY291bnQgZm9yIGEgcGVyc29uLCBhbG9uZyB3aXRoIGFuIGVtcHR5IGlkZW50aXR5IHdoaWNoYQFjYW4gb25seSBiZSBwb3B1bGF0ZWQgdXNpbmcgYW4gb3JhY2xlIHRocm91Z2ggdGhlIHNvY2lhbCBjcmVkZW50aWFsIHZlcmlmaWNhdGlvbiBzeXN0ZW0unFRoZSBjaG9zZW4gdXNlcm5hbWUgbXVzdCBiZSBkb21haW5sZXNzLgBJAVRoZSBzZW5kZXIgbXVzdCBzaWduIHRoZSBhbGlhcyB1c2luZyB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgb24tY2hhaW5sYWNjb3VudCB0byBwcm92ZSBvd25lcnNoaXAuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGNvbnRleHR1YWwgYWxpYXMgb2YgdGhlIHBlcnNvbiBhbmQgdGhlEQFzZW5kZXIgbXVzdCBub3QgaGF2ZSBhbHJlYWR5IHJlZ2lzdGVyZWQgdGhlaXIgaWRlbnRpdHkgYW5kIHVzZXJuYW1lLgCoRW1pdHMgYFBlcnNvbmFsSWRlbnRpdHlTZXRgIGlmIHN1Y2Nlc3NmdWwujHN1Ym1pdF9wZXJzb25hbF9jcmVkZW50aWFsX2V2aWRlbmNlBAEoY3JlZGVudGlhbEUEARhTb2NpYWwAGRgNAU9wZW4gYSBjYXNlIGZvciBhbiBvcmFjbGUgdG8ganVkZ2UgYSBzb2NpYWwgY3JlZGVudGlhbCBvZiBhIHBlcnNvbi4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY29udGV4dHVhbCBhbGlhcyBvZiB0aGUgcGVyc29uIGFuZCB0aGWcc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuAKBFbWl0cyBgRXZpZGVuY2VTdWJtaXR0ZWRgIGlmIHN1Y2Nlc3NmdWwuaHBlcnNvbmFsX2NyZWRlbnRpYWxfanVkZ2VkDAEYdGlja2V0OAFET3JhY2xlVGlja2V0T2Y8VD4AARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABJGp1ZGdlbWVudEkEATxPcmFjbGVKdWRnZW1lbnQAGghZAUNhbGxiYWNrIHRvIGVuZm9yY2UgdGhlIGp1ZGdlbWVudCBvZiBhIHNvY2lhbCBjcmVkZW50aWFsLiBUaGlzIGlzIHRvIGJlIGNhbGxlZCBvbmx5IGJ5gHRoZSBvcmFjbGUgdGhhdCBqdWRnZWQgdGhlIGNhc2UuXGNsZWFyX3BlcnNvbmFsX2lkZW50aXR5ABscUQFDbGVhciBhIHBlcnNvbidzIGlkZW50aXR5IGluZm8uIFRoZSBzZW5kZXIgbXVzdCBwYXkgYSBwZW5hbHR5IHRocm91Z2ggdGhlIGFzc29jaWF0ZWSgYWxpYXMgYWNjb3VudCBmb3IgcmVtb3ZpbmcgdGhlIGlkZW50aXR5LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjb250ZXh0dWFsIGFsaWFzIG9mIHRoZSBwZXJzb24gYW5kIHRoZZxzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCBpZGVudGl0eS4AuEVtaXRzIGBJZGVudGl0eVBlcnNvbmFsQ2xlYXJlZGAgaWYgc3VjY2Vzc2Z1bC48cmVwb3J0X3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AHBTsUmVwb3J0IGEgdXNlcm5hbWUgYXMgaW52YWxpZC9vZmZlbnNpdmUvd3JvbmcvYW55dGhpbmcgZWxzZS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGEgc2lnbmVkIGV4dHJpbnNpYy4AqC0gYHVzZXJuYW1lYDogVGhlIHVzZXJuYW1lIHRvIGJlIHJlcG9ydGVkLmByZXBvcnRlZF91c2VybmFtZV9qdWRnZWQMARh0aWNrZXQ4AWBjcmF0ZTo6T3JhY2xlVGlja2V0T2Y8VD4AARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABJGp1ZGdlbWVudEkEATxPcmFjbGVKdWRnZW1lbnQAHSTkR2l2ZW4ganVkZ2VtZW50IG9uIGEgcHJldmlvdXNseSByZXBvcnRlZCB1c2VybmFtZSBlaXRoZXI6kDEuIEluIGNhc2UgdXNlcm5hbWUgd2FzIGZvdW5kIHZhbGlkOrwtIHNsYXNoZXMgdGhlIGFtb3VudCBkZXBvc2l0ZWQgYnkgdGhlIHJlcG9ydGVyLPAtIGRvZXMgbm90aGluZyB0byB0aGUgaWRlbnRpdHkgYmVoaW5kIHRoZSByZXBvcnRlZCB1c2VybmFtZSyYMi4gSW4gY2FzZSB1c2VybmFtZSB3YXMgZm91bmQgaW52YWxpZDq4LSByZXR1cm5zIHRoZSBkZXBvc2l0ZWQgZnVuZHMgdG8gdGhlIHJlcG9ydGVyLMQtIGJhbnMgdGhlIGlkZW50aXR5IGJlaGluZCB0aGUgcmVwb3J0ZWQgdXNlcm5hbWUu/FNlcnZlcyBhcyBhIGNhbGxiYWNrIHVzZWQgdXBvbiBqdWRnZW1lbnQgcmVxdWVzdCB0byB0aGUgb3JhY2xlLqhNdXN0IG9ubHkgYmUgdXNlZCBieSB0aGUgc3RhdGVtZW50IG9yYWNsZS4EcElkZW50aXR5IHBhbGxldCBkZWNsYXJhdGlvbi6pAwxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZRhwZW9wbGUwSWRlbnRpdHlJbmZvAAAoARxkaXNwbGF5rQMBEERhdGEAARRsZWdhbK0DARBEYXRhAAEMd2VirQMBEERhdGEAARhtYXRyaXitAwEQRGF0YQABFGVtYWlsrQMBEERhdGEAATxwZ3BfZmluZ2VycHJpbnQhBAFAT3B0aW9uPFt1ODsgMjBdPgABFGltYWdlrQMBEERhdGEAARx0d2l0dGVyrQMBEERhdGEAARhnaXRodWKtAwEQRGF0YQABHGRpc2NvcmStAwEQRGF0YQAArQMMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlcxBEYXRhAAGYEE5vbmUAAAAQUmF3MAQAsQMAAAEAEFJhdzEEALUDAAACABBSYXcyBAC5AwAAAwAQUmF3MwQAvQMAAAQAEFJhdzQEAHAAAAUAEFJhdzUEAMEDAAAGABBSYXc2BADFAwAABwAQUmF3NwQAyQMAAAgAEFJhdzgEAL0BAAAJABBSYXc5BADNAwAACgAUUmF3MTAEANEDAAALABRSYXcxMQQA1QMAAAwAFFJhdzEyBADZAwAADQAUUmF3MTMEAN0DAAAOABRSYXcxNAQA4QMAAA8AFFJhdzE1BADlAwAAEAAUUmF3MTYEAMEBAAARABRSYXcxNwQA6QMAABIAFFJhdzE4BADtAwAAEwAUUmF3MTkEAPEDAAAUABRSYXcyMAQAHAAAFQAUUmF3MjEEAPUDAAAWABRSYXcyMgQA+QMAABcAFFJhdzIzBAD9AwAAGAAUUmF3MjQEAAEEAAAZABRSYXcyNQQABQQAABoAFFJhdzI2BAAJBAAAGwAUUmF3MjcEAA0EAAAcABRSYXcyOAQAEQQAAB0AFFJhdzI5BAAVBAAAHgAUUmF3MzAEABkEAAAfABRSYXczMQQAHQQAACAAFFJhdzMyBAAIAAAhACxCbGFrZVR3bzI1NgQACAAAIgAYU2hhMjU2BAAIAAAjACRLZWNjYWsyNTYEAAgAACQALFNoYVRocmVlMjU2BAAIAAAlAACxAwAAAwAAAAAMALUDAAADAQAAAAwAuQMAAAMCAAAADAC9AwAAAwMAAAAMAMEDAAADBQAAAAwAxQMAAAMGAAAADADJAwAAAwcAAAAMAM0DAAADCQAAAAwA0QMAAAMKAAAADADVAwAAAwsAAAAMANkDAAADDAAAAAwA3QMAAAMNAAAADADhAwAAAw4AAAAMAOUDAAADDwAAAAwA6QMAAAMRAAAADADtAwAAAxIAAAAMAPEDAAADEwAAAAwA9QMAAAMVAAAADAD5AwAAAxYAAAAMAP0DAAADFwAAAAwAAQQAAAMYAAAADAAFBAAAAxkAAAAMAAkEAAADGgAAAAwADQQAAAMbAAAADAARBAAAAxwAAAAMABUEAAADHQAAAAwAGQQAAAMeAAAADAAdBAAAAx8AAAAMACEEBBhPcHRpb24EBFQBHAEIEE5vbmUAAAAQU29tZQQAHAAAAQAAJQQAAAIpBAApBAAABAgErQMALQQMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlcyRKdWRnZW1lbnQEHEJhbGFuY2UBxAEgHFVua25vd24AAAAcRmVlUGFpZAQAxAEcQmFsYW5jZQABAChSZWFzb25hYmxlAAIAJEtub3duR29vZAADACRPdXRPZkRhdGUABAAoTG93UXVhbGl0eQAFACRFcnJvbmVvdXMABgAgRXh0ZXJuYWwABwAAMQQEGE9wdGlvbgQEVAE1BAEIEE5vbmUAAAAQU29tZQQANQQAAAEAADUECChzcF9ydW50aW1lOE11bHRpU2lnbmF0dXJlAAEQHEVkMjU1MTkEADkEAUhlZDI1NTE5OjpTaWduYXR1cmUAAAAcU3IyNTUxOQQAOQQBSHNyMjU1MTk6OlNpZ25hdHVyZQABABRFY2RzYQQAPQQBQGVjZHNhOjpTaWduYXR1cmUAAgAMRXRoBAA9BAFYZWNkc2E6OktlY2Nha1NpZ25hdHVyZQADAAA5BAAAA0AAAAAMAD0EAAADQQAAAAwAQQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFBBQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBpZGVudGl0eRhTb2NpYWwAAQwcVHdpdHRlcgQBIHVzZXJuYW1lQQQBEERhdGEAAAAYR2l0aHViBAEgdXNlcm5hbWVBBAEQRGF0YQABABxEaXNjb3JkBAE8ZGlzcGxheV9hbmRfdGFnQQQBEERhdGEAAgAASQQQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkSnVkZ2VtZW50AAEIFFRydXRoBABNBAEUVHJ1dGgAAAAgQ29udGVtcHQAAQAATQQQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkUVHJ1dGgAAQgQVHJ1ZQAAABRGYWxzZQABAABRBAxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQQQ2FsbAQEVAABICx1bmRlcl9hbGlhcwQBEGNhbGwgAbRCb3g8PFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpSdW50aW1lQ2FsbD4AABAVAURpc3BhdGNoIGEgY2FsbCB1bmRlciBhbiBhbGlhcyB1c2luZyB0aGUgYGFjY291bnQgPC0+IGFsaWFzYCBtYXBwaW5nLgBFAVRoaXMgaXMgYSBjYWxsIHZlcnNpb24gb2YgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRgLiUBSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gaW5zdGVhZCB3aGVuIHN1aXRhYmxlLkRzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4AASQtAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWxpYXMgd2FzIHByZXZpb3VzbHkgc2V0LgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuACxQYXJhbWV0ZXJzOrgtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gc2V0IHRoZSBhbGlhcyBmb3IuAQEtIGBjYWxsX3ZhbGlkX2F0YDogVGhlIGJsb2NrIG51bWJlciB3aGVuIHRoZSBjYWxsIGJlY29tZXMgdmFsaWQuTHVuc2V0X2FsaWFzX2FjY291bnQAAgQVAVJlbW92ZSB0aGUgbWFwcGluZyBmcm9tIGEgcGFydGljdWxhciBhbGlhcyB0byBpdHMgcmVnaXN0ZXJlZCBhY2NvdW50Lmhmb3JjZV9yZWNvZ25pemVfcGVyc29uaG9vZAQBGHBlb3BsZVUEAUBWZWM8TWVtYmVyT2Y8VD4+AAMQ4FJlY29nbml6ZSBhIHNldCBvZiBwZW9wbGUgd2l0aG91dCBhbnkgYWRkaXRpb25hbCBjaGVja3MuAFEBVGhlIHBlb3BsZSBhcmUgaWRlbnRpZmllZCBieSB0aGUgcHJvdmlkZWQgbGlzdCBvZiBrZXlzIGFuZCB3aWxsIGVhY2ggYmUgYXNzaWduZWQsIGlumG9yZGVyLCB0aGUgbmV4dCBhdmFpbGFibGUgcGVyc29uYWwgSUQuXHNldF9wZXJzb25hbF9pZF9hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABNGNhbGxfdmFsaWRfYXQ4AURCbG9ja051bWJlckZvcjxUPgAEPGhTZXQgYSBwZXJzb25hbCBpZCBhY2NvdW50LgBNAVRoZSBhY2NvdW50IGNhbiB0aGVuIGJlIHVzZWQgdG8gc2lnbiB0cmFuc2FjdGlvbnMgb24gYmVoYWxmIG9mIHRoZSBwZXJzb25hbCBpZCwgYW5kpHByb3ZpZGUgcmVwbGF5IHByb3RlY3Rpb24gd2l0aCB0aGUgbm9uY2UuAFEBVGhpcyB0cmFuc2FjdGlvbiBpcyByZWZ1bmRlZCBpZiBzdWNjZXNzZnVsIGFuZCBubyBhY2NvdW50IHdhcyBwcmV2aW91c2x5IHNldCBmb3IgdGhlMHBlcnNvbmFsIGlkLgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuACxQYXJhbWV0ZXJzOrgtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gc2V0IHRoZSBhbGlhcyBmb3IuAQEtIGBjYWxsX3ZhbGlkX2F0YDogVGhlIGJsb2NrIG51bWJlciB3aGVuIHRoZSBjYWxsIGJlY29tZXMgdmFsaWQuZHVuc2V0X3BlcnNvbmFsX2lkX2FjY291bnQABQR4VW5zZXQgdGhlIHBlcnNvbmFsIGlkIGFjY291bnQuYGNyZWF0ZV9wZW9wbGVfY29sbGVjdGlvbgAGKHRDcmVhdGUgdGhlIHBlb3BsZSBjb2xsZWN0aW9uLgApAVRoaXMgY2FsbCBpcyB2YWxpZCBvbmx5IGlmIHRoZSBjb2xsZWN0aW9uIGRvZXNuJ3QgZXhpc3QgeWV0LiBPbmNlIGNyZWF0ZWQsjHRoaXMgY2FsbCBjYW5ub3QgYmUgZXhlY3V0ZWQgYWdhaW4uANRUaGUgY29sbGVjdGlvbiBpcyBjcmVhdGVkIHdpdGggYSBmaXhlZCBjb25maWd1cmF0aW9uOrgtIE93bmVyOiBDb25maWd1cmVkIHZpYSBgQ29sbGVjdGlvbk93bmVyYCB0eXBlwC0gT25ib2FyZGluZyBzaXplOiBgUEVPUExFX09OQk9BUkRJTkdfU0laRWAgKDEwKUgtIE1vZGU6IGBGbGV4aWJsZWBMLSBSaW5nIHNpemU6IGBSMmU5YFhjbGVhbl91cF9zdGFsZV9hbGlhc2VzBAEcYWxpYXNlc1kEAdxCb3VuZGVkVmVjPENvbnRleHR1YWxBbGlhcywgQ29uc3RVMzI8TUFYX0JVTEtfQ0xFQU5VUD4+AAdQoFJlbW92ZSBzdGFsZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5ncy4AYEEgbWFwcGluZyBpcyBzdGFsZSB3aGVuOi0BLSBpdHMgY29udGV4dCBoYXMgYmVlbiByZW1vdmVkIGZyb20gW2BDb25maWc6OkFjY291bnRDb250ZXh0c2BdIChnb3Zlcm5hbmNlqCAgcmVjb25maWd1cmF0aW9uLCBlbmRlZCBhaXJkcm9wIGV0Yy4pLCBvcnAtIGl0cyByaW5nIGhhcyBiZWVuIGRlbGV0ZWQuAB0BUmV2aXNpb24gbWlzbWF0Y2hlcyBkbyBub3QgcmVuZGVyIGFuIGFsaWFzIHN0YWxlLiBUaGUgdXNlciBjYW4gY29udGludWUVAXRyYW5zYWN0aW5nIHZpYSBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRSZXZpc2VkYCB3aXRob3V0IGhhdmluZyB0b0xyZWRvIGFjY291bnQgc2V0dXAuAPxUeXBpY2FsbHkgc3VibWl0dGVkIGJ5IHRoZSBPQ1csIGJ1dCB0aGUgZGlzcGF0Y2ggZG9lcyBub3QgdHJ1c3SodGhlIGNhbGxlci4gRWFjaCBhbGlhcyBpcyByZS12YWxpZGF0ZWQgdmlh9FtgU2VsZjo6ZW5zdXJlX2FsaWFzX2lzX3N0YWxlYF07IHRob3NlIHRoYXQgYXJlIG5vdCBzdGFsZSBhcmUgc2tpcHBlZC4A8EF0IG1vc3QgW2BNQVhfQlVMS19DTEVBTlVQYF0gYWxpYXNlcyBhcmUgcHJvY2Vzc2VkIHBlciBjYWxsLgABAVRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBsb2NhbCBvciBpbi1ibG9jay4gVGh1cywgZXh0ZXJuYWx4aW52b2NhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUEAAACCABZBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUkDBFMAAAQAXQQBGFZlYzxUPgAAXQQAAAJJAwBhBAxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBBDYWxsBARUAAFEEHZvdGUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcb3BpbmlvbkkEASRKdWRnZW1lbnQAAATgRmVlbGVzcyBvbiBzdWNjZXNzIChkZXRlcm1pbmVkIG9ubHkgYnkgdG9wIHRocmVlIGxpbmVzKS4oY2xvc2VfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAQAoY2xlYW5fdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzAAIMJQFPcmlnaW4gbXVzdCBiZSBgTm9uZWAuIFRoZSB0cmFuc2FjdGlvbiBpcyB2YWxpZGF0ZWQgaW4gYFZhbGlkYXRlVW5zaWduZWRgYQF3aGVuIHRoZSBzb3VyY2UgaXMgbG9jYWwgKGUuZy4gZnJvbSB0aGUgb2ZmY2hhaW4gd29ya2VyKS4gRm9yIGV4dGVybmFsIHRyYW5zYWN0aW9ucywgdXNlUGBjbGVhbl92b3RlX3NpZ25lZGAuJHJlYXBfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAwAkaW50ZXJ2ZW5lCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABHHZlcmRpY3RJBAEkSnVkZ2VtZW50AAQAKGNsYWltX3ZvdGUEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAUIIQFBIHBlcnNvbiBjbGFpbXMgdGhlIG1vYiBjcmVkaXQgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVjdCB2b3RlIG9uIGEgY2FzZS5gVGhlIGNhc2UgbXVzdCBiZSBgRG9uZWAuOHBheW91dF9yZXdhcmRzBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABgQJAUEgcGVyc29uIGNvbnZlcnRzIHRoZWlyIGNsYWltZWQgbW9iIGNyZWRpdCBpbnRvIGEgZGlyZWN0IHRyYW5zZmVyLixjbGFpbV92b3RlcwQBMGNhc2VfaW5kaWNlc2UEAThWZWM8Q2FzZUluZGV4PgAHCDUBQSBwZXJzb24gY2xhaW1zIG11bHRpcGxlIG1vYiBjcmVkaXRzIGFzc29jaWF0ZWQgYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLiBUaGVQY2FzZSBtdXN0IGJlIGBEb25lYC5Ic3RhcnRfcGF5b3V0X3JvdW5kAAgAWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnTEATBCYWxhbmNlT2Y8VD4AARRjb3VudDgBDHUzMgABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAkAWHJlbW92ZV9wYXlvdXRfc2NoZWR1bGUEARRpbmRleDgBDHUzMgAKADBjbGFpbV9jcmVkaXQACwAwY2xlYW5fcG9pbnRzCAEUcm91bmQ4AShSb3VuZEluZGV4AAEUdm90ZXIIARRBbGlhcwAMAEBmb3JjZV9yaXBlbl9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAANACh0b3VjaF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAAOAFBjbGVhcl92b3RpbmdfcGVuYWx0eQAPAERjbGVhbl92b3RlX3NpZ25lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzABAEWE9yaWdpbiBtdXN0IGJlIHNpZ25lZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuZQQAAAI4AGkEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBBDYWxsBARUAAFYFGFwcGx5AAAMkC0gRGVjbGFyZSBpbnRlbnRpb24gdG8gZ2V0IGEgdGF0dG9vLkwtIERlcG9zaXQgaXMgdGFrZW4uuC0gYElua1R5cGVgIG1heSBub3QgYmUgYFByb2NlZHVyYWxEZXJpdmF0aXZlYC48c3VibWl0X2V2aWRlbmNlBAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAARC8LSBPcGVuIGEganVkaWNpYWwgY2FzZSB0byBqdWRnZSB0aGUgYGV2aWRlbmNlYC7ULSBDYWxscyBKdWRpY2lhbC9gSnVkZ2VTdGF0ZW1lbnQoUE9JX0hBU0gsIGV2aWRlbmNlKWBRAS0gTmVlZHMgYFNpZ25lZEV4dGVuc2lvbmAgdG8gYXZvaWQgdXBmcm9udCByZXF1aXJlbWVudCBmb3IgZmVlIGlmIGBqdWRnZW1lbnRzID09IDBgLjkBLSBJZiBganVkZ2VtZW50cyA+IDBgLCB0aGVuIGFuIGFkZGl0aW9uYWwgZmVlIHNob3VsZCBiZSBjaGFyZ2VkIGludG8gVHJlYXN1cnkuGGp1ZGdlZAwBGHRpY2tldDgBRE9yYWNsZVRpY2tldE9mPFQ+AAEcY29udGV4dHgBQEp1ZGdlbWVudENvbnRleHQAASRqdWRnZW1lbnRJBAEkSnVkZ2VtZW50AAIE6ElzIGNhbGxlZCBieSB0aGUgT3JhY2xlIHdoZW4gdGhlIGV2aWRlbmNlIGhhcyBiZWVuIGp1ZGdlZC5EcmVnaXN0ZXJfcmVmZXJyZWQMAQxrZXkIASxNZW1iZXJPZjxUPgABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBsDxUOjpDcnlwdG8gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAMkUC0gR2V0cyBhIG5ldyBgaW5kZXhgeC0gUHV0cyBhbiBlbnRyeSBpbnRvIGBQZW9wbGVgLpgtIENhbGxzIFBlb3BsZS9gbmV3UGVyc29uKGluZGV4LCBrZXkpYAAsIyBBcmd1bWVudHOwKiBga2V5YCAtIFRoZSBwZXJzb25hbCBpZGVudGl0eSB0byByZWdpc3Rlci4hASogYGRlc3RpbmF0aW9uYCAtIFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgY2FuZGlkYXRlJ3MgcmVmZXJyYWwgcmV3YXJkLkkBKiBgcHJvb2Zfb2Zfb3duZXJoc2lwYCAtIFRoZSBzaWduYXR1cmUgb2YgcHJlZGVmaW5lZCBwcmVmaXggYCJwb3AgcmVnaXN0ZXIgdXNpbmciYKggIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBzZW5kZXIgYWNjb3VudCBpZC5UcmVnaXN0ZXJfbm9uX3JlZmVycmVkDAEMa2V5CAEsTWVtYmVyT2Y8VD4AASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABSHByb29mX29mX293bmVyc2hpcG0EAbA8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAEOFAtIEdldHMgYSBuZXcgYGluZGV4YHgtIFB1dHMgYW4gZW50cnkgaW50byBgUGVvcGxlYC6YLSBDYWxscyBQZW9wbGUvYG5ld1BlcnNvbihpbmRleCwga2V5KWAALCMgQXJndW1lbnRzsCogYGtleWAgLSBUaGUgcGVyc29uYWwgaWRlbnRpdHkgdG8gcmVnaXN0ZXIuwCogYGRlc3RpbmF0aW9uYCAtIFRoZSBhY2NvdW50IHJlY2VpdmluZyByZXdhcmRzLkkBKiBgcHJvb2Zfb2Zfb3duZXJoc2lwYCAtIFRoZSBzaWduYXR1cmUgb2YgcHJlZGVmaW5lZCBwcmVmaXggYCJwb3AgcmVnaXN0ZXIgdXNpbmciYKggIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBzZW5kZXIgYWNjb3VudCBpZC4AKCMgV2FybmluZzoAOQFUaGlzIGNhbGwgY2FuIHBheSB0d28gcmV3YXJkcyB0byB0aGUgc2FtZSBhY2NvdW50IGZvciBub24tcmVmZXJyZWQgY2FuZGlkYXRlcy4pAVRoZSBhcHAgaXMgcmVzcG9uc2libGUgZm9yIGFueSBhZGRpdGlvbmFsIHByaXZhY3kgaGFuZGxpbmcgYWZ0ZXIgdHJhbnNmZXIuGHJlcm9sbAAFABhjb21taXQIARhjaG9pY2VxBAEkSW5rQ2hvaWNlAAEocmVxdWlyZV9pZBUDAUhPcHRpb248UGVyc29uYWxJZD4ABhRJAUNvbW1pdCB0byBhIGRlc2lnbiBhbmQgYXV0aG9yaXplIHRoZSBzdG9yYWdlIGZvciAocG9zc2libHkganVzdCBpbml0aWFsKSBldmlkZW5jZS4AVQFJZiBhIHNwZWNpZmljIHBlcnNvbmFsIGlkZW50aXR5IGlzIHJlcXVpcmVkLCB0aGVuIHRoaXMgY2FuIGJlIHBsYWNlZCBpbiBgcmVxdWlyZV9pZGAuQQFUaGlzIGNhbiBiZSBhbnkgdW51c2VkL3VucmVzZXJ2ZWQgcGVyc29uYWwgaWRlbnRpdHkgbm8gZ3JlYXRlciB0aGFuIHRoZSBgTmV4dElkYCBjb3VudGVyLjRhbGxvY2F0ZV9mdWxsAAcAHHRpbWVvdXQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAgMOQFPbmNlIGEgdGltZW91dCBwYXNzZXMsIHJlbW92ZXMgYSBjYW5kaWRhdGUgd2hvIGlzIHNlbGVjdGVkIGJ1dCBub3QgeWV0IHByb3Zlbi5ZAUlmIHRoZSBjYW5kaWRhdGUgd2FzIHJlZmVycmVkIHRoZW4gcmVmZXJyYWwgaXMgYmFkLCBpZiBjYW5kaWRhdGUgYXBwbGllZCB3aXRoIGRlcG9zaXQsTGRlcG9zaXQgaXMgc2xhc2hlZC4gZmxha2VvdXQACQS0UmVtb3ZlIGEgY2FuZGlkYXRlIHdobyBoYXMgbm90IHlldCBjb21taXR0ZWQuUGFwcGx5X3dpdGhfc2lnbmF0dXJlDAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEkc2lnbmF0dXJlNQQBSFQ6OlRpY2tldFNpZ25hdHVyZQABGHRpY2tldAQBJFQ6OlRpY2tldAAKEHRVdGlsaXplIGEgcmVmZXJyYWwgc2lnbmF0dXJlLgBdAVRoZSBwYXlsb2FkIHRvIGJlIHNpZ25lZCBieSB0aGUgcmVmZXJyZXIgdXNpbmcgdGhlaXIgcmVnaXN0ZXJlZCBrZXkgcGFpciBpcyB0aGUgZW5jb2RlZKRieXRlcyBvZiB0aGUgYWNjb3VudCBJRCBvZiB0aGUgY2FuZGlkYXRlLlRhcHBseV93aXRoX2ludml0YXRpb24MARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AASRzaWduYXR1cmU1BAFIVDo6VGlja2V0U2lnbmF0dXJlABMQ1EFwcGx5IHRvIHRoZSBQcm9vZi1vZi1JbmsgcHJvY2VzcyB3aXRoIGFuIGludml0YXRpb24uAFkBVGhlIHBheWxvYWQgdG8gYmUgc2lnbmVkIGJ5IHRoZSBpbnZpdGVyIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQga2V5IHBhaXIgaXMgdGhlIGVuY29kZWSkYnl0ZXMgb2YgdGhlIGFjY291bnQgSUQgb2YgdGhlIGNhbmRpZGF0ZS5EYWRkX2Rlc2lnbl9mYW1pbHkMARRpbmRleC0DASxGYW1pbHlJbmRleAABEGtpbmR1BAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQACwTwQWRkIGEgZGVzaWduIGZhbWlseS4gTXVzdCBoYXZlIHByaXZpbGVnZWQgYWNjZXNzIHRvIGRvIHRoaXMuTHNldF9yZWZlcnJhbF90aWNrZXQEARh0aWNrZXQEASRUOjpUaWNrZXQADBi8QWRkIGEgcmVmZXJyYWwgdGlja2V0IGFzc29jaWF0ZWQgd2l0aCBhIHBlcnNvbi4AVQFPbmx5IG9uZSByZWZlcnJhbCB0aWNrZXQgbWF5IGJlIGFjdGl2ZSBhdCBhbnkgZ2l2ZW4gdGltZSBmb3Igb25lIHBlcnNvbi4gQ2FsbGluZyB0aGlzJQFleHRyaW5zaWMgd2hpbGUgYSB2YWxpZCB0aWNrZXQgaXMgc2V0IHdpbGwgb3ZlcndyaXRlIHRoZSBleGlzdGluZyB0aWNrZXQuADkBSWYgYW55IHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkcyBhcmUgcHJlc2VudCwgdGhleSBuZWVkIHRvIGJlIHJlZ2lzdGVyZWQgZmlyc3QuWGNhbmNlbF9yZWZlcnJhbF90aWNrZXQEARh0aWNrZXQEASRUOjpUaWNrZXQADQTIQ2FuY2VsIGEgcmVmZXJyYWwgdGlja2V0IGFzc29jaWF0ZWQgd2l0aCBhIHBlcnNvbi6McmVnaXN0ZXJfc3VjY2Vzc2Z1bF9yZWZlcnJhbF9yZXdhcmQEASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAOADRncmFudF9pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAA8Y5EdyYW50cyBpbnZpdGVzIHRvIGFuIGFjY291bnQgc28gdGhleSBjYW4gZGlzdHJpYnV0ZSB0aGVtLgCYVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGF0aW9uc09yaWdpbi4AsC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBnaXZlIGludml0ZXMgdG8upC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBpbnZpdGVzIHRvIGdpdmUukHJlbW92ZV9hdmFpbGFibGVfYW5kX3BlbmRpbmdfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRsaW1pdDgBDHUzMgAQGJxSZW1vdmUgYWxsIGludml0ZXMgZ2l2ZW4gdG8gYW4gYWNjb3VudC4AnFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRhdGlvbnNPcmlnaW5gLgDQLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgaW52aXRlcyBmcm9tLuwtIGBsaW1pdGA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwZW5kaW5nIGludml0ZXMgdG8gcmVtb3ZlLkRzZXRfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+ABEUSEludml0ZSBhbiBhY2NvdW50LgANAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGludml0ZXMgbGVmdC4AlC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIHNldC5QY2FuY2VsX2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgASFFRDYW5jZWwgYW4gaW52aXRhdGlvbi4AIQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgdGlja2V0IHRvIGNhbmNlbC4AoC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIGNhbmNlbC5Ec2V0X2NvbmZpZ3VyYXRpb24EARhjb25maWd5BAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAyBBUBU2V0IHRoZSBjb25maWd1cmF0aW9uIHJlY29yZC4gTXVzdCBoYXZlIHByaXZpbGVnZWQgYWNjZXNzIHRvIGRvIHRoaXMuYHNldF9yZWltYnVyc2VtZW50X3ZhbHVlcwgBPHJlZmVycmVkX3ZhbHVlc30EAehCb3VuZGVkVmVjPChCYWxhbmNlT2Y8VD4sIHUzMiksIFQ6Ok1heFJlaW1idXJzZW1lbnRWYWx1ZXM+AAE8cmVmZXJyZXJfdmFsdWVzfQQB6EJvdW5kZWRWZWM8KEJhbGFuY2VPZjxUPiwgdTMyKSwgVDo6TWF4UmVpbWJ1cnNlbWVudFZhbHVlcz4AMyhNAVNldCB0aGUgdmFsdWVzIG9mIHRoZSByZWltYnVyc2VtZW50IGF3YXJkZWQgdG8gcmVmZXJyZWQgY2FuZGlkYXRlcyBhcyB3ZWxsIGFzIHRoZWlyTQFyZWZlcnJlcnMsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiByZWltYnVyc2VtZW50cyBmb3IgZWFjaCB2YWx1ZS4gVGhlc2UgdmFsdWVzIGFyZSRzdG9yZWQgaW5RAXJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZUkBdG8gYmUgdXNlZCBieSB0aGUgcmVpbWJ1cnNlbWVudCBzeXN0ZW0uIFRoZSBsZW5ndGggb2YgdGhlIHR3byBsaXN0cyBtdXN0IGJlIGVxdWFsLgAgV0FSTklORyEATQFBZnRlciB0aGUgbnVtYmVyIG9mIHJlaW1idXJzZW1lbnRzIGlzIGV4aGF1c3RlZCBmb3IgYSB2YWx1ZSBpbiB0aGUgbGlzdCwgdGhlIHBhbGxldPRzdGFydHMgdXNpbmcgdGhlIG5leHQgdmFsdWUgaW1tZWRpYXRlbHkgZm9yIGZ1dHVyZSB0cmFuc2ZlcnMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLm0EAAADYAAAAAwAcQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0JElua0Nob2ljZQABFEBEZXNpZ25lZEVsZWN0aXZlCAAtAwEsRmFtaWx5SW5kZXgAAC0DASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAQALQMBLEZhbWlseUluZGV4AAEASFByb2NlZHVyYWxQZXJzb25hbAQALQMBLEZhbWlseUluZGV4AAIAKFByb2NlZHVyYWwIAC0DASxGYW1pbHlJbmRleAAADAEwVmFyaWFudEluZGV4AAMAUFByb2NlZHVyYWxEZXJpdmF0aXZlCAAoAShQZXJzb25hbElkAAAVAwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAQAAHUEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChGYW1pbHlLaW5kAAEQIERlc2lnbmVkBAEUY291bnQtAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsAAIAKFByb2NlZHVyYWwEARRyYW5nZQwBMFZhcmlhbnRJbmRleAADAAB5BAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQwQ29uZmlnUmVjb3JkBCxCbG9ja051bWJlcgE4ACABOHJlcm9sbF90aW1lb3V0OAEsQmxvY2tOdW1iZXIAATxmYXN0dHJhY2tfY291bnQ4AQx1MzIAARxtYXhpbXVtOAEMdTMyAAE4ZnVsbF9hbGxvY19sZW4oAQx1NjQAAUBmdWxsX2FsbG9jX2NvdW50OAEMdTMyAAE4aW5pdF9hbGxvY19sZW4oAQx1NjQAAUBpbml0X2FsbG9jX2NvdW50OAEMdTMyAAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAB9BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEEBFMAAAQAhQQBGFZlYzxUPgAAgQQAAAQIxDgAhQQAAAKBBACJBAxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0EENhbGwEBFQAAUxMc2lnbl91cF93aXRoX2ludml0ZQQBOGlkZW50aWZpZXJfa2V5PQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAAg0FNpZ24gdXAgZm9yIHRoZSBnYW1lIHVzaW5nIGFuIGFjY291bnQgYW5kIGFuIGludml0ZS4AFQFUaGlzIGlzIGZvciBuZXcgcGxheWVycyBvciBhcmNoaXZlZCBwbGF5ZXJzLCBvdGhlciBwbGF5ZXJzIHNob3VsZCB1c2WoW2BQYWxsZXQ6OnNpZ25fdXBfd2l0aF9hY2NvdW50YF0gZm9yIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50BAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASSYU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudC4APQFJZiB0aGUgcGxheWVyIGlzIG5ldyBvciBhcmNoaXZlZCwgdGhlbiBhIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIubE90aGVyd2lzZSB0aGUgY2FsbCBpcyBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4AMQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQsIG9yLCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi5Ic2lnbl91cF93aXRoX2FsaWFzDAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAAURzdGF0ZW1lbnRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABDHNpZzUEAUxUOjpBY2NvdW50U2lnbmF0dXJlAAJIVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC4YcmVwb3J0BAEsZnVsbF9yZXBvcnSNBAE0RnVsbFJlcG9ydDxUPgADLJRBZnRlciB0aGUgZ2FtZSwgc2VuZCB0aGUgZnVsbCByZXBvcnQuANBUaGUgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZXBvcnRpbmcgcGhhc2UuAFUBVGhlIG9yaWdpbiBtdXN0IGJlIGFuIGFsaWFzLCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCwgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uAEkBQWZ0ZXIgdGhlIHZvdGVzIGZyb20gdGhlIHJlcG9ydCBhcmUgY291bnRlZCwgdGhlIHJlcG9ydGVyIGFuZCBlYWNoIG9mIHRoZSByZXBvcnRlZEUBcGxheWVycyB3aG9zZSBhdHRlbmRhbmNlIGNhbiBub3cgYmUgZGV0ZXJtaW5lZCBhcmUgcHJvY2Vzc2VkIGVhcmx5LiBUaGlzIGxldHMgdGhlTQFnYW1lIHNraXAgdGhlIHBsYXllci1wcm9jZXNzIHBoYXNlIGVudGlyZWx5IHdoZW4gZXZlcnkgcGxheWVyIGhhcyBiZWVuIHByb2Nlc3NlZCBieVR0aGUgZW5kIG9mIHJlcG9ydGluZy4gb2ZmYm9hcmQABByAT2ZmYm9hcmQgYSBwbGF5ZXIgZnJvbSB0aGUgZ2FtZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4AXQFUaGVyZSBtdXN0IGJlIG5vIGdhbWUgb3IgdGhlIGV4aXN0aW5nIGdhbWUgbXVzdCBiZSBpbiByZWdpc3RyYXRpb24gcGhhc2UgYW5kIHRoZSBwbGF5ZXKUbXVzdCBoYXZlIG5vdCBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLhxraWNrb3V0BAEYcGxheWVyBAEwVDo6QWNjb3VudElkAAUYMQFLaWNrb3V0IGEga2lja2FibGUgcGxheWVyIHRoYXQgaXMgbm90IHBsYXlpbmcgYWZ0ZXIgYE5vblBsYXlpbmdLaWNrb3V0VGltZWAuAKBUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQuACEBLSBgcGxheWVyYDogVGhlIHBsYXllciB0byBraWNrb3V0LiBJdCBtdXN0IGJlIGFyY2hpdmVkIGFuZCBraWNrYWJsZSB3aXRo2CAgYGFyY2hpdmVkX3NpbmNlYCBvbGRlciB0aGFuIGBOb25QbGF5aW5nS2lja291dFRpbWVgLjRncmFudF9pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAYY9EdyYW50IHNvbWUgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AiFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRlSXNzdWVyYC4AtC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBncmFudCBpbnZpdGVzIHRvLqgtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBncmFudC6QcmVtb3ZlX2F2YWlsYWJsZV9hbmRfcGVuZGluZ19pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGxpbWl0OAEMdTMyAAcYmENsZWFyIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAIhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0ZUlzc3VlcmAuANAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBpbnZpdGVzIGZyb20u7C0gYGxpbWl0YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBlbmRpbmcgaW52aXRlcyB0byByZW1vdmUuRHNldF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4ACBRISW52aXRlIGFuIGFjY291bnQuAA0BVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgaW52aXRlcyBsZWZ0LgCULSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gc2V0LlBjYW5jZWxfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+AAkURENhbmNlbCBhbiBpbnZpdGUuACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuOHNjaGVkdWxlX2dhbWVzBAE8Z2FtZXNfc2NoZWR1bGVzoQQBRFZlYzxHYW1lU2NoZWR1bGU+AAoI0FNjaGVkdWxlcyBuZXcgZ2FtZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHNjaGVkdWxlcy5dAVNjaGVkdWxlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIsIGFuZCBhZnRlciB0aGUgb25nb2luZyBnYW1lIChpZiB0aGVyZSBpcyBhbnkpLlRyZW1vdmVfc2NoZWR1bGVkX2dhbWUEAThnYW1lX3BsYXlfdGltZTgBDHUzMgALAEBzZXRfcGxheV9kZXBvc2l0BAEYYW1vdW50xAFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEFQFVcGRhdGUgdGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IGFtb3VudCBmb3IgZnV0dXJlIGFjY291bnQgc2lnbnVwcy4wY2xhaW1fcmV3YXJkBAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQADDglAUNsYWltIHRoZSBzY3JhdGNoIGNhcmQgcmV3YXJkIChhLmsuYS4gInN0YXIgcHJpemUiKSBmb3IgdGhlIGN1cnJlbnQgZ2FtZS4ANQFUaGUgY2FsbGVyIG11c3QgYmUgYSBzaWduZWQgYWNjb3VudCBvciBhIHBhcnRpY2lwYW50L3BlcnNvbiBvcmlnaW4gd2hvc2UgZ2FtZTUBaWRlbnRpdHkgd2FzIGVsaWdpYmxlIChhdHRlbmRlZCArIHJlY29nbml6ZWQpIGZvciB0aGUgY3VycmVudCBzY3JhdGNoIHJld2FyZC49AVRoZSBwbGF5ZXIncyBzY3JhdGNoIGhhc2ggbXVzdCBmYWxsIGJlbG93IHRoZSB3aW5uZXIgdGhyZXNob2xkLCBhbmQgZWFjaCBwbGF5ZXI5AW1heSBjbGFpbSBhdCBtb3N0IG9uY2UgYWNyb3NzIGFsbCBnYW1lcy4gRWxpZ2libGUgcGxheWVycyBjYW4gY2xhaW0gb25seSB1bnRpbC0BdGhlIG5leHQgZ2FtZSBmaW5pc2hlczsgb25jZSB0aGF0IGhhcHBlbnMsIHRoZSB1bmNsYWltZWQgcmV3YXJkIGlzIGRyb3BwZWQuAB0BUGVyLWdhbWUgcHJpemUtcG9vbCBhaXJkcm9wcyBhcmUgY2xhaW1lZCB2aWEgW2BTZWxmOjpjbGFpbV9nYW1lX3ByaXplYF0BASh3aGljaCBmb3J3YXJkcyBpbnRvIHRoZSBhaXJkcm9wIHBhbGxldCksIG5vdCB0aHJvdWdoIHRoaXMgY2FsbC4ALFBhcmFtZXRlcnM67C0gYG9yaWdpbmA6IGEgc2lnbmVkIGFjY291bnQsIHBhcnRpY2lwYW50IG9yIHBlcnNvbiBvcmlnaW4uzC0gYGJlbmVmaWNpYXJ5YDogdGhlIGFjY291bnQgdG8gcmVjZWl2ZSB0aGUgcmV3YXJkLkBjbGFpbV9nYW1lX3ByaXplFAEccG9vbF9pZDgBhGluZGl2X3BhbGxldF9haXJkcm9wOjpQcml6ZVBvb2xJZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARRwcm9vZn0DAYQ8VDo6QWlyZHJvcCBhcyBBaXJkcm9wQXBpPjo6UHJvb2YAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAANPAkBQ2xhaW0gYSBwcml6ZSBmcm9tIHRoZSByZWN1cnJpbmcgcGVyLWdhbWUgcHJpemUgcG9vbCBvcGVuZWQgYnkgdGhlCQFhaXJkcm9wIHBhbGxldCBmb3IgYGdhbWVfaWRgLiBUaGUgcG9vbCBpcyBpZGVudGlmaWVkIGJ5IGBwb29sX2lkYCzUd2hpY2ggbXVzdCBiZSBhIGBQcml6ZVRhcmdldDo6R2FtZVBhcnRpY2lwYW50c2AgcG9vbC4A/FRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBhY2NvdW50LCBhIHBhcnRpY2lwYW50IG9yaWdpbiwgb3IgYREBcGVyc29uIG9yaWdpbi4gVGhlIHJlc29sdmVkIFtgQWNjb3VudE9yUGVyc29uYF0gaWRlbnRpdHkgbXVzdCBhcHBlYXL0aW4gW2BQbGF5ZXJBdHRlbmRhbmNlSGlzdG9yeWBdIGZvciB0aGUgcG9vbCdzIGdhbWU7IG90aGVyd2lzZWhbYEVycm9yOjpOb3RQYXJ0aWNpcGFudGBdLgARAWBwcm9vZmAgaXMgYSByaW5nLW1lbWJlcnNoaXAgcHJvb2YgdGhhdCB0aGUgY2FsbGVyIGlzIGEgbGl0ZSBwZXJzb24uDQFJdCBpcyB2ZXJpZmllZCBieSB0aGUgYWlyZHJvcCBwYWxsZXQgYWdhaW5zdCB0aGUgcG9vbCdzIGNvbnRleHQgYW5kCQFgYmVuZWZpY2lhcnlgIChzbyBhIGNhcHR1cmVkIHByb29mIGNhbm5vdCByZWRpcmVjdCB0aGUgcHJpemUpLiBUaGUZAWFsaWFzIHJlY292ZXJlZCBmcm9tIHRoYXQgdmVyaWZpY2F0aW9uIGRyaXZlcyB0aGUgcGVyLXBvb2wgd2lubmVyLWhhc2gVAWNoZWNrOyB0aGUgcmVwbGF5IGd1YXJkIGtleXMgb24gdGhlIHJlc29sdmVkIGlkZW50aXR5IGZyb20gdGhlIG9yaWdpbhkBKEFjY291bnQgb3IgUGVyc29uKSwgc28gZWFjaCBpZGVudGl0eSBjYW4gY2xhaW0gYXQgbW9zdCBvbmNlIHBlciBwb29sLmx0ZXN0bmV0X2ZvcmNlX3N0YXJ0X3NodWZmbGUAZQzURm9yY2Ugc3RhcnQgdGhlIHNodWZmbGUgYmVmb3JlIGl0cyBub3JtYWwgc3RhcnQgdGltZS4ATQFUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgdGhlIHJvb3Qgb3JpZ2luIGFuZCBpcyBvbmx5IG1lYW50IGZvciB0ZXN0aW5nLmx0ZXN0bmV0X2ZvcmNlX2VuZF9yZXBvcnRpbmcAZgz4Rm9yY2UgZW5kIGEgZ2FtZSdzIHJlcG9ydGluZyBwaGFzZSBiZWZvcmUgaXRzIG5vcm1hbCBlbmQgdGltZS4ATQFUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgdGhlIHJvb3Qgb3JpZ2luIGFuZCBpcyBvbmx5IG1lYW50IGZvciB0ZXN0aW5nLjxzZXRfZ2FtZV9waGFzZXMEARhwaGFzZXOpBAFMUGhhc2VEdXJhdGlvblZhbHVlcwAOGIhPdmVycmlkZSB0aGUgZ2FtZSBwaGFzZSBkdXJhdGlvbnMuACkBUmVzdHJpY3RlZCB0byBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIChvciByb290KS4gVW50aWwgcmVzZXQsIGFsbCBmdXR1cmUZAWdhbWUgc2NoZWR1bGVzIHVzZSB0aGVzZSBwaGFzZXMgaW5zdGVhZCBvZiBbYENvbmZpZzo6UGhhc2VEdXJhdGlvbnNgXS4NAVRvIHJldmVydCwgdGhlIG1hbmFnZXIgcmUtaXNzdWVzIHRoZSBjYWxsIHdpdGggdGhlIGRlc2lyZWQgZXhwbGljaXTAdmFsdWVzIOKAlCB0aGVyZSBpcyBubyBzZXBhcmF0ZSBjbGVhciBleHRyaW5zaWMuRGtpbGxfY3VycmVudF9nYW1lAA8Q6EtpbGwgdGhlIGN1cnJlbnQgZ2FtZSwgcmVnYXJkbGVzcyBvZiB3aGljaCBwaGFzZSBpdCBpcyBpbi4ALQFSZXN0cmljdGVkIHRvIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gKG9yIHJvb3QpLiBJbnRlbmRlZCBhcyBhbiBlbWVyZ2VuY3kRAXJlY292ZXJ5IGxldmVyIHdoZW4gYSBnYW1lIGlzIHN0dWNrIG9yIGl0cyBzdGF0ZSBoYXMgYmVlbiBjb3JydXB0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLo0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBkQQEUwAABACdBAEYVmVjPFQ+AACRBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZUEBFMAAAQAmQQBGFZlYzxUPgAAlQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzGFJlcG9ydAABCBhQZXJzb24AAAAkTm90UGVyc29uAAEAAJkEAAAClQQAnQQAAAKRBAChBAAAAqUEAKUEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczBHYW1lU2NoZWR1bGUAAAwBOGdhbWVfcGxheV90aW1lOAEMdTMyAAEYcm91bmRzDAEIdTgAAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgAAqQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzTFBoYXNlRHVyYXRpb25WYWx1ZXMAABQBMHJlZ2lzdHJhdGlvbjgBDHUzMgABHHNodWZmbGU4AQx1MzIAAUxwb3N0X3NodWZmbGVfbWFyZ2luOAEMdTMyAAEkcmVwb3J0aW5nOAEMdTMyAAE4cGxheWVyX3Byb2Nlc3M4AQx1MzIAAK0EDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0EENhbGwEBFQAASRYc2NoZWR1bGVfcGF5b3V0X3JvdW5kcwwBGGFtb3VudMQBMEJhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAAEgZHVyYXRpb244AURCbG9ja051bWJlckZvcjxUPgABDFxTY2hlZHVsZSBwYXlvdXQgcm91bmRzLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuWHJlbW92ZV9wYXlvdXRfc2NoZWR1bGUEARRpbmRleDgBDHUzMgACDIBSZW1vdmUgYSBzY2hlZHVsZWQgcGF5b3V0IHJvdW5kLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuQHRyYW5zaXRpb25fcm91bmQEASxyb3VuZF9pbmRleDgBDHUzMgADGEhTdGFydCBhIG5ldyByb3VuZC4AUQFUaGlzIGlzIHZhbGlkIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGZpbmlzaGVkLCBvciBpZiB0aGUgY3VycmVudCByb3VuZCBkb2Vzbid0IGhhdmWocGxhbm5pbmcgYW5kIGEgc2NoZWR1bGUgZXhpc3RzIHRvIHBsYW4gaXQuALxUaGlzIGlzIGEgdGFzaywgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnlib2R5LlBvcGVyYXRlX3BheW91dF9yb3VuZAgBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleAABFGxpbWl0OAEMdTMyAAQ8eE9wZXJhdGUgc29tZSByb3VuZCBwYXlpbmcgb3V0LgBRAURyYWlucyByb3VuZCdzIHBhcnRpY2lwYW50cywgdXAgdG8gYSBsaW1pdC4gRm9yIGVhY2ggcGFydGljaXBhbnQsIGFkZCB0aGUgY2FsY3VsYXRlZBUBcmV3YXJkIChgYmFzZV9yZXdhcmQgKyByZW1haW5kZXJfcG9ydGlvbmApIHRvIHRoZWlyIGBjcmVkaXRgIGJhbGFuY2UuAGEBVGhlbiwgbW92ZXMgZnVuZHMgb24gdGhlIHBvdCBhY2NvdW50IGZyb20gUGF5b3V0IHRvIENyZWRpdCwgc28gdGhleSBhcmUgb3dlZCB0byBzcGVjaWZpY6BwYXJ0aWNpcGFudHMgcmF0aGVyIHRoYW4gdGhlIHJvdW5kIHBvb2wuAEUBRmluYWxseSwgcmVsZWFzZSB0aGUgbGVmdG92ZXIgZnJvbSB0aGUgUGF5b3V0IGhvbGQgYmFjayB0byB0aGUgcG90J3MgZnJlZSBiYWxhbmNlVChmdW5kcyBhcmUgcmVjeWNsZWQpLgC8VGhpcyBpcyBhIHRhc2ssIGFuZCBjYW4gYmUgY2FsbGVkIGZyb20gYW55Ym9keS4AxCogcm91bmRfaW5kZXg6IFRoZSBpbmRleCBvZiB0aGUgcm91bmQgdG8gb3BlcmF0ZS4RASogbGltaXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJ0aWNpcGFudHMgdG8gb3BlcmF0ZSBpbiB0aGlzIGNhbGwuIGNhc2hfb3V0AAUkWQFDYXNoIG91dCBoYWxmIG9mIHRoZSBzY29yZSwgcm91bmRlZCB1cC4gQ29udmVydHMgdGhlIHNjb3JlIGludG8gcG9pbnRzIGZvciB0aGUgY3VycmVudCUBcGF5b3V0IHJvdW5kLiBDYWxsZXIgbXVzdCBoYXZlIG5ldmVyIHJlYWNoZWQgcGVyc29uaG9vZCBzaW5jZSBvbmJvYXJkaW5nLgC0SXQgY2FuIGJlIGNhbGxlZCBvbmNlIHBlciBnYW1lIHNlc3Npb24gKGVyYSkuAD0BT3JpZ2luIG11c3QgYmUgc2lnbmVkIG9yIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljIHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudFh0cmFuc2FjdGlvbiBleHRlbnNpb24pAMxBbGlhcyBvcmlnaW4gaXMgbm90IGFsbG93ZWQgYXMgdGhleSBjYW4ndCBjYXNoIG91dC40cmVkZWVtX2NyZWRpdAQBLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAYYUQFSZWRlZW0gZnVsbCBhY2N1bXVsYXRlZCBjcmVkaXQsIHRyYW5zZmVycmluZyBpdCB0byB0aGUgcHJvdmlkZWQgZGVzdGluYXRpb24gYWNjb3VudC4A5ENyZWRpdCBpcyBjb252ZXJ0ZWQgZnJvbSBwb2ludHMgZHVyaW5nIHBheW91dCBwcm9jZXNzaW5nLgBJAU9yaWdpbiBtdXN0IGJlIGEgcGVyc29uIGFsaWFzLCBhIHNpZ25lZCBhY2NvdW50IG9yIGEgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWPAdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50IHRyYW5zYWN0aW9uIGV4dGVuc2lvbikuIHJlZ2lzdGVyBAEMa2V5sQQBDQFPcHRpb248KE1lbWJlck9mPFQ+LDxUOjpDcnlwdG8gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlKQo+AAc08FJlZ2lzdGVyIGFzIGEgcGVyc29uLCBvciByZXN1bWUgcGVyc29uaG9vZCBhZnRlciBzdXNwZW5zaW9uLgAlAVJlcXVpcmVzIHNjb3JlID49IHBlcnNvbmhvb2QgdGhyZXNob2xkIChvciBoYXZpbmcgcHJldmlvdXNseSByZWFjaGVkIGl0KS4AYQFJZiB0aGUgcGFydGljaXBhbnQgd2FzIHByZXZpb3VzbHkgcmVjb2duaXNlZCBhbmQgaXMgbm93IHN1c3BlbmRlZCwgdGhleSBtdXN0IG5vdCBwcm92aWRliGEga2V5LiBUaGUgZXhpc3Rpbmcga2V5IGlzIHJldXNlZC4APQFJZiB0aGUgcGFydGljaXBhbnQgd2FzIG5ldmVyIHJlY29nbmlzZWQsIHRoZXkgbXVzdCBwcm92aWRlIGEga2V5IGFuZCBhIHByb29mIG9mGQFvd25lcnNoaXAgKGBrZXlgIHBhcmFtZXRlcik6IGEgc2lnbmF0dXJlIG92ZXIgYCJwb3AgcmVnaXN0ZXIgdXNpbmciIHx8THNlbmRlcl9hY2NvdW50X2lkYC4ARQFPcmlnaW4gbXVzdCBiZSBzaWduZWQgb3IgYSBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpYyB1c2luZyBTY29yZUFzUGFydGljaXBhbnRcdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKS5oc2V0X2Fic2VuY2VfZ3JhY2Vfc2NoZWR1bGUEASBzY2hlZHVsZbkEAURBYnNlbmNlR3JhY2VUaWVycwAIOHxTZXQgdGhlIGFic2VuY2UgZ3JhY2Ugc2NoZWR1bGUuACkBRXZlcnkgdGllciBtdXN0IHNhdGlzZnk6IGAwIDw9IHdpbmRvdyA8PSA4YCBhbmQgYGFsbG93ZWRfbWlzc2VzIDwgd2luZG93YC4VAWBhbGxvd2VkX21pc3NlcyA9IDBgIGRpc2FibGVzIGdyYWNlIGVudGlyZWx5IChhbnkgYWJzZW5jZSBpbW1lZGlhdGVseShzdXNwZW5kcykuACUBVGllcnMgbXVzdCBiZSBwcm92aWRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLgD8QW4gZW1wdHkgc2NoZWR1bGUgZGlzYWJsZXMgdGhlIGdyYWNlIHBlcmlvZCBlbnRpcmVseSAoaW1tZWRpYXRlHQFzdXNwZW5zaW9uIG9uIGFueSBtaXNzZWQgZ2FtZSkuIFRoZSBuZXcgcmF0aW8gdGFrZXMgZWZmZWN0IGF0IHRoZSBzdGFydAkBb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb24gd2hlbiBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcmVjYWxjdWxhdGVzUGBBYnNlbmNlR3JhY2VSYXRpb2AuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC6Ec2V0X3BlcnNvbmhvb2RfdGhyZXNob2xkX3NjaGVkdWxlBAEgc2NoZWR1bGXFBAFgUGVyc29uaG9vZFRocmVzaG9sZFRpZXJzAAlAmFNldCB0aGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUuADhUaWVycyBtdXN0IGJlOjAtIG5vbi1lbXB0eSzILSBzb3J0ZWQgYXNjZW5kaW5nIGJ5IGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYCwZAS0gY2FwcGVkIGJ5IGEgZmluYWwgdGllciB3aXRoIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkID09IHUzMjo6TUFYYCwVAS0gcGVyLXRpZXI6IGAwIDwgc2NvcmVfdGhyZXNob2xkIDw9IE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAgKD0gMjEpLNQtIGhhdmUgbm9uLWRlY3JlYXNpbmcgYHNjb3JlX3RocmVzaG9sZGAgYWNyb3NzIHRpZXJzLgAJAVRoZSBuZXcgY3VydmUgdGFrZXMgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbvh3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXMgYFBlcnNvbmhvb2RUaHJlc2hvbGRgLgABAUFscmVhZHktcmVjb2duaXplZCBwYXJ0aWNpcGFudHMgYXJlIE5PVCByZXRyb2FjdGl2ZWx5IHN1c3BlbmRlZDoRAXRoZSBuZXcgYmFyIG9ubHkgZ2F0ZXMgZnV0dXJlIHNjb3JlIGV2YWx1YXRpb25zIGluIGBzZXRfYXR0ZW5kYW5jZWAuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQQEGE9wdGlvbgQEVAG1BAEIEE5vbmUAAAAQU29tZQQAtQQAAAEAALUEAAAECAhtBAC5BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0EBFMAAAQAwQQBGFZlYzxUPgAAvQQMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlc0BBYnNlbmNlR3JhY2VUaWVyAAAMAWRwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkOAEMdTMyAAEYd2luZG93DAEIdTgAAThhbGxvd2VkX21pc3NlcwwBCHU4AADBBAAAAr0EAMUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQByQQEUwAABADNBAEYVmVjPFQ+AADJBAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzXFBlcnNvbmhvb2RUaHJlc2hvbGRUaWVyAAAIAWRwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkOAEMdTMyAAE8c2NvcmVfdGhyZXNob2xkOAEMdTMyAADNBAAAAskEANEEDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBBDYWxsBARUAAEgLHJlc2VydmVfaWRzBAEUY291bnQ4AQx1MzIAAASEUmVzZXJ2ZSBhIG51bWJlciBvZiBwZXJzb25hbCBJRHMuUHJlbmV3X2lkX3Jlc2VydmF0aW9uBAEIaWQoAShQZXJzb25hbElkAAEEvFJlbmV3IGEgcGVyc29uYWwgSUQuIFRoZSBJRCBtdXN0IG5vdCBiZSBpbiB1c2UuVGNhbmNlbF9pZF9yZXNlcnZhdGlvbgQBCGlkKAEoUGVyc29uYWxJZAACBIRDYW5jZWwgYSBwZXJzb25hbCBJRCByZXNlcnZhdGlvbi5QcmVjb2duaXplX3BlcnNvbmhvb2QEATBpZHNfYW5kX2tleXPVBAHwQm91bmRlZFZlYzwoUGVyc29uYWxJZCwgTWVtYmVyT2Y8VD4pLCBUOjpNYXhQZXJzb25CYXRjaFNpemU+AAMEKQFHcmFudCBwZXJzb25ob29kIGZvciBhIGxpc3Qgb2YgY2FuZGlkYXRlcyB0aGF0IGhhdmUgcmVzZXJ2ZWQgcGVyc29uYWwgSURzLkhzdXNwZW5kX3BlcnNvbmhvb2QEAQxpZHPhBAG0Qm91bmRlZFZlYzxQZXJzb25hbElkLCBUOjpNYXhQZXJzb25CYXRjaFNpemU+AAQIXQFTdXNwZW5kIHRoZSBwZXJzb25ob29kIG9mIGEgbGlzdCBvZiByZWNvZ25pemVkIHBlb3BsZS4gVGhlIHBlb3BsZSBtdXN0IG5vdCBjdXJyZW50bHkgYmUoc3VzcGVuZGVkLkRyZXN1bWVfcGVyc29uaG9vZAQBCGlkKAEoUGVyc29uYWxJZAAFBBEBUmVzdW1lIHNvbWVvbmUncyBwZXJzb25ob29kLiBUaGUgcGVyc29uIG11c3QgY3VycmVudGx5IGJlIHN1c3BlbmRlZC5Yc3RhcnRfbXV0YXRpb25fc2Vzc2lvbgAGCF0BU3RhcnQgYSBtdXRhdGlvbiBzZXNzaW9uIGluIHRoZSB1bmRlcmx5aW5nIGBQZW9wbGVgIGludGVyZmFjZS4gVGhpcyBjYWxsIGRvZXMgbm90IGNoZWNrJQF3aGV0aGVyIGEgbXV0YXRpb24gc2Vzc2lvbiBpcyBhbHJlYWR5IG9uZ29pbmcgYW5kIGNhbiBzdGFydCBuZXcgc2Vzc2lvbnMuUGVuZF9tdXRhdGlvbl9zZXNzaW9uAAcQXQFFbmQgYSBtdXRhdGlvbiBzZXNzaW9uIGluIHRoZSB1bmRlcmx5aW5nIGBQZW9wbGVgIGludGVyZmFjZS4gVGhpcyBjYWxsIGNhbiBlbmQgbXVsdGlwbGXgbXV0YXRpb24gc2Vzc2lvbnMsIGV2ZW4gb25lcyBub3Qgc3RhcnRlZCBieSB0aGlzIHBhbGxldC4A2FRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgbm8gbXV0YXRpb24gc2Vzc2lvbiBpcyBvbmdvaW5nLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7VBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdkEBFMAAAQA3QQBGFZlYzxUPgAA2QQAAAQIKAgA3QQAAALZBADhBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASgEUwAABADlBAEYVmVjPFQ+AADlBAAAAigA6QQMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQQQ2FsbAQEVAABGHhpbmNyZWFzZV9hdHRlc3RhdGlvbl9hbGxvd2FuY2UIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAABglAUdyYW50IHNvbWUgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHRvIGFuIGFjY291bnQgc28gdGhleSBjYW4gYXR0ZXN0IHBlb3BsZS4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC4AyC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBncmFudCBhdHRlc3RhdGlvbnMgdG8uvC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBhdHRlc3RhdGlvbnMgdG8gZ3JhbnQubGNsZWFyX2F0dGVzdGF0aW9uX2FsbG93YW5jZQQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARS8Q2xlYXIgYWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBmb3IgYW4gYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC4A5C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGF0dGVzdGF0aW9ucyBmcm9tLhhhdHRlc3QUASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAAUxjYW5kaWRhdGVfc2lnbmF0dXJlNQQBXFQ6OkF0dGVzdGF0aW9uU2lnbmF0dXJlAAEwcmluZ192cmZfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBtBAE4U2lnbmF0dXJlT2Y8VD4AAVRjb25zdW1lcl9yZWdpc3RyYXRpb27tBAGsT3B0aW9uPExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtc09mPFQ+PgAChEhBdHRlc3QgYW4gYWNjb3VudC4ARQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgbGVmdC4A8FRoZSBhdXRob3JpdHkgd2lsbCBoYXZlIHRvIGdldCB0d28gc2lnbmF0dXJlcyBmcm9tIHRoZSB1c2VyOk0BLSBvbmUgY3JlYXRlZCB1c2luZyB0aGVpciBhY2NvdW50IGtleSBhdHRlc3RpbmcgdG8gdGhlIG93bmVyc2hpcCBvZiB0aGUgYGNhbmRpZGF0ZWAoICBhY2NvdW50O10BLSBvbmUgY3JlYXRlZCB1c2luZyB0aGVpciByaW5nLXZyZiBrZXkgYXR0ZXN0aW5nIHRvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGByaW5nX3ZyZl9rZXlgGCAga2V5LgBhAVRoZSBtZXNzYWdlIHRvIGJlIHNpZ25lZCBieSBib3RoIGtleXMgZnJvbSB3aGljaCB0aGUgc2lnbmF0dXJlcyBhcmUgZ2VuZXJhdGVkIGlzIGNyZWF0ZWRVAWJ5IGNvbmNhdGVuYXRpbmcgdGhlIGJ5dGVzICJwb3A6cGVvcGxlLWxpdGU6cmVnaXN0ZXIgdXNpbmciIHdpdGggdGhlIGVuY29kZWQgYnl0ZXMgb2YtAXRoZSB1c2VyJ3MgYWNjb3VudCAoYGNhbmRpZGF0ZWApLCBhbmQgdGhlIGVuY29kZWQgYnl0ZXMgb2YgdGhlIHJpbmcgVlJGIGtleUQoYHJpbmdfdnJmX2tleWApLgBYT24gc3VjY2VzcywgdGhpcyBjYWxsOsAtIHN0b3JlcyBsaXRlIHJlZ2lzdHJhdGlvbiBkYXRhIGluIGBMaXRlUGVvcGxlYCz0LSBhZGRzIHRoZSB1c2VyJ3MgcmluZyBWUkYga2V5IHRvIHRoZSBsaXRlIG1lbWJlciBjb2xsZWN0aW9uLgAtAVRoZSBsaXRlIG1lbWJlciBjb2xsZWN0aW9uIG11c3QgYWxyZWFkeSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYnkgYG9uX3BvbGxgLgD8LSBgY2FuZGlkYXRlYDogVGhlIGNhbmRpZGF0ZSB0byBiZSByZWNvZ25pemVkIGFzIGEgbGl0ZSBwZXJzb24uYQEtIGBjYW5kaWRhdGVfc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSwgcHJvdmlkZWQgYnkgdGhlIGNhbmRpZGF0ZSwgdG8gYWxsb3cgdGhlIGF0dGVzdGVy3CAgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIG9uIHRoZWlyIGJlaGFsZi4lAS0gYHJpbmdfdnJmX2tleWA6IFRoZSByaW5nIFZSRiBrZXkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaXRlIHBlcnNvbi5dAS0gYHJpbmdfdnJmX2tleV9zaWduYXR1cmVgOiBUaGUgcmluZyBWUkYgc2lnbmF0dXJlLCBwcm92aWRlZCBieSB0aGUgY2FuZGlkYXRlLCB0byBhbGxvd1UBICB0aGUgYXR0ZXN0ZXIgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBUaGlzIGFsc28gcHJvdmUgdGhlIG93bmVyc2hpcCBvZpAgIHRoZSByaW5nIFZSRiBrZXkgYnkgdGhlIGNhbmRpZGF0ZS5dAS0gY29uc3VtZXJfcmVnaXN0cmF0aW9uOiBPcHRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggY2FuIGNvbnRhaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbl0BICB0byBmb3J3YXJkIGEgY29uc3VtZXIgcmVnaXN0cmF0aW9uIHJlcXVlc3QgdG8gdGhlIGBMaXRlQ29uc3VtZXJSZWdpc3RyYXJgIHNlcnZpY2UuIElmUQEgIHByZXNlbnQsIGl0IGFsc28gY29udGFpbnMgYSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgdXNlciBpbiBvcmRlciB0byB2YWxpZGF0ZSB0aGUlASAgaW50ZW50LiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBzaWduaW5nIHBheWxvYWQgZ2VuZXJhdGlvbiBhdmFpbGFibGUgaW7sICBbdHlwZXM6OkxpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtczo6c2lnbmluZ19wYXlsb2FkXS5IZGlzcGF0Y2hfYXNfc2lnbmVyBAEQY2FsbCABTEJveDxUOjpSdW50aW1lQ2FsbD4ABQBEc2V0X2FsaWFzX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4dmFsaWRfYXRfYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgAGELRTZXQgdGhlIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIGEgbGl0ZSBhbGlhcy4AtFRoZSBjYWxsIGlzIHZhbGlkIGZyb20gYHZhbGlkX2F0X2Jsb2NrYCB1bnRpbMRgdmFsaWRfYXRfYmxvY2sgKyBhY2NvdW50X3NldHVwX2Jsb2NrX3RvbGVyYW5jZWAuTHVuc2V0X2FsaWFzX2FjY291bnQABwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7QQEGE9wdGlvbgQEVAHxBAEIEE5vbmUAAAAQU29tZQQA8QQAAAEAAPEEDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXN4TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zCCRBY2NvdW50SWQBBCRTaWduYXR1cmUBNQQAFAEkc2lnbmF0dXJlNQQBJFNpZ25hdHVyZQABHGFjY291bnQEASRBY2NvdW50SWQAAThpZGVudGlmaWVyX2tleT0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABIHVzZXJuYW1lQQQBIFVzZXJuYW1lAAFEcmVzZXJ2ZWRfdXNlcm5hbWX1BAFAT3B0aW9uPFVzZXJuYW1lPgAA9QQEGE9wdGlvbgQEVAFBBAEIEE5vbmUAAAAQU29tZQQAQQQAAAEAAPkEDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBBDYWxsBARUAAE0UHJlZ2lzdGVyX2xpdGVfcGVyc29uDAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASB1c2VybmFtZUEEASBVc2VybmFtZQABRHJlc2VydmVkX3VzZXJuYW1l9QQBQE9wdGlvbjxVc2VybmFtZT4AAASUUmVnaXN0ZXIgYSBsaXRlIHBlcnNvbiBhcyBhIGNvbnN1bWVyLjxyZWdpc3Rlcl9wZXJzb24MAVBsaW5rZWRfbGl0ZV9pZGVudGl0eQQBMFQ6OkFjY291bnRJZAABTGxpdGVfaWRlbnRpdHlfcHJvb2Y1BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAATx1c2VybmFtZV9jaG9pY2X9BAFYUGVyc29uYWxVc2VybmFtZUNob2ljZQABJJxSZWdpc3RlciBhIHByb3ZlbiBwZXJzb24gYXMgYSBjb25zdW1lci4AXQFUaGUgcGVyc29uIG11c3QgbGluayBhIHByZXZpb3VzbHkgcmVjb2duaXplZCBsaXRlIGlkZW50aXR5LCB3aGljaCB3aWxsIGJlIHVwZ3JhZGVkIHRvIGFZAWZ1bGwgcGVyc29uIGNvbnN1bWVyLiBJbiBvcmRlciB0byBwcm92ZSB0aGV5IGhvbGQgdGhlIGxpdGUgaWRlbnRpdHkgdGhleSB3YW50IHRvIGxpbmssYQF1c2VycyBtdXN0IHByb3ZpZGUgYSBgbGl0ZV9pZGVudGl0eV9wcm9vZmAgc2lnbmF0dXJlLCBjcmVhdGVkIGJ5IHNpZ25pbmcgdGhlIGFsaWFzIGJ5dGVziHVzaW5nIHRoZWlyIGxpdGUgY29uc3VtZXIgYWNjb3VudC4AOQFUaGUgY29uc3VtZXIgY2FuIGNob29zZSBpZiB0aGV5IHdhbnQgdG8gaGF2ZSBhIG5ldyB1c2VybmFtZSBvciB1c2UgYW4gZXhpc3RpbmcVAXJlc2VydmF0aW9uIG1hZGUgaW4gdGhlIG5hbWUgb2YgdGhlIGxpdGUgY29uc3VtZXIgd2hvIHdpbGwgYmUgbGlua2VkLmh0b3VjaF9wZXJzb25fYXV0aG9yaXphdGlvbgACEEkBVXBkYXRlIGEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBieSBlbnN1cmluZyB0aGV5IGNhbiBzdGlsbCBhdXRoZW50aWNhdGUgYXMgcGVvcGxlLgBRAVRoaXMgY2FsbCBtdXN0IGJlIHBlcmZvcm1lZCBhdCBsZWFzdCBgTWluUGVyc29uQXV0aFVwZGF0ZUludGVydmFsYCBzZWNvbmRzIGFmdGVyIHRoZZRsYXN0IHVwZGF0ZSBpbiBvcmRlciB0byBwcmV2ZW50IHNwYW0ujHJlbW92ZV9leHBpcmVkX3VzZXJuYW1lX3Jlc2VydmF0aW9uCAEgdXNlcm5hbWVBBAEgVXNlcm5hbWUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMgOQFSZW1vdmUgYW4gZXhwaXJlZCBlbnRyeSBmcm9tIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gcXVldWUuIFRoZSB0YXJnZXQgZW50cnkgaXMBAWlkZW50aWZpZWQgYnkgYGFjY291bnRgIGFuZCBjYW4gYmUgYXQgYW55IHBvc2l0aW9uIGluIHRoZSBxdWV1ZS4dAUVhY2ggY2FsbCByZW1vdmVzIGV4YWN0bHkgb25lIGVudHJ5LCBzbyBpdCBtdXN0IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvkGNsZWFyIG11bHRpcGxlIGV4cGlyZWQgcmVzZXJ2YXRpb25zLgAtAVRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC4gVGhlIGBhY2NvdW50YDEBcGFyYW1ldGVyIGlzIGFsc28gdXNlZCBmb3IgdHJhbnNhY3Rpb24gcG9vbCBkZWR1cGxpY2F0aW9uLCBhbGxvd2luZyBwYXJhbGxlbBEBc3VibWlzc2lvbnMgdGhhdCB0YXJnZXQgZGlmZmVyZW50IGV4cGlyZWQgZW50cmllcyBpbiB0aGUgc2FtZSBxdWV1ZS5UdXBkYXRlX2lkZW50aWZpZXJfa2V5BAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIABBDYVXBkYXRlIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIga2V5IG9mIGEgY29uc3VtZXIuAEEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBhY2NvdW50IHJlZ2lzdGVyZWQgZm9yIHRoYXQgY29uc3VtZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIwY3JlZGliaWxpdHkuhHNldF91c2VybmFtZV9yZXNlcnZhdGlvbl9kdXJhdGlvbgQBIGR1cmF0aW9uKAEMdTY0AAUMHQFTZXQgdGhlIGR1cmF0aW9uIGZvciB3aGljaCBhIHVzZXJuYW1lIHJlc2VydmF0aW9uIGlzIHZhbGlkLCBpbiBzZWNvbmRzLgBgVGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QuTGRlbW90ZV9hdXRoX2V4cGlyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAcMMQFEZW1vdGUgYSBmdWxsIHBlcnNvbiB0byBhIGxpdGUgcGVyc29uIGFmdGVyIHRoZWlyIGF1dGhvcml6YXRpb24gaGFzIGV4cGlyZWQuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuxHNldF9mcmllbmRfcmVxdWVzdF9zdGF0ZW1lbnRfYWNjb3VudF9mb3Jfc2VxdWVuY2UIASRyZWZlcmVuY2UBBQFYRnJpZW5kUmVxdWVzdFJlZmVyZW5jZQABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACEAVAUFzc29jaWF0ZSBhIHN0YXRlbWVudCBhY2NvdW50IHdpdGggYSBmcmllbmQgcmVxdWVzdCBjb250ZXh0IHNlcXVlbmNlLgBZAVRoZSBhc3NvY2lhdGVkIGFjY291bnQgY2FuIHN1Ym1pdCBzdGF0ZW1lbnRzIHdoaWxlIHRoaXMgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGlzHGFjdGl2ZS41AVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpGcmllbmRSZXF1ZXN0QWxpYXNgLCBjcmVhdGVkIGJ5IHRoZSBgQXNSZXNvdXJjZXNgUQEoYFJlZ2lzdGVyRnJpZW5kUmVxdWVzdFdpdGhQcm9vZiguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcHJvb2YgdmFsaWRhdGlvbi4dAU9uIHN1Y2Nlc3MsIGluY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlIGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uIHN0YXRlaGB7YWNjb3VudF9pZCwgcmVmZXJlbmNlfWAuACxQYXJhbWV0ZXJzOswqIGByZWZlcmVuY2VgOiBmcmllbmQgcmVxdWVzdCBwZXJpb2Qvc2VxdWVuY2UgcGFpci4xASAgLSBgcmVmZXJlbmNlLnBlcmlvZGAgbXVzdCBiZSBpbiB0aGUgYWNjZXB0ZWQgcGVyaW9kIHdpbmRvdzogYFtwZXJpb2Qobm93IC20ICAgIEZyaWVuZFJlcXVlc3RHcmFjZVdpbmRvdyksIHBlcmlvZChub3cpXWAuBQEgIC0gYHJlZmVyZW5jZS5zZXFgIG11c3QgYmUgaW4gYDAuLj1GcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2RgLk0BKiBgYWNjb3VudF9pZGA6IHN0YXRlbWVudCBhY2NvdW50IHRvIGF1dGhvcml6ZS4gTXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGJ5IGFub3RoZXJ4ICBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24ulGNsZWFyX2V4cGlyZWRfZnJpZW5kX3JlcXVlc3Rfc2VxdWVuY2UIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEMc2VxDAEIdTgACSg1AUNsZWFyIGEgc3RhbGUgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGFuZCByZXZva2UgaXRzIHN0YXRlbWVudCBhbGxvd2FuY2UuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuIQFTdWNjZWVkcyBvbmx5IHdoZW4gdGhlIHJlZ2lzdHJhdGlvbidzIHBlcmlvZC1kZXJpdmVkIGV4cGlyeSBoYXMgZWxhcHNlZC5hAU9uIHN1Y2Nlc3MsIHJlbW92ZXMgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIHN0YXRlIGFuZCBkZWNyZWFzZXMgc3RhdGVtZW50IGFsbG93YW5jZS4ALFBhcmFtZXRlcnM6YQEqIGBhY2NvdW50YDogc3RhdGVtZW50IGFjY291bnQgcHJldmlvdXNseSBhc3NvY2lhdGVkIHdpdGggYSBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24uWQEqIGBzZXFgOiBmcmllbmQgcmVxdWVzdCBzZXF1ZW5jZSB0byBjbGVhci4gTXVzdCBtYXRjaCBzdG9yZWQgcmVnaXN0cmF0aW9uIHNlcXVlbmNlIGFuZKggIGJlIGluIGAwLi49RnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kYC5sc2V0X3N0YXRlbWVudF9zdG9yZV9hY2NvdW50DAEYcGVyaW9kOAEMdTMyAAEMc2VxOAEMdTMyAAE4dGFyZ2V0X2FjY291bnQEATBUOjpBY2NvdW50SWQACiwJAUNsYWltIGFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGZvciBhIHRhcmdldCBhY2NvdW50LgApAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpTdG10U3RvcmVBbGlhc2AsIHByb2R1Y2VkIGJ5IHRoZSBgQXNSZXNvdXJjZXNgVQEoYFJlZ2lzdGVyU3RhdGVtZW50U3RvcmVBbGxvd2FuY2UoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHByb29mIHZhbGlkYXRpb24uRQFPbiBzdWNjZXNzLCBpbmNyZWFzZXMgdGhlIHN0YXRlbWVudCBhbGxvd2FuY2UgZm9yIGB0YXJnZXRfYWNjb3VudGAgYW5kIHN0b3JlcyB0aGWYbWFwcGluZyBpbiBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzYC4ALFBhcmFtZXRlcnM6PQEqIGBwZXJpb2RgOiBkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2guIE11c3QgYmUgaW4gdGhlIGFjY2VwdGVkIHBlcmlvZCB3aW5kb3cuRQEqIGBzZXFgOiBzbG90IG51bWJlciB3aXRoaW4gdGhlIHBlcmlvZCwgYm91bmRlZCBieSB0aGUgY29sbGVjdGlvbi1zcGVjaWZpYyBsaW1pdC7MKiBgdGFyZ2V0X2FjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhdXRob3JpemUujGNsZWFyX2V4cGlyZWRfc3RtdF9zdG9yZV9hbGxvd2FuY2VzCAEYcGVyaW9kOAEMdTMyAAEsZmlyc3RfZW50cnkIARRBbGlhcwALFPBSZW1vdmUgZXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyBmb3IgYSBwYXN0IHBlcmlvZC4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC5FAVJlbW92ZXMgdXAgdG8gYFN0bXRTdG9yZUNsZWFudXBMaW1pdGAgZW50cmllcyBmcm9tIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgIGZvckEBdGhlIGdpdmVuIGBwZXJpb2RgLCBkZWNyZWFzaW5nIHRoZSBzdGF0ZW1lbnQgYWxsb3dhbmNlIGZvciBlYWNoIHJlbW92ZWQgYWNjb3VudC5cY2xhaW1fbG9uZ190ZXJtX3N0b3JhZ2UMARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAwwOQFDbGFpbSBsb25nLXRlcm0gc3RvcmFnZSBvbiBhIHJlbW90ZSBjaGFpbiB1c2luZyBhbiBhbm9ueW1vdXMgbWVtYmVyc2hpcCBwcm9vZi4AUQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6TG9uZ1Rlcm1TdG9yYWdlQ2xhaW0oYWxpYXMsIGNvbGxlY3Rpb24pYCwgY3JlYXRlZCBieSB0aGVVAWBBc1Jlc291cmNlc2AgKGBDbGFpbUxvbmdUZXJtU3RvcmFnZSguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcmluZy1WUkYgcHJvb2YsdmFsaWRhdGlvbi4ALFBhcmFtZXRlcnM6SQEqIGBwZXJpb2RgOiB0aGUgY2xhaW1pbmcgcGVyaW9kLiBNdXN0IGJlIHRoZSBjdXJyZW50IHBlcmlvZCBvciB0aGUgcHJldmlvdXMgb25lIGlmaCAgd2l0aGluIHRoZSBncmFjZSB3aW5kb3cuDQEqIGBjb3VudGVyYDogdGhlIGNsYWltIGNvdW50ZXIgd2l0aGluIHRoZSBwZXJpb2QuIE11c3QgYmUgbGVzcyB0aGFuLQEgIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgLiBFYWNoIGNvdW50ZXIgcHJvZHVjZXMgYSBkaXN0aW5jdCBhbGlhcy4lASogYGFjY291bnRfaWRgOiB0aGUgYWNjb3VudCB0byBhdXRob3JpemUgZm9yIHN0b3JhZ2Ugb24gdGhlIHJlbW90ZSBjaGFpbi6cY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzCAEYcGVyaW9kOAEMdTMyAAEUbGltaXQ4AQx1MzIADSDwQ2xlYXIgc3BlbnQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBmb3IgYW4gZXhwaXJlZCBwZXJpb2QuAEUBVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGwgYXV0aG9yaXplZCB2aWEgdGhlIGBhdXRob3JpemVgIGF0dHJpYnV0ZS4gSXQgY2FuIGJlJQFjYWxsZWQgYnkgYW55b25lIG9uY2UgYSBwZXJpb2QgaGFzIGZ1bGx5IGV4cGlyZWQgKHBhc3QgdGhlIGdyYWNlIHdpbmRvdykuACxQYXJhbWV0ZXJzOtAqIGBwZXJpb2RgOiB0aGUgZXhwaXJlZCBwZXJpb2QgdG8gY2xlYXIgYWxpYXNlcyBmb3IuAQEqIGBsaW1pdGA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRvIHJlbW92ZSBpbiB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLv0EDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzWFBlcnNvbmFsVXNlcm5hbWVDaG9pY2UAAQgoU3RhbmRhbG9uZQQAQQQBIFVzZXJuYW1lAAAALFJlc2VydmF0aW9uBABBBAEgVXNlcm5hbWUAAQAAAQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNYRnJpZW5kUmVxdWVzdFJlZmVyZW5jZQAACAEYcGVyaW9kOAEMdTMyAAEMc2VxDAEIdTgAAAUFDGxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXIYcGFsbGV0EENhbGwEBFQAAQgoYWRkX2NodW5rcwwBNHJpbmdfZXhwb25lbnQJBQEwUmluZ0V4cG9uZW50AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAABOGVuY29kZWRfY2h1bmtzDQUBmEJvdW5kZWRWZWM8dTgsIE1heEVuY29kZWRDaHVua3NMZW48VD4+AAAQaEFkZHMgYSBuZXcgcGFnZSBvZiBjaHVua3MuAEEBVGhlIGhhc2ggb2YgdGhlIGNodW5rcyBtdXN0IG1hdGNoIHRoZSBoYXNoIHN0b3JlZCBvbi1jaGFpbiBpbiBgQ2h1bmtQYWdlSGFzaGVzYC7cVGhlIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSBwYWdlIGFscmVhZHkgZXhpc3RzIG9uLWNoYWluLlRzZXRfY2h1bmtfcGFnZV9oYXNoZXMIATRyaW5nX2V4cG9uZW50CQUBMFJpbmdFeHBvbmVudAABLHBhZ2VfaGFzaGVzEQUBzEJvdW5kZWRWZWM8Q2h1bmtQYWdlSGFzaCwgQ29uc3RVMzI8TUFYX1BBR0VfQ09VTlQ+PgABGA0BU2V0cyB0aGUgZXhwZWN0ZWQgaGFzaGVzIGZvciBjaHVuayBwYWdlcyBmb3IgYSBnaXZlbiByaW5nIGV4cG9uZW50LgAhAUFsbG93cyBzZXR0aW5nIHRoZSBleHBlY3RlZCBoYXNoZXMgdGhhdCBjaHVua3MgbXVzdCBtYXRjaCB3aGVuIGFkZGVkIHZpYTRgYWRkX2NodW5rc2AuAKxUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgkFEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdFeHBvbmVudAABDBBSMmU5AAkAFFIyZTEwAAoAFFIyZTE0AA4AAA0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAVQQBGFZlYzxUPgAAFQUMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBBDYWxsBARUAAE0LG1lcmdlX3JpbmdzDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxiYXNlX3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAUR0YXJnZXRfcmluZ19pbmRleDgBJFJpbmdJbmRleAAADFEBTWVyZ2UgdGhlIG1lbWJlcnMgaW4gdHdvIHJpbmdzIGludG8gYSBzaW5nbGUsIG5ldyByaW5nLiBJbiBvcmRlciBmb3IgdGhlIHJpbmdzIHRvIGJlNQFlbGlnaWJsZSBmb3IgbWVyZ2luZywgdGhleSBtdXN0IGJlIGJlbG93IDEvMiBvZiBtYXggY2FwYWNpdHksIGhhdmUgbm8gcGVuZGluZ+BzdXNwZW5zaW9ucyBhbmQgbm90IGJlIHRoZSB0b3AgcmluZyB1c2VkIGZvciBvbmJvYXJkaW5nLkxzZXRfb25ib2FyZGluZ19zaXplCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxvbmJvYXJkaW5nX3NpemU4AQx1MzIAAQRNAUZvcmNlIHNldCB0aGUgb25ib2FyZGluZyBzaXplIGZvciBhIGNvbGxlY3Rpb24uIFRoaXMgY2FsbCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuMHNlbGZfaW5jbHVkZQwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEYbWVtYmVyCAEsTWVtYmVyT2Y8VD4AATRjYWxsX3ZhbGlkX2F0KAEMdTY0AAIoQQFBbGxvdyBhIG1lbWJlciB3YWl0aW5nIGluIHRoZSBvbmJvYXJkaW5nIHF1ZXVlIHRvIGluY2x1ZGUgdGhlbXNlbHZlcyBpbnRvIGEgcmluZ00BYWZ0ZXIgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZC4gVGhpcyBieXBhc3NlcyB0aGUgbm9ybWFsIGNvaG9ydC1iYXNlZCBvbmJvYXJkaW5nIHNpemUwcmVxdWlyZW1lbnQuADkBVGhpcyBjYWxsIG11c3QgYmUgZGlzcGF0Y2hlZCB3aXRoIGEgYFNlbGZJbmNsdWRlYCBvcmlnaW4sIGF1dGhlbnRpY2F0ZWQgYnkgdGhlIQFgQXNNZW1iZXJgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4gVGhlIHJpbmdzIG11c3QgYmUgaW4gYXBwZW5kLW9ubHkgbW9kZS4ATQFUaGUgYGNhbGxfdmFsaWRfYXRgIHBhcmFtZXRlciBkaWN0YXRlcyB0aGUgdGltZSB3aW5kb3cgaW4gd2hpY2ggdGhpcyB0cmFuc2FjdGlvbiBpc00BdmFsaWQgYW5kIHJlcHJlc2VudHMgdGhlIHRpbWVzdGFtcCAoaW4gc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaCkgd2hlbiB0aGlzIGNhbGw4YmVjb21lcyB2YWxpZC5UYnVpbGRfcmluZ19hdXRob3JpemVkFAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmluZ19leHBvbmVudAkFATBSaW5nRXhwb25lbnQAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASh0b19pbmNsdWRlOAEMdTMyAGQY2EJ1aWxkIGEgcmluZyByb290IGZvciBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgDYU3VibWl0dGVkIGJ5IHRoZSBPQ1cgd2l0aCBhIGB0b19pbmNsdWRlYCBzbmFwc2hvdCBmcm9tKQFbYFNlbGY6OnNob3VsZF9idWlsZF9yaW5nYF0uIExlZnRvdmVycyBmcm9tIGxhdGVyIG9uYm9hcmRpbmcgYXJlIHBpY2tlZCB1cBkBb24gdGhlIG5leHQgT0NXIHRpY2ssIG9yIGJ5IHRoZSBtZW1iZXIgdmlhIFtgU2VsZjo6c2VsZl9pbmNsdWRlYF0gd2hlboBjb2hvcnQgZ2F0aW5nIHN0YWxscyBvbmJvYXJkaW5nLmhvbmJvYXJkX21lbWJlcnNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABEGhlYWQ4ASRQYWdlSW5kZXgAZQwRAU9uYm9hcmQgbWVtYmVycyBmcm9tIHRoZSBvbmJvYXJkaW5nIHF1ZXVlIGZvciBhIHNwZWNpZmljIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci5wbWVyZ2VfcXVldWVfcGFnZXNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEwaW5pdGlhbF9oZWFkOAEkUGFnZUluZGV4AAEgbmV3X2hlYWQ4ASRQYWdlSW5kZXgAZgwNAU1lcmdlIHRoZSB0b3AgdHdvIG9uYm9hcmRpbmcgcXVldWUgcGFnZXMgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLoByZW1vdmVfc3VzcGVuZGVkX2tleXNfYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABnDOxSZW1vdmUgc3VzcGVuZGVkIGtleXMgZnJvbSBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIubGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAaAzIRGVsZXRlIGEgcGFnZSBmb3IgYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLoBlbnF1ZXVlX3JpbmdfZGVsZXRpb25fYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABpHOxFbnF1ZXVlIGEgcmluZyBmb3IgZGVsZXRpb24gYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAhAUFyY2hpdmVzIHRoZSByaW5nIHJvb3QsIG5vdGlmaWVzIHN1YnNjcmliZXJzLCByZW1vdmVzIHJpbmcgbWV0YWRhdGEsIGFuZPhlbnF1ZXVlcyByaW5nIHBhZ2VzIGludG8gYFJpbmdEZWxldGlvblF1ZXVlYCBmb3IgcHJvY2Vzc2luZyBieXhgZGVsZXRlX3JpbmdfcGFnZV9hdXRob3JpemVkYC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLpxkZWxldGVfb25ib2FyZGluZ19xdWV1ZV9wYWdlX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAahz8RGVsZXRlIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBhcyBwYXJ0IG9mIGNvbGxlY3Rpb24gZGVsZXRpb24uAB0BUmVtb3ZlcyBhbGwgYE1lbWJlcnNgIGVudHJpZXMgZm9yIHRoZSBtZW1iZXJzIGluIHRoZSBwYWdlLCB0aGVuIHJlbW92ZXMlAXRoZSBwYWdlIGl0c2VsZi4gQ2FuIG9ubHkgcHJvY2VlZCB3aGVuIGFsbCByaW5ncyBhbmQgcmluZyBwYWdlcyBoYXZlIGJlZW44ZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLpxmaW5hbGl6ZV9jb2xsZWN0aW9uX2RlbGV0aW9uX2F1dGhvcml6ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgBrHHRGaW5hbGl6ZSBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIHJlbWFpbmluZyBwZXItY29sbGVjdGlvbiBzdG9yYWdlIGFuZCB0aGUgb3duZXIncyBpZGVudGlmaWVyGQFyZWZlcmVuY2UuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MsIHJpbmcgcGFnZXMsIGFuZCBvbmJvYXJkaW5nkHF1ZXVlIHBhZ2VzIGhhdmUgYmVlbiBmdWxseSBkZWxldGVkLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuaG1hcmtfcmluZ19zdGFsZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AGwY8E1hcmsgYSByaW5nIGFzIHN0YWxlIHNvIHRoZSBvZmZjaGFpbiB3b3JrZXIgd2lsbCByZWJ1aWxkIGl0LgAdAUFueW9uZSBjYW4gc3VibWl0IHRoaXMgdHJhbnNhY3Rpb24gaWYgdGhlIHJpbmcgaGFzIG1lbWJlcnMgdGhhdCBhcmUgbm90JQF5ZXQgaW5jbHVkZWQgaW4gdGhlIHJvb3QgKGB0b3RhbCA+IGluY2x1ZGVkYCkgYW5kIHRoZSByaW5nIGlzIG5vdCBhbHJlYWR5JQFtYXJrZWQgc3RhbGUuIFRoaXMgaXMgYSByZWNvdmVyeSBtZWNoYW5pc20gaW4gY2FzZSB0aGUgYFN0YWxlUmluZ3NgIGVudHJ5bHdhcyBsb3N0IG9yIG5ldmVyIGluc2VydGVkLnRjbGVhbl91cF9vbGRfcm9vdHNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABFGxpbWl0OAEMdTMyAG0ggENsZWFuIHVwIGV4cGlyZWQgb2xkIHJpbmcgcm9vdHMuABEBUmVtb3ZlcyB1cCB0byBgbGltaXRgIG9sZCByaW5nIHJvb3RzIGZvciB0aGUgZ2l2ZW4gcmluZyBpbiB0aGUgZ2l2ZW4sY29sbGVjdGlvbi4A0FRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBgTG9jYWxgIG9yIGBJbkJsb2NrYC4A9FRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuGQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDYWxsBARUAAFYFHNwbGl0BAEoc3BsaXRfaW50bx0FAWkBQm91bmRlZFZlYzwoQ29pblZhbHVlLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksClQ6Ok1heFNwbGl0T3V0cHV0cyw+AABQhFNwbGl0IGEgY29pbiBpbnRvIG11bHRpcGxlIGNvaW5zLgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb25YZXh0ZW5zaW9uIFtBc0NvaW5hZ2VdLgDUVGhlIGNhbGwgaXMgZnJlZSBhbmQgYWdlcyB0aGUgcmVzdWx0aW5nIGNvaW5zIGJ5IG9uZS4ASQFUaGUgYHNwbGl0X2ludG9gIHBhcmFtZXRlciBjb250YWlucyBhIHZlY3RvciBvZiBwYWlycywgZWFjaCBwYWlyIGNvbnRhaW5pbmcgYSBjb2luVQF2YWx1ZSBhbmQgYSBsaXN0IG9mIGRlc3RpbmF0aW9uIGFjY291bnQgaWRzLiBGb3IgZWFjaCBwYWlyLCBhIG5ldyBjb2luIHdpdGggdGhlIGdpdmVuxHZhbHVlIGlzIGNyZWF0ZWQgZm9yIGVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBpZC4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCngKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS5NASogVGhlIGNvaW4gdmFsdWUgbXVzdCBiZSB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kcCAgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS4tASogVGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgbXVzdCBlcXVhbCB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbiBjb2luLgkBKiBUaGUgbnVtYmVyIG9mIG91dHB1dHMgbXVzdCBub3QgZXhjZWVkIFtDb25maWc6Ok1heFNwbGl0T3V0cHV0c10uJQEqIFRoZSBhZ2Ugb2YgdGhlIG5ldyBjb2lucyBpcyBzZXQgdG8gdGhlIGFnZSBvZiB0aGUgb3JpZ2luIGNvaW4gcGx1cyBvbmUu4CogRWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4uIHRyYW5zZmVyBAEIdG8EATBUOjpBY2NvdW50SWQAASyMVHJhbnNmZXIgYSBjb2luIHRvIGFub3RoZXIgYWNjb3VudC4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4A0FRoZSBjYWxsIGlzIGZyZWUgYW5kIGFnZXMgdGhlIHJlc3VsdGluZyBjb2luIGJ5IG9uZS4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCncKiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLuAqIFRoZSBjb2luJ3MgYWdlIG11c3QgYmUgbGVzcyB0aGFuIFtDb25maWc6Ok1heGltdW1BZ2VdLlxsb2FkX3JlY3ljbGVyX3dpdGhfY29pbggBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcG0EAThTaWduYXR1cmVPZjxUPgACRGhMb2FkIGNvaW4gaW50byBhIHJlY3ljbGVyLgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb25YZXh0ZW5zaW9uIFtBc0NvaW5hZ2VdLgBEVGhlIGNhbGwgaXMgZnJlZS4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCkBASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLlEBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgY29pbidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLgUBKiBUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBmb3IgdGhlIGNvaW4ncyB2YWx1ZSBtdXN0IGFscmVhZHkgZXhpc3SEbG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0EAEwcHJlc2VydmF0aW9uLQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBOFNpZ25hdHVyZU9mPFQ+AANwkExvYWQgZXh0ZXJuYWwgYXNzZXQgaW50byBhIHJlY3ljbGVyLgCMVGhlIG9yaWdpbiBtdXN0IGJlIGEgc2lnbmVkIG9yaWdpbi4AgFRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmVmdW5kZWQuAEUBVGhlIGBwcmVzZXJ2YXRpb25gIHBhcmFtZXRlciBpbmRpY2F0ZXMgaG93IHRoZSBhc3NldCB0cmFuc2ZlciBzaG91bGQgcHJlc2VydmUgdGhlRHNpZ25lcidzIGFjY291bnQuADkBVGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgY29pbiB2YWx1ZSB0byBiZSBsb2FkZWQgaW50byB0aGUgcmVjeWNsZXIuPQFUaGUgZXF1aXZhbGVudCBhbW91bnQgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgc2lnbmVyIHRvTHRoZSBwYWxsZXQgYWNjb3VudC4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AVQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgcGFyYW1ldGVyIGlzIHRoZSBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlNGBtZW1iZXJfa2V5YC4ANFJlcXVpcmVtZW50czoBASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLkEBKiBUaGUgYHZhbHVlYCBtdXN0IGJlIHdpdGhpbiB0aGUgYm91bmRzIGRlZmluZWQgYnkgW0NvbmZpZzo6TWluaW11bUV4cG9uZW50XSBhbmRwICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLlUBKiBUaGUgc2lnbmVyIG11c3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCB0byBjb3ZlciB0aGUgZXF1aXZhbGVudIggIGFtb3VudCBmb3IgdGhlIGdpdmVuIGNvaW4gdmFsdWUuWQEqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTRgbWVtYmVyX2tleWAuoGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWQQATBwcmVzZXJ2YXRpb24tBQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZXUDASRDb2luVmFsdWUAAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBtBAE4U2lnbmF0dXJlT2Y8VD4AD0QtAUxvYWQgZXh0ZXJuYWwgYXNzZXQgaW50byBhIHJlY3ljbGVyIChpbmZhbGxpYmxlLCB2YWxpZGF0ZWQgdW5wYWlkIHZhcmlhbnQpLgBNAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlCQF0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFyaWFudCBbQXNDb2luYWdlOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkXS4A3FRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFsaWRhdGlvbiBwaGFzZSBtdXN0IGVuc3VyZToVAS0gVGhlIGBtZW1iZXJfa2V5YCBpcyB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZCBpbiBhbm90aGVyIHJlY3ljbGVyLkUBLSBUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLi0BLSBUaGUgYHZhbHVlYCBpcyB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kQQEgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0sIGFuZCBjYW4gYmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8gYW4gYXNzZXQgYW1vdW50LlkBLSBUaGUgc2lnbmVyIGhhcyBlbm91Z2ggYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCB0byBjb3ZlciB0aGUgZXF1aXZhbGVudCBhbW91bnTcICBmb3IgdGhlIGdpdmVuIGNvaW4gdmFsdWUgKHJlc3BlY3RpbmcgYHByZXNlcnZhdGlvbmApLqwtIFRoZSBub25jZSBpcyB2YWxpZCBmb3IgcmVwbGF5IHByb3RlY3Rpb24u1C0gVGhlIHJlY3ljbGVyIGNvbGxlY3Rpb24gZm9yIGB2YWx1ZWAgYWxyZWFkeSBleGlzdHMuAERUaGUgY2FsbCBpcyBmcmVlLrhsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkX2JhdGNoBAEUaXRlbXMxBQHUQm91bmRlZFZlYzxVbnBhaWRMb2FkSW5wdXQ8VD4sIFQ6Ok1heEJhdGNoVW5wYWlkTG9hZD4AEDQZAUJhdGNoZWQgdmFyaWFudCBvZiBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXS4ATQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZUEBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnQgW0FzQ29pbmFnZTo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0uIFRoZSBleHRlbnNpb25RAXZhbGlkYXRlcyBlYWNoIGlubmVyIGl0ZW0gYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2l0aGluLWJhdGNoIG1lbWJlci1rZXkgdW5pcXVlbmVzcyEBYW5kIHRoYXQgdGhlIHNpZ25lcidzIGJhbGFuY2UgY292ZXJzIHRoZSBzdW0gb2YgYWxsIGlubmVyIGFzc2V0IGFtb3VudHMuAEEBVGhpcyBjYWxsIGRpc3BhdGNoZXMgZWFjaCBpbm5lciBsb2FkIGJ5IHJlLXJ1bm5pbmcgdGhlIHNhbWUgY2hlY2tzIHRoZSBleHRlbnNpb25RAWp1c3QgcGVyZm9ybWVkIChzZWUgW2BSZWN5Y2xlck1hbmFnZXI6OmxvYWRgXSkuIFRoZSByZWR1bmRhbmN5IG1hdGNoZXMgdGhlIGRlZmVuc2l2ZU0BcGF0dGVybiB1c2VkIGJ5IFtgU2VsZjo6bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZGBdOiBhIGRpc3BhdGNoIHBhdGhFAXRoYXQgZmFpbHMgYW55IG9mIHRoZXNlIGNoZWNrcyBpcyBhIGxvZ2ljIGJ1ZyBpbiB0aGUgZXh0ZW5zaW9uLCBub3QgYSB1c2VyIGVycm9yLgBEVGhlIGNhbGwgaXMgZnJlZS5kdW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbhQBHGFsaWFzZXM9BQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZXUDASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAARklFVubG9hZCBhIHJlY3ljbGVyIHRvIG1pbnQgYSBuZXcgY29pbi4AXQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLCB3aGljaCBjYW4gYmVBAW9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbQXNDb2luYWdlXSB1c2luZyBgQXNVbmxvYWRUb2tlblBlb3BsZWAs7GBBc1VubG9hZFRva2VuTGl0ZVBlb3BsZWAsIG9yIGBBc1VubG9hZFRva2VuUGFpZGAgdmFyaWFudHMuAEkBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHByb3ZlIHRoZXkgb3duIG9uZSBvciBtb3JlIGNvaW5zIGluIGEgcmVjeWNsZXIgcmluZ10Bd2l0aG91dCByZXZlYWxpbmcgd2hpY2ggc3BlY2lmaWMgY29pbnMgdGhleSBvd24uIEl0IGNvbnNvbGlkYXRlcyBvbmUgb3IgbXVsdGlwbGUgaW5wdXRzaGludG8gYSBzaW5nbGUgb3V0cHV0IGNvaW4uACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi74KiBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC78KiBgX3JldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMuxCogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBuZXcgY29pbi4ANFJlcXVpcmVtZW50czopASogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSB3aXRoIGBmZWU6IFVubG9hZEZlZTo6UHJlcGFpZGAu8CogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uIQEqIFRoZSBgYWxpYXNlc2AgcHJvdmlkZWQgbXVzdCBtYXRjaCB0aGUgYWxpYXNlcyBkZXJpdmVkIGZyb20gdGhlIHByb29mcy4VASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgZnJvbSB0aGlzIHJlY3ljbGVyLrwqIFRoZSBudW1iZXIgb2YgYWxpYXNlcyBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLjUBKiBUaGUgcmVzdWx0aW5nIGNvbnNvbGlkYXRlZCB2YWx1ZSBtdXN0IG5vdCBleGNlZWQgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS6MdW5sb2FkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXQUARxhbGlhc2VzPQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAAFYPBVbmxvYWQgYSByZWN5Y2xlciB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldC4AUQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb25YZXh0ZW5zaW9uIFtBc0NvaW5hZ2VdLgBdAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6UHJlcGFpZF0gKHZpYSBmcmVlIG9yIHBhaWQgdW5sb2FkIHRva2VuKSwgbm8gZmVlIGlzIGRlZHVjdGVkLlEBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgdGhlIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSB1bmxvYWRlZCBhc3NldHMuADEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHdpdGhkcmF3IHRoZWlyIGNvaW5zIGJhY2sgaW50byB0aGUgdW5kZXJseWluZ2Rhc3NldCAoZS5nLiwgc3RhYmxlY29pbikuACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi74KiBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC78KiBgX3JldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMu5CogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB1bmRlcmx5aW5nIGFzc2V0LgA0UmVxdWlyZW1lbnRzOqwqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0u8CogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uWQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIChleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUgd2hlbiBgZmVlYBUBICBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgd2hpY2ggd2FzIHByZS1tYXJrZWQgaW4gdGhlIGV4dGVuc2lvbikurHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX2NvaW4IAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBtBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAGVCkBUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIGEgY29pbi4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4ASQFUaGUgY29pbiBpcyBjb25zdW1lZC4gVGhlIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBjb2luJ3MgdmFsdWUgYW5kIHRyYW5zZmVycmVkIHRvHQFbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uIFRoZSByZW1haW5pbmcgdmFsdWUgb2YgdGhlIGNvaW4gaXMgZGVzdHJveWVkLgDUSWYgdGhlIGNhbGwgZmFpbHMsIHRoZSBvcmlnaW4gY29pbiBpcyBzdGlsbCBjb25zdW1lZC4AXQFUbyBwcm90ZWN0IHRoZSB1c2VyIGFnYWluc3QgdmFyeWluZyBmZWVzLCBpZiB0aGUgY29pbidzIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgZmVlLCB0aGXoY2FsbCBpcyBpbnZhbGlkIChhbiBpbnZhbGlkIGNhbGwgbmV2ZXIgZ29lcyBpbnRvIGEgYmxvY2spLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgA0UmVxdWlyZW1lbnRzOuAqIFRoZSBjb2luJ3MgYWdlIG11c3QgYmUgbGVzcyB0aGFuIFtDb25maWc6Ok1heGltdW1BZ2VdLtQqIFRoZSBjb2luIHZhbHVlIG11c3QgYmUgc3VmZmljaWVudCB0byBjb3ZlciB0aGUgZmVlLtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC60cGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfbmF0aXZlCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABzxdAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyB0aGUgbmF0aXZlIGN1cnJlbmN5LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ARQFUaGlzIGFkZHMgdGhlIGBtZW1iZXJfa2V5YCB0byBhICJwYWlkIHVubG9hZCB0b2tlbiByaW5nIi4gQmVpbmcgcGFydCBvZiB0aGlzIHJpbmdJAWFsbG93cyB0aGUgdXNlciB0byBsYXRlciBnZW5lcmF0ZSBhbiBhbm9ueW1vdXMgYFVubG9hZFRva2VuYCB0byB1bmxvYWQgYSByZWN5Y2xlci4ADQFUaGUgZmVlIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIGNhbGxlciB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM62CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLrRwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9zdGFibGUIAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBtBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAIQF0BUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIHRoZSB1bmRlcmx5aW5nIGFzc2V0UGkuZS4gdGhlIHN0YWJsZWNvaW4uAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgBFAVRoaXMgYWRkcyB0aGUgYG1lbWJlcl9rZXlgIHRvIGEgInBhaWQgdW5sb2FkIHRva2VuIHJpbmciLiBCZWluZyBwYXJ0IG9mIHRoaXMgcmluZ0kBYWxsb3dzIHRoZSB1c2VyIHRvIGxhdGVyIGdlbmVyYXRlIGFuIGFub255bW91cyBgVW5sb2FkVG9rZW5gIHRvIHVubG9hZCBhIHJlY3ljbGVyLgANAVRoZSBmZWUgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgY2FsbGVyIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXS4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4ANFJlcXVpcmVtZW50czrYKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQuwHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X2FuZF92b3VjaGVycxwBHGFsaWFzZXM9BQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZXUDASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAAFUZXh0ZXJuYWxfYXNzZXRfYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwbmV3X3ZvdWNoZXJzQQUB4EJvdW5kZWRWZWM8KENvaW5WYWx1ZSwgTWVtYmVyT2Y8VD4pLCBUOjpNYXhTcGxpdE91dHB1dHM+AAmMCQFVbmxvYWQgYSByZWN5Y2xlciBpbnRvIGEgbWl4IG9mIGV4dGVybmFsIGFzc2V0IGFuZCBmcmVzaCB2b3VjaGVycy4AUQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb25YZXh0ZW5zaW9uIFtBc0NvaW5hZ2VdLgBZAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byBvZmZib2FyZCBwYXJ0IG9mIHRoZSB1bmxvYWRlZCB2YWx1ZSBpbnRvIHRoZSB1bmRlcmx5aW5n6GFzc2V0IHdoaWxlIHJlbWludGluZyB0aGUgcmVzdCBhcyBmcmVzaCByZWN5Y2xlciB2b3VjaGVycy4ARQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBpcyB0cmFuc2ZlcnJlZCBhcy1pcy41AVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgc3BlY2lmaWVkBQFgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCwgc28gdGhlIHJlY2lwaWVudCByZWNlaXZlcyB0aGUgcmVtYWluZGVyLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu+CogYHJldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhcyBwcm9vZnMu/CogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBleHRlcm5hbCBhc3NldCBwb3J0aW9uLl0BKiBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YDogdGhlIGdyb3NzIGFzc2V0IHBvcnRpb24gdG8gb2ZmYm9hcmQgZnJvbSB0aGUgdW5sb2FkZWQgdmFsdWUuYQEqIGBuZXdfdm91Y2hlcnNgOiB0aGUgZnJlc2ggcmVjeWNsZXIgdm91Y2hlcnMgdG8gbWludCBmcm9tIHRoZSByZW1haW5pbmcgdW5sb2FkZWQgdmFsdWUuAFkBVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgYWx3YXlzIGVxdWFsIHRoZSBhc3NldCBwb3J0aW9uIHBsdXMgdGhlIHZvdWNoZXIgcG9ydGlvbi5VAUluIGBGcm9tT3V0cHV0YCBtb2RlLCB0aGUgYXNzZXQgcG9ydGlvbiBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBjb3ZlciB0aGUgdW5sb2FkIGZlZS4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLlkBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCAoZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lIHdoZW4gYGZlZWAVASAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHdoaWNoIHdhcyBwcmUtbWFya2VkIGluIHRoZSBleHRlbnNpb24pLkUBKiBgbmV3X3ZvdWNoZXJzYCBtdXN0IG5vdCBiZSBlbXB0eSwgYW5kIGFsbCB2b3VjaGVyIG1lbWJlciBrZXlzIG11c3QgYmUgdmFsaWQgYW5kJCAgdW51c2VkLmEBKiBUaGUgdG90YWwgdW5sb2FkZWQgdmFsdWUgbXVzdCBlcXVhbCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBwbHVzIHRoZSB0b3RhbCBhc3NldCB2YWx1ZVAgIG9mIGBuZXdfdm91Y2hlcnNgLkUBKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBtdXN0IGNvdmVyIHRoZSBmZWUuxHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMQARRpbnB1dE0FAaBVbmxvYWRSZWN5Y2xlcklucHV0PFQ6Ok1heENvbnNvbGlkYXRpb24+AAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeVEFASxGZWVDdXJyZW5jeQALGDEBVW5sb2FkIGEgcmVjeWNsZXIgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQgKG5vbi1hbm9ueW1vdXMpLgBVAUNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91c110Zm9yIHRoZSBzaW5nbGUtcmVjeWNsZXIgY2FzZS4AWQFTZWUgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcnNfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzXSBmb3IgZnVsbCBkb2N1bWVudGF0aW9uLsh1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91cxABGGlucHV0c1UFAbRWZWM8VW5sb2FkUmVjeWNsZXJJbnB1dDxUOjpNYXhDb25zb2xpZGF0aW9uPj4AATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABCHRvBAEwVDo6QWNjb3VudElkAAEwZmVlX2N1cnJlbmN5UQUBLEZlZUN1cnJlbmN5AAxYUQFVbmxvYWQgbXVsdGlwbGUgcmVjeWNsZXJzIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0IChub24tYW5vbnltb3VzKS4APQFUaGlzIGlzIGEgbm9uLWFub255bW91cyB2ZXJzaW9uIG9mIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRdQQF3aGVyZSB0aGUgZmVlIGlzIHBhaWQgZXhwbGljaXRseSBieSB0aGUgc2lnbmVyIHJhdGhlciB0aGFuIHRocm91Z2ggdGhlIGFub255bW91c7h1bmxvYWQgdG9rZW4gcmluZywgYW5kIGZvciBtdWx0aXBsZSByZWN5Y2xlcnMuADEBVGhlIGZlZSBjaGFyZ2VkIGlzIG9uZSB1bmxvYWQgdG9rZW4gZmVlIHBlciByZWN5Y2xlciAoaS5lLiwgYGlucHV0cy5sZW4oKWApLgAsUGFyYW1ldGVyczoxASogYGlucHV0c2A6IEEgbGlzdCBvZiBpbnB1dHMsIHNwZWNpZnlpbmcgdGhlIHJlY3ljbGVyIGFuZCBhbGlhc2VzIHRvIHVubG9hZC5VASogYGFsaWFzX3Byb29mc2A6IHRoZSBwcm9vZnMgZm9yIGFsbCBhbGlhc2VzIGFjcm9zcyBhbGwgaW5wdXRzLCBzaWduZWQgb3ZlciBhIG1lc3NhZ2VVASAgdGhhdCBpbmNsdWRlcyB0aGUgc2lnbmVyLiBUaGUgcHJvb2ZzIG11c3QgY29ycmVzcG9uZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGFsaWFzZXMgaW4sICBgaW5wdXRzYC64KiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIGFzc2V0LjEBKiBgZmVlX2N1cnJlbmN5YDogd2hldGhlciB0byBwYXkgdGhlIGZlZSBpbiBuYXRpdmUgY3VycmVuY3kgb3Igc3RhYmxlIGFzc2V0LgA0UmVxdWlyZW1lbnRzOnAqIFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQulCogQWxsIHNwZWNpZmllZCByZWN5Y2xlcnMgbXVzdCBleGlzdC4tASogVGhlIGFsaWFzIHByb29mcyBtdXN0IGNvcnJlc3BvbmQgc2VxdWVudGlhbGx5IHRvIHRoZSBhbGlhc2VzIGluIGBpbnB1dHNgLjkBKiBgaW5wdXRzYCBtdXN0IG5vdCBiZSBlbXB0eSBhbmQgZWFjaCBlbGVtZW50IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgYWxpYXMuQQEqIFRoZSBzaWduZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgYmFsYW5jZSB0byBwYXkgdGhlIGZlZSAob25lIGZlZSBwZXIgcmVjeWNsZXIpLmh1bmxvYWRfcmVjeWNsZXJfaW50b19jb2lucxgBHGFsaWFzZXM9BQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZXUDASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABKHNwbGl0X2ludG8dBQFpAUJvdW5kZWRWZWM8KENvaW5WYWx1ZSwgQm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFNwbGl0T3V0cHV0cz4pLApUOjpNYXhTcGxpdE91dHB1dHMsPgABHG1heF9mZWXEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADbTUVW5sb2FkIGEgcmVjeWNsZXIgdG8gbWludCBtdWx0aXBsZSBuZXcgY29pbnMgKHNwbGl0KS4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLgBFAVRoaXMgZnVuY3Rpb24gY29tYmluZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5dIGFuZEUBW1NlbGY6OnNwbGl0XSBpbiBhIHNpbmdsZSBhdG9taWMgb3BlcmF0aW9uLiBUaGUgcmVzdWx0aW5nIGNvaW5zJyBhZ2UgaXMgMSBiZWNhdXNlRQF0aGUgYWN0aW9uIG9mIHNwbGl0dGluZyBhZ2UgY29pbnMuIFRoaXMgaXMgYWxzbyBpbXBvcnRhbnQgYmVjYXVzZSByZXN1bHRpbmcgY29pbnPoYXJlIG5vdCBlbnRpcmVseSBmcmVzaCwgdGhleSBjYW4gYmUgbGlua2VkIHRvIG90aGVyIGNvaW5zLgBZAVVubGlrZSBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbl0sIHRoaXMgY2FsbCBkb2VzICoqbm90KiogcmVxdWlyZSB0aGUgbnVtYmVyIG9mdGFsaWFzZXMgdG8gYmUgYSBwb3dlciBvZiB0d28uACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi74KiBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC74KiBgcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzX3Byb29mcy5JASogYHNwbGl0X2ludG9gOiBhIHZlY3RvciBvZiBwYWlycywgZWFjaCBwYWlyIGNvbnRhaW5pbmcgYSBjb2luIHZhbHVlIGFuZCBhIGxpc3Qgb2ZoICBkZXN0aW5hdGlvbiBhY2NvdW50IGlkcy5ZASogYG1heF9mZWVgOiB0aGUgbWF4aW11bSBmZWUgdGhlIGNhbGxlciBpcyB3aWxsaW5nIHRvIHBheSwgZXhwcmVzc2VkIGluIHRoZSB1bmRlcmx5aW5nSQEgIGFzc2V0IGJhbGFuY2UuIEl0IG11c3QgYmUgZXF1YWwgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdG90YWwgdmFsdWUgb2YgdGhlOQEgIHVubG9hZGVkIGNvaW5zIGFuZCB0aGUgdG90YWwgdmFsdWUgb2YgdGhlIG5ldyBjb2lucyBkZWZpbmVkIGluIGBzcGxpdF9pbnRvYC4AyCAgV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgdGhpcyBtdXN0IGJlIDAuRQEgIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoaXMgYW1vdW50IGlzIGRlZHVjdGVkIGZyb20gdGhlIGlucHV0OiB0aGVVASAgbmV0d29yayBmZWUgaXMgdHJhbnNmZXJyZWQgdG8gW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dIGFuZCBhbnkgcmVtYWluZGVyIGlzIGJ1cm5lZC5BASAgVGhlIGNhbGxlciBjYW4gcXVlcnkgYGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fYXNzZXRgIHRvIGVzdGltYXRlIHRoZSBmZWUuAGEBICBUaGlzIHBhcmFtZXRlciBzZXJ2ZXMgYXMgYSBzYWZlZ3VhcmQ6IHRoZSB0cmFuc2FjdGlvbiBpcyByZWplY3RlZCBhdCB2YWxpZGF0aW9uIGlmIHRoZUEBICBhY3R1YWwgbmV0d29yayBmZWUgZXhjZWVkcyBgbWF4X2ZlZWAsIHByb3RlY3RpbmcgdGhlIGNhbGxlciBmcm9tIGV4Y2Vzc2l2ZSBmZWVdASAgaW5jcmVhc2VzIHRoYXQgd291bGQgcmVuZGVyIHRoZSBhcmd1bWVudCBgc3BsaXRfaW50b2AgaW52YWxpZCAodW5sb2FkZWQgZnVuZHMgbXVzdCBiZZggIGhpZ2hlciB0aGFuIHRoZSBzcGxpdCBwbHVzIHRoZSBmZWUpLgA0UmVxdWlyZW1lbnRzOqwqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0u8CogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uIQEqIFRoZSBgYWxpYXNlc2AgcHJvdmlkZWQgbXVzdCBtYXRjaCB0aGUgYWxpYXNlcyBkZXJpdmVkIGZyb20gdGhlIHByb29mcy5hASogVGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgZGVmaW5lZCBpbiBgc3BsaXRfaW50b2AgcGx1cyBgbWF4X2ZlZWAgbXVzdCBlcXVhbCB0aGWQICB0b3RhbCB2YWx1ZSBvZiB0aGUgdW5sb2FkZWQgY29pbnMuVQEqIGBtYXhfZmVlYCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIG1pbmltdW0gY29pbi4gKFRoaXMgaXMgaW1wbGllZCBieSB0aGUgY29uZGl0aW9uJCAgYWJvdmUpLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLtwqIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6UHJlcGFpZF0sIGBtYXhfZmVlYCBtdXN0IGJlIDAuLQEqIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIGBtYXhfZmVlYCBtdXN0IGNvdmVyIHRoZSBuZXR3b3JrIGZlZS6gZGlyZWN0X29mZmJvYXJkX2NvaW5faW50b19leHRlcm5hbF9hc3NldAQBCHRvBAEwVDo6QWNjb3VudElkAA44JQFEaXJlY3RseSBvZmZib2FyZCBhIGZyZXNoLCAwLWFnZSBjb2luIGludG8gdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQuAEUBVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIG9idGFpbmVkIHRocm91Z2ggW0FzQ29pbmFnZV0gdXNpbmcgYEFzQ29pbmAuAA0BQmVjYXVzZSB0aGUgY29pbiBtdXN0IGJlIGZyZXNoIChgYWdlID09IDBgKSwgdGhpcyBjYWxsIGJ5cGFzc2VzIHRoZUkBcmVjeWNsZXIvdW5sb2FkLXRva2VuIG9mZmJvYXJkaW5nIGZsb3cgYW5kIHJlbGVhc2VzIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGRpcmVjdGx5LgAsUGFyYW1ldGVyczo9ASogYHRvYDogZGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVzIHRoZSByZWxlYXNlZCB1bmRlcmx5aW5nIGFzc2V0IGFtb3VudC4ANFJlcXVpcmVtZW50czqQKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6Q29pbl0uqCogVGhlIGNvaW4gbXVzdCBiZSBmcmVzaDogYGNvaW4uYWdlID09IDBgLgkBKiBUaGUgY29pbiB2YWx1ZSBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgdW5kZXJseWluZy1hc3NldCBhbW91bnQuOGNsZWFuX3JlY3ljbGVyBAEUdmFsdWV1AwEkQ29pblZhbHVlAGUcdENsZWFuIHVwIGFuIGV4cGlyZWQgcmVjeWNsZXIuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS4ADQFUaGlzIHJlbW92ZXMgYW4gb2xkIHJlY3ljbGVyIHRoYXQgaGFzIGV4Y2VlZGVkIGl0cyBleHBpcmF0aW9uIHRpbWUuSQFBbnkgcmVtYWluaW5nIChub3QgdW5sb2FkZWQpIHZhbHVlIGluIHRoZSByZWN5Y2xlciBpcyBjb25zaWRlcmVkIGxvc3QgYW5kIGFkZGVkIHRvdFtUb3RhbFZhbHVlT2ZEZXN0cm95ZWRDb2luc10uZGNsZWFuX2NvbnN1bWVkX2ZyZWVfdG9rZW4EARhwZXJpb2Q4ARhQZXJpb2QAZgz8Q2xlYW51cCBzdG9yYWdlIGZvciBjb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgb2Ygb2xkIHBlcmlvZHMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZwgBGHBlcmlvZDgBGFBlcmlvZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaBgJAUNsZWFuIHVwIGEgc2luZ2xlIHJpbmcgaW4gYW4gZXhwaXJlZCBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuKQFSaW5ncyBtdXN0IGJlIGNsZWFuZWQgc2VxdWVudGlhbGx5IChyaW5nIDAgZmlyc3QsIHRoZW4gMSwgZXRjLikgYmVmb3JlIHRoZXRjb2xsZWN0aW9uIGNhbiBiZSBkZWxldGVkIHZpYY0BW2BkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uYF0oU2VsZjo6ZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbikuTGNsZWFuX3JlY3ljbGVyX2R1c3QAaRRwQ2xlYW4gdXAgZHVzdCBmb3IgcmVjeWNsZXJzLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuSQFSZW1vdmVzIHVwIHRvIERVU1RfQ0xFQU5VUF9CQVRDSF9TSVpFIHVubG9hZGVkIGFsaWFzIGVudHJpZXMgcGVyIGNhbGwgdG8gYm91bmQgdGhlKG9wZXJhdGlvbi5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fZHVzdABqDJRDbGVhbiB1cCBkdXN0IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6sZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbgQBGHBlcmlvZDgBGFBlcmlvZABrGEUBRGVsZXRlIGFuIGV4cGlyZWQgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBhZnRlciBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6QQWxsIHJpbmdzIG11c3QgaGF2ZSBiZWVuIGNsZWFuZWQgdmlhQQFbYGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmdgXShTZWxmOjpjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nKSBiZWZvcmUgdGhpczhjYW4gYmUgY2FsbGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4dBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASEFBFMAAAQAKQUBGFZlYzxUPgAAIQUAAAQIdQMlBQAlBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABADMARhWZWM8VD4AACkFAAACIQUALQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldERDb2RlY1ByZXNlcnZhdGlvbgABDChFeHBlbmRhYmxlAAAAHFByb3RlY3QAAQAgUHJlc2VydmUAAgAAMQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE1BQRTAAAEADkFARhWZWM8VD4AADUFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQ8VW5wYWlkTG9hZElucHV0BARUAAAQATBwcmVzZXJ2YXRpb24tBQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZXUDASRDb2luVmFsdWUAAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBtBAE4U2lnbmF0dXJlT2Y8VD4AADkFAAACNQUAPQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAVQQBGFZlYzxUPgAAQQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFFBQRTAAAEAEkFARhWZWM8VD4AAEUFAAAECHUDCABJBQAAAkUFAE0FDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXRMVW5sb2FkUmVjeWNsZXJJbnB1dAQwQWxpYXNlc0JvdW5kAAAQARR2YWx1ZXUDASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABHGFsaWFzZXM9BQF8Qm91bmRlZFZlYzxBbGlhcywgQWxpYXNlc0JvdW5kPgAAUQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldCxGZWVDdXJyZW5jeQABCBhOYXRpdmUAAAAYU3RhYmxlAAEAAFUFAAACTQUAWQUMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBBDYWxsBARUAAEcJHN1YnNjcmliZQwBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lknAEYUGFyYUlkAAFMbWVtYmVyc19jb2xsZWN0aW9uc10FAR0BQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyLD4AATBwYWxsZXRfaW5kZXgMAQh1OAAALKBSZWdpc3RlcnMgdGhlIHBhcmFjaGFpbiBhcyBhIHN1YnNjcmliZXIu0FRoZSBpbml0aWFsIHN0YXRlIHdpbGwgYmUgc2VudCBvdmVyIHNob3J0bHkgdmlhIFhDTS4AJCMjIE9yaWdpbqhSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYCAoZ292ZXJuYW5jZS9yb290KS4ANCMjIFBhcmFtZXRlcnMVAS0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJpbmcgcGFyYWNoYWluLkUBLSBgbWVtYmVyc19jb2xsZWN0aW9uc2A6IExpc3Qgb2YgY29sbGVjdGlvbiBpZGVudGlmaWVycyB0byBzdWJzY3JpYmUgdG8gYW5kIHRoZWlycCAgcmVzcGVjdGl2ZSByaW5nIGV4cG9uZW50cy41AS0gYHBhbGxldF9pbmRleGA6IFBhbGxldCBpbmRleCBvZiBtZW1iZXJzLXN1YnNjcmliZXIgb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uLHVuc3Vic2NyaWJlBAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRpBQE4T3B0aW9uPFBhcmFJZD4AASRkVW5zdWJzY3JpYmVzIGEgcGFyYWNoYWluLgAkIyMgT3JpZ2luPQEtICoqU2VsZi11bnN1YnNjcmliZSoqOiBTdWJzY3JpYmVyIHBhcmFjaGFpbiB2aWEgWENNIChgRW5zdXJlU3Vic2NyaWJlck9yaWdpbmAp1C0gKipHb3Zlcm5hbmNlIHVuc3Vic2NyaWJlKio6IFJlcXVpcmVzIGBNYW5hZ2VPcmlnaW5gADQjIyBQYXJhbWV0ZXJzYQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgdG8gdW5zdWJzY3JpYmUuIFJlcXVpcmVkIGZvciBnb3Zlcm5hbmNlLCBpZ25vcmVkxCAgZm9yIHNlbGYtdW5zdWJzY3JpYmUgKGRlcml2ZWQgZnJvbSBYQ00gb3JpZ2luKS44cmVxdWVzdF9yZXBsYXkMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAFEcmluZ19yb290X2luZGljZXNtBQGwQm91bmRlZFZlYzxSaW5nSW5kZXgsIFQ6Ok1heFVwZGF0ZXNQZXJCYXRjaD4AAiScUmVxdWVzdHMgcmVwbGF5IG9mIHNwZWNpZmljIHJpbmcgcm9vdHMuADUBUGVybWlzc2lvbmxlc3Mg4oCUIGFueSBzaWduZWQgb3JpZ2luIGNhbiByZXF1ZXN0IGEgcmVwbGF5IGZvciBhbnkgc3Vic2NyaWJlci5JAVRoZSBzdWJzY3JpYmVyIHBhcmFjaGFpbiBpcyBpZGVudGlmaWVkIGJ5IHRoZSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgIHBhcmFtZXRlci4ALFBhcmFtZXRlcnM66C0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJlci6YLSBgaWRlbnRpZmllcmA6IENvbGxlY3Rpb24gaWRlbnRpZmllci5ZAS0gYHJpbmdfcm9vdF9pbmRpY2VzYDogTGlzdCBvZiByaW5nIHJvb3QgaW5kaWNlcywgbXVzdCBiZSBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuPGVucXVldWVfdXBkYXRlcwQBJHNlbmRfcGFnZS0DAQx1MTYAAwz4RW5xdWV1ZXMgcGVuZGluZyB1cGRhdGVzIGludG8gYSBzZWFsZWQgYmF0Y2ggZm9yIGRpc3RyaWJ1dGlvbi4AxEF1dGhvcml6ZWQgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4oc2VuZF9iYXRjaAgBHHBhcmFfaWScARhQYXJhSWQAASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAQMxFNlbmRzIHRoZSBjdXJyZW50IGJhdGNoIHRvIGEgc3BlY2lmaWMgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci44c2VuZF9pbml0X3BhZ2UMARxwYXJhX2lknAEYUGFyYUlkAAFgY3VycmVudF9jb2xsZWN0aW9uX2luZGV4OAEMdTMyAAFAYWZ0ZXJfcmluZ19pbmRleAkDAURPcHRpb248UmluZ0luZGV4PgAFDNhTZW5kcyBvbmUgcGFnZSBvZiBpbml0aWFsaXphdGlvbiBkYXRhIHRvIGEgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci5MYWJhbmRvbl9zdHVja19iYXRjaAAGFORBYmFuZG9ucyBhIHN0dWNrIGJhdGNoIHRoYXQgZXhjZWVkZWQgYFN0dWNrQmF0Y2hUaW1lb3V0YC4xAVN1YnNjcmliZXJzIHRoYXQgZGlkIG5vdCByZWNlaXZlIHRoZSBiYXRjaCBjYW4gcmVjb3ZlciB2aWEgYHJlcXVlc3RfcmVwbGF5YC4ANQFBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIgd2hlbiBhIGJhdGNoIGhhc7BiZWVuIGFjdGl2ZSBsb25nZXIgdGhhbiBgU3R1Y2tCYXRjaFRpbWVvdXRgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5dBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWEFBFMAAAQAZQUBGFZlYzxUPgAAYQUAAAQICAkFAGUFAAACYQUAaQUEGE9wdGlvbgQEVAGcAQgQTm9uZQAAABBTb21lBACcAAABAABtBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABlBAEYVmVjPFQ+AABxBQyMaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb24YcGFsbGV0EENhbGwEBFQAAQR4c2V0X2FpcmRyb3Bfc2NoZWR1bGluZ19lbmFibGVkBAEcZW5hYmxlZMgBEGJvb2wAABABAUVuYWJsZSBvciBkaXNhYmxlIG9uX3BvbGwgYWlyZHJvcCBzY2hlZHVsaW5nLiBXaGlsZSBkaXNhYmxlZCB0aGUJAWBPcGVuaW5nQWlyZHJvcFBvb2xzYCBzdGF0ZSByZW1haW5zIGFjdGl2ZSBidXQgb3BlbnMgbm8gbmV3IHBvb2xzLikBUmUtZW5hYmxpbmcgZG9lcyBub3QgYmFjay1maWxsIHNraXBwZWQgcGVyaW9kczogYXQgbW9zdCBvbmUgcG9vbCBpcyBvcGVuZWSwcGVyIHBlcmlvZCwgYW5kIG9ubHkgZm9yIHRoZSBjdXJyZW50IHBlcmlvZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMudQUMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBBDYWxsBARUAAEMPG9wZW5fcHJpemVfcG9vbBwBGHRhcmdldHkFASxQcml6ZVRhcmdldAABKGRpc3BhdGNoZXIEATBUOjpBY2NvdW50SWQAASB2YWxpZGl0eTgBDHUzMgABKG51bV9wcml6ZXM4AQx1MzIAASxwcml6ZV92YWx1ZcQBREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AATB3aW5uZXJfcmF0aW99BQEcUGVybWlsbAAAFEEBT3BlbiBhIG5ldyBwcml6ZSBwb29sIGZyb20gd2hpY2ggYG51bV9wcml6ZXNgIGFsaWFzZXMgaW4gdGhlIGB0YXJnZXRgIHBvcHVsYXRpb26AbWF5IGNsYWltIGEgZml4ZWQgYHByaXplX3ZhbHVlYC4A4E9yaWdpbiBtdXN0IGJlIGBUOjpNYW5hZ2VyT3JpZ2luYC4gT3RoZXIgcGFsbGV0cyBjYW4gdXNlCQFbYEFpcmRyb3BBcGk6Om9wZW5fcHJpemVfcG9vbGBdIChnYXRlZCBieSBgVDo6VHJhaXRDYWxsZXJPcmlnaW5gKS4sY2xhaW1fcHJpemUYARxwb29sX2lkOAEsUHJpemVQb29sSWQAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEUcHJvb2Z9AwEoUHJvb2ZPZjxUPgABFGFsaWFzCAEUQWxpYXMAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABTBUBQ2xhaW0gYSBwcml6ZSBmcm9tIGEgYFByaXplVGFyZ2V0OjpQZW9wbGVgIHBvb2wgYnkgc3VibWl0dGluZyBhIHJpbmctaG1lbWJlcnNoaXAgcHJvb2YgZGlyZWN0bHkuADEBVGhpcyBpcyBhbiBhdXRob3JpemVkIGV4dHJpbnNpYzogdGhlIHByb29mIGl0c2VsZiBpcyB0aGUgYXV0aGVudGljYXRpb24uIFRoZUUBcGVyLXBvb2wgW2BQcml6ZVBvb2xDbGFpbXNgXSBzdG9yYWdlIGlzIHRoZSByZXBsYXkgZ3VhcmQg4oCUIGVhY2ggYWxpYXMgbWF5IGNsYWltOQFvbmNlIHBlciBwb29sLiBUaGUgcHJvb2YgaXMgYm91bmQgdG8gYGJlbmVmaWNpYXJ5YCAoc28gYSBjYXB0dXJlZCBwcm9vZiBjYW5ub3Q9AXJlZGlyZWN0IHRoZSBwcml6ZSkgYW5kIHRvIHRoZSBwb29sJ3MgY29udGV4dCAoc28gYSBwcm9vZiBjYW5ub3QgYmUgcmVwbGF5ZWQgb25IYSBkaWZmZXJlbnQgcG9vbCkuACUBYGFsaWFzYCBpcyB0aGUgdmFsdWUgdGhlIHByb29mIHZlcmlmaWVzIHRvOyB0aGUgYXV0aG9yaXplIGNsb3N1cmUgcmVqZWN0cyEBYEFsaWFzTWlzbWF0Y2hgIGlmIGl0IGRpc2FncmVlcyB3aXRoIHRoZSBwcm9vZi4gVGhlIGRpc3BhdGNoIGJvZHkgdHJ1c3RzNQFgYWxpYXNgIGFuZCBza2lwcyBhIHNlY29uZCB2ZXJpZmljYXRpb24g4oCUIHRoaXMgaXMgc291bmQgYmVjYXVzZSB0aGUgY2FsbCBpczkBb25seSByZWFjaGFibGUgdGhyb3VnaCBgZW5zdXJlX2F1dGhvcml6ZWRgLCB3aGljaCBwcm92ZXMgdGhlIGF1dGhvcml6ZSBjbG9zdXJlJGFjY2VwdGVkLgAxAVRoZSBwcm9vZidzIGNvbnRleHQgaXMgYGNvbnRleHRfZm9yX3Bvb2xfaWQocG9vbF9pZClgOyB0aGUgcHJvb2YgaXMgdmVyaWZpZWQ1AWFnYWluc3QgYFBFT1BMRV9JREVOVElGSUVSYCAobGl0ZS1wZW9wbGUgYXJlIG5vdCBlbGlnaWJsZSkuIFRoZSBwb29sJ3MgdGFyZ2V0LQFtdXN0IGJlIGBQcml6ZVRhcmdldDo6UGVvcGxlYDsgYEdhbWVQYXJ0aWNpcGFudHNgIHBvb2xzIGFyZSBjbGFpbWVkIHZpYSB0aGUBAWdhbWUgcGFsbGV0LCB3aGljaCBmb3J3YXJkcyB0byBbYEFpcmRyb3BBcGk6OmNsYWltX2dhbWVfcHJpemVgXS5AY2xvc2VfcHJpemVfcG9vbAQBHHBvb2xfaWQ4ASxQcml6ZVBvb2xJZAACGC0BQ2xvc2UgYSBwcml6ZSBwb29sIGVhcmx5LiBPcmlnaW4gbXVzdCBiZSB0aGUgcG9vbCdzIGBkaXNwYXRjaGVyYCBvciBzYXRpc2Z5QQFgVDo6TWFuYWdlck9yaWdpbmAuIFJlbGVhc2VzIGBwcml6ZV92YWx1ZSAqIHByaXplc19yZW1haW5pbmdgIG9mIGhlbGQgZnVuZHMgYmFjazUBdG8gdGhlIGFpcmRyb3AgcG90IGFuZCBtYXJrcyB0aGUgcG9vbCBleHBpcmVkLW5vdyBzbyB0aGUgb24tcG9sbCBjbGVhbnVwIGxvb3A9AWRyYWlucyBgUHJpemVQb29sQ2xhaW1zYCBvdmVyIG11bHRpcGxlIHRpY2tzLiBUaGlzIGtlZXBzIHRoZSBleHRyaW5zaWMncyB3ZWlnaHQdAWJvdW5kZWQgYnkgYFByaXplUG9vbENsZWFyTGltaXRgIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgY2xhaW1zIHRoZSBwb29sMGFjY3VtdWxhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy55BQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0LFByaXplVGFyZ2V0AAEIGFBlb3BsZQAAAEBHYW1lUGFydGljaXBhbnRzBAA4AQx1MzIAAQAAfQUMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJtaWxsAAAEADgBDHUzMgAAgQUMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBBDYWxsBARUAAEQQGZvcmNlX3NldF9jdXJzb3IEARhjdXJzb3KFBQFMT3B0aW9uPEN1cnNvck9mPFQ+PgAAFF0BQWxsb3dzIHJvb3QgdG8gc2V0IGEgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQsIHN0b3Agb3IgZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEkBU2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBuZWVkZWQgYW5kIGlzIG9ubHkgaW4gcGxhY2UgYXMgZW1lcmdlbmN5IG1lYXN1cmUuIE5vdGUgdGhhdAUBcmVzdGFydGluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaW4gdGhpcyBtYW5uZXIgd2lsbCBub3QgY2FsbCB0aGUtAVtgTWlncmF0aW9uU3RhdHVzSGFuZGxlcjo6c3RhcnRlZGBdIGhvb2sgb3IgZW1pdCBhbiBgVXBncmFkZVN0YXJ0ZWRgIGV2ZW50Llxmb3JjZV9zZXRfYWN0aXZlX2N1cnNvcgwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29ylQUBWE9wdGlvbjxSYXdDdXJzb3JPZjxUPj4AAShzdGFydGVkX2F0CQMBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3KZBQGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuhQUEGE9wdGlvbgQEVAGJBQEIEE5vbmUAAAAQU29tZQQAiQUAAAEAAIkFCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgGNBSxCbG9ja051bWJlcgE4AQgYQWN0aXZlBACRBQGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAI0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAkQUIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yAY0FLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3KVBQE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAAJUFBBhPcHRpb24EBFQBjQUBCBBOb25lAAAAEFNvbWUEAI0FAAABAACZBQhEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAZ0FAQggU3BlY2lmaWMEAKEFARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXQJAwEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3KlBQE8T3B0aW9uPFZlYzx1OD4+AAEAAJ0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAoQUAAAKdBQClBQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAKkFDFxwYWxsZXRfdmVyaWZ5X3NpZ25hdHVyZSRleHRlbnNpb248VmVyaWZ5U2lnbmF0dXJlBARUAAEIIERpc2FibGVkAAAAGFNpZ25lZAgBJHNpZ25hdHVyZTUEATBUOjpTaWduYXR1cmUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEAAK0FDExpbmRpdl9wYWxsZXRfcGVvcGxlJGV4dGVuc2lvbiBBc1BlcnNvbgQEVAAABACxBQFcT3B0aW9uPEFzUGVyc29uSW5mbzxUPj4AALEFBBhPcHRpb24EBFQBtQUBCBBOb25lAAAAEFNvbWUEALUFAAABAAC1BQxMaW5kaXZfcGFsbGV0X3Blb3BsZSRleHRlbnNpb24wQXNQZXJzb25JbmZvBARUAAEUaEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50BAA4ASBUOjpOb25jZQAAAGBBc1BlcnNvbmFsQWxpYXNXaXRoUHJvb2YMAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQAAQBsQXNQZXJzb25hbElkZW50aXR5V2l0aFByb29mCABtBAE4U2lnbmF0dXJlT2Y8VD4AACgBKFBlcnNvbmFsSWQAAgB0QXNQZXJzb25hbElkZW50aXR5V2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAMAhEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBAAOAEgVDo6Tm9uY2UAAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQABAAAuQUMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmskZXh0ZW5zaW9uXEFzUHJvb2ZPZklua1BhcnRpY2lwYW50BARUAAAEAL0FAZhPcHRpb248QXNQcm9vZk9mSW5rUGFydGljaXBhbnRJbmZvPFQ+PgAAvQUEGE9wdGlvbgQEVAHBBQEIEE5vbmUAAAAQU29tZQQAwQUAAAEAAMEFDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rJGV4dGVuc2lvbmxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudEluZm8EBFQAAQw4QXNBcHBseVdpdGhTaWcEADgBIFQ6Ok5vbmNlAAAAKEFzUmVmZXJyZWQEADgBIFQ6Ok5vbmNlAAEAJEFzSW52aXRlZAQAOAEgVDo6Tm9uY2UAAgAAxQUMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25IU2NvcmVBc1BhcnRpY2lwYW50BARUAAAEAMkFAaBPcHRpb248U2NvcmVBc1BhcnRpY2lwYW50RGF0YTxUOjpOb25jZT4+AADJBQQYT3B0aW9uBARUAc0FAQgQTm9uZQAAABBTb21lBADNBQAAAQAAzQUMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25YU2NvcmVBc1BhcnRpY2lwYW50RGF0YQQUTm9uY2UBOAAEARRub25jZTgBFE5vbmNlAADRBQxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uNEdhbWVBc0ludml0ZWQEBFQAAAQA1QUBcE9wdGlvbjxHYW1lQXNJbnZpdGVkRGF0YTxUPj4AANUFBBhPcHRpb24EBFQB2QUBCBBOb25lAAAAEFNvbWUEANkFAAABAADZBQxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uREdhbWVBc0ludml0ZWREYXRhBARUAAAQARRub25jZTgBIFQ6Ok5vbmNlAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJlNQQBSFQ6OlRpY2tldFNpZ25hdHVyZQAA3QUMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZSRleHRlbnNpb244UGVvcGxlTGl0ZUF1dGgEBFQAAAQA4QUBfE9wdGlvbjxQZW9wbGVMaXRlQXV0aERhdGFPZjxUPj4AAOEFBBhPcHRpb24EBFQB5QUBCBBOb25lAAAAEFNvbWUEAOUFAAABAADlBQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlJGV4dGVuc2lvbkhQZW9wbGVMaXRlQXV0aERhdGEIFE5vbmNlATgUUHJvb2YBfQMBEDBBc0xpdGVQZXJzb24EADgBFE5vbmNlAAAAWEFzTGl0ZUFsaWFzV2l0aEFjY291bnQEADgBFE5vbmNlAAEAUEFzTGl0ZUFsaWFzV2l0aFByb29mDAB9AwEUUHJvb2YAADgBJFJpbmdJbmRleAAACAEcQ29udGV4dAACAHRBc0xpdGVBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBAAOAEUTm9uY2UAAH0DARRQcm9vZgAAOAEkUmluZ0luZGV4AAAIARxDb250ZXh0AAMAAOkFDFBpbmRpdl9wYWxsZXRfbWVtYmVycyRleHRlbnNpb24gQXNNZW1iZXIEBFQAAAQA7QUBXE9wdGlvbjxBc01lbWJlckluZm88VD4+AADtBQQYT3B0aW9uBARUAfEFAQgQTm9uZQAAABBTb21lBADxBQAAAQAA8QUMUGluZGl2X3BhbGxldF9tZW1iZXJzJGV4dGVuc2lvbjBBc01lbWJlckluZm8EBFQAAQQsU2VsZkluY2x1ZGUEAG0EAThTaWduYXR1cmVPZjxUPgAAAAD1BQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UkZXh0ZW5zaW9uJEFzQ29pbmFnZQQEVAAABAD5BQFgT3B0aW9uPEFzQ29pbmFnZUluZm88VD4+AAD5BQQYT3B0aW9uBARUAf0FAQgQTm9uZQAAABBTb21lBAD9BQAAAQAA/QUMUGluZGl2X3BhbGxldF9jb2luYWdlJGV4dGVuc2lvbjRBc0NvaW5hZ2VJbmZvBARUAAEYGEFzQ29pbgAAAExBc1VubG9hZFRva2VuUGVvcGxlEAEUcHJvb2YBBgGgPFQ6OlBlb3BsZVByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABAFxBc1VubG9hZFRva2VuTGl0ZVBlb3BsZRABFHByb29mBQYBsDxUOjpMaXRlUGVvcGxlUHJvb2YgYXMgVmFsaWRhdGVQcm9vZj46OlByb29mAAEYcGVyaW9kOAEYUGVyaW9kAAEcY291bnRlcjgBDHUzMgABMGFsaWFzX3Byb29mc3kDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAIAREFzVW5sb2FkVG9rZW5QYWlkFAEUcHJvb2Z9AwEoUHJvb2ZPZjxUPgABGHBlcmlvZDgBGFBlcmlvZAABVHBhaWRfdG9rZW5fcmluZ19pbmRleDgBDHUzMgABYHBhaWRfdG9rZW5fcmluZ19yZXZpc2lvbjgBDHUzMgABMGFsaWFzX3Byb29mc3kDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAMAXEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0EAFIZmVlX3JlY3ljbGVyX3ZhbHVldQMBJENvaW5WYWx1ZQABSGZlZV9yZWN5Y2xlcl9pbmRleDgBJFJpbmdJbmRleAABVGZlZV9yZWN5Y2xlcl9yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgAEAFhJbmZhbGxpYmxlVW5wYWlkU2lnbmVkBAEUbm9uY2U4ASBUOjpOb25jZQAFAAABBgxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZRhwZW9wbGUsUGVvcGxlUHJvb2YAAAgBFHByb29mfQMB4DxCYW5kZXJzbmF0Y2hWcmZWZXJpZmlhYmxlIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlByb29mAAEQcmluZzgBJFJpbmdJbmRleAAABQYMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUYcGVvcGxlPExpdGVQZW9wbGVQcm9vZgAACAEUcHJvb2Z9AwHgPEJhbmRlcnNuYXRjaFZyZlZlcmlmaWFibGUgYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6UHJvb2YAARByaW5nOAEkUmluZ0luZGV4AAAJBgxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcyRleHRlbnNpb24sQXNSZXNvdXJjZXMEBFQAAAQADQYBaE9wdGlvbjxBc1Jlc291cmNlc0luZm88VD4+AAANBgQYT3B0aW9uBARUAREGAQgQTm9uZQAAABBTb21lBAARBgAAAQAAEQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uPEFzUmVzb3VyY2VzSW5mbwQEVAABEHhSZWdpc3RlckZyaWVuZFJlcXVlc3RXaXRoUHJvb2YIAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAACIUmVnaXN0ZXJGcmllbmRSZXF1ZXN0Rm9yQ29sbGVjdGlvbgwAfQMBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAEAfFJlZ2lzdGVyU3RhdGVtZW50U3RvcmVBbGxvd2FuY2UMAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAGEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAFBDbGFpbUxvbmdUZXJtU3RvcmFnZRAAfQMBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAMAABUGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAABkGCHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOFJlc3RyaWN0T3JpZ2luBARUAAAEAMgBEGJvb2wAAB0GEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAACEGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAAlBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAAApBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAALQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABAAxBgEMRXJhAAAxBhAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AADUGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAAA5BhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAD0GCFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwwAEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWShAgFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAEEGCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBRQYAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YUUGASxBY2NvdW50RGF0YQAARQYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQHEABABEGZyZWXEARxCYWxhbmNlAAEgcmVzZXJ2ZWTEARxCYWxhbmNlAAEYZnJvemVuxAEcQmFsYW5jZQABFGZsYWdzSQYBKEV4dHJhRmxhZ3MAAEkGDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABADEARB1MTI4AABNBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAdUBAAwBGG5vcm1hbNUBAQRUAAEsb3BlcmF0aW9uYWzVAQEEVAABJG1hbmRhdG9yedUBAQRUAABRBgAAAlUGAFUGCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBWQYEVAE8AAwBFHBoYXNlZQcBFFBoYXNlAAEUZXZlbnRZBgEERQABGHRvcGljc2kHARhWZWM8VD4AAFkGCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAABlBhTeXN0ZW0EAF0GAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAhQYBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAIEJhbGFuY2VzBACNBgF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAL0GAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACwBIU2tpcEZlZWxlc3NQYXltZW50BADBBgGscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50OjpFdmVudDxSdW50aW1lPgAMAERPcmlnaW5SZXN0cmljdGlvbgQAxQYBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkV2ZW50PFJ1bnRpbWU+AA0AGEFzc2V0cwQAyQYBdHBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWU+AA4AMEFzc2V0c0hvbGRlcgQAzQYBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFdmVudDxSdW50aW1lPgAPACRBc3NldFJhdGUEANEGAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXZlbnQ8UnVudGltZT4AEAA4QXNzZXRUeFBheW1lbnQEANUGAZxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4AEQBEQ29sbGF0b3JTZWxlY3Rpb24EANkGAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBADdBgF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQA4QYBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADlBgFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQA9QYBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBAD5BgGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACIAHFV0aWxpdHkEAAEHAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAKAAgTXVsdGlzaWcEAAkHAXxwYWxsZXRfbXVsdGlzaWc6OkV2ZW50PFJ1bnRpbWU+ACkAEFN1ZG8EAA0HAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4AKgAUUHJveHkEABUHAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACwAIElkZW50aXR5BAAdBwGUaW5kaXZfcGFsbGV0X2lkZW50aXR5OjpFdmVudDxSdW50aW1lPgAyABhQZW9wbGUEACEHAYxpbmRpdl9wYWxsZXRfcGVvcGxlOjpFdmVudDxSdW50aW1lPgAzABxNb2JSdWxlBAAlBwGUaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpFdmVudDxSdW50aW1lPgA0AChQcm9vZk9mSW5rBAApBwGkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6RXZlbnQ8UnVudGltZT4ANQAQR2FtZQQALQcBhGluZGl2X3BhbGxldF9nYW1lOjpFdmVudDxSdW50aW1lPgA3ABRTY29yZQQANQcBiGluZGl2X3BhbGxldF9zY29yZTo6RXZlbnQ8UnVudGltZT4AOAAgRHVtbXlEaW0EADkHAZhpbmRpdl9wYWxsZXRfZHVtbXlfZGltOjpFdmVudDxSdW50aW1lPgA7AChQZW9wbGVMaXRlBAA9BwGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFdmVudDxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAEEHAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFdmVudDxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBABFBwGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFdmVudDxSdW50aW1lPgBAABxNZW1iZXJzBABJBwGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkV2ZW50PFJ1bnRpbWU+AEMAHENvaW5hZ2UEAE0HAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXZlbnQ8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBABRBwG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkV2ZW50PFJ1bnRpbWU+AEUAVFN0b3JhZ2VJbml0aWFsaXphdGlvbgQAVQcBzGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uOjpFdmVudDxSdW50aW1lPgA8AGRTdG9yYWdlSW5pdGlhbGl6YXRpb25MaXRlBABZBwHgaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb25fbGl0ZTo6RXZlbnQ8UnVudGltZT4AQQAcQWlyZHJvcAQAXQcBkGluZGl2X3BhbGxldF9haXJkcm9wOjpFdmVudDxSdW50aW1lPgA9AFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAYQcBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgBiAABdBgwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABIEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mb2EGAUREaXNwYXRjaEV2ZW50SW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3JtBgE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm9hBgFERGlzcGF0Y2hFdmVudEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQEARBoYXNoPAEcVDo6SGFzaAACBNBgOmNvZGVgIHdhcyB1cGRhdGVkIHRvIHRoZSBjb2RlIHdpdGggdGhlIGdpdmVuIGhhc2guKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoPAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb27IARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9ybQYBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQuYQYIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h01QEBGFdlaWdodAABFGNsYXNzZQYBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZWkGARBQYXlzAABlBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAAaQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAbQYIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAcQYBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAHUGAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAHkGATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAfQYBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBACBBgEkVHJpZUVycm9yAA4AAHEGCChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAAdQYIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAeQYINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAB9Bggoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAgQYMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AAIUGDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZNUBARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoiQYBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0iQYEGE9wdGlvbgQEVAEIAQgQTm9uZQAAABBTb21lBAAIAAABAACNBgw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZcQBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZcQBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c5EGARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnTEAShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnTEAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnTEAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50xAEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZMQBKFQ6OkJhbGFuY2UAAQxuZXfEAShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbpUGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvbpUGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbpUGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29ulQYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVkxAEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29ulQYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQAuQYBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQYUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAACVBghkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABIBxTZXNzaW9uBACZBgFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAJ0GAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8AHE1vYlJ1bGUEAKEGAYRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkhvbGRSZWFzb24ANAAoUHJvb2ZPZkluawQApQYBlGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkhvbGRSZWFzb24ANQAQR2FtZQQAqQYBdGluZGl2X3BhbGxldF9nYW1lOjpIb2xkUmVhc29uADcAFFNjb3JlBACtBgF4aW5kaXZfcGFsbGV0X3Njb3JlOjpIb2xkUmVhc29uADgAHENvaW5hZ2UEALEGAYBpbmRpdl9wYWxsZXRfY29pbmFnZTo6SG9sZFJlYXNvbgBEABxBaXJkcm9wBAC1BgGAaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkhvbGRSZWFzb24APQAAmQYMOHBhbGxldF9zZXNzaW9uGHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAnQYMKHBhbGxldF94Y20YcGFsbGV0KEhvbGRSZWFzb24AAQQ4QXV0aG9yaXplQWxpYXMAAAAAoQYMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQoSG9sZFJlYXNvbgABCBhQYXlvdXQAAAAYQ3JlZGl0AAEAAKUGDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChIb2xkUmVhc29uAAEEKFByb29mT2ZJbmsAAAAAqQYMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldChIb2xkUmVhc29uAAEELFBsYXlEZXBvc2l0AAAAAK0GDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAACxBgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQQcV3JhcHBlZAAAAAC1BgxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0KEhvbGRSZWFzb24AAQQcQWlyZHJvcAAAAAC5Bgw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAAvQYMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlxAEwQmFsYW5jZU9mPFQ+AAEMdGlwxAEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMEGDGxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEEKEZlZVNraXBwZWQEARhvcmlnaW4xAwHAPFQ6OlJ1bnRpbWVPcmlnaW4gYXMgT3JpZ2luVHJhaXQ+OjpQYWxsZXRzT3JpZ2luAAAEeEEgdHJhbnNhY3Rpb24gZmVlIHdhcyBza2lwcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUGDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHnYAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTJBgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2XEAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZOABKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW7IARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWTgAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2XEAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABIHJlc2VydmVzJQEBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zQYMUHBhbGxldF9hc3NldHNfaG9sZGVyGHBhbGxldBRFdmVudAgEVAAESQABDBBIZWxkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYcmVhc29ulQYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYcmVhc29ulQYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50xAEoVDo6QmFsYW5jZQABBMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAuGEJ1cm5lZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGHJlYXNvbpUGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAgS4YHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgYnVybmVkIGJ5IGBhbW91bnRgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNEGDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmTgATBUOjpBc3NldEtpbmQAARByYXRlLQEBJEZpeGVkVTEyOAAAAEBBc3NldFJhdGVSZW1vdmVkBAEoYXNzZXRfa2luZOABMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZOABMFQ6OkFzc2V0S2luZAABDG9sZC0BASRGaXhlZFUxMjgAAQxuZXctAQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV01QYMXHBhbGxldF9hc3NldF90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWXEAURBc3NldEJhbGFuY2VPZjxUPgABDHRpcMQBREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWShAgFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTZBgxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXPMAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50xAEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV03QYMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV04QYMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV05QYMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWXpBgFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARxtZXNzYWdlXQIBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbuABIExvY2F0aW9uAAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABFGVycm9y8QYBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW7gASBMb2NhdGlvbgABFGVycm9yjQIBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZYECASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h01QEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHTVAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbqECAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRz2QIBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbuABIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3KNAgEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uSQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVy4AEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllcqECAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEQY29zdGkCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ+ABIExvY2F0aW9uAAEQZmVlc2kCARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu4AEgTG9jYXRpb24AARhhc3NldHPZAgE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AARhleHBpcnkVAwEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2Vy4AEgTG9jYXRpb24AARh0YXJnZXTgASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldOABIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkGECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWTVAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2Vk1QEBGFdlaWdodAABFGVycm9y7QYBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAO0GAUBJbnN0cnVjdGlvbkVycm9yAAIAAO0GECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3KNAgEURXJyb3IAAPEGEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAAPUGDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAOkGARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT5BgxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbiEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9y/QYBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZDwBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbiEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2Vk1QEBGFdlaWdodATASG93IG11Y2ggd2VpZ2h0IHdhcyB1c2VkIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuARxzdWNjZXNzyAEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0GEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEANUBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAAAQcMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcm0GATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcm0GATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHQFBwE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcm0GATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUHBBhSZXN1bHQIBFQBEARFAW0GAQgIT2sEABAAAAAADEVycgQAbQYAAAEAAAkHDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50kQMBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnSRAwFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHQFBwE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludJEDAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNBwwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHQFBwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZBEHAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHQFBwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQcEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAAVBwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0BQcBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXgtAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4LQMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZBkHASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABgQJAUEgZGVwb3NpdCBzdG9yZWQgZm9yIHByb3hpZXMgb3IgYW5ub3VuY2VtZW50cyB3YXMgcG9rZWQgLyB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBkHCDBwYWxsZXRfcHJveHksRGVwb3NpdEtpbmQAAQgcUHJveGllcwAAADRBbm5vdW5jZW1lbnRzAAEAAB0HDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkYcGFsbGV0FEV2ZW50BARUAAGALElkZW50aXR5U2V0BAEMd2hvBAEwVDo6QWNjb3VudElkAAAE7EEgbmFtZSB3YXMgc2V0IG9yIHJlc2V0ICh3aGljaCB3aWxsIHJlbW92ZSBhbGwganVkZ2VtZW50cykuPElkZW50aXR5Q2xlYXJlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4AAQTMQSBuYW1lIHdhcyBjbGVhcmVkLCBhbmQgdGhlIGdpdmVuIGJhbGFuY2UgcmV0dXJuZWQuOElkZW50aXR5S2lsbGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgACBMRBIG5hbWUgd2FzIHJlbW92ZWQgYW5kIHRoZSBnaXZlbiBiYWxhbmNlIHNsYXNoZWQuSEp1ZGdlbWVudFJlcXVlc3RlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABPHJlZ2lzdHJhcl9pbmRleDgBOFJlZ2lzdHJhckluZGV4AAMEnEEganVkZ2VtZW50IHdhcyBhc2tlZCBmcm9tIGEgcmVnaXN0cmFyLlBKdWRnZW1lbnRVbnJlcXVlc3RlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABPHJlZ2lzdHJhcl9pbmRleDgBOFJlZ2lzdHJhckluZGV4AAQEiEEganVkZ2VtZW50IHJlcXVlc3Qgd2FzIHJldHJhY3RlZC44SnVkZ2VtZW50R2l2ZW4IARh0YXJnZXQEATBUOjpBY2NvdW50SWQAATxyZWdpc3RyYXJfaW5kZXg4AThSZWdpc3RyYXJJbmRleAAFBJRBIGp1ZGdlbWVudCB3YXMgZ2l2ZW4gYnkgYSByZWdpc3RyYXIuOFJlZ2lzdHJhckFkZGVkBAE8cmVnaXN0cmFyX2luZGV4OAE4UmVnaXN0cmFySW5kZXgABgRYQSByZWdpc3RyYXIgd2FzIGFkZGVkLkBTdWJJZGVudGl0eUFkZGVkDAEMc3ViBAEwVDo6QWNjb3VudElkAAEQbWFpbgQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABwT0QSBzdWItaWRlbnRpdHkgd2FzIGFkZGVkIHRvIGFuIGlkZW50aXR5IGFuZCB0aGUgZGVwb3NpdCBwYWlkLkBTdWJJZGVudGl0aWVzU2V0DAEQbWFpbgQBMFQ6OkFjY291bnRJZAABOG51bWJlcl9vZl9zdWJzOAEMdTMyAAEsbmV3X2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4ACAS8QW4gYWNjb3VudCdzIHN1Yi1pZGVudGl0aWVzIHdlcmUgc2V0IChpbiBidWxrKS5IU3ViSWRlbnRpdHlSZW5hbWVkCAEMc3ViBAEwVDo6QWNjb3VudElkAAEQbWFpbgQBMFQ6OkFjY291bnRJZAAJBCEBQSBnaXZlbiBzdWItYWNjb3VudCdzIGFzc29jaWF0ZWQgbmFtZSB3YXMgY2hhbmdlZCBieSBpdHMgc3VwZXItaWRlbnRpdHkuSFN1YklkZW50aXR5UmVtb3ZlZAwBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAoECQFBIHN1Yi1pZGVudGl0eSB3YXMgcmVtb3ZlZCBmcm9tIGFuIGlkZW50aXR5IGFuZCB0aGUgZGVwb3NpdCBmcmVlZC5IU3ViSWRlbnRpdHlSZXZva2VkDAEMc3ViBAEwVDo6QWNjb3VudElkAAEQbWFpbgQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4ACwgZAUEgc3ViLWlkZW50aXR5IHdhcyBjbGVhcmVkLCBhbmQgdGhlIGdpdmVuIGRlcG9zaXQgcmVwYXRyaWF0ZWQgZnJvbSB0aGXIbWFpbiBpZGVudGl0eSBhY2NvdW50IHRvIHRoZSBzdWItaWRlbnRpdHkgYWNjb3VudC44QXV0aG9yaXR5QWRkZWQEASRhdXRob3JpdHkEATBUOjpBY2NvdW50SWQADAR8QSB1c2VybmFtZSBhdXRob3JpdHkgd2FzIGFkZGVkLkBBdXRob3JpdHlSZW1vdmVkBAEkYXV0aG9yaXR5BAEwVDo6QWNjb3VudElkAA0EhEEgdXNlcm5hbWUgYXV0aG9yaXR5IHdhcyByZW1vdmVkLixVc2VybmFtZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AA4EdEEgdXNlcm5hbWUgd2FzIHNldCBmb3IgYHdob2AuOFVzZXJuYW1lUXVldWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AAShleHBpcmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4ADwQZAUEgdXNlcm5hbWUgd2FzIHF1ZXVlZCwgYnV0IGB3aG9gIG11c3QgYWNjZXB0IGl0IHByaW9yIHRvIGBleHBpcmF0aW9uYC5IUHJlYXBwcm92YWxFeHBpcmVkBAEUd2hvc2UEATBUOjpBY2NvdW50SWQAEAQ5AUEgcXVldWVkIHVzZXJuYW1lIHBhc3NlZCBpdHMgZXhwaXJhdGlvbiB3aXRob3V0IGJlaW5nIGNsYWltZWQgYW5kIHdhcyByZW1vdmVkLkhQcmltYXJ5VXNlcm5hbWVTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgARBAEBQSB1c2VybmFtZSB3YXMgc2V0IGFzIGEgcHJpbWFyeSBhbmQgY2FuIGJlIGxvb2tlZCB1cCBmcm9tIGB3aG9gLlxEYW5nbGluZ1VzZXJuYW1lUmVtb3ZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABIIXQFBIGRhbmdsaW5nIHVzZXJuYW1lIChhcyBpbiwgYSB1c2VybmFtZSBjb3JyZXNwb25kaW5nIHRvIGFuIGFjY291bnQgdGhhdCBoYXMgcmVtb3ZlZCBpdHNsaWRlbnRpdHkpIGhhcyBiZWVuIHJlbW92ZWQuPFVzZXJuYW1lVW5ib3VuZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABMEcEEgdXNlcm5hbWUgaGFzIGJlZW4gdW5ib3VuZC48VXNlcm5hbWVSZW1vdmVkBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFARwQSB1c2VybmFtZSBoYXMgYmVlbiByZW1vdmVkLjhVc2VybmFtZUtpbGxlZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABUEbEEgdXNlcm5hbWUgaGFzIGJlZW4ga2lsbGVkLkBVc2VybmFtZVJlcG9ydGVkCAEgcmVwb3J0ZXIEATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAWBHRBIHVzZXJuYW1lIGhhcyBiZWVuIHJlcG9ydGVkLkxQZXJzb25hbElkZW50aXR5U2V0DAEUYWxpYXMIARRBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAXBJhBbiBpZGVudGl0eSBmb3IgYSBwZXJzb24gaGFzIGJlZW4gc2V0LkRFdmlkZW5jZVN1Ym1pdHRlZAQBFGFsaWFzCAEUQWxpYXMAGATkRXZpZGVuY2UgZm9yIGEgY3JlZGVudGlhbCBoYXMgYmVlZCBzdWJtaXR0ZWQgYnkgYSBwZXJzb24uSENyZWRlbnRpYWxBY2NlcHRlZAQBFGFsaWFzCAEUQWxpYXMAGQScQSBjcmVkZW50aWFsIHdhcyBhY2NlcHRlZCBmb3IgYSBwZXJzb24uSENyZWRlbnRpYWxSZWplY3RlZAQBFGFsaWFzCAEUQWxpYXMAGgScQSBjcmVkZW50aWFsIHdhcyByZWplY3RlZCBmb3IgYSBwZXJzb24uMFBlcnNvbkJhbm5lZAQBFGFsaWFzCAEUQWxpYXMAGwTQUGVyc29uIHdhcyBiYW5uZWQgZm9yIHNlbmRpbmcgY29udGVtcHR1b3VzIGV2aWRlbmNlLlxQZXJzb25hbElkZW50aXR5Q2xlYXJlZAQBFGFsaWFzCAEUQWxpYXMAHASAQSBwZXJzb25hbCBpZGVudGl0eSB3YXMgY2xlYXJlZC5sUmVwb3J0ZWRVc2VybmFtZUp1ZGdlZFZhbGlkBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AHQSUQSByZXBvcnRlZCB1c2VybmFtZSB3YXMganVkZ2VkIHZhbGlkLnRSZXBvcnRlZFVzZXJuYW1lSnVkZ2VkSW52YWxpZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AB4EnEEgcmVwb3J0ZWQgdXNlcm5hbWUgd2FzIGp1ZGdlZCBpbnZhbGlkLphSZXBvcnRlZFVzZXJuYW1lV2Vha09yVW5jbGVhckp1ZGdlbWVudAgBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AAEkanVkZ2VtZW50SQQBPE9yYWNsZUp1ZGdlbWVudAAfBBEBVGhlIGp1ZGdtZW50IHJlZ2FyZGluZyBhIHJlcG9ydGVkIHVzZXJuYW1lIHdhcyB1bmNsZWFyIG9yIHVuY2VydGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQhBwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXZlbnQEBFQAAShQUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAT4QW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhbmQgaW5kZXhlZC5AUGVyc29uT25ib2FyZGluZwgBDHdobygBKFBlcnNvbmFsSWQAAQxrZXkIASxNZW1iZXJPZjxUPgABBBEBQW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhZ2FpbiBhbmQgaW5kZXhlZC48QWxpYXNEaXNwYXRjaGVkCAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJRBIGNhbGwgd2FzIGRpc3BhdGNoZWQgdW5kZXIgYW4gYWxpYXMuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFzSQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc0kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5QUGVyc29uYWxJZEFjY291bnRTZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBNBBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuWFBlcnNvbmFsSWRBY2NvdW50VW5zZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBLRBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5EQ29sbGVjdGlvbkNyZWF0ZWQABwSIVGhlIHBlb3BsZSBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkLmRGb3JjZVBlcnNvbmhvb2RSZWNvZ25pemVkBAEYcGVvcGxlVQQBQFZlYzxNZW1iZXJPZjxUPj4ACAS0UGVyc29uaG9vZCB3YXMgZm9yY2VmdWxseSByZWNvZ25pemVkIGJ5IHJvb3QuOEFsaWFzQ2xlYW5lZFVwCAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAJBKxBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQcMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQURXZlbnQEBFQAAUQsQ2FzZUNyZWF0ZWQEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BIBUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjcmVhdGVkLgAEYEEgY2FzZSBoYXMgYmVlbiBjcmVhdGVkLiBDYWxsYmFjawQBGHJlc3VsdAUHAThEaXNwYXRjaFJlc3VsdARsVGhlIHJlc3VsdCBvZiB0aGUgY2FsbGJhY2suAQScQSBjYWxsYmFjayB3YXMgdHJpZ2dlcmVkIGZyb20gbW9iLXJ1bGUuNENhbGxiYWNrRXJyb3IAAgTwVGhlcmUgd2FzIGEgY29kZWMgZXJyb3Igd2hlbiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgY2FsbGJhY2suKENhc2VDbG9zZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BHxUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjbG9zZWQuARx2ZXJkaWN0SQQBJEp1ZGdlbWVudAR8VGhlIHZlcmRpY3Qgb2YgdGhlIGNsb3NlZCBjYXNlLgMEzFRoZSBjYXNlIGhhcyBiZWVuIGNsb3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcmVzdWx0LhRWb3RlZAwBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuARxvcGluaW9uSQQBJEp1ZGdlbWVudARkVGhlIG9waW5pb24gb2YgdGhlIHZvdGVyLgQEhEEgdm90ZSBoYXMgYmVlbiBwbGFjZWQgb24gYSBjYXNlLixWb3RlQ2xlYW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuBQRgQSB2b3RlIGhhcyBiZWVuIGNsZWFuZWQuLENhc2VSZW1vdmVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleARIVGhlIGNhc2Ugdm90ZWQgb24uBgRgQSBjYXNlIGhhcyBiZWVuIHJlbW92ZWQuOENhc2VJbnRlcnZlbmVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLgEcdmVyZGljdEkEASRKdWRnZW1lbnQEgFRoZSB2ZXJkaWN0IGFwcGxpZWQgdG8gdGhlIGNhc2UuBwRsQSBjYXNlIGhhcyBiZWVuIGludGVydmVuZWQuMFZvdGVzQ2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEwY2FzZV9pbmRpY2VzZQQBOFZlYzxDYXNlSW5kZXg+BIhUaGUgY2FzZSB0aGF0IGhhcyBiZWVuIGludGVydmVuZWQuCASQQ3JlZGl0cyBmb3Igdm90ZXMgaGF2ZSBiZWVuIGNsYWltZWQuMFJld2FyZFBheW91dAwBFHZvdGVyCAEUQWxpYXMEfFRoZSBhbGlhcyB0aGF0IGVhcm5lZCBhIHJld2FyZC4BLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkBJxUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHBheW91dC4BGGFtb3VudMQBMEJhbGFuY2VPZjxUPgScVGhlIHBheW91dCBhbW91bnQgdGhhdCB3YXMgdHJhbnNmZXJyZWQuCQSAQSByZXdhcmQgdGhhdCBoYXMgYmVlbiBwYWlkIG91dC5IUGF5b3V0Um91bmRTdGFydGVkDAEUcm91bmQ4AShSb3VuZEluZGV4BIhUaGUgaW5kZXggb2YgdGhlIG5ldyBwYXlvdXQgcm91bmQuATxpbml0aWFsX2JhbGFuY2XEATBCYWxhbmNlT2Y8VD4EsFRoZSBpbml0aWFsIGJhbGFuY2UgYWxsb2NhdGVkIGZvciB0aGUgcm91bmQuATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQExFRvdGFsIGFjY3VtdWxhdGVkIHBvaW50cyBjbGFpbWFibGUgaW4gdGhpcyByb3VuZC4KBJBBIG5ldyBwYXlvdXQgcm91bmQgaGFzIGJlZW4gc3RhcnRlZC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW50xAEwQmFsYW5jZU9mPFQ+BHhUaGUgYW1vdW50IG9mIGZ1bmRzIHBlciByb3VuZC4BFGNvdW50OAEMdTMyBHxUaGUgbnVtYmVyIG9mIHJvdW5kcyBzY2hlZHVsZWQuARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgS4VGhlIG1pbmltdW0gcGVyaW9kIChpbiBibG9ja3MpIGJldHdlZW4gcm91bmRzLgsEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4MBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLjRDcmVkaXRDbGFpbWVkCAEUdm90ZXIIARRBbGlhcwSMVGhlIGFsaWFzIG9mIHRoZSB2b3RlciB3aG8gY2xhaW1lZC4BGGFtb3VudMQBMEJhbGFuY2VPZjxUPgR0VGhlIGFtb3VudCBvZiBjcmVkaXQgY2xhaW1lZC4NBNRDcmVkaXQgaGFzIGJlZW4gY2xhaW1lZCBmcm9tIHRoZSBwYXlvdXQgZGlzdHJpYnV0aW9uLjRQb2ludHNDbGVhbmVkCAEUcm91bmQ4AShSb3VuZEluZGV4BLxUaGUgcm91bmQgaW5kZXggZnJvbSB3aGljaCBwb2ludHMgd2VyZSByZW1vdmVkLgEUdm90ZXIIARRBbGlhcwSQVGhlIGFsaWFzIHdob3NlIHBvaW50cyB3ZXJlIHJlbW92ZWQuDgSYU3RhbGUgdm90aW5nIHBvaW50cyBoYXZlIGJlZW4gY2xlYW5lZC4sQ2FzZVRvdWNoZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BGhUaGUgY2FzZSB0aGF0IHdhcyB0b3VjaGVkLgEccmlwZW5lZMgBEGJvb2wEpFdoZXRoZXIgdGhlIGNhc2Ugd2FzIHJpcGVuZWQgYXMgYSByZXN1bHQuDwScQSBjYXNlIGhhcyBiZWVuIHRvdWNoZWQgKHJlLWV2YWx1YXRlZCkuUFZvdGluZ1BlbmFsdHlDbGVhcmVkBAEMd2hvCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwZW5hbHR5IHdhcyBjbGVhcmVkLhAEiEEgdm90aW5nIHBlbmFsdHkgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQpBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQURXZlbnQEBFQAAVxAQ2FuZGlkYXRlQXBwbGllZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAASMQ2FuZGlkYXRlIGFwcGxpZWQgZm9yIHZlcmlmaWNhdGlvbi5ISnVkZ2VtZW50UmVxdWVzdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBAUBQ2FuZGlkYXRlIG9wZW5lZCBhIGp1ZGljaWFsIGNhc2UgZm9yIHRoZWlyIHZlcmlmaWNhdGlvbiBldmlkZW5jZS5ESnVkZ2VtZW50UHJvdmlkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEkanVkZ2VtZW50SQQBJEp1ZGdlbWVudAACBNhPcmFjbGUgaGFzIHByb3ZpZGVkIHRoZSBqdWRnZW1lbnQgZm9yIGEganVkaWNpYWwgY2FzZS4wUmV0cnlHcmFudGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIGZhaWx1cmVzOAEMdTMyAAMIRQFBIGNhbmRpZGF0ZSBoYXMgYmVlbiBncmFudGVkIGEgZnJlZSByZXRyeSBhdHRlbXB0IGFmdGVyIGEgZmFpbHVyZSB0byB2ZXJpZnkgdGhlaXIkZXZpZGVuY2UuQFBlcnNvblJlZ2lzdGVyZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscGVyc29uYWxfaWQoAShQZXJzb25hbElkAAQEgFJlZ2lzdGVyIGFuIGFjY291bnQgYXMgYSBwZXJzb24uRENhbmRpZGF0ZVJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEgcmVmZXJyZWQEATBUOjpBY2NvdW50SWQABQRsUGVyc29uIHJlZmVycmVkIGFuIGFjY291bnQuIFJlcm9sbGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAGBLRFbnRyb3B5IGZvciBhIGNhbmRpZGF0ZSBjaGFuZ2VkIGFmdGVyIGV4cGlyeS48RGVzaWduQ29tbWl0dGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHJlc2VydmVkX2lkKAEoUGVyc29uYWxJZAAHBJRDYW5kaWRhdGUgY29tbWl0dGVkIHRvIGFuIGluayBkZXNpZ24uOEZ1bGx5QWxsb2NhdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIBLxTdG9yYWdlIGZ1bGx5IGFsbG9jYXRlZCBmb3IgYSBjb21taXR0ZWQgZGVzaWduLiBUaW1lZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQSAQ2FuZGlkYXRlIHJlbW92ZWQgYWZ0ZXIgdGltZW91dC4kRmxha2VkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAKBHhVbmNvbW1pdHRlZCBjYW5kaWRhdGUgcmVtb3ZlZC44VGlja2V0UmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQACwTsUmVmZXJyYWwgdGlja2V0IGNyZWF0ZWQgYnkgc3RvcmluZyB0aGUgcHVibGljIGtleSBvbiBjaGFpbi48VGlja2V0Q2FuY2VsbGVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAwEGQFSZWZlcnJhbCB0aWNrZXQgcmVtb3ZlZCBieSByZW1vdmluZyB0aGUgcHVibGljIGtleSBmcm9tIGNoYWluIHN0b3JhZ2UuNFRpY2tldEFwcGxpZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgcmVmZXJyZXIoAShQZXJzb25hbElkAA0EqENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGEgcmVmZXJyYWwgdGlja2V0LixGYW1pbHlBZGRlZAwBFGluZGV4LQMBLEZhbWlseUluZGV4AAEQa2luZHUEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAAOBFBEZXNpZ24gZmFtaWx5IGFkZGVkLkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABAEDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuXEludml0ZWRDYW5kaWRhdGVBcHBsaWVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAARBJhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhbiBpbnZpdGF0aW9uLmRSZWZlcnJhbFZvdWNoZXJSZWdpc3RlcmVkBAEgcmVmZXJyZXIoAShQZXJzb25hbElkABIEwEEgcmVmZXJyZXIncyByZXdhcmQgdm91Y2hlciBoYXMgYmVlbiByZWdpc3RlcmVkLjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgATBKBJbnZpdGVzIGhhdmUgYmVlbiBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFAR4QW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFQSQQW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBjYW5jZWxsZWQuQENvbmZpZ3VyYXRpb25TZXQEARhjb25maWd5BAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAWBKhUaGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQtBwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEV2ZW50BARUAAFUHE5ld0dhbWUMAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAAEXEEgbmV3IGdhbWUgaXMgc3RhcnRpbmcuJEdhbWVFbmRlZAQBFGluZGV4OAEMdTMyAAEEoFRoZSBnYW1lIGFuZCBpdHMgcG9zdC1wcm9jZXNzIGhhcyBlbmRlZC4oR2FtZUtpbGxlZAQBFGluZGV4OAEMdTMyAAIE/FRoZSBjdXJyZW50IGdhbWUgd2FzIGZvcmNlLWtpbGxlZCBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLjRHYW1lUGhhc2VzU2V0BAEYcGhhc2VzqQQBTFBoYXNlRHVyYXRpb25WYWx1ZXMAAwQZAVRoZSBnYW1lIHBoYXNlIGR1cmF0aW9ucyB3ZXJlIG92ZXJyaWRkZW4gYnkgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4gU2lnbmVkVXAEAQx3aG8xBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4ABASAQSBwbGF5ZXIgc2lnbmVkIHVwIGZvciB0aGUgZ2FtZS48UmVwb3J0U3VibWl0dGVkCAEMd2hvMQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEoZ2FtZV9pbmRleDgBDHUzMgAFBIBBIHBsYXllciBzdWJtaXR0ZWQgdGhlaXIgcmVwb3J0LihPZmZib2FyZGVkBAEMd2hvMQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAYEiEEgcGxheWVyIG9mZmJvYXJkZWQgZnJvbSB0aGUgZ2FtZS4kS2lja2VkT3V0BAEYcGxheWVyMQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAcEiEFuIGFyY2hpdmVkIHBsYXllciB3YXMga2lja2VkIG91dC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIACASMSW52aXRlcyB3ZXJlIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0BAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAJBGRBbiBpbnZpdGUgdGlja2V0IHdhcyBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQACgR8QW4gaW52aXRlIHRpY2tldCB3YXMgY2FuY2VsbGVkLjhHYW1lc1NjaGVkdWxlZAQBFGNvdW50OAEMdTMyAAsEVEdhbWVzIHdlcmUgc2NoZWR1bGVkLlBTY2hlZHVsZWRHYW1lUmVtb3ZlZAQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAwEdEEgc2NoZWR1bGVkIGdhbWUgd2FzIHJlbW92ZWQuQFN0bXRVc2FnZVJlbW92ZWQEAQx3aG8IASBbdTg7IDMyXQANBLhTdGF0ZW1lbnQgc3RvcmUgdXNhZ2UgcmVtb3ZlZCBmb3IgdGhlIGFjY291bnQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAOBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy5YU2NyYXRjaFJld2FyZEF2YWlsYWJsZQQBKGdhbWVfaW5kZXg4AQx1MzIAEAToU2NyYXRjaCBjYXJkIHJld2FyZHMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGNvbmNsdWRlZCBnYW1lLlBTY3JhdGNoUmV3YXJkQ2xhaW1lZAgBLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAFMU2NyYXRjaEJhbGFuY2VPZjxUPgARBNBBIHBsYXllciBzdWNjZXNzZnVsbHkgY2xhaW1lZCBhIHNjcmF0Y2ggY2FyZCByZXdhcmQuTEdhbWVQcml6ZVBvb2xPcGVuZWQIAShnYW1lX2luZGV4OAEMdTMyAAEccG9vbF9pZDgBhGluZGl2X3BhbGxldF9haXJkcm9wOjpQcml6ZVBvb2xJZAASBPxBIG5ldyBnYW1lIG9wZW5lZCBhIHJlY3VycmluZy1wcml6ZSBwb29sIGluIHRoZSBhaXJkcm9wIHBhbGxldC5cR2FtZVByaXplUG9vbE9wZW5GYWlsZWQIAShnYW1lX2luZGV4OAEMdTMyAAEUZXJyb3JtBgE0RGlzcGF0Y2hFcnJvcgATBCkBYG5ld19nYW1lYCBjb3VsZCBub3Qgb3BlbiBpdHMgY29tcGFuaW9uIHByaXplIHBvb2wuIFRoZSBnYW1lIHN0aWxsIHN0YXJ0cy44UGxheURlcG9zaXRTZXQEARhhbW91bnTEAUhOYXRpdmVCYWxhbmNlT2Y8VD4AFASgVGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IHdhcyB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDEHDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXM8QWNjb3VudE9yUGVyc29uBCRBY2NvdW50SWQBBAEIHEFjY291bnQEAAQBJEFjY291bnRJZAAAABhQZXJzb24EAAgBFEFsaWFzAAEAADUHDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0FEV2ZW50BARUAAEkNENyZWRpdENsYWltZWQMAQx3aG8xBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EeFRoZSBwZXJzb24gd2hvIGNsYWltZWQgY3JlZGl0LgEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQEvERlc3RpbmF0aW9uIGFjY291bnQgdGhhdCByZWNlaXZlZCB0aGUgdHJhbnNmZXIuARhhbW91bnTEATBCYWxhbmNlT2Y8VD4ETEFtb3VudCB0cmFuc2ZlcnJlZC4ABHBBIHBlcnNvbiBoYXMgY2xhaW1lZCBjcmVkaXQuUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvMQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BLBUaGUgYWNjb3VudCB3aG9zZSBwZXJzb25ob29kIHdhcyByZWNvZ25pemVkLgEccmVzdW1lZMgBEGJvb2wEEQFXaGV0aGVyIHRoaXMgd2FzIHJlc3VtaW5nIGZyb20gc3VzcGVuc2lvbiBvciBmaXJzdC10aW1lIHJlY29nbml0aW9uLgEEpFBlcnNvbmhvb2Qgd2FzIHJlY29nbml6ZWQgZm9yIGFuIGFjY291bnQuVFBheW91dFJvdW5kc1NjaGVkdWxlZAwBGGFtb3VudMQBMEJhbGFuY2VPZjxUPgRUVGhlIGFtb3VudCBwZXIgcm91bmQuARRjb3VudDgBDHUzMgRUVGhlIG51bWJlciBvZiByb3VuZHMuASBkdXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+BIRUaGUgZHVyYXRpb24gcGVyIHJvdW5kIGluIGJsb2Nrcy4CBIhQYXlvdXQgcm91bmRzIGhhdmUgYmVlbiBzY2hlZHVsZWQuVFBheW91dFNjaGVkdWxlUmVtb3ZlZAQBFGluZGV4OAEMdTMyBIhUaGUgaW5kZXggb2YgdGhlIHJlbW92ZWQgc2NoZWR1bGUuAwSMQSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gcmVtb3ZlZC5EUm91bmRUcmFuc2l0aW9uZWQEASxyb3VuZF9pbmRleDgBKFJvdW5kSW5kZXgEmFRoZSByb3VuZCBpbmRleCB0aGF0IHdhcyB0cmFuc2l0aW9uZWQuBAR4QSByb3VuZCBoYXMgYmVlbiB0cmFuc2l0aW9uZWQuTFBheW91dFJvdW5kT3BlcmF0ZWQEASxyb3VuZF9pbmRleDgBKFJvdW5kSW5kZXgEiFRoZSByb3VuZCBpbmRleCB0aGF0IHdhcyBvcGVyYXRlZC4FBBkBQSBwYXlvdXQgcm91bmQgaGFzIGJlZW4gb3BlcmF0ZWQgKGNyZWRpdCBkaXN0cmlidXRlZCB0byBwYXJ0aWNpcGFudHMpLiRDYXNoZWRPdXQEAQx3aG8xBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EfFRoZSBwYXJ0aWNpcGFudCB3aG8gY2FzaGVkIG91dC4GBLhBIHBhcnRpY2lwYW50IGhhcyBjYXNoZWQgb3V0IHNjb3JlIGZvciBwb2ludHMueFBlcnNvbmhvb2RUaHJlc2hvbGRTY2hlZHVsZVNldAAHBLxUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgaGFzIGJlZW4gc2V0LlxBYnNlbmNlR3JhY2VTY2hlZHVsZVNldAAIBKBUaGUgYWJzZW5jZS1ncmFjZSBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0OQcMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0FEV2ZW50BARUAAEgLElkc1Jlc2VydmVkBAEUY291bnQ4AQx1MzIAAAR0QSBudW1iZXIgb2YgSURzIHdhcyByZXNlcnZlZC4kSWRSZW5ld2VkBAEIaWQoAShQZXJzb25hbElkAAEESEFuIElEIHdhcyByZW5ld2VkLjBJZFVucmVzZXJ2ZWQEAQhpZCgBKFBlcnNvbmFsSWQAAgRoQSByZXNlcnZlZCBJRCB3YXMgcmVtb3ZlZC5AUGVvcGxlUmVnaXN0ZXJlZAQBFGNvdW50OAEMdTMyAAMEZFJlZ2lzdGVyIG11bHRpcGxlIHBlb3BsZS48UGVvcGxlU3VzcGVuZGVkBAEUY291bnQ4AQx1MzIABARsU3VzcGVuZCBhIG51bWJlciBvZiBwZW9wbGUuRFBlcnNvbmhvb2RSZXN1bWVkBAEIaWQoAShQZXJzb25hbElkAAUEhFNvbWVvbmUncyBwZXJzb25ob29kIHdhcyByZXN1bWVkLkhTdXNwZW5zaW9uc1N0YXJ0ZWQABgR8VGhlIHBhbGxldCBlbmFibGVkIHN1c3BlbnNpb25zLkBTdXNwZW5zaW9uc0VuZGVkAAcEgFRoZSBwYWxsZXQgZGlzYWJsZWQgc3VzcGVuc2lvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQcMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXZlbnQEBFQAARh4QWxsQXR0ZXN0YXRpb25BbGxvd2FuY2VDbGVhcmVkBAEgdmVyaWZpZXIEATBUOjpBY2NvdW50SWQAAATwQWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBoYXMgYmVlbiByZW1vdmVkIGZvciB0aGUgdmVyaWZpZXIudEF0dGVzdGF0aW9uQWxsb3dhbmNlSW5jcmVhc2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAEELQFBdHRlc3RhdGlvbiBhbGxvd2FuY2Ugd2FzIGluY3JlYXNlZCBmb3IgYW4gYWNjb3VudCBieSBgY291bnRgIGF0dGVzdGF0aW9ucy44UGVyc29uQXR0ZXN0ZWQIASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAASB2ZXJpZmllcgQBMFQ6OkFjY291bnRJZAACBNRBIG5ldyBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCB0aHJvdWdoIGF0dGVzdGF0aW9uLkhDb25zdW1lclJlZ2lzdGVyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMErEEgbGl0ZSBwZXJzb24gd2FzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci48QWxpYXNBY2NvdW50U2V0CAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBLxBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHNldCBvciB1cGRhdGVkLkRBbGlhc0FjY291bnRVbnNldAgBFGFsaWFzSQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQSgQW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyByZW1vdmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEHDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBRFdmVudAQEVAABOEBQZXJzb25SZWdpc3RlcmVkCAEUYWxpYXMIARRBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAASYQSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5QTGl0ZVBlcnNvblJlZ2lzdGVyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEErEEgbGl0ZSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5kRnJpZW5kUmVxdWVzdFN0bXRVc2FnZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgQBAUZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiBhc3NpZ25lZCBmb3IgYSBzZXF1ZW5jZS50RnJpZW5kUmVxdWVzdFN0bXRVc2FnZVJlbW92ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEwEZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiByZW1vdmVkLmhQZXJzb25BdXRob3JpemF0aW9uVG91Y2hlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABASUQSBwZXJzb24ncyBhdXRob3JpemF0aW9uIHdhcyB0b3VjaGVkLoRFeHBpcmVkVXNlcm5hbWVSZXNlcnZhdGlvblJlbW92ZWQIASB1c2VybmFtZUEEASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQSwQW4gZXhwaXJlZCB1c2VybmFtZSByZXNlcnZhdGlvbiB3YXMgcmVtb3ZlZC5QSWRlbnRpZmllcktleVVwZGF0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAYEoEEgY29uc3VtZXIncyBpZGVudGlmaWVyIGtleSB3YXMgdXBkYXRlZC54VXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uU2V0BAEgZHVyYXRpb24oAQx1NjQABwSoVGhlIHVzZXJuYW1lIHJlc2VydmF0aW9uIGR1cmF0aW9uIHdhcyBzZXQuVFN0bXRTdG9yZUFsbG93YW5jZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAgEzEFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHdhcyBncmFudGVkLmhTdG10U3RvcmVBbGxvd2FuY2VzQ2xlYXJlZAwBGHBlcmlvZDgBDHUzMgABJGZpcnN0X2tleQgBFEFsaWFzAAEUY291bnQ4AQx1MzIACQTMRXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyB3ZXJlIGNsZWFuZWQgdXAuNFBlcnNvbkRlbW90ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAoE3EEgZnVsbCBwZXJzb24gd2FzIGRlbW90ZWQgZHVlIHRvIGV4cGlyZWQgYXV0aG9yaXphdGlvbi5YTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEoY29sbGVjdGlvbmEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgALBMhMb25nLXRlcm0gc3RvcmFnZSBoYXMgYmVlbiBjbGFpbWVkIGZvciBhbiBhY2NvdW50LnxMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uRmFpbGVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9uYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAwIWQFBIGxvbmctdGVybSBzdG9yYWdlIGNsYWltIHdhcyBhY2NlcHRlZCBidXQgdGhlIGRvd25zdHJlYW0gYWxsb2NhdGlvbiBmYWlsZWQuIFRoZSBhbGlhc5RpcyBzdGlsbCBtYXJrZWQgc3BlbnQgZm9yIHRoZSBwZXJpb2QudExvbmdUZXJtU3RvcmFnZUFsaWFzZXNDbGVhcmVkCAEYcGVyaW9kOAEMdTMyAAEUY291bnQ4AQx1MzIADQQFAUV4cGlyZWQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBoYXZlIGJlZW4gY2xlYXJlZCBmb3IgYSBwZXJpb2QuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0RQcMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXZlbnQEBFQAAQhoQ2h1bmtQYWdlSGFzaGVzSW5pdGlhbGl6ZWQIATRyaW5nX2V4cG9uZW50CQUBMFJpbmdFeHBvbmVudAABLHRvdGFsX3BhZ2VzOAEMdTMyAAAEGQFBIG5ldyBjaHVuayBwYWdlIGhhc2ggc2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIChlLmcuLCBkdXJpbmcgZ2VuZXNpcykuLENodW5rc0FkZGVkDAE0cmluZ19leHBvbmVudAkFATBSaW5nRXhwb25lbnQAASxzdGFydF9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAEEIQFOZXcgY2h1bmtzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gYW4gZXhpc3Rpbmcgb3IgbmV3IGNodW5rIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJBwxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0FEV2ZW50BARUAAEoLE1lbWJlckFkZGVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAToQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZWNvZ25pc2VkIGFuZCBpbmRleGVkLjRNZW1iZXJSZW1vdmVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQSsQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZXZva2VkLmxDb2xsZWN0aW9uTWFya2VkRm9yRGVsZXRpb24EAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgACBKhBIGNvbGxlY3Rpb24gaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi5EQ29sbGVjdGlvbkRlbGV0ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgADBJBBIGNvbGxlY3Rpb24gaGFzIGJlZW4gZnVsbHkgZGVsZXRlZC4kUmluZ0J1aWx0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAQEWEEgcmluZyByb290IHdhcyBidWlsdC5ATWVtYmVyc09uYm9hcmRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAUEXE1lbWJlcnMgd2VyZSBvbmJvYXJkZWQuLFJpbmdzTWVyZ2VkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxiYXNlX3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAUR0YXJnZXRfcmluZ19pbmRleDgBJFJpbmdJbmRleAAGBFhUd28gcmluZ3Mgd2VyZSBtZXJnZWQuRE9uYm9hcmRpbmdTaXplU2V0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxvbmJvYXJkaW5nX3NpemU4AQx1MzIABwS0VGhlIG9uYm9hcmRpbmcgc2l6ZSB3YXMgc2V0IGZvciBhIGNvbGxlY3Rpb24uSE1lbWJlclNlbGZJbmNsdWRlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEMa2V5CAEsTWVtYmVyT2Y8VD4ACASMQSBtZW1iZXIgc2VsZi1pbmNsdWRlZCBpbnRvIGEgcmluZy5AT2xkUm9vdENsZWFuZWRVcAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAEMdTMyAAkEpEFuIG9sZCByb290IHJldmlzaW9uIGhhcyBiZWVuIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQcMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFdmVudAQEVAABXCRDb2luU3BsaXQEATBvdXRwdXRfY291bnQ4AQx1MzIAAAA8Q29pblRyYW5zZmVycmVkDAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAARxuZXdfYWdlLQMBDHUxNgABAFhSZWN5Y2xlckxvYWRlZFdpdGhDb2luBAEUdmFsdWV1AwEkQ29pblZhbHVlAAIAfFJlY3ljbGVyTG9hZGVkV2l0aEV4dGVybmFsQXNzZXQMAQx3aG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAARhhbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AAwBgUmVjeWNsZXJVbmxvYWRlZEludG9Db2luEAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF92YWx1ZXUDASRDb2luVmFsdWUAATBvdXRwdXRfdmFsdWV1AwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIABACEUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0EAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAFALBSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXRBbmRWb3VjaGVycxQBCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIAAVRleHRlcm5hbF9hc3NldF9hbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATR2b3VjaGVyX2NvdW50OAEMdTMyAAYAhFBhaWRVbmxvYWRUb2tlblJlZ2lzdGVyZWRXaXRoQ29pbggBDGZlZcQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABJGRlc3Ryb3llZMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAHAIxQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aE5hdGl2ZQgBDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZcQBSE5hdGl2ZUJhbGFuY2VPZjxUPgAIAIxQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aFN0YWJsZQgBDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZcQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAJAHRQZW9wbGVGcmVlVW5sb2FkVG9rZW5Db25zdW1lZAQBGHBlcmlvZDgBGFBlcmlvZAAKAIRMaXRlUGVvcGxlRnJlZVVubG9hZFRva2VuQ29uc3VtZWQEARhwZXJpb2Q4ARhQZXJpb2QACwBkUmVjeWNsZXJzVW5sb2FkZWRJbnRvQ29pbgwBCHRvBAEwVDo6QWNjb3VudElkAAEwb3V0cHV0X3ZhbHVldQMBJENvaW5WYWx1ZQABLGlucHV0X2NvdW50OAEMdTMyAAwAiFJlY3ljbGVyc1VubG9hZGVkSW50b0V4dGVybmFsQXNzZXQMAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AA0AuFJlY3ljbGVyc1VubG9hZGVkSW50b0V4dGVybmFsQXNzZXROb25Bbm9ueW1vdXMUAQx3aG8EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwZmVlX2N1cnJlbmN5UQUBLEZlZUN1cnJlbmN5AA4AZFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbnMEATBvdXRwdXRfY291bnQ4AQx1MzIADwB8Q29pbk9mZmJvYXJkZWRJbnRvRXh0ZXJuYWxBc3NldAwBCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABAAPFJlY3ljbGVyQ2xlYW5lZAwBFHZhbHVldQMBJENvaW5WYWx1ZQABPHJlbWFpbmluZ19jb2luczgBDHUzMgABQGRlc3Ryb3llZF9hbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEQBkQ29uc3VtZWRGcmVlVG9rZW5zQ2xlYW5lZAQBGHBlcmlvZDgBGFBlcmlvZAASAGhQYWlkVW5sb2FkVG9rZW5SaW5nQ2xlYW5lZAgBGHBlcmlvZDgBGFBlcmlvZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAEwBMUmVjeWNsZXJEdXN0Q2xlYW5lZAAUAGhQYWlkVW5sb2FkVG9rZW5EdXN0Q2xlYW5lZAAVAJxFeHBpcmVkUGFpZFVubG9hZFRva2VuQ29sbGVjdGlvbkRlbGV0ZWQEARhwZXJpb2Q4ARhQZXJpb2QAFgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRBwx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIYcGFsbGV0FEV2ZW50BARUAAEYKFN1YnNjcmliZWQEARxwYXJhX2lknAEYUGFyYUlkAAAEXEEgcGFyYWNoYWluIHN1YnNjcmliZWQuMFVuc3Vic2NyaWJlZAQBHHBhcmFfaWScARhQYXJhSWQAAQRkQSBwYXJhY2hhaW4gdW5zdWJzY3JpYmVkLixVcGRhdGVzU2VudAgBHHBhcmFfaWScARhQYXJhSWQAATB1cGRhdGVfY291bnQ4AQx1MzIAAgSAVXBkYXRlIGJhdGNoIHNlbnQgdG8gc3Vic2NyaWJlci5AVXBkYXRlU2VuZEZhaWxlZAQBHHBhcmFfaWScARhQYXJhSWQAAwTEU2VuZGluZyByaW5nIHJvb3QgdXBkYXRlcyB0byBhIHN1YnNjcmliZXIgZmFpbGVkLjxSZXBsYXlSZXF1ZXN0ZWQMARxwYXJhX2lknAEYUGFyYUlkAAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATRpbmRpY2VzX2NvdW50OAEMdTMyAAQEvFJlcGxheSBvZiByaW5nIHJvb3RzIHJlcXVlc3RlZCBieSBhIHN1YnNjcmliZXIuOEJhdGNoQWJhbmRvbmVkBAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgAFBMxBIHN0dWNrIGJhdGNoIHdhcyBhYmFuZG9uZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRVBwyMaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb24YcGFsbGV0FEV2ZW50BARUAAFIMEFzc2V0Q3JlYXRlZAAABNBUaGUgZm9yZWlnbiBhc3NldCB3YXMgY3JlYXRlZCBhbmQgcmVzZXJ2ZXMgd2VyZSBzZXQuUFhjbUZ1bmRzVHJhbnNmZXJTZW50AAEEsEFuIFhDTSBmdW5kcyB0cmFuc2ZlciB3YXMgc2VudCB0byBBc3NldCBIdWIuYFhjbUZ1bmRzVHJhbnNmZXJUaW1lZE91dAACBLxUaGUgWENNIHRyYW5zZmVyIHRpbWVkIG91dCBhbmQgd2lsbCBiZSByZXRyaWVkLjRGdW5kc1ZlcmlmaWVkAAMElFRyYW5zZmVycmVkIGZ1bmRzIGhhdmUgYmVlbiB2ZXJpZmllZC4oUG90c0Z1bmRlZAAEBGhBbGwgcG90cyBoYXZlIGJlZW4gZnVuZGVkLlxNb2JSdWxlUGF5b3V0c1NjaGVkdWxlZAAFBJhNb2IgUnVsZSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gc2V0LlRTY29yZVBheW91dHNTY2hlZHVsZWQABgSMU2NvcmUgcGF5b3V0IHNjaGVkdWxlIGhhcyBiZWVuIHNldC5EQWlyZHJvcFBvb2xPcGVuZWQEARxwb29sX2lkOAGEaW5kaXZfcGFsbGV0X2FpcmRyb3A6OlByaXplUG9vbElkAAcE/EFuIGFpcmRyb3AgcHJpemUgcG9vbCBoYXMgYmVlbiBvcGVuZWQgYnkgdGhlIG9uX3BvbGwgc2NoZWR1bGVyLnxBaXJkcm9wU2NoZWR1bGluZ0VuYWJsZWRDaGFuZ2VkBAEcZW5hYmxlZMgBEGJvb2wACARBAUFpcmRyb3Agc2NoZWR1bGluZyB3YXMgZW5hYmxlZCBvciBkaXNhYmxlZCB2aWEgYHNldF9haXJkcm9wX3NjaGVkdWxpbmdfZW5hYmxlZGAudE9uUG9sbEluaXRpYWxpemF0aW9uQ29tcGxldGVkAAkMKQFUaGUgb25lLXRpbWUgb25fcG9sbCBpbml0aWFsaXphdGlvbiBoYXMgY29tcGxldGVkLiBSZWN1cnJpbmcgYWlyZHJvcCBwcml6Zfxwb29sIG9wZW5pbmcgY29udGludWVzIGFmdGVyd2FyZCBpbiBgT3BlbmluZ0FpcmRyb3BQb29sc2Agd2hpbGWUYEFpcmRyb3BTY2hlZHVsaW5nRW5hYmxlZGAgaXMgYHRydWVgLmRNaWdyYXRpb25QZW9wbGVSZWNvZ25pemVkAAoEvE1pZ3JhdGlvbjogaW5pdGlhbCBwZW9wbGUgaGF2ZSBiZWVuIHJlY29nbml6ZWQuaE1pZ3JhdGlvbk9uYm9hcmRpbmdTaXplU2V0AAsEoE1pZ3JhdGlvbjogb25ib2FyZGluZyBzaXplIGhhcyBiZWVuIHNldC54TWlncmF0aW9uUHJvb2ZPZklua0luaXRpYWxpemVkAAwE0E1pZ3JhdGlvbjogUHJvb2Ytb2YtSW5rIHBhbGxldCBoYXMgYmVlbiBpbml0aWFsaXplZC5cTWlncmF0aW9uR2FtZXNTY2hlZHVsZWQADQSUTWlncmF0aW9uOiBnYW1lcyBoYXZlIGJlZW4gc2NoZWR1bGVkLlxNaWdyYXRpb25JbnZpdGVzR3JhbnRlZAAOBJRNaWdyYXRpb246IGludml0ZXMgaGF2ZSBiZWVuIGdyYW50ZWQufE1pZ3JhdGlvblJlaW1idXJzZW1lbnRWYWx1ZXNTZXQADwTsTWlncmF0aW9uOiBQcm9vZi1vZi1JbmsgcmVpbWJ1cnNlbWVudCB2YWx1ZXMgaGF2ZSBiZWVuIHNldC6ETWlncmF0aW9uQXR0ZXN0YXRpb25BbGxvd2FuY2VzU2V0ABAE8E1pZ3JhdGlvbjogUGVvcGxlIExpdGUgYXR0ZXN0YXRpb24gYWxsb3dhbmNlcyBoYXZlIGJlZW4gc2V0LkhNaWdyYXRpb25Db21wbGV0ZWQAEQQZAU1pZ3JhdGlvbiBoYXMgY29tcGxldGVkIGFuZCBvbl9wb2xsIGluaXRpYWxpemF0aW9uIGhhcyBiZWVuIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRZBwygaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb25fbGl0ZRhwYWxsZXQURXZlbnQEBFQAAQRcSW5pdGlhbGl6YXRpb25Db21wbGV0ZWQAAAQRAUF0dGVzdGF0aW9uIGFsbG93YW5jZXMgaGF2ZSBiZWVuIHNldCBhbmQgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQcMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBRFdmVudAQEVAABGDxQcml6ZVBvb2xPcGVuZWQcAQhpZDgBLFByaXplUG9vbElkAAEoZGlzcGF0Y2hlcgQBMFQ6OkFjY291bnRJZAABGHRhcmdldHkFASxQcml6ZVRhcmdldAABIGFzc2V0X2lk4AEwQXNzZXRJZE9mPFQ+AAEobnVtX3ByaXplczgBDHUzMgABLHByaXplX3ZhbHVlxAFEQXNzZXRCYWxhbmNlT2Y8VD4AAShleHBpcmVzX2F0KAEMdTY0AAAEYEEgcHJpemUgcG9vbCB3YXMgb3BlbmVkLjBQcml6ZUNsYWltZWQUARxwb29sX2lkOAEsUHJpemVQb29sSWQAASBjbGFpbWFudDEHAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AARhhbW91bnTEAURBc3NldEJhbGFuY2VPZjxUPgABFBkBQSBwcml6ZSB3YXMgY2xhaW1lZCBmcm9tIGEgcHJpemUgcG9vbC4gYGNsYWltYW50YCBpcyB0aGUgaWRlbnRpdHkgdGhhdAUBc2F0aXNmaWVkIHRoZSBwb29sJ3MgZWxpZ2liaWxpdHkgcHJlZGljYXRlIOKAlCBhIFBlcnNvbiBhbGlhcyBmb3LsW2BDYWxsOjpjbGFpbV9wcml6ZWBdICh2ZXJpZmllZC1wZW9wbGUgcG9vbHMpLCBhbmQgd2hhdGV2ZXINAWBBY2NvdW50T3JQZXJzb25gIHRoZSBnYW1lIHBhbGxldCBzdXBwbGllZCBmb3IgZ2FtZS1wb29sIGNsYWltcyB2aWGEW2BBaXJkcm9wQXBpOjpjbGFpbV9nYW1lX3ByaXplYF0uQEFsbFByaXplc0NsYWltZWQIAQhpZDgBLFByaXplUG9vbElkAAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AAgwZAUEgcHJpemUgcG9vbCBkZWxpdmVyZWQgaXRzIGxhc3QgcHJpemUuIFRoZSBwb29sIHN0YXlzIGluIHN0b3JhZ2UgdW50aWwhAWBleHBpcmVzX2F0YCBzbyBgUHJpemVQb29sQ2xhaW1zYCBrZWVwcyB0aGUgcmVwbGF5IHdpbmRvdzsgZnVydGhlciBjbGFpbbBhdHRlbXB0cyByZXR1cm4gYEVycm9yOjpQcml6ZVBvb2xFeGhhdXN0ZWRgLkBQcml6ZVBvb2xFeHBpcmVkDAEIaWQ4ASxQcml6ZVBvb2xJZAABIGFzc2V0X2lk4AEwQXNzZXRJZE9mPFQ+AAEgcmVmdW5kZWTEAURBc3NldEJhbGFuY2VPZjxUPgADCD0BQSBwcml6ZSBwb29sIHJlYWNoZWQgYGV4cGlyZXNfYXRgIGFuZCB3YXMgY2xlYW5lZCB1cDsgcmVtYWluaW5nIGhlbGQgZnVuZHMgd2VyZSRyZWxlYXNlZC48UHJpemVQb29sQ2xvc2VkDAEIaWQ4ASxQcml6ZVBvb2xJZAABIGFzc2V0X2lk4AEwQXNzZXRJZE9mPFQ+AAEgcmVmdW5kZWTEAURBc3NldEJhbGFuY2VPZjxUPgAECFEBQSBwcml6ZSBwb29sIHdhcyBjbG9zZWQgZWFybHkgYnkgaXRzIGRpc3BhdGNoZXIgKG9yIGBNYW5hZ2VyT3JpZ2luYCk7IHJlbWFpbmluZyBoZWxkUGZ1bmRzIHdlcmUgcmVsZWFzZWQuTFByaXplVHJhbnNmZXJGYWlsZWQQARxwb29sX2lkOAEsUHJpemVQb29sSWQAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lk4AEwQXNzZXRJZE9mPFQ+AAEYYW1vdW50xAFEQXNzZXRCYWxhbmNlT2Y8VD4ABRQpAVRoZSBzbG90IHdhcyBhd2FyZGVkIGJ1dCB0aGUgaW1tZWRpYXRlIHBheW91dCB0cmFuc2ZlciBmYWlsZWQgKGUuZy4gZHVzdGVkLQFiZW5lZmljaWFyeSkuIFRoZSByZWxlYXNlK3RyYW5zZmVyIHdhcyByb2xsZWQgYmFjayBzbyB0aGUgZnVuZHMgcmVtYWluIGhlbGQpAW9uIHRoZSBwb3QsIGJ1dCBgUHJpemVQb29sQ2xhaW1zYCBhbmQgYHByaXplc19yZW1haW5pbmdgIHN0aWxsIHJlZmxlY3QgdGhlLQFjbGFpbSDigJQgdGhlIHNsb3QgaXMgY29uc3VtZWQgd2l0aG91dCBhIHJlY292ZXJ5IHBhdGguIEVtaXR0ZWQgaW4gYWRkaXRpb25IdG8gYFByaXplQ2xhaW1lZGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0YQcMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3KlBQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRlBwgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAGkHAAACPABtBwAAAnEHAHEHAAAECDg4AHUHCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZXkHAURDb3c8J3N0YXRpYywgc3RyPgAAeQcEDENvdwQEVAF9BwAEAH0HAAAAfQcAAAUCAIEHCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbsgBEGJvb2wAAIUHDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja9UBARhXZWlnaHQAASRtYXhfYmxvY2vVAQEYV2VpZ2h0AAEkcGVyX2NsYXNziQcBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAiQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAGNBwAMARhub3JtYWyNBwEEVAABLG9wZXJhdGlvbmFsjQcBBFQAASRtYW5kYXRvcnmNBwEEVAAAjQcMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY9UBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljpQIBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFspQIBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWSlAgE4T3B0aW9uPFdlaWdodD4AAJEHDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXiVBwFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXplCQMBLE9wdGlvbjx1MzI+AACVBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAJkHCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AACdBwgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1leQcBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1leQcBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzoQcBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAoQcEDENvdwQEVAGlBwAEAKUHAAAApQcAAAKpBwCpBwAABAi9ATgArQcMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0sQcMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAALUHEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwG5BwAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzyQcBOFZlYzxFeHRyaW5zaWM+AAC5BxAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQE1BBRFeHRyYQG9BwAEABgAAAC9Bwh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBwQcABADBBwEEUwAAwQcAAAQoxQcZBh0GIQYlBikGLQY1BjkGPQYAxQcAAAQoqQWtBbkFxQXRBd0F6QX1BQkGFQYAyQcAAAK5BwDNBwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXgJAwEsT3B0aW9uPHUzMj4AATR0YXJnZXRfd2VpZ2h01QEBGFdlaWdodAABADhGcmFjdGlvbk9mQ29yZQgBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV4CQMBLE9wdGlvbjx1MzI+AAIAANEHAAAGLQMA1QcAAALZBwDZBwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBPAAMATh1c2VkX2JhbmR3aWR0aN0HATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2jxBwEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFs9QcBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AADdBwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmfhBwGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AAOEHBCBCVHJlZU1hcAgESwGcBFYB5QcABADpBwAAAOUHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAOkHAAAC7QcA7QcAAAQInOUHAPEHBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAA9QcEGE9wdGlvbgQEVAH5BwEIEE5vbmUAAAAQU29tZQQA+QcAAAEAAPkHDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAA/QcMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGjdBwE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJrCQMBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFs9QcBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAABCAQYT3B0aW9uBARUAQUIAQgQTm9uZQAAABBTb21lBAAFCAAAAQAABQgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAACQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHkNCAGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzEQgBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHMRCAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAADQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAAARCAAAAhUIABUIAAAECJwZCAAZCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWTxBwEwT3B0aW9uPEhhc2g+AAAdCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtcyEIAUhBc3luY0JhY2tpbmdQYXJhbXMAACEIEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAACUICJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEADwBJFJlbGF5SGFzaAAAKQgEIEJUcmVlTWFwCARLAZwEVgElCAAEAC0IAAAALQgAAAIxCAAxCAAABAicJQgANQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAAA5CAAAAj0IAD0ICGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBnAAIASRyZWNpcGllbnScAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AABBCAh8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbSxQb1ZNZXNzYWdlcwAAGAFocmVsYXlfc3RvcmFnZV9yb290X29yX2hhc2g8AURyZWxheV9jaGFpbjo6SGFzaAABNGNvcmVfc2VsZWN0b3IMAQh1OAABMGJ1bmRsZV9pbmRleAwBCHU4AAE0dW1wX21zZ19jb3VudDgBDHUzMgABTGhybXBfb3V0Ym91bmRfY291bnQ4AQx1MzIAAWBocm1wX291dGJvdW5kX3JlY2lwaWVudHNFCAEsVmVjPFBhcmFJZD4AAEUIAAACnABJCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5NCAxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAVEIBFMAAAQAWQgBGFZlYzxUPgAAUQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQHEAAwBCGlkvQEBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50xAEcQmFsYW5jZQABHHJlYXNvbnNVCAEcUmVhc29ucwAAVQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAABZCAAAAlEIAF0IDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBYQgEUwAABABlCAEYVmVjPFQ+AABhCAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgG9ARxCYWxhbmNlAcQACAEIaWS9AQFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnTEARxCYWxhbmNlAABlCAAAAmEIAGkIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBbQgEUwAABABxCAEYVmVjPFQ+AABtCBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAZUGHEJhbGFuY2UBxAAIAQhpZJUGAQhJZAABGGFtb3VudMQBHEJhbGFuY2UAAHEIAAACbQgAdQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF5CARTAAAEAH0IARhWZWM8VD4AAHkIFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAcQACAEIaWQQAQhJZAABGGFtb3VudMQBHEJhbGFuY2UAAH0IAAACeQgAgQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUICGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAAiQgQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAY0IAAQAjQgBBFQAAI0IGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgHEGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudMQBBEIAAJEIDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRVc2FnZQgcQmFsYW5jZQHELEJsb2NrTnVtYmVyATgACAEQdXNlZMQBHEJhbGFuY2UAASBhdF9ibG9jazgBLEJsb2NrTnVtYmVyAACVCAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXJyb3IEBFQAAQgcTm9Vc2FnZQAABIBUaGUgb3JpZ2luIGhhcyBubyB1c2FnZSB0cmFja2VkLhxOb3RaZXJvAAEEWFRoZSB1c2FnZSBpcyBub3QgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQumQgMNHBhbGxldF9hc3NldHMUdHlwZXMwQXNzZXREZXRhaWxzDBxCYWxhbmNlAcQkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBxAAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBsecQBHEJhbGFuY2UAARxkZXBvc2l0xAE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZcQBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50yAEQYm9vbAABIGFjY291bnRzOAEMdTMyAAEsc3VmZmljaWVudHM4AQx1MzIAASRhcHByb3ZhbHM4AQx1MzIAARhzdGF0dXOdCAEsQXNzZXRTdGF0dXMAAJ0IDDRwYWxsZXRfYXNzZXRzFHR5cGVzLEFzc2V0U3RhdHVzAAEMEExpdmUAAAAYRnJvemVuAAEAKERlc3Ryb3lpbmcAAgAAoQgAAAQI4AQApQgMNHBhbGxldF9hc3NldHMUdHlwZXMwQXNzZXRBY2NvdW50EBxCYWxhbmNlAcQ4RGVwb3NpdEJhbGFuY2UBxBRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2XEARxCYWxhbmNlAAEYc3RhdHVzqQgBNEFjY291bnRTdGF0dXMAARhyZWFzb26tCAGoRXhpc3RlbmNlUmVhc29uPERlcG9zaXRCYWxhbmNlLCBBY2NvdW50SWQ+AAEUZXh0cmEQARRFeHRyYQAAqQgMNHBhbGxldF9hc3NldHMUdHlwZXM0QWNjb3VudFN0YXR1cwABDBhMaXF1aWQAAAAYRnJvemVuAAEAHEJsb2NrZWQAAgAArQgMNHBhbGxldF9hc3NldHMUdHlwZXM8RXhpc3RlbmNlUmVhc29uCBxCYWxhbmNlAcQkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBADEARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAADEARxCYWxhbmNlAAQAALEIAAAEDOAEBAC1CAw0cGFsbGV0X2Fzc2V0cxR0eXBlcyBBcHByb3ZhbAgcQmFsYW5jZQHEOERlcG9zaXRCYWxhbmNlAcQACAEYYW1vdW50xAEcQmFsYW5jZQABHGRlcG9zaXTEAThEZXBvc2l0QmFsYW5jZQAAuQgMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBxDRCb3VuZGVkU3RyaW5nAb0IABQBHGRlcG9zaXTEAThEZXBvc2l0QmFsYW5jZQABEG5hbWW9CAE0Qm91bmRlZFN0cmluZwABGHN5bWJvbL0IATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbsgBEGJvb2wAAL0IDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAwQgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsUIBBhPcHRpb24EBFQBmQgBCBBOb25lAAAAEFNvbWUEAJkIAAABAADJCAQYT3B0aW9uBARUAcQBCBBOb25lAAAAEFNvbWUEAMQAAAEAAM0IBBhPcHRpb24EBFQBuQgBCBBOb25lAAAAEFNvbWUEALkIAAABAADRCAxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEVycm9yCARUAARJAAEEMFRvb01hbnlIb2xkcwAABDEBTnVtYmVyIG9mIGhvbGRzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIHRoZSBjb3VudCBvZiBgUnVudGltZUhvbGRSZWFzb25gLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VCAxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu2QgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAzAEYVmVjPFQ+AADdCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeEIBFMAAAQA5QgBGFZlYzxUPgAA4QgMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0NENhbmRpZGF0ZUluZm8IJEFjY291bnRJZAEEHEJhbGFuY2UBxAAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0xAEcQmFsYW5jZQAA5QgAAALhCADpCAg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABAC9AQEcW3U4OyA4XQAA7QgMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu8QgAAAL1CAD1CAAABAgEOQEA+QgAAAL9CAD9CAAABAg4AQkAAQkMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQABQkBHFBlcmJpbGwAAAUJDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAAkJAAAECA0JGAANCQwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AABEJDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuFQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE9AQRTAAAEABkJARhWZWM8VD4AABkJAAACPQEAHQkISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAIQkAAAQIHQk4ACUJDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAKQkBLEJUcmVlU2V0PFQ+AAApCQQgQlRyZWVTZXQEBFQBnAAEAEUIAAAALQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAExCQRTAAAEAD0JARhWZWM8VD4AADEJCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlNQkBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0yAEQYm9vbAABLGZpcnN0X2luZGV4LQMBDHUxNgABKGxhc3RfaW5kZXgtAwEMdTE2AAEUZmxhZ3M5CQFQT3V0Ym91bmRDaGFubmVsRmxhZ3MAADUJCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlNE91dGJvdW5kU3RhdGUAAQgIT2sAAAAkU3VzcGVuZGVkAAEAADkJCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAAEARBiaXRzOAEMdTMyAAA9CQAAAjEJAEEJAAAECJwtAwBFCQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEkJCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlPFF1ZXVlQ29uZmlnRGF0YQAADAFEc3VzcGVuZF90aHJlc2hvbGQ4AQx1MzIAAThkcm9wX3RocmVzaG9sZDgBDHUzMgABQHJlc3VtZV90aHJlc2hvbGQ4AQx1MzIAAE0JDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABFDhCYWRRdWV1ZUNvbmZpZwAABBEBU2V0dGluZyB0aGUgcXVldWUgY29uZmlnIGZhaWxlZCBzaW5jZSBvbmUgb2YgaXRzIHZhbHVlcyB3YXMgaW52YWxpZC5AQWxyZWFkeVN1c3BlbmRlZAABBIxUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgc3VzcGVuZGVkLjhBbHJlYWR5UmVzdW1lZAACBIRUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgcmVzdW1lZC50VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAwSwVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBvdXRib3VuZCBjaGFubmVscy4YVG9vQmlnAAQEXFRoZSBtZXNzYWdlIGlzIHRvbyBiaWcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEJDChwYWxsZXRfeGNtGHBhbGxldCxRdWVyeVN0YXR1cwQsQmxvY2tOdW1iZXIBOAEMHFBlbmRpbmcQASRyZXNwb25kZXJJAQFEVmVyc2lvbmVkTG9jYXRpb24AAUxtYXliZV9tYXRjaF9xdWVyaWVyVQkBZE9wdGlvbjxWZXJzaW9uZWRMb2NhdGlvbj4AATBtYXliZV9ub3RpZnlZCQFAT3B0aW9uPCh1OCwgdTgpPgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAADxWZXJzaW9uTm90aWZpZXIIARhvcmlnaW5JAQFEVmVyc2lvbmVkTG9jYXRpb24AASRpc19hY3RpdmXIARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2VhCQFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAFUJBBhPcHRpb24EBFQBSQEBCBBOb25lAAAAEFNvbWUEAEkBAAABAABZCQQYT3B0aW9uBARUAV0JAQgQTm9uZQAAABBTb21lBABdCQAAAQAAXQkAAAQIDAwAYQkIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQAxQEBMHYzOjpSZXNwb25zZQADAAhWNAQANQIBMHY0OjpSZXNwb25zZQAEAAhWNQQAgQIBMHY1OjpSZXNwb25zZQAFAABlCQAABAg4SQEAaQkAAAQMKNUBOABtCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXEJBFMAAAQAdQkBGFZlYzxUPgAAcQkAAAQISQE4AHUJAAACcQkAeQkMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQApQUBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAAB9CQAABAw4BBEDAIEJDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyARAwTWF4Q29uc3VtZXJzAAAQARhhbW91bnTEARB1MTI4AAEUb3duZXJJAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXJJAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnOFCQHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAhQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGJCQRTAAAEAI0JARhWZWM8VD4AAIkJAAAECBDEAI0JAAACiQkAkQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGVCQRTAAAEAJkJARhWZWM8VD4AAJUJAAAECMRJAQCZCQAAApUJAJ0JCChwYWxsZXRfeGNtWEF1dGhvcml6ZWRBbGlhc2VzRW50cnkIGFRpY2tldAGhCQxNQVgBpQkACAEgYWxpYXNlcnOpCQF4Qm91bmRlZFZlYzxPcmlnaW5BbGlhc2VyLCBNQVg+AAEYdGlja2V0oQkBGFRpY2tldAAAoQkQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UgRGlzYWJsZWQAAAAApQkMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAKkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQkEUwAABACxCQEYVmVjPFQ+AACtCQxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb25JAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnkVAwEsT3B0aW9uPHU2ND4AALEJAAACrQkAtQkMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcrkJAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC65CQwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAAC9CQhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luASEDABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzwQkBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AADBCQQYT3B0aW9uBARUAcUJAQgQTm9uZQAAABBTb21lBADFCQAAAQAAxQkIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4BIQMACAEQcHJldiEDATRNZXNzYWdlT3JpZ2luAAEQbmV4dCEDATRNZXNzYWdlT3JpZ2luAADJCQAABAghAzgAzQkIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcNEJAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AANEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA1QkMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7ZCQw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEVycm9yBARUAAEEMFRvb01hbnlDYWxscwAABFxUb28gbWFueSBjYWxscyBiYXRjaGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dCQAABAgECADhCQg8cGFsbGV0X211bHRpc2lnIE11bHRpc2lnECxCbG9ja051bWJlcgE4HEJhbGFuY2UBxCRBY2NvdW50SWQBBDBNYXhBcHByb3ZhbHMAABABEHdoZW6RAwFYVGltZXBvaW50PEJsb2NrTnVtYmVyPgABHGRlcG9zaXTEARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxz5QkBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AADlCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABADMARhWZWM8VD4AAOkJDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEVycm9yBARUAAE4QE1pbmltdW1UaHJlc2hvbGQAAAR8VGhyZXNob2xkIG11c3QgYmUgMiBvciBncmVhdGVyLjxBbHJlYWR5QXBwcm92ZWQAAQSsQ2FsbCBpcyBhbHJlYWR5IGFwcHJvdmVkIGJ5IHRoaXMgc2lnbmF0b3J5LkROb0FwcHJvdmFsc05lZWRlZAACBJxDYWxsIGRvZXNuJ3QgbmVlZCBhbnkgKG1vcmUpIGFwcHJvdmFscy5EVG9vRmV3U2lnbmF0b3JpZXMAAwSoVGhlcmUgYXJlIHRvbyBmZXcgc2lnbmF0b3JpZXMgaW4gdGhlIGxpc3QuSFRvb01hbnlTaWduYXRvcmllcwAEBKxUaGVyZSBhcmUgdG9vIG1hbnkgc2lnbmF0b3JpZXMgaW4gdGhlIGxpc3QuVFNpZ25hdG9yaWVzT3V0T2ZPcmRlcgAFBA0BVGhlIHNpZ25hdG9yaWVzIHdlcmUgcHJvdmlkZWQgb3V0IG9mIG9yZGVyOyB0aGV5IHNob3VsZCBiZSBvcmRlcmVkLkxTZW5kZXJJblNpZ25hdG9yaWVzAAYEDQFUaGUgc2VuZGVyIHdhcyBjb250YWluZWQgaW4gdGhlIG90aGVyIHNpZ25hdG9yaWVzOyBpdCBzaG91bGRuJ3QgYmUuIE5vdEZvdW5kAAcEoE11bHRpc2lnIG9wZXJhdGlvbiBub3QgZm91bmQgaW4gc3RvcmFnZS4gTm90T3duZXIACAhRAU9ubHkgdGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhlIG11bHRpc2lnIGlzIGFibGUgdG8gY2FuY2VsIGl0IG9yIHVwZGF0ZTRpdHMgZGVwb3NpdHMuLE5vVGltZXBvaW50AAkEHQFObyB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgdGhlIG11bHRpc2lnIG9wZXJhdGlvbiBpcyBhbHJlYWR5IHVuZGVyd2F5LjhXcm9uZ1RpbWVwb2ludAAKBC0BQSBkaWZmZXJlbnQgdGltZXBvaW50IHdhcyBnaXZlbiB0byB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIHRoYXQgaXMgdW5kZXJ3YXkuTFVuZXhwZWN0ZWRUaW1lcG9pbnQACwT0QSB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgbm8gbXVsdGlzaWcgb3BlcmF0aW9uIGlzIHVuZGVyd2F5LjxNYXhXZWlnaHRUb29Mb3cADATQVGhlIG1heGltdW0gd2VpZ2h0IGluZm9ybWF0aW9uIHByb3ZpZGVkIHdhcyB0b28gbG93LjRBbHJlYWR5U3RvcmVkAA0EoFRoZSBkYXRhIHRvIGJlIHN0b3JlZCBpcyBhbHJlYWR5IHN0b3JlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu7QkMLHBhbGxldF9zdWRvGHBhbGxldBRFcnJvcgQEVAABBCxSZXF1aXJlU3VkbwAABIBTZW5kZXIgbXVzdCBiZSB0aGUgU3VkbyBhY2NvdW50LgRoRXJyb3IgZm9yIHRoZSBTdWRvIHBhbGxldC7xCQAABAj1CcQA9QkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH5CQRTAAAEAP0JARhWZWM8VD4AAPkJCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBoQMsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGWhAwEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAA/QkAAAL5CQABCgAABAgFCsQABQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEJCgRTAAAEAA0KARhWZWM8VD4AAAkKCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBBBBIYXNoATwsQmxvY2tOdW1iZXIBOAAMARByZWFsBAEkQWNjb3VudElkAAEkY2FsbF9oYXNoPAEQSGFzaAABGGhlaWdodDgBLEJsb2NrTnVtYmVyAAANCgAAAgkKABEKDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4VCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzMFJlZ2lzdHJhdGlvbgwcQmFsYW5jZQHENE1heEp1ZGdlbWVudHMAMElkZW50aXR5SW5mbwGpAwAMAShqdWRnZW1lbnRzGQoB/EJvdW5kZWRWZWM8KFJlZ2lzdHJhckluZGV4LCBKdWRnZW1lbnQ8QmFsYW5jZT4pLCBNYXhKdWRnZW1lbnRzPgABHGRlcG9zaXTEARxCYWxhbmNlAAEQaW5mb6kDATBJZGVudGl0eUluZm8AABkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBHQoEUwAABAAhCgEYVmVjPFQ+AAAdCgAABAg4LQQAIQoAAAIdCgAlCgAABAjE5QkAKQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEtCgRTAAAEADUKARhWZWM8VD4AAC0KBBhPcHRpb24EBFQBMQoBCBBOb25lAAAAEFNvbWUEADEKAAABAAAxCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzNFJlZ2lzdHJhckluZm8MHEJhbGFuY2UBxCRBY2NvdW50SWQBBBxJZEZpZWxkASgADAEcYWNjb3VudAQBJEFjY291bnRJZAABDGZlZcQBHEJhbGFuY2UAARhmaWVsZHMoARxJZEZpZWxkAAA1CgAAAi0KADkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAPQoMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlc0xBdXRob3JpdHlQcm9wZXJ0aWVzBBxBY2NvdW50AQQACAEoYWNjb3VudF9pZAQBHEFjY291bnQAAShhbGxvY2F0aW9uOAEoQWxsb2NhdGlvbgAAQQoMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlc0xVc2VybmFtZUluZm9ybWF0aW9uCBxBY2NvdW50AQQcQmFsYW5jZQHEAAgBFG93bmVyBAEcQWNjb3VudAABIHByb3ZpZGVyRQoBRFByb3ZpZGVyPEJhbGFuY2U+AABFCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzIFByb3ZpZGVyBBxCYWxhbmNlAcQBDChBbGxvY2F0aW9uAAAAQEF1dGhvcml0eURlcG9zaXQEAMQBHEJhbGFuY2UAAQAYU3lzdGVtAAIAAEkKAAAEDAQ4RQoATQoMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlc0BQZXJzb25hbElkZW50aXR5ECRBY2NvdW50SWQBBCxKdWRnZW1lbnRJZAE4NE1heEp1ZGdlbWVudHMALEJsb2NrTnVtYmVyATgAEAEcYWNjb3VudAQBJEFjY291bnRJZAABSHBlbmRpbmdfanVkZ2VtZW50c1EKAcBCb3VuZGVkVmVjPChTb2NpYWwsIEp1ZGdlbWVudElkKSwgTWF4SnVkZ2VtZW50cz4AARhiYW5uZWTIARBib29sAAFkdXNlcm5hbWVfbGFzdF9yZXBvcnRlZF9hdAkDAUxPcHRpb248QmxvY2tOdW1iZXI+AABRCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVUKBFMAAAQAWQoBGFZlYzxUPgAAVQoAAAQIRQQ4AFkKAAACVQoAXQoMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlczhVc2VybmFtZVJlcG9ydAwkQWNjb3VudElkAQQgVXNlcm5hbWUBQQQYVGlja2V0ATgADAEgcmVwb3J0ZXIEASRBY2NvdW50SWQAASB1c2VybmFtZUEEASBVc2VybmFtZQABHGNhc2VfaWQ4ARhUaWNrZXQAAGEKDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkYcGFsbGV0FEVycm9yBARUAAGkSFRvb01hbnlTdWJBY2NvdW50cwAABFxUb28gbWFueSBzdWJzLWFjY291bnRzLhxOb0FsaWFzAAEEeE5vIGFsaWFzIGZvdW5kIGZvciBhbiBhY2NvdW50LiBOb3RGb3VuZAACBFBBY2NvdW50IGlzbid0IGZvdW5kLiBOb3ROYW1lZAADBFBBY2NvdW50IGlzbid0IG5hbWVkLihFbXB0eUluZGV4AAQEMEVtcHR5IGluZGV4LihGZWVDaGFuZ2VkAAUEPEZlZSBpcyBjaGFuZ2VkLihOb0lkZW50aXR5AAYESE5vIGlkZW50aXR5IGZvdW5kLjxTdGlja3lKdWRnZW1lbnQABwREU3RpY2t5IGp1ZGdlbWVudC44SnVkZ2VtZW50R2l2ZW4ACARASnVkZ2VtZW50IGdpdmVuLkBJbnZhbGlkSnVkZ2VtZW50AAkESEludmFsaWQganVkZ2VtZW50LjBJbnZhbGlkSW5kZXgACgRUVGhlIGluZGV4IGlzIGludmFsaWQuNEludmFsaWRUYXJnZXQACwRYVGhlIHRhcmdldCBpcyBpbnZhbGlkLkRUb29NYW55UmVnaXN0cmFycwAMBOhNYXhpbXVtIGFtb3VudCBvZiByZWdpc3RyYXJzIHJlYWNoZWQuIENhbm5vdCBhZGQgYW55IG1vcmUuOEFscmVhZHlDbGFpbWVkAA0EcEFjY291bnQgSUQgaXMgYWxyZWFkeSBuYW1lZC48QWxyZWFkeVJlcG9ydGVkAA4EjFVzZXJuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQuGE5vdFN1YgAPBHBTZW5kZXIgaXMgbm90IGEgc3ViLWFjY291bnQuIE5vdE93bmVkABAEiFN1Yi1hY2NvdW50IGlzbid0IG93bmVkIGJ5IHNlbmRlci50SnVkZ2VtZW50Rm9yRGlmZmVyZW50SWRlbnRpdHkAEQTQVGhlIHByb3ZpZGVkIGp1ZGdlbWVudCB3YXMgZm9yIGEgZGlmZmVyZW50IGlkZW50aXR5LlhKdWRnZW1lbnRQYXltZW50RmFpbGVkABIE+EVycm9yIHRoYXQgb2NjdXJzIHdoZW4gdGhlcmUgaXMgYW4gaXNzdWUgcGF5aW5nIGZvciBqdWRnZW1lbnQuNEludmFsaWRTdWZmaXgAEwSAVGhlIHByb3ZpZGVkIHN1ZmZpeCBpcyB0b28gbG9uZy5QTm90VXNlcm5hbWVBdXRob3JpdHkAFATgVGhlIHNlbmRlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gaXNzdWUgYSB1c2VybmFtZS4wTm9BbGxvY2F0aW9uABUExFRoZSBhdXRob3JpdHkgY2Fubm90IGFsbG9jYXRlIGFueSBtb3JlIHVzZXJuYW1lcy5ASW52YWxpZFNpZ25hdHVyZQAWBKhUaGUgc2lnbmF0dXJlIG9uIGEgdXNlcm5hbWUgd2FzIG5vdCB2YWxpZC5EUmVxdWlyZXNTaWduYXR1cmUAFwQJAVNldHRpbmcgdGhpcyB1c2VybmFtZSByZXF1aXJlcyBhIHNpZ25hdHVyZSwgYnV0IG5vbmUgd2FzIHByb3ZpZGVkLjxJbnZhbGlkVXNlcm5hbWUAGASwVGhlIHVzZXJuYW1lIGRvZXMgbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgAZBHhUaGUgdXNlcm5hbWUgaXMgYWxyZWFkeSB0YWtlbi4oTm9Vc2VybmFtZQAaBJhUaGUgcmVxdWVzdGVkIHVzZXJuYW1lIGRvZXMgbm90IGV4aXN0LmROb3RTeXN0ZW1Qcm92aWRlZFVzZXJuYW1lABsE1FRoZSByZXBvcnRlZCB1c2VybmFtZSB3YXMgbm90IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0uKE5vdEV4cGlyZWQAHAQtAVRoZSB1c2VybmFtZSBjYW5ub3QgYmUgZm9yY2VmdWxseSByZW1vdmVkIGJlY2F1c2UgaXQgY2FuIHN0aWxsIGJlIGFjY2VwdGVkLiBUb29FYXJseQAdBBkBVGhlIHVzZXJuYW1lIGNhbm5vdCBiZSByZW1vdmVkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgZ3JhY2UgcGVyaW9kLjBOb3RVbmJpbmRpbmcAHgTsVGhlIHVzZXJuYW1lIGNhbm5vdCBiZSByZW1vdmVkIGJlY2F1c2UgaXQgaXMgbm90IHVuYmluZGluZy5AQWxyZWFkeVVuYmluZGluZwAfBPxUaGUgdXNlcm5hbWUgY2Fubm90IGJlIHVuYm91bmQgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHVuYmluZGluZy5YSW5zdWZmaWNpZW50UHJpdmlsZWdlcwAgCEUBVGhlIGFjdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgKGUuZy4gYXV0aG9yaXR50HRyeWluZyB0byB1bmJpbmQgYSB1c2VybmFtZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtKS4oQmFkQ29udGV4dAAhBORUaGUgY29udGV4dCBpbiB3aGljaCB0aGUgYWxpYXMgd2FzIHVzZWQgaXMgbm90IHN1cHBvcnRlZC5MVW5leHBlY3RlZEp1ZGdlbWVudAAiBMRObyBhc3NvY2lhdGVkIHJlcXVlc3QgZm9yIHRoZSBqdWRnZW1lbnQgcmVjZWl2ZWQuME5vdFN1cHBvcnRlZAAjBF0BVGhlIHNvY2lhbCBjcmVkZW50aWFsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGNvbmZpZ3VyZWQgaWRlbnRpdHkgaW5mb3JtYXRpb24gcHJvdmlkZXIuGEJhbm5lZAAkBNhUaGUgcGVyc29uIGlzIGJhbm5lZCBhbmQgY2Fubm90IHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5EQWxyZWFkeVJlZ2lzdGVyZWQAJQQdAVRoZSBwZXJzb24gYWxyZWFkeSBoYXMgYSBwZXJzb25hbCBpZGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlaXIgYWxpYXMuREp1ZGdlbWVudExpc3RGdWxsACYE+FRoZSBsaXN0IG9mIGp1ZGdlbWVudHMgb25nb2luZyBvbiBhIHBlcnNvbmFsIGlkZW50aXR5IGlzIGZ1bGwubExhc3RVc2VybmFtZVJlcG9ydFRvb1JlY2VudAAnBLBUaGUgdXNlcm5hbWUgaGFzIGJlZW4gcmVwb3J0ZWQgdG9vIHJlY2VudGx5LmBVc2VybmFtZUp1ZGdlbWVudE9uZ29pbmcAKAQRAVRoZSB1c2VybmFtZSBoYXMgYmVlbiByZXBvcnRlZCBhbmQgaXMgdW5kZXJnb2luZyB2YWxpZGl0eSBqdWRnZW1lbnQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmUKDExpbmRpdl9wYWxsZXRfcGVvcGxlFHR5cGVzMFBlcnNvblJlY29yZAgYTWVtYmVyAQgkQWNjb3VudElkAQQACAEMa2V5CAEYTWVtYmVyAAEcYWNjb3VudBEHAURPcHRpb248QWNjb3VudElkPgAAaQoMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0FEVycm9yBARUAAGUJE5vdFBlcnNvbgAABNBUaGUgc3VwcGxpZWQgaWRlbnRpZmllciBkb2VzIG5vdCByZXByZXNlbnQgYSBwZXJzb24uFE5vS2V5AAEEnFRoZSBnaXZlbiBwZXJzb24gaGFzIG5vIGFzc29jaWF0ZWQga2V5LjhJbnZhbGlkQ29udGV4dAACBCkBVGhlIGNvbnRleHQgaXMgbm90IGEgbWVtYmVyIG9mIHRob3NlIGFsbG93ZWQgdG8gaGF2ZSBhY2NvdW50IGFsaWFzZXMgaGVsZC44SW52YWxpZEFjY291bnQAAwRkVGhlIGFjY291bnQgaXMgbm90IGtub3duLjBBY2NvdW50SW5Vc2UABATIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2UgdW5kZXIgYW5vdGhlciBhbGlhcy4wSW52YWxpZFByb29mAAUEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLkBJbnZhbGlkU2lnbmF0dXJlAAYEZFRoZSBzaWduYXR1cmUgaXMgaW52YWxpZC4kTm9NZW1iZXJzAAcE0FRoZXJlIGFyZSBub3QgeWV0IGFueSBtZW1iZXJzIG9mIG91ciBwZXJzb25ob29kIHNldC4oSW5jb21wbGV0ZQAIBAUBVGhlIHJvb3QgY2Fubm90IGJlIGZpbmFsaXplZCBhcyB0aGVyZSBhcmUgc3RpbGwgdW5wdXNoZWQgbWVtYmVycy4oU3RpbGxGcmVzaAAJBGBUaGUgcm9vdCBpcyBzdGlsbCBmcmVzaC44VG9vTWFueU1lbWJlcnMACgSIVG9vIG1hbnkgbWVtYmVycyBoYXZlIGJlZW4gcHVzaGVkLjxLZXlBbHJlYWR5SW5Vc2UACwSUS2V5IGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIgcGVyc29uLixLZXlOb3RGb3VuZAAMBKBUaGUgb2xkIGtleSB3YXMgbm90IGZvdW5kIHdoZW4gZXhwZWN0ZWQuMENvdWxkTm90UHVzaAANBJBDb3VsZCBub3QgcHVzaCBtZW1iZXIgaW50byB0aGUgcmluZy4cU2FtZUtleQAOBJRUaGUgcmVjb3JkIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBrZXkuVFBlcnNvbmFsSWROb3RSZXNlcnZlZAAPBHRQZXJzb25hbCBJZCB3YXMgbm90IHJlc2VydmVkLoBQZXJzb25hbElkUmVzZXJ2YXRpb25DYW5ub3RSZW5ldwAQBJBQZXJzb25hbCBJZCBoYXMgbmV2ZXIgYmVlbiByZXNlcnZlZC6QUGVyc29uYWxJZE5vdFJlc2VydmVkT3JOb3RSZWNvZ25pemVkABEE3FBlcnNvbmFsIElkIHdhcyBub3QgcmVzZXJ2ZWQgb3Igbm90IGFscmVhZHkgcmVjb2duaXplZC4sSW52YWxpZFJpbmcAEgSsUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3MgdGhlIHRvcCByaW5nLkhTdXNwZW5zaW9uc1BlbmRpbmcAEwTkUmluZyBjYW5ub3QgYmUgYnVpbHQgd2hpbGUgdGhlcmUgYXJlIHN1c3BlbnNpb25zIHBlbmRpbmcuXFJpbmdBYm92ZU1lcmdlVGhyZXNob2xkABQE1FJpbmcgY2Fubm90IGJlIG1lcmdlZCBpZiBpdCdzIG5vdCBiZWxvdyAxLzIgY2FwYWNpdHkuSEludmFsaWRTdXNwZW5zaW9ucwAVBKBTdXNwZW5zaW9uIGluZGljZXMgcHJvdmlkZWQgYXJlIGludmFsaWQuRE5vTXV0YXRpb25TZXNzaW9uABYENQFBbiBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyBtdXRhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzLnBDb3VsZE5vdFN0YXJ0TXV0YXRpb25TZXNzaW9uABcEpEFuIG11dGF0aW5nIHNlc3Npb24gY291bGQgbm90IGJlIHN0YXJ0ZWQubFN1c3BlbnNpb25TZXNzaW9uSW5Qcm9ncmVzcwAYBPRDYW5ub3QgbWVyZ2UgcmluZ3Mgd2hpbGUgYSBzdXNwZW5zaW9uIHNlc3Npb24gaXMgaW4gcHJvZ3Jlc3MuNEFsaWFzTm90U3RhbGUAGQR8VGhlIGFsaWFzIG1hcHBpbmcgaXMgbm90IHN0YWxlLjhUaW1lT3V0T2ZSYW5nZQAaBHhDYWxsIGlzIHRvbyBsYXRlIG9yIHRvbyBlYXJseS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAbBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS4wTm90U3VzcGVuZGVkABwE0FBlcnNvbmhvb2QgY2Fubm90IGJlIHJlc3VtZWQgaWYgaXQgaXMgbm90IHN1c3BlbmRlZC4kU3VzcGVuZGVkAB0EYFBlcnNvbmhvb2QgaXMgc3VzcGVuZGVkLkxJbnZhbGlkS2V5TWlncmF0aW9uAB4EqEludmFsaWQgc3RhdGUgZm9yIGF0dGVtcHRlZCBrZXkgbWlncmF0aW9uLkxLZXlBbHJlYWR5U3VzcGVuZGVkAB8IVQFJbnZhbGlkIHN1c3BlbnNpb24gb2YgYSBrZXkgYmVsb25naW5nIHRvIGEgcGVyc29uIHdob3NlIGluZGV4IGluIHRoZSByaW5nIGhhcyBhbHJlYWR5uGJlZW4gaW5jbHVkZWQgaW4gdGhlIHBlbmRpbmcgc3VzcGVuc2lvbnMgbGlzdC5USW52YWxpZE9uYm9hcmRpbmdTaXplACAE6FRoZSBvbmJvYXJkaW5nIHNpemUgbXVzdCBub3QgZXhjZWVkIHRoZSBtYXhpbXVtIHJpbmcgc2l6ZS5ASW52YWxpZE1lbWJlcktleQAhBKxUaGUgbWVtYmVyIGtleSBpcyBub3QgdmFsaWQgZm9yIHRoZSBjcnlwdG8udFBlb3BsZUNvbGxlY3Rpb25BbHJlYWR5RXhpc3RzACIEvFRoZSBwZW9wbGUgY29sbGVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuNEFsaWFzTWlzbWF0Y2gAIwQZAVRoZSBwcm92aWRlZCBhbGlhcyBkb2VzIG5vdCBtYXRjaCB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYWxpYXMgbWFwcGluZy44Tm9TdGFsZUFsaWFzZXMAJASgTm9uZSBvZiB0aGUgc3VwcGxpZWQgYWxpYXNlcyB3ZXJlIHN0YWxlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5tCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRNb2JDcmVkaXQEHEJhbGFuY2UBxAAQARR2b3RlZDgBDHUzMgABHGNsZWFuZWQ4AQx1MzIAARxjb3JyZWN0OAEMdTMyAAEYY3JlZGl0xAEcQmFsYW5jZQAAcQoAAAQIOAgAdQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgT3BlbkNhc2UELFJ1bnRpbWVDYWxsASAADAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcZGV0YWlsc3kKAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARR0YWxseYkKASRWb3RlVGFsbHkAAHkKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0LENhc2VEZXRhaWxzBCxSdW50aW1lQ2FsbAEgAAwBJHN0YXRlbWVudH0KASRTdGF0ZW1lbnQAARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABIGNhbGxiYWNrhQoB/ENhbGxiYWNrPChDYXNlSW5kZXgsIEp1ZGdlbWVudENvbnRleHQsIEp1ZGdlbWVudCksIFJ1bnRpbWVDYWxsPgAAfQoQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkU3RhdGVtZW50AAEMKFByb29mT2ZJbmsMARhkZXNpZ26BCgFUcHJvb2Zfb2ZfaW5rOjpJbmtTcGVjAAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAAUxwcm9iYWJsZV9hY2NlcHRhYmxlyAEQYm9vbAAAAEhJZGVudGl0eUNyZWRlbnRpYWwIASBwbGF0Zm9ybUUEAUBpZGVudGl0eTo6U29jaWFsAAEgZXZpZGVuY2VBBAE4aWRlbnRpdHk6OkRhdGEAAQA0VXNlcm5hbWVWYWxpZAQBIHVzZXJuYW1lQQQBOGlkZW50aXR5OjpEYXRhAAIAAIEKFDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MHByb29mX29mX2luaxxJbmtTcGVjAAEQQERlc2lnbmVkRWxlY3RpdmUIAC0DASxGYW1pbHlJbmRleAAALQMBLERlc2lnbkluZGV4AAAARFByb2NlZHVyYWxBY2NvdW50CAAtAwEsRmFtaWx5SW5kZXgAAAgBJEFjY291bnRJZAABAEhQcm9jZWR1cmFsUGVyc29uYWwIAC0DASxGYW1pbHlJbmRleAAAKAEoUGVyc29uYWxJZAACAChQcm9jZWR1cmFsCAAtAwEsRmFtaWx5SW5kZXgAAHABOFByb2NlZHVyYWxTZWVkAAMAAIUKEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5IENhbGxiYWNrCBhQYXJhbXMALFJ1bnRpbWVDYWxsAAAIATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAAiQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQkVm90ZVRhbGx5AAAMAQxheWU4AQx1MzIAAQxuYXk4AQx1MzIAASBjb250ZW1wdDgBDHUzMgAAjQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgUmlwZUNhc2UELFJ1bnRpbWVDYWxsASAACAEcZGV0YWlsc3kKAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARx2ZXJkaWN0SQQBJEp1ZGdlbWVudAAAkQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgRG9uZUNhc2UAAAgBFHNpbmNlKAFAU2Vjc1NpbmNlR2VuZXNpcwABHHZlcmRpY3RJBAEkSnVkZ2VtZW50AACVCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldEhDcmVkaXREaXN0cmlidXRpb24IHEJhbGFuY2UBxCxCbG9ja051bWJlcgE4ABQBFHJvdW5kOAEoUm91bmRJbmRleAABPGluaXRpYWxfYmFsYW5jZcQBHEJhbGFuY2UAAURyZW1haW5pbmdfYmFsYW5jZcQBHEJhbGFuY2UAATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQAARRzdGFydDgBLEJsb2NrTnVtYmVyAACZCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZ0KBFMAAAQAoQoBGFZlYzxUPgAAnQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQ4UGF5b3V0U2NoZWR1bGUIHEJhbGFuY2UBxCxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBKFJvdW5kSW5kZXgAAUBhbW91bnRfcGVyX3JvdW5kxAEcQmFsYW5jZQABGHBlcmlvZDgBLEJsb2NrTnVtYmVyAAChCgAAAp0KAKUKDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAMAQh1OAAAqQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQURXJyb3IEBFQAAVAoTm9TdWNoQ2FzZQAABGBUaGUgY2FzZSBkb2VzIG5vdCBleGlzdC4oTm9TdWNoVm90ZQABBGBUaGUgdm90ZSBkb2VzIG5vdCBleGlzdC4cTm90T3BlbgACBFRUaGUgY2FzZSBpcyBub3Qgb3Blbi4cTm90UmlwZQADBFRUaGUgY2FzZSBpcyBub3QgcmlwZS4cTm90RG9uZQAEBGRUaGUgY2FzZSBpcyBub3QgeWV0IGRvbmUuKENvZGVjRXJyb3IABQRVAVRoZSBkZWNvZGUgb2YgdGhlIGNhbGwgZmFpbGVkLiBNYXliZSB0aGVyZSB3YXMgYSBicmVha2luZyBydW50aW1lIHVwZ3JhZGUgaW4gYmV0d2Vlbj80RGlzcGF0Y2hFcnJvcgAGBE0BVGhlIGNhbGwgZmFpbGVkIHRvIGRpc3BhdGNoLiBNYXliZSB0aGVyZSB3YXMgYSBicmVha2luZyBydW50aW1lIHVwZ3JhZGUgaW4gYmV0d2Vlbj8YUmVjZW50AAcEkFRoZSBjYXNlIGlzIHRvbyByZWNlbnQgdG8gYmUgcmVhcGVkLiBOb0NyZWRpdAAIBKBOb3QgZW5vdWdoIGNyZWRpdCB0byBwYXlvdXQgdGhlIHJld2FyZHMuIE5vUmV3YXJkAAkE1E5vIG1vYiBjcmVkaXQgZGlzdHJpYnV0aW9uIGluIHBsYWNlIHRvIHJld2FyZCB2b3RlcnMuIE5vUG9pbnRzAAoEoE5vIHBvaW50cyB0byBiZSBjb252ZXJ0ZWQgdG8gbW9iIGNyZWRpdC40VG9vTWFueUNsYWltcwALBFRUb28gbWFueSB2b3RlIGNsYWltcy4gTm9QYXlvdXQADARYTm8gcGF5b3V0IGluIHByb2dyZXNzLkhBcml0aG1ldGljT3ZlcmZsb3cADQS0VGhlIHBvaW50IGFuZC9vciBjcmVkaXQgYXJpdGhtZXRpYyBvdmVyZmxvd3MuQFRvb01hbnlTY2hlZHVsZXMADgSAVG9vIG1hbnkgcGF5b3V0IHJvdW5kIHNjaGVkdWxlcy4oTm9TY2hlZHVsZQAPBHxObyBwYXlvdXQgcm91bmQgc2NoZWR1bGUgZm91bmQuJE5vUGVuYWx0eQAQBFhObyB2b3RlIHBlbmFsdHkgZm91bmQuFEVhcmx5ABEElFRoZSB2b3RlIHBlbmFsdHkgaGFzIG5vdCBleHBpcmVkIHlldC4wVW5kZXJQZW5hbHR5ABIE6FRoZSB2b3RlIGNhbm5vdCBiZSBjYXN0IGR1ZSB0byBhIHZvdGluZyBwZW5hbHR5IGluIGVmZmVjdC5YQ2FzZUV4cGlyYXRpb25EaXNhYmxlZAATBB0BVGhlIG9wZW4gY2FzZSBleHBpcmF0aW9uIGlzIGRpc2FibGVkIGR1ZSB0byBpbnN1ZmZpY2llbnQgYWN0aXZlIHZvdGVycy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0JENhbmRpZGF0ZRAsSnVkZ2VtZW50SWQBOBxEZXBvc2l0AbEKLEJsb2NrTnVtYmVyATgkQWNjb3VudElkAQQBDBxBcHBsaWVkDAEQY3JlZLUKAaxDcmVkaWJpbGl0eTxEZXBvc2l0LCBQZXJzb25hbElkLCBBY2NvdW50SWQ+AAEcZW50cm9weQgBHEVudHJvcHkAATRlbnRyb3B5X3NpbmNlOAEsQmxvY2tOdW1iZXIAAAAgU2VsZWN0ZWQgARRzaW5jZTgBLEJsb2NrTnVtYmVyAAEQY3JlZLUKAaxDcmVkaWJpbGl0eTxEZXBvc2l0LCBQZXJzb25hbElkLCBBY2NvdW50SWQ+AAEgcmVzZXJ2ZWQoAShQZXJzb25hbElkAAEcZW50cm9weQgBHEVudHJvcHkAARhkZXNpZ26BCgEcSW5rU3BlYwABKGFsbG9jYXRpb265CgEoQWxsb2NhdGlvbgABHGp1ZGdpbmcJAwFMT3B0aW9uPEp1ZGdlbWVudElkPgABGGZhaWxlZDgBHENvdW50ZXIAAQAYUHJvdmVuEAEYZGVzaWdugQoBHElua1NwZWMAASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAATB3YXNfcmVmZXJyZWTIARBib29sAAEsd2FzX2ludml0ZWTIARBib29sAAIAALEKFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAMQBKEY6OkJhbGFuY2UAALUKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCxDcmVkaWJpbGl0eQwcRGVwb3NpdAGxCihQZXJzb25hbElkASgkQWNjb3VudElkAQQBDCBSZWZlcnJlZAQAKAEoUGVyc29uYWxJZAAAABxEZXBvc2l0BACxCgEcRGVwb3NpdAABABxJbnZpdGVkBAAEASRBY2NvdW50SWQAAgAAuQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0KEFsbG9jYXRpb24AAQwcSW5pdGlhbAAAACBJbml0RG9uZQABABBGdWxsAAIAAL0KDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhQZXJzb24EPEJvdW5kZWRBY2NvdW50cwHBCgAkARhkZXNpZ27FCgE8T3B0aW9uPElua1NwZWM+AAFAYWN0aXZlX3JlZmVycmFsc8EKATxCb3VuZGVkQWNjb3VudHMAAWBhbGxvd2VkX3JlZmVycmFsX3RpY2tldHM4ARxDb3VudGVyAAE0YmFkX3JlZmVycmFsczgBHENvdW50ZXIAAVBzdWNjZXNzZnVsX3JlZmVycmFsczgBHENvdW50ZXIAASRyZWZlcnJhbHM4ARxDb3VudGVyAAEsZGVyaXZhdGl2ZXM4ARxDb3VudGVyAAEYYmFubmVkyAEQYm9vbAABYHBlbmRpbmdfcmVmZXJyYWxfcmV3YXJkczgBHENvdW50ZXIAAMEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAMwBGFZlYzxUPgAAxQoEGE9wdGlvbgQEVAGBCgEIEE5vbmUAAAAQU29tZQQAgQoAAAEAAMkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQoEUwAABADRCgEYVmVjPFQ+AADNCgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQ4UmVmZXJyYWxUaWNrZXQEGFRpY2tldAEEAAQBGHRpY2tldAQBGFRpY2tldAAA0QoAAALNCgDVCgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQYRmFtaWx5AAAIARBraW5kdQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAADZCgAABAgtAy0DAN0KDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDBEZXNpZ25TdGF0dXMAAQggUmVzZXJ2ZWQAAAAkQ29tbWl0dGVkAAEAAOEKAAAECAQEAOUKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBRFcnJvcgQEVAABoChJblByb2dyZXNzAAAEzEFjY291bnQgaXMgYWxyZWFkeSBhcHBseWluZyB0byBtYWtlIGEgcHJvb2Ytb2YtaW5rLihOb1JlZmVycmFsAAEEeEFjY291bnQgaGFzIG5vdCBiZWVuIHJlZmVycmVkLihCYWRDb250ZXh0AAIE6FRoZSBjYWxsYmFjayBjb250ZXh0IGlzIGludmFsaWQ7IHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5MVW5leHBlY3RlZEp1ZGdlbWVudAADBCEBVGhlIGluY29taW5nIGp1ZGdlbWVudCBJRCBpcyBub3Qgd2hhdCB3ZSB3ZXJlIGV4cGVjdGluZyBmb3IgdGhlIGFjY291bnQuGE5vQXJncwAEBLhObyBhcmd1bWVudHMgd2VyZSBzdXBwbGllZCB3aXRoIHRoZSBqdWRnZW1lbnQuKE5vdEFwcGxpZWQABQTMVGhlIGFjY291bnQgaGFzIG5vdCBhcHBsaWVkIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuLE5vdFNlbGVjdGVkAAYEsFRoZSBjYW5kaWRhdGUgaGFzIG5vdCBjb21taXR0ZWQgdG8gYSBkZXNpZ24uJE5vdFByb3ZlbgAHBKxUaGUgY2FuZGlkYXRlIGRpZCBub3QgcHJvdmUgdGhlbXNlbHZlcyB5ZXQuOEFscmVhZHlTdGFydGVkAAgEyFRoZSBjYW5kaWRhdGUgaGFzIGFscmVhZHkgc3RhcnRlZCB0aGVpciBqdWRnZW1lbnQuKE91dE9mUmFuZ2UACQSAVGhlIHBlcnNvbmFsIElEIGlzIG5vdCBpbiByYW5nZS4wQWxyZWFkeVRha2VuAAoEnFRoZSBwZXJzb25hbCBJRCBoYXMgYWxyZWFkeSBiZWVuIHRha2VuLjxOb01vcmVSZWZlcnJhbHMACwS4VGhlIHBlcnNvbiBoYXMgbm8gbW9yZSByZWZlcnJhbHMgbGVmdCB0byBnaXZlLiBUb29FYXJseQAMBGBUaGUgcmVyb2xsIGlzIHRvbyBlYXJseS40RGVzaWduSW52YWxpZAANBKBUaGUgcmVmZXJyZXIncyBkZXNpZ24gaXMgbm90IHByb2NlZHVyYWwuLERlc2lnblRha2VuAA4EnFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBhbHJlYWR5IHRha2VuLiRCYWRQYXJlbnQADwQVAVRoZSByZWZlcnJlciBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHBlcnNvbi4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiRCYWRGYW1pbHkAEASAVGhlIGRlc2lnbiBmYW1pbHkgZG9lc24ndCBleGlzdC4sV3JvbmdGYW1pbHkAEQS0VGhlIGRlc2lnbiBmYW1pbHkgaXMgaW52YWxpZCBmb3IgdGhpcyBjaG9pY2UuLEluZGV4VG9vQmlnABIEQQFUaGUgaW5kZXggb2YgdGhlIGRlc2lnbiBvciB2YXJpYW50IGlzIGJleW9uZCB0aGUgYWxsb3dlZCBtYXhpbXVtIGZvciB0aGUgZmFtaWx5LhBCdXN5ABME+FRoZSBzeXN0ZW0gaXMgYnVzeSB3aXRoIHRvbyBtYW55IGNvbW1pdG1lbnRzOyB0cnkgYWdhaW4gbGF0ZXIuGEJhbm5lZAAUBKhUaGUgcGVyc29uIGhhcyBiZWVuIGJhbm5lZCBmcm9tIHJlZmVycmluZy4oSW1wcm9iYWJsZQAVBCUBVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGRlbW9uc3RyYXRlZCBwcm9iYWJseSB0aHJvdWdoIHRoZSBpbml0aWFsIGV2aWRlbmNlLihJZFJlc2VydmVkABYEwFRoZSBwZXJzb25hbCBpZGVudGl0eSBoYXMgYWxyZWFkeSBiZWVuIHJlc2VydmVkLhhJZFVzZWQAFwToVGhlIHBlcnNvbmFsIGlkZW50aXR5IGlzIGFscmVhZHkgdGFrZW4gYnkgYSBwcm92ZW4gcGVyc29uLjRJbnZhbGlkVGlja2V0ABgEfFRoZSB0aWNrZXQgcHJvdmlkZWQgaXMgaW52YWxpZC4gTm9UaWNrZXQAGQTwVGhlIGNhbGxlciBoYXMgbm90IHByb3ZpZGVkIGEgcmVmZXJyYWwgb3IgaW52aXRhdGlvbiB0aWNrZXQuNE5vdEF1dGhvcml6ZWQAGgSkVGhlIGFjY291bnQgaXMgbm90IGF1dGhvcml6ZWQgdG8gZG8gdGhpcy4kTm90UGVyc29uABsEkFRoZSBwZXJzb25hbCBpZGVudGl0eSBkb2Vzbid0IGV4aXN0LkRSZWZlcnJlZENhbmRpZGF0ZQAcBF0BVGhlIGNhbmRpZGF0ZSBpcyByZWZlcnJlZC4gQnV0IHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIGNhbmRpZGF0ZSB0byBub3QgYmUgcmVmZXJyZWQuUE5vdFJlZmVycmVkQ2FuZGlkYXRlAB0EXQFUaGUgY2FuZGlkYXRlIGlzIG5vdCByZWZlcnJlZC4gQnV0IHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIGNhbmRpZGF0ZSB0byBiZSByZWZlcnJlZC5ITm9SZXdhcmRUb1JlZ2lzdGVyAB4EoFRoZXJlIGlzIG5vIHJlZmVycmFsIHJld2FyZCB0byByZWdpc3Rlci5AUmV3YXJkVG9SZWdpc3RlcgAfBAUBVGhlcmUgaXMgYSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZCB0aGF0IG11c3QgYmUgcmVnaXN0ZXJlZCBmaXJzdC4kTm9JbnZpdGVyACAERE5vIGludml0ZXIgZm91bmQuQEludmFsaWRTaWduYXR1cmUAIQRISW52YWxpZCBzaWduYXR1cmUuJE5vSW52aXRlcwAiBFBObyBpbnZpdGUgYXZhaWxhYmxlLjhBbHJlYWR5SW52aXRlZAAjBFhJbnZpdGUgaXMgYWxyZWFkeSBzZXQuKE5vUmVmZXJyZXIAJAR0VGhlIHJlZmVycmVyIGlzIG5vdCBhIHBlcnNvbi4wTm90UG9pUGVyc29uACUE6FRoZSBpbmRpdmlkdWFsIGlzIG5vdCBhIHBlcnNvbiByZWNvZ25pemVkIGJ5IHByb29mIG9mIGluay5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAJgSIVGhlIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLmhJbnZhbGlkUmVpbWJ1cnNlbWVudFZhbHVlcwAnBJRUaGUgcmVpbWJ1cnNlbWVudCB2YWx1ZXMgYXJlIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LukKAAAECDEHCADtCgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXM4QXJjaGl2ZWRQbGF5ZXIELEJsb2NrTnVtYmVyATgBCCBLaWNrYWJsZQgBKGZpcnN0X2dhbWU4AQx1MzIAAThhcmNoaXZlZF9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAKFVua2lja2FibGUEAShmaXJzdF9nYW1lOAEMdTMyAAEAAPEKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhQbGF5ZXIELFBsYXlEZXBvc2l0AfUKACQBKGZpcnN0X2dhbWU4AQx1MzIAAShyZWdpc3RlcmVkyAEQYm9vbAABLHNlbnRfcmVwb3J0yAEQYm9vbAABaGVhcmx5X2F0dGVuZGFuY2VfZW5hY3RtZW50+QoBgE9wdGlvbjxFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQ+AAEoeWVzX3BlcnNvbgwBCHU4AAE0bm9fbm90X3BlcnNvbgwBCHU4AAFgZXhwZWN0ZWRfbWF4X3ZvdGVfd2VpZ2h0LQMBDHUxNgABLHZvdGVfd2VpZ2h0DAEIdTgAASxjcmVkaWJpbGl0eQELAXhQbGF5ZXJDcmVkaWJpbGl0eTxQbGF5RGVwb3NpdD4AAPUKFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAMQBKEY6OkJhbGFuY2UAAPkKBBhPcHRpb24EBFQB/QoBCBBOb25lAAAAEFNvbWUEAP0KAAABAAD9CgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNgRWFybHlBdHRlbmRhbmNlRW5hY3RtZW50AAAMAShhdHRlbmRhbmNlyAEQYm9vbAABVGV4dGVybmFsbHlfcmVjb2duaXplZMgBEGJvb2wAASh6ZXJvX3Njb3JlyAEQYm9vbAAAAQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllckNyZWRpYmlsaXR5BCxQbGF5RGVwb3NpdAH1CgEMHEludml0ZWQAAAAoUmVjb2duaXplZAABABxEZXBvc2l0BAD1CgEsUGxheURlcG9zaXQAAgAABQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzIEdhbWVJbmZvBCRBY2NvdW50SWQBBAAkARRpbmRleDgBDHUzMgABRHJlZ2lzdHJhdGlvbl9lbmRzOAEMdTMyAAFAc2h1ZmZsZV9kZWFkbGluZTgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAEUc3RhdGUJCwFQR2FtZVN0YXRlPEFjY291bnRJZD4AAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABGHJvdW5kcwwBCHU4AAFIcGVuZGluZ19hdHRlbmRhbmNlOAEMdTMyAAAJCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMkR2FtZVN0YXRlBCRBY2NvdW50SWQBBAEUMFJlZ2lzdHJhdGlvbgQBRG5leHRfcGxheWVyX2luZGV4OAEMdTMyAAAAHFNodWZmbGUEARBzdGVwDQsBWFNodWZmbGVTdGVwPEFjY291bnRJZD4AAQAkUmVwb3J0aW5nBAEwcGxheWVyX2NvdW50OAEMdTMyAAIANFBsYXllclByb2Nlc3MIAThsYXN0X2l0ZXJhdGlvbhELAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAMAKENhbmNlbGxpbmcEAThsYXN0X2l0ZXJhdGlvbhELAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAQAAA0LDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyxTaHVmZmxlU3RlcAQkQWNjb3VudElkAQQBECxTdGVwMUluc2VydAQBOGxhc3RfaXRlcmF0aW9uEQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AAAA0U3RlcDJSZXRyaWV2ZQgBRG5leHRfcGxheWVyX2luZGV4OAEMdTMyAAFMcmVjb2duaXplZF9maW5pc2hlZMgBEGJvb2wAAQBMU3RlcDNDb21wdXRlV2VpZ2h0cwgBOGxhc3RfaXRlcmF0aW9uEQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AATBwbGF5ZXJfY291bnQ4AQx1MzIAAgBEU3RlcDRBd2FpdFNlc3Npb24EATBwbGF5ZXJfY291bnQ4AQx1MzIAAwAAEQsEGE9wdGlvbgQEVAExBwEIEE5vbmUAAAAQU29tZQQAMQcAAAEAABULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGUEARhWZWM8VD4AABkLAAAECAw4AB0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGUEARhWZWM8VD4AACELAAAECAwIACULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQQEUwAABAChBAEYVmVjPFQ+AAApCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEU2NyYXRjaFJld2FyZEluZm8AAAgBKGdhbWVfaW5kZXg4AQx1MzIAAShyYW5kb21uZXNzCAEgW3U4OyAzMl0AAC0LDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0hTY3JhdGNoRWxpZ2liaWxpdHkAAQggRWxpZ2libGUEADgBDHUzMgAAABxDbGFpbWVkAAEAADELDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQURXJyb3IEBFQAAYwsR2FtZU9uZ29pbmcAAAQ0R2FtZSBvbmdvaW5nLjhOb1JlZ2lzdHJhdGlvbgABBHhObyByZWdpc3RyYXRpb24gcGhhc2Ugb25nb2luZy5ET3V0ZGF0ZWRHYW1lU2V0dXAAAgRYVGhlIHNldHVwIGlzIG91dGRhdGVkLkBJbnZhbGlkR2FtZVNldHVwAAMEOEludmFsaWQgc2V0dXAuNEludmFsaWRSZXBvcnQABAQ8SW52YWxpZCByZXBvcnQuGE5vR2FtZQAFBEBObyBnYW1lIG9uZ29pbmcuLE5vUmVwb3J0aW5nAAYEYE5vIHJlcG9ydCBwaGFzZSBvbmdvaW5nLjROb3RSZWdpc3RlcmVkAAcEPE5vdCByZWdpc3RlcmVkLkRBbHJlYWR5UmVnaXN0ZXJlZAAIBGhQbGF5ZXIgYWxyZWFkeSByZWdpc3RlcmVkLkRSZXBvcnRBbHJlYWR5U2VudAAJBFBSZXBvcnQgYWxyZWFkeSBzZW50LhRFYXJseQAKBGxPcGVyYXRpb24gaXMgbm90IHZhbGlkIHlldC5ETm90S2lja2FibGVQbGF5ZXIACwSYVGhlIG9wZXJhdGlvbiBleHBlY3QgYSBwbGF5ZXIgYWNjb3VudC5ATm9BcmNoaXZlZFBsYXllcgAMBGRObyBhcmNoaXZlZCBwbGF5ZXIgZm91bmQuIE5vVGlja2V0AA0EQE5vIHRpY2tldCBmb3VuZC4kTm9JbnZpdGVzAA4EUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkAA8EWEludml0ZSBpcyBhbHJlYWR5IHNldC5ATm90QWNjb3VudFBsYXllcgAQBPhOb3QgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIsIGV4cGVjdGVkIGFuIGFjY291bnQgYmFzZWQgcGxheWVyLmhVc2VJbnZpdGVCdXRBbHJlYWR5UGxheWluZwARBMhUaGUgcGxheWVyIGNhbid0IHVzZSBhbiBpbnZpdGUgaWYgYWxyZWFkeSBwbGF5aW5nLlBUb29NYW55R2FtZVNjaGVkdWxlcwASBEEBVGhlIG51bWJlciBvZiBleGlzdGluZyBzY2hlZHVsZXMgYW5kIG5ldyBzY2hlZHVsZXMgZXhjZWVkcyB0aGUgY29uZmlndXJlZCBsaW1pdC5MTm9TdWNoR2FtZVNjaGVkdWxlZAATBCkBVGhlIGdhbWUgdGhhdCB3YXMgc3VwcG9zZWQgdG8gYmUgcmVtb3ZlZCB3YXMgbm90IGZvdW5kIGluIHNjaGVkdWxlZCBnYW1lcy6ASW52YWxpZFN0YXRlbWVudEFjY291bnRTaWduYXR1cmUAFASsVGhlIHN0YXRlbWVudCBhY2NvdW50IHNpZ25hdHVyZSBpcyBpbnZhbGlkLnBTdGF0ZW1lbnRBY2NvdW50QWxyZWFkeUluVXNlABUE7FRoZSBzdGF0ZW1lbnQgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZWQgYnkgYW5vdGhlciBwbGF5ZXIuZEludGVybmFsRXJyb3JJbnZhbGlkU3RhdGUAFgR0SW50ZXJuYWwgZXJyb3IgaW52YWxpZCBzdGF0ZS5ASW52YWxpZEdhbWVTdGF0ZQAXBPBUaGUgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgaW4gdGhlIGN1cnJlbnQgZ2FtZSBzdGF0ZS4gTm9QbGF5ZXIAGARATm8gcGxheWVyIGZvdW5kLpBDYW5ub3RPZmZib2FyZFdoaWxlUmVnaXN0ZXJlZEZvckdhbWUAGQTcVGhlIHBsYXllciBjYW5ub3Qgb2ZmYm9hcmQgd2hpbGUgcmVnaXN0ZXJlZCBmb3IgYSBnYW1lLjBJbnZhbGlkU3RhdGUAGgQ0SW52YWxpZCBzdGF0ZTxOb1NjcmF0Y2hSZXdhcmQAGwTYTm8gY29uY2x1ZGVkIGdhbWUgd2l0aCBhdmFpbGFibGUgc2NyYXRjaCBjYXJkIHJld2FyZHMuLE5vdEVsaWdpYmxlABwE/FRoZSBwbGF5ZXIgaXMgbm90IGVsaWdpYmxlIGZvciB0aGUgY3VycmVudCBzY3JhdGNoIGNhcmQgcmV3YXJkLiREaWROb3RXaW4AHQTYVGhlIHBlcnNvbiBkaWQgbm90IHdpbiB0aGUgc2NyYXRjaCBjYXJkIGZvciB0aGlzIGdhbWUuOEFscmVhZHlDbGFpbWVkAB4E0FRoZSBhbGlhcyBoYXMgYWxyZWFkeSBjbGFpbWVkIGEgc2NyYXRjaCBjYXJkIHJld2FyZC48U2NyYXRjaFBvdEVtcHR5AB8ElFRoZSBzY3JhdGNoIGNhcmQgcG90IGJhbGFuY2UgaXMgemVyby44UG9vbE5vdEZvckdhbWUAIAgVAWBjbGFpbV9nYW1lX3ByaXplYDogYHBvb2xfaWRgIGlzIG5vdCBhIGBHYW1lUGFydGljaXBhbnRzYCBwb29sIChvciBub0hzdWNoIHBvb2wgZXhpc3RzKS44Tm90UGFydGljaXBhbnQAIQgBAWBjbGFpbV9nYW1lX3ByaXplYDogdGhlIHJlc29sdmVkIG9yaWdpbiBpZGVudGl0eSBoYXMgbm8gcmVjb3JkZWR8YXR0ZW5kYW5jZSBmb3IgdGhlIHBvb2wncyBnYW1lLkhJbnZhbGlkUGxheURlcG9zaXQAIgTkYHNldF9wbGF5X2RlcG9zaXRgOiB0aGUgc3VwcGxpZWQgYW1vdW50IG11c3QgYmUgbm9uLXplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjULDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UBxAAgARRzY29yZTgBDHUzMgABGHN0cmVhazkLARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3Rvcnk9CwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXTEARxCYWxhbmNlAAEoY2FzaGVkX291dMgBEGJvb2wAAUhyZWFjaGVkX3BlcnNvbmhvb2TIARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29kyAEQYm9vbAABLHJlY29nbml0aW9uQQsBLFJlY29nbml0aW9uAAA5CwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzGFN0cmVhawABCCBBdHRlbmRlZAQAOAEMdTMyAAAAGEFic2VudAQAOAEMdTMyAAEAAD0LDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNEQXR0ZW5kYW5jZUhpc3RvcnkAAAQADAEIdTgAAEELDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUmVjb2duaXRpb24AARBQRXh0ZXJuYWxseVJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAABACRTdXNwZW5kZWQEACgBKFBlcnNvbmFsSWQAAgAoUmVjb2duaXplZAQAKAEoUGVyc29uYWxJZAADAABFCwAABAg4MQcASQsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyxSb3VuZFBheW91dAQcQmFsYW5jZQHEABABRHJlbWFpbmluZ19iYWxhbmNlxAEcQmFsYW5jZQABLHBvaW50X3ByaWNlxAEcQmFsYW5jZQABJHJlbWFpbmRlcsQBHEJhbGFuY2UAATB0b3RhbF9wb2ludHM4AQx1MzIAAE0LDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMkUm91bmRJbmZvCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBxAAIASRmaW5pc2hfYXQ4ASxCbG9ja051bWJlcgABGGNyZWRpdMQBHEJhbGFuY2UAAFELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQsEUwAABABZCwEYVmVjPFQ+AABVCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzOFBheW91dFNjaGVkdWxlCBxCYWxhbmNlAcQsQmxvY2tOdW1iZXIBOAAMASRyZW1haW5pbmc4AQx1MzIAAUBhbW91bnRfcGVyX3JvdW5kxAEcQmFsYW5jZQABIGR1cmF0aW9uOAEsQmxvY2tOdW1iZXIAAFkLAAACVQsAXQsMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXJyb3IEBFQAAWwkTm90UGVyc29uAAAEjFRoZSBjYWxsaW5nIG9yaWdpbiBpcyBub3QgYSBwZXJzb24uXEhhc05vdFJlYWNoZWRQZXJzb25ob29kAAEEjFRoZSBwZXJzb24gZGlkbid0IHJlYWNoIHBlcnNvbmhvb2QuIE5vUmV3YXJkAAIEUE5vIHJld2FyZCBhdmFpbGFibGUuHE5vU2NvcmUAAwSMVGhlIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBzY29yZS4oTm9TY2hlZHVsZQAEBHRObyBwYXlvdXQgc2NoZWR1bGUgYXZhaWxhYmxlLkBUb29NYW55U2NoZWR1bGVzAAUEtFRvbyBtYW55IHBheW91dCBzY2hlZHVsZXMgYWxyZWFkeSByZWdpc3RlcmVkLihSZWNvZ25pemVkAAYEBQFUaGUgcGFydGljaXBhbnQgaXMgcmVjb2duaXplZCBvciBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcGVyc29uLjxDYXNoT3V0Q29vbGRvd24ABwTMVGhlIHBhcnRpY2lwYW50IGhhcyBhbHJlYWR5IGNhc2hlZCBvdXQgaW4gdGhpcyBlcmEuYFJvdW5kT25Hb2luZ09yTm9TY2hlZHVsZQAIBJRUaGUgcm91bmQgaXMgb24gZ29pbmcgb3Igbm8gc2NoZWR1bGUuHE5vUm91bmQACQSEVGhlIHBheW91dCByb3VuZCBoYXMgbm90IHN0YXJ0ZWQubEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZAAKBNBUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQuwEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAALBD0BVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgcGVyc29uIG5vciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LpxCYWRPcmlnaW5Ob3RTaWduZWROb3RBY2NvdW50UGFydGljaXBhbnQADAQJAVRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LlBBbHJlYWR5UGFydGljaXBhdGluZwANBKRUaGUgcGFydGljaXBhbnQgaXMgYWxyZWFkeSBwYXJ0aWNpcGF0aW5nLkRLZXlNdXN0QmVQcm92aWRlZAAOBGRUaGUga2V5IG11c3QgYmUgcHJvdmlkZWQuUEtleU11c3ROb3RCZVByb3ZpZGVkAA8EdFRoZSBrZXkgbXVzdCBub3QgYmUgcHJvdmlkZWQuUEhhc1JlYWNoZWRQZXJzb25ob29kABAEjEhhcyByZWFjaGVkIHBlcnNvbmhvb2QgaW4gdGhlIHBhc3QuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwABEEiFRoZSBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC44V2luZG93VG9vTGFyZ2UAEgQ9AUFuIGFic2VuY2UgZ3JhY2UgdGllciBoYXMgYSB3aW5kb3cgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIHRyYWNrYWJsZSBoaXN0b3J5ICg4KS5UQWxsb3dlZE1pc3Nlc1Rvb0xhcmdlABMEIQFUaGUgYWxsb3dlZCBtaXNzZXMgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHdpbmRvdyAob3IgYm90aCB6ZXJvKS5gQWJzZW5jZVNjaGVkdWxlTm90U29ydGVkABQEMQFBYnNlbmNlLWdyYWNlIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuXFBlcnNvbmhvb2RTY2hlZHVsZUVtcHR5ABUEBQFUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB0aWVyLnBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRaZXJvABYE3EEgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBoYXMgYHNjb3JlX3RocmVzaG9sZCA9PSAwYC6AUGVyc29uaG9vZFNjb3JlVGhyZXNob2xkVG9vTGFyZ2UAFwT8QSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGV4Y2VlZHMgYE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAubFBlcnNvbmhvb2RTY2hlZHVsZU5vdFNvcnRlZAAYCNhQZXJzb25ob29kLXRocmVzaG9sZCB0aWVycyBtdXN0IGJlIHNvcnRlZCBieSBhc2NlbmRpbmdwYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLnhQZXJzb25ob29kU2NoZWR1bGVOb3RNb25vdG9uaWMAGQgRAVBlcnNvbmhvb2QtdGhyZXNob2xkIGBzY29yZV90aHJlc2hvbGRgIHZhbHVlcyBtdXN0IGJlIG5vbi1kZWNyZWFzaW5n9GFjcm9zcyB0aWVycyAoYSBsYXJnZXIgcG9wdWxhdGlvbiBtdXN0IG5vdCBoYXZlIGEgbG93ZXIgYmFyKS5oUGVyc29uaG9vZFNjaGVkdWxlTm90VG90YWwAGgj0VGhlIGxhc3QgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBtdXN0IGNvdmVyIGFsbCBwb3B1bGF0aW9uc6goYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuYQsMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0GFJlY29yZAQMS2V5AQgACAEMa2V5CAEMS2V5AAEkc3VzcGVuZGVkyAEQYm9vbAAAZQsMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0FEVycm9yBARUAAEQJE5vdFBlcnNvbgAABNxUaGUgcGVyc29uYWwgSUQgZG9lcyBub3QgYmVsb25nIHRvIGEgcmVjb2duaXplZCBwZXJzb24uME5vdFN1c3BlbmRlZAABBNhUaGUgcGVyc29uYWwgSUQgZG9lcyBub3QgYmVsb25nIHRvIGEgc3VzcGVuZGVkIHBlcnNvbi4sTm90UmVzZXJ2ZWQAAgTkVGhlIHBlcnNvbmFsIElEIGlzIG5vdCByZXNlcnZlZCBhbmQgYXdhaXRpbmcgcmVjb2duaXRpb24uNFRvb01hbnlQZW9wbGUAAwTAVGhlIG9wZXJhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgbWFueSBwZW9wbGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkLDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXM4TGl0ZVBlcnNvbkluZm8IGE1lbWJlcgEIGE1ldGhvZAFtCwAIATByaW5nX3ZyZl9rZXkIARhNZW1iZXIAARhtZXRob2RtCwEYTWV0aG9kAABtCwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzRFJlY29nbml0aW9uTWV0aG9kBBxBY2NvdW50AQQBBDBVbmlxdWVEZXZpY2UEAAQBHEFjY291bnQAAAAAcQsMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAASxYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleT0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWX1BAFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWVBBAEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eXkLASxDcmVkaWJpbGl0eQAAeQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkyAEQYm9vbAABAAB9CwAABAiBCwgAgQsMNGluZGl2X3N1cHBvcnQUdXRpbHMwQmlnRW5kaWFuVTMyAAMEAAAADAQZAUEgdTMyIGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy6FCwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1xTdG10U3RvcmVBbGxvd2FuY2VFbnRyeQQEVAAADAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABDHNlcTgBDHUzMgABFHNpbmNlKAEMdTY0AACJCwAABAgEjQsAjQsAAAQMgQs4CACRCwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc2RGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uBBxBY2NvdW50AQQACAEoYWNjb3VudF9pZAQBHEFjY291bnQAASRyZWZlcmVuY2UBBQFYRnJpZW5kUmVxdWVzdFJlZmVyZW5jZQAAlQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCwRTAAAEAJ0LARhWZWM8VD4AAJkLDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzVFJlc2VydmF0aW9uUXVldWVFbnRyeQQcQWNjb3VudAEEAAgBHGFjY291bnQEARxBY2NvdW50AAEkam9pbmVkX2F0KAEMdTY0AACdCwAAApkLAKELCEhzcF9zdGF0ZW1lbnRfc3RvcmVIU3RhdGVtZW50QWxsb3dhbmNlAAAIASRtYXhfY291bnQ4AQx1MzIAASBtYXhfc2l6ZTgBDHUzMgAApQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0FEVycm9yBARUAAFgPEludmFsaWRVc2VybmFtZQAABJxVc2VybmFtZSBkb2VzIG5vdCBmaXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgABBGhVc2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLkRBbHJlYWR5UmVnaXN0ZXJlZAACBHxDb25zdW1lciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwAAMEnFByb3ZpZGVkIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjROb3RSZWdpc3RlcmVkAAQEnFBlcnNvbiBpcyBub3QgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjROb3RGdWxsUGVyc29uAAUEeENvbnN1bWVyIGlzIG5vdCBhIGZ1bGwgcGVyc29uLjRUb3VjaE5vdFJlYWR5AAYEzEF0dGVtcHRlZCB0byB1cGRhdGUgcGVyc29uIGF1dGhvcml6YXRpb24gdG9vIGVhcmx5LjROb1Jlc2VydmF0aW9uAAcEaFJlc2VydmF0aW9uIGlzIG5vdCBhY3RpdmUuUE5vdFJlc2VydmF0aW9uSG9sZGVyAAgEFQFUaGUgbGlua2VkIGxpdGUgaWRlbnRpdHkgaXMgbm90IHRoZSBhY3RpdmUgaG9sZGVyIG9mIHRoZSByZXNlcnZhdGlvbi5gVXNlcm5hbWVSZXNlcnZhdGlvblRha2VuAAkE5FRoZSB1c2VybmFtZSBpbiB0aGUgcmVzZXJ2YXRpb24gcmVxdWVzdCBpcyBhbHJlYWR5IHRha2VuLkBSZXNlcnZhdGlvbkZyZXNoAAoEgFRoZSByZXNlcnZhdGlvbiBoYXMgbm90IGV4cGlyZWQuQE5vTGlua2VkSWRlbnRpdHkACwScVGhlcmUgaXMgbm8gbGl0ZSBjb25zdW1lciB0byBiZSBsaW5rZWQuNEFscmVhZHlMaW5rZWQADAT4VGhlIGxpdGUgY29uc3VtZXIgaXMgYWxyZWFkeSBsaW5rZWQgdG8gYSBmdWxsIHBlcnNvbiBjb25zdW1lci5QUGVyc29uQXV0aE5vdEV4cGlyZWQADQS8VGhlIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaGFzIG5vdCBleHBpcmVkIHlldC44QWxyZWFkeURlbW90ZWQADgSQVGhlIHBlcnNvbiBoYXMgYWxyZWFkeSBiZWVuIGRlbW90ZWQuJFF1ZXVlRnVsbAAPBIBRdWV1ZSBmb3IgdGhpcyB1c2VybmFtZSBpcyBmdWxsLihOb3RJblF1ZXVlABAEuEFjY291bnQgaXMgbm90IGluIHRoZSBxdWV1ZSBmb3IgdGhpcyB1c2VybmFtZS5UQWxyZWFkeUhhc1Jlc2VydmF0aW9uABEE3EFjY291bnQgYWxyZWFkeSBoYXMgYSByZXNlcnZhdGlvbiBmb3IgYW5vdGhlciB1c2VybmFtZS5wSW52YWxpZEZyaWVuZFJlcXVlc3RTZXF1ZW5jZQASBNBGcmllbmQgcmVxdWVzdCBzZXF1ZW5jZSBpcyBpbnZhbGlkIGZvciB0aGUgY29uc3VtZXIuaEludmFsaWRGcmllbmRSZXF1ZXN0UGVyaW9kABMEwEZyaWVuZCByZXF1ZXN0IHBlcmlvZCBpcyBub3QgdGhlIGN1cnJlbnQgcGVyaW9kLoxGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uTm90RXhwaXJlZAAUBLxGcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gaXMgbm90IGV4cGlyZWQgeWV0LphGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uQWxyZWFkeUV4aXN0cwAVBAUBRnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgYWxpYXMvY29udGV4dC5wU3RtdFN0b3JlUmVwbGFjZW1lbnRUb29FYXJseQAWBBkBVGhlIHJlcGxhY2VtZW50IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBzaW5jZSB0aGUgZW50cnkgd2FzIGxhc3Qgc2V0LoxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRFeGNlZWRlZAAXBOxUaGUgcHJvdmlkZWQgYGxpbWl0YCBleGNlZWRzIGBMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6pCwAABAgJBTgArQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxCwRTAAAEALULARhWZWM8VD4AALELDCh2ZXJpZmlhYmxlEHJpbmcsU3RhdGljQ2h1bmsAA2AAAAAMALULAAACsQsAuQsMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXJyb3IEBFQAAQw0Q2h1bmtOb3RGb3VuZAAABKBUaGUgcmVxdWVzdGVkIGNodW5rIGluZGV4IGRvZXNuJ3QgZXhpc3QuNEludmFsaWRDaHVua3MAAQSwVGhlIHByb3ZpZGVkIGNodW5rIGRhdGEgY291bGRuJ3QgYmUgZGVjb2RlZC5ESW52YWxpZENodW5rUmFuZ2UAAgTcVGhlIHN0YXJ0IGluZGV4IGlzbid0IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGluZGV4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC69CwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM4Q29sbGVjdGlvbkluZm8IHEFjY291bnQBBCBMb2NhdGlvbgHgABABFG93bmVywQsBiENvbGxlY3Rpb25Pd25lcjxBY2NvdW50LCBMb2NhdGlvbj4AARBtb2RlxQsBIFJpbmdNb2RlAAEkcmluZ19zaXplCQUBMFJpbmdFeHBvbmVudAABUHNlbGZfaW5jbHVzaW9uX2RlbGF5FQMBLE9wdGlvbjx1NjQ+AADBCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM8Q29sbGVjdGlvbk93bmVyCBxBY2NvdW50AQQgTG9jYXRpb24B4AEIIEV4dGVybmFsBADgASBMb2NhdGlvbgAAABRMb2NhbAQABAEcQWNjb3VudAABAADFCxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBSaW5nTW9kZQABCChBcHBlbmRPbmx5AAAAIEZsZXhpYmxlAAEAAMkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AAM0LAAAECAg4ANELDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcyBSaW5nUm9vdAQEVAAADAEQcm9vdNULATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBpbnRlcm1lZGlhdGXZCwFESW50ZXJtZWRpYXRlT2Y8VD4AANULDCh2ZXJpZmlhYmxlEHJpbmdETWVtYmVyc0NvbW1pdG1lbnQAAwADAAAMANkLDCh2ZXJpZmlhYmxlEHJpbmcoTWVtYmVyc1NldAADUAMAAAwA3QsAAAQMCDiBCwDhCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXMcT2xkUm9vdAQEVAAACAEQcm9vdNULATBNZW1iZXJzT2Y8VD4AASxhcmNoaXZlZF9hdCgBDHU2NAAA5QsAAAQMCDg4AOkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AAO0LEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5KFJpbmdTdGF0dXMAAAwBFHRvdGFsOAEMdTMyAAEgaW5jbHVkZWQ4AQx1MzIAATxpbW11dGFibGVfc2luY2UVAwEsT3B0aW9uPHU2ND4AAPELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGUEARhWZWM8VD4AAPULAAAECAgIAPkLEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdQb3NpdGlvbgABDChPbmJvYXJkaW5nCAEocXVldWVfcGFnZTgBJFBhZ2VJbmRleAABJHF1ZXVlZF9hdCgBDHU2NAAAACBJbmNsdWRlZAwBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRyaW5nX3BhZ2U4ASRQYWdlSW5kZXgAATRyaW5nX3Bvc2l0aW9uOAEMdTMyAAEAJFN1c3BlbmRlZAACAAD9CxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eUBSaW5nTWVtYmVyc1N0YXRlAAAEARBtb2RlAQwBQFJpbmdNdXRhdGlvbk1vZGUAAAEMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNdXRhdGlvbk1vZGUAAQgoQXBwZW5kT25seQAAACBNdXRhdGluZwQADAEIdTgAAQAABQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAVQQBGFZlYzxUPgAACQwMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFcnJvcgQEVAABcCROb3RNZW1iZXIAAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgbWVtYmVyLhhOb1Jvb3QAAQREUmluZyBoYXMgbm8gcm9vdC4wSW52YWxpZFByb29mAAIEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLihJbmNvbXBsZXRlAAMEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLjhUb29NYW55TWVtYmVycwAEBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQAFBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBtZW1iZXIuLEtleU5vdEZvdW5kAAYEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAAcEkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLixJbnZhbGlkUmluZwAIBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwAJBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQACgTUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zAAsEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ATm9SZW1vdmFsU2Vzc2lvbgAMBC0BQSBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyByZW1vdmFsIHNlc3Npb24gaW4gcHJvZ3Jlc3MubENvdWxkTm90U3RhcnRSZW1vdmFsU2Vzc2lvbgANBJxBIHJlbW92YWwgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5gUmVtb3ZhbFNlc3Npb25JblByb2dyZXNzAA4E6ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHJlbW92YWwgc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy5MS2V5QWxyZWFkeVN1c3BlbmRlZAAPCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIG1lbWJlciB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAQBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAEQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLkhDb2xsZWN0aW9uTm90Rm91bmQAEgR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuXENvbGxlY3Rpb25BbHJlYWR5RXhpc3RzABMEeFRoZSBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLkhUb29NYW55Q29sbGVjdGlvbnMAFASQVG9vIG1hbnkgY29sbGVjdGlvbnMgZm9yIHRoaXMgb3duZXIuaEludmFsaWRSaW5nU2l6ZUZvckZsZXhpYmxlABUEEQFGbGV4aWJsZSBjb2xsZWN0aW9ucyBtdXN0IHVzZSB0aGUgTWF4RmxleGlibGVSaW5nRXhwb25lbnQgcmluZyBzaXplLkxJbnZhbGlkUmluZ0V4cG9uZW50ABYEjFRoZSByaW5nIGV4cG9uZW50IGlzIG5vdCBzdXBwb3J0ZWQuTFByZW1hdHVyZU9uYm9hcmRpbmcAFwS0SW5zdWZmaWNpZW50IG1lbWJlcnMgaW4gdGhlIHF1ZXVlIHRvIG9uYm9hcmQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgAYBPRUaGUgY29sbGVjdGlvbiBpcyBtYXJrZWQgZm9yIGRlbGV0aW9uIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQuSE5vdENvbGxlY3Rpb25Pd25lcgAZBLhUaGUgY2FsbGVyIGlzIG5vdCB0aGUgb3duZXIgb2YgdGhlIGNvbGxlY3Rpb24uNE5vdE9uYm9hcmRpbmcAGgSoVGhlIG1lbWJlciBpcyBub3QgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUuOE5vdGhpbmdUb0J1aWxkABsEfFRoZXJlIGlzIG5vIHJpbmcgcm9vdCB0byBidWlsZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuDQwMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChMb2NrZWRDb2luAAAIARhyZWFzb24RDAEoTG9ja1JlYXNvbgABFHVudGlsKAEMdTY0AAARDAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KExvY2tSZWFzb24AAQQ4RmFpbGVkRGlzcGF0Y2gEARxyZXRyaWVzDAEIdTgAAAAAFQwAAAQMdQM4CAAZDAAABAh1AzgAHQwMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFcnJvcgQEVAABeFBNZW1iZXJLZXlBbHJlYWR5VXNlZAAAAEBJbnZhbGlkTWVtYmVyS2V5AAEANEludGVybmFsRXJyb3IAAgBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQAAwBQSW52YWxpZENvbnNvbGlkYXRpb24ABABMQ29uc29saWRhdGlvblRvb0JpZwAFADxDb2luVmFsdWVUb29CaWcABgBEQ29pblZhbHVlVG9vU21hbGwABwBYQ29pblZhbHVlSXNMZXNzVGhhbkZlZQAIAExDb2luVmFsdWVPdXRPZkJvdW5kAAkAYExvc3N5Q29pblZhbHVlQ29udmVyc2lvbgAKCCEBVGhlIGNvaW4gdmFsdWUgY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudCBiZWNhdXNl9GBVbmRlcmx5aW5nQXNzZXRVbml0YCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSBgMl58dmFsdWV8YC5ESW52YWxpZEFsaWFzUHJvb2YACwBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAMAFRQcm9vZkFuZEFsaWFzTWlzbWF0Y2gADQA4Tm90aGluZ1RvQnVpbGQADgAwVG9vTWFueVJpbmdzAA8AVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgAQAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAARACxFbXB0eUlucHV0cwASAEBSZWN5Y2xlck1pc21hdGNoABMECQFUaGUgZmVlIHJlY3ljbGVyIGluIHRoZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGwncyByZWN5Y2xlci5gSW5zdWZmaWNpZW50VW5sb2FkRm9yRmVlABQEvFRoZSB0b3RhbCB1bmxvYWRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIHRoZSBmZWUuREFsaWFzTm90UHJlbWFya2VkABUEOQFUaGUgZmlyc3QgYWxpYXMgd2FzIG5vdCBwcmUtbWFya2VkIGJ5IGV4dGVuc2lvbiAocmVxdWlyZWQgZm9yIEZyb21PdXRwdXQgZmVlKS5cSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AFgRJAVRoZSByZWN5Y2xlciByZXZpc2lvbiBkb2VzIG5vdCBtYXRjaCAocmVjeWNsZXIgbWF5IG5vdCBleGlzdCBvciBoYXMgYmVlbiByZWJ1aWx0KS4wSW52YWxpZFNwbGl0ABcAREZyZXNoQ29pblJlcXVpcmVkABgEyFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgZnJlc2ggY29pbiAoYGFnZSA9PSAwYCkuaENhbm5vdENvbnZlcnROYXRpdmVUb0Fzc2V0ABkAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkABoEvFdoZW4gdXNpbmcgUHJlcGFpZCBmZWUgbW9kZSwgbWF4X2ZlZSBtdXN0IGJlIDAuSE1heEZlZUV4Y2VlZHNJbnB1dAAbBKhUaGUgbWF4X2ZlZSBleGNlZWRzIHRoZSB0b3RhbCBpbnB1dCB2YWx1ZS40SW52YWxpZE1heEZlZQAcBNhUaGUgbWF4IGZlZSBhcmd1bWVudCBkb2Vzbid0IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy54Q2Fubm90Q3JlYXRlUmVjeWNsZXJDb2xsZWN0aW9uAB0EKQFUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgY291bGQgbm90IGJlIGNyZWF0ZWQgb24tZGVtYW5kLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4hDAAABAgJAwkDACUMBBhPcHRpb24EBFQB7QsBCBBOb25lAAAAEFNvbWUEAO0LAAABAAApDAQYT3B0aW9uBARUAXEDAQgQTm9uZQAAABBTb21lBABxAwAAAQAALQwEGE9wdGlvbgQEVAF1AwEIEE5vbmUAAAAQU29tZQQAdQMAAAEAADEMDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlczhTdWJzY3JpYmVySW5mbwQEVAAADAEsY29sbGVjdGlvbnNdBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAUhsYXN0X2luaXRfc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABMHBhbGxldF9pbmRleAwBCHU4AAA1DAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXMsUGFnaW5nU3RhdGUELEJsb2NrTnVtYmVyATgADAEod3JpdGVfcGFnZS0DAQx1MTYAASRzZW5kX3BhZ2UtAwEMdTE2AAFEbGFzdF91cGRhdGVfYmxvY2s4ASxCbG9ja051bWJlcgAAOQwAAAQMLQMIOAA9DAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNAUGVuZGluZ0luaXRTdGF0ZQQEVAAAGAEsY29sbGVjdGlvbnNdBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAWBjdXJyZW50X2NvbGxlY3Rpb25faW5kZXg4AQx1MzIAAUBhZnRlcl9yaW5nX2luZGV4CQMBRE9wdGlvbjxSaW5nSW5kZXg+AAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEwcGFsbGV0X2luZGV4DAEIdTgAAEEMDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlc1hCYXRjaERpc3RyaWJ1dGlvblN0YXRlBCxCbG9ja051bWJlcgE4ABABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAASxzb3VyY2VfdGltZSgBDHU2NAABJHNlYWxlZF9hdDgBLEJsb2NrTnVtYmVyAAFUcmVtYWluaW5nX3N1YnNjcmliZXJzOAEMdTMyAABFDAAABAicCABJDAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIYcGFsbGV0FEVycm9yBARUAAE0SFN1YnNjcmliZXJOb3RGb3VuZAAABFRTdWJzY3JpYmVyIG5vdCBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQAAQRoU3Vic2NyaWJlciBhbHJlYWR5IGV4aXN0cy5IVG9vTWFueVN1YnNjcmliZXJzAAIEcE1heGltdW0gc3Vic2NyaWJlcnMgcmVhY2hlZC5YSW52YWxpZENvbGxlY3Rpb25zTGlzdAADBD0BQ29sbGVjdGlvbnMgbGlzdCBtdXN0IGJlIHNvcnRlZCBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIgd2l0aCBubyBkdXBsaWNhdGVzLjhUb29NYW55VXBkYXRlcwAEBNBUb28gbWFueSByaW5nIHJvb3QgdXBkYXRlcyB0byBmaXQgaW4gYSBzaW5nbGUgYmF0Y2guNFhjbVNlbmRGYWlsZWQABQRAWENNIHNlbmQgZmFpbGVkLmROb3RTdWJzY3JpYmVkVG9Db2xsZWN0aW9uAAYE5FN1YnNjcmliZXIgaXMgbm90IHN1YnNjcmliZWQgdG8gdGhlIHJlcXVlc3RlZCBjb2xsZWN0aW9uLkBJbnZhbGlkUmluZ0luZGV4AAcEgFJpbmcgcm9vdCBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuWEV4Y2VlZHNDaGFubmVsQ2FwYWNpdHkACAQBAVJlcXVlc3RlZCB1cGRhdGVzIGV4Y2VlZCB0aGUgc3Vic2NyaWJlcidzIEhSTVAgY2hhbm5lbCBjYXBhY2l0eS40Tm9CYXRjaEFjdGl2ZQAJBFxObyBhY3RpdmUgYmF0Y2ggZXhpc3RzLjROb1BlbmRpbmdJbml0AAoEuE5vIHBlbmRpbmcgaW5pdGlhbGl6YXRpb24gZm9yIHRoaXMgc3Vic2NyaWJlci5QUmVwbGF5Q29vbGRvd25BY3RpdmUACwQNAVJlcGxheSBjb29sZG93biBoYXMgbm90IGVsYXBzZWQgZm9yIHRoaXMgc3Vic2NyaWJlciBhbmQgY29sbGVjdGlvbi5ARW1wdHlSaW5nSW5kaWNlcwAMBORSZXBsYXkgcmVxdWVzdGVkIHdpdGggYW4gZW1wdHkgbGlzdCBvZiByaW5nIHJvb3QgaW5kaWNlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQwMjGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uGHBhbGxldCxPblBvbGxTdGF0ZQABICBJbmFjdGl2ZQAAADRDcmVhdGluZ0Fzc2V0AAEAQFhjbUZ1bmRzVHJhbnNmZXIAAgA4VmVyaWZ5aW5nRnVuZHMAAwAsRnVuZGluZ1BvdHMABABgU2NoZWR1bGluZ01vYlJ1bGVQYXlvdXRzAAUAWFNjaGVkdWxpbmdTY29yZVBheW91dHMABgBMT3BlbmluZ0FpcmRyb3BQb29scwAHAABRDAygaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb25fbGl0ZRhwYWxsZXQsT25Qb2xsU3RhdGUAAQggSW5hY3RpdmUAAAAkQ29tcGxldGVkAAEAAFUMDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQkUHJpemVQb29sDCRBY2NvdW50SWQBBBxBc3NldElkAeAwQXNzZXRCYWxhbmNlAcQAIAEIaWQ4ASxQcml6ZVBvb2xJZAABGHRhcmdldHkFASxQcml6ZVRhcmdldAABKGRpc3BhdGNoZXIEASRBY2NvdW50SWQAAShleHBpcmVzX2F0KAEMdTY0AAFAcHJpemVzX3JlbWFpbmluZzgBDHUzMgABLHByaXplX3ZhbHVlxAEwQXNzZXRCYWxhbmNlAAEgYXNzZXRfaWTgARxBc3NldElkAAFAdGFyZ2V0X3RocmVzaG9sZFkMARBVMjU2AABZDAg8cHJpbWl0aXZlX3R5cGVzEFUyNTYAAAQAXQwBIFt1NjQ7IDRdAABdDAAAAwQAAAAoAGEMDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQURXJyb3IEBFQAATyIUHJpemVNdXN0QmVNb3JlT3JFcXVhbFRvTWluQmFsYW5jZQAABNxUaGUgcHJpemUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgYXNzZXQncyBtaW5pbXVtIGJhbGFuY2UuPFZhbGlkaXR5VG9vTG9uZwABBJhWYWxpZGl0eSBleGNlZWRzIGBNYXhWYWxpZGl0eVNlY29uZHNgLkBWYWxpZGl0eVRvb1Nob3J0AAIEnFZhbGlkaXR5IGlzIGJlbG93IGBNaW5WYWxpZGl0eVNlY29uZHNgLiBOb1ByaXplcwADBJxgbnVtX3ByaXplc2AgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby5ESW5zdWZmaWNpZW50RnVuZHMABAToRnVuZGluZyBhY2NvdW50IGRvZXMgbm90IGNvdmVyIGBwcml6ZV92YWx1ZSAqIG51bV9wcml6ZXNgLmxUb29NYW55Q29uY3VycmVudFByaXplUG9vbHMABQSUYE1BWF9DT05DVVJSRU5UX1BSSVpFX1BPT0xTYCBpcyBmdWxsLjxOb1N1Y2hQcml6ZVBvb2wABgSEYHBvb2xfaWRgIGlzIG5vdCBpbiBgUHJpemVQb29sc2AuQFByaXplUG9vbEV4cGlyZWQABwS0UHJpemUgcG9vbCBoYXMgZXhwaXJlZCAoYG5vdyA+PSBleHBpcmVzX2F0YCkuSFByaXplUG9vbEV4aGF1c3RlZAAIBIxQcml6ZSBwb29sIGhhcyBubyByZW1haW5pbmcgcHJpemVzLjhBbHJlYWR5Q2xhaW1lZAAJBNRDYWxsZXIncyBpZGVudGl0eSBoYXMgYWxyZWFkeSBjbGFpbWVkIGZyb20gdGhpcyBwb29sLkRQb29sVmFsdWVPdmVyZmxvdwAKBPBBcml0aG1ldGljIG92ZXJmbG93IHdoZW4gY29tcHV0aW5nIHRoZSBwZXItcG9vbCBob2xkIGFtb3VudC4sV3JvbmdUYXJnZXQACwglAVtgQWlyZHJvcEFwaTo6Y2xhaW1fZ2FtZV9wcml6ZWBdIHdhcyBjYWxsZWQgb24gYSBwb29sIHdob3NlIHRhcmdldCBpcyBub3T0YEdhbWVQYXJ0aWNpcGFudHNgICh0aGUgdHJhaXQgbWV0aG9kIGlzIGZvciBnYW1lIHBvb2xzIG9ubHkpLiREaWROb3RXaW4ADATkQ2xhaW1hbnQncyB3aW5uZXItaGFzaCBpcyBub3QgYmVsb3cgdGhlIHBvb2wncyB0aHJlc2hvbGQuMEludmFsaWRQcm9vZgANBCEBUmluZy1tZW1iZXJzaGlwIHByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBgUEVPUExFX0xJVEVfSURFTlRJRklFUmAuNEFsaWFzTWlzbWF0Y2gADgQBAVN1cHBsaWVkIGBhbGlhc2AgZG9lcyBub3QgbWF0Y2ggdGhlIGFsaWFzIHRoZSBwcm9vZiB2ZXJpZmllcyB0by4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuZQwMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuaQwIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAbQwEGE9wdGlvbgQEVAFxDAEIEE5vbmUAAAAQU29tZQQAcQwAAAEAAHEMCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHMJAwEsT3B0aW9uPHUzMj4AAHUMCERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmdpDAEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3NtDAFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AAB5DAhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAoAQx1NjQAAH0MEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2skTGF6eUJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMBuQcACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc4EMAVBWZWM8T3BhcXVlRXh0cmluc2ljPgAAgQwAAAKFDACFDAgoc3BfcnVudGltZTxPcGFxdWVFeHRyaW5zaWMAAAQAGAEcVmVjPHU4PgAAiQwIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAjQwIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAGAEcVmVjPHU4PgAAkQwEGE9wdGlvbgQEVAGNDAEIEE5vbmUAAAAQU29tZQQAjQwAAAEAAJUMDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zOFZpZXdGdW5jdGlvbklkAAAIARhwcmVmaXjBAQEgW3U4OyAxNl0AARhzdWZmaXjBAQEgW3U4OyAxNl0AAJkMBBhSZXN1bHQIBFQBGARFAZ0MAQgIT2sEABgAAAAADEVycgQAnQwAAAEAAJ0MDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zZFZpZXdGdW5jdGlvbkRpc3BhdGNoRXJyb3IAAQw4Tm90SW1wbGVtZW50ZWQAAAAgTm90Rm91bmQEAJUMAThWaWV3RnVuY3Rpb25JZAABABRDb2RlYwACAAChDAQYUmVzdWx0CARUAQUHBEUBpQwBCAhPawQABQcAAAAADEVycgQApQwAAAEAAKUMDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBACpDAFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EAK0MAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAqQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAArQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAsQwIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGG1DAGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAtQwEIEJUcmVlTWFwCARLAb0BBFYBGAAEALkMAAAAuQwAAAK9DAC9DAAABAi9ARgAwQwIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2thecgBEGJvb2wAASxmYXRhbF9lcnJvcsgBEGJvb2wAARhlcnJvcnOxDAEwSW5oZXJlbnREYXRhAADFDAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAAMkMBBhSZXN1bHQIBFQBzQwERQGlDAEICE9rBADNDAAAAAAMRXJyBAClDAAAAQAAzQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGXIARBib29sAADRDAwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AANUMBBhPcHRpb24EBFQB2QwBCBBOb25lAAAAEFNvbWUEANkMAAABAADZDAAAAt0MAN0MAAAECBgNCQDhDAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQHEGFdlaWdodAHVAQAMARh3ZWlnaHTVAQEYV2VpZ2h0AAEUY2xhc3NlBgE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlxAEcQmFsYW5jZQAA5QwMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBxAAIATRpbmNsdXNpb25fZmVl6QwBdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwxAEcQmFsYW5jZQAA6QwEGE9wdGlvbgQEVAHtDAEIEE5vbmUAAAAQU29tZQQA7QwAAAEAAO0MDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBxAAMASBiYXNlX2ZlZcQBHEJhbGFuY2UAARxsZW5fZmVlxAEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWXEARxCYWxhbmNlAADxDAQYUmVzdWx0CARUAfUMBEUB+QwBCAhPawQA9QwAAAAADEVycgQA+QwAAAEAAPUMAAACEQMA+QwMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAAD9DAQYUmVzdWx0CARUAdUBBEUB+QwBCAhPawQA1QEAAAAADEVycgQA+QwAAAEAAAENBBhSZXN1bHQIBFQBxARFAfkMAQgIT2sEAMQAAAAADEVycgQA+QwAAAEAAAUNBBhSZXN1bHQIBFQB2QIERQH5DAEICE9rBADZAgAAAAAMRXJyBAD5DAAAAQAACQ0EGFJlc3VsdAgEVAENDQRFATENAQgIT2sEAA0NAAAAAAxFcnIEADENAAABAAANDQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuRENhbGxEcnlSdW5FZmZlY3RzBBRFdmVudAFZBgAQAUBleGVjdXRpb25fcmVzdWx0EQ0BaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHMdDQEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbSENAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtcyUNAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAEQ0EGFJlc3VsdAgEVAEVDQRFARkNAQgIT2sEABUNAAAAAAxFcnIEABkNAAABAAAVDQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0pQIBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWVpBgEQUGF5cwAAGQ0IKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwEVDQAIASRwb3N0X2luZm8VDQEQSW5mbwABFGVycm9ybQYBNERpc3BhdGNoRXJyb3IAAB0NAAACWQYAIQ0EGE9wdGlvbgQEVAGVAQEIEE5vbmUAAAAQU29tZQQAlQEAAAEAACUNAAACKQ0AKQ0AAAQISQEtDQAtDQAAApUBADENDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAADUNBBhSZXN1bHQIBFQBOQ0ERQExDQEICE9rBAA5DQAAAAAMRXJyBAAxDQAAAQAAOQ0MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAFZBgAMAUBleGVjdXRpb25fcmVzdWx06QYBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50cx0NAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXMlDQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAD0NBBhSZXN1bHQIBFQBBARFAUENAQgIT2sEAAQAAAAADEVycgQAQQ0AAAEAAEENDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAARQ0IXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXM5CAFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZUkNAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAAEkNBBhPcHRpb24EBFQBTQ0BCBBOb25lAAAAEFNvbWUEAE0NAAABAABNDQx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AABRDQQYUmVzdWx0CARUARAERQF9BwEICE9rBAAQAAAAAAxFcnIEAH0HAAABAABVDQQYT3B0aW9uBARUAX0HAQgQTm9uZQAAABBTb21lBAB9BwAAAQAAWQ0AAAJ9BwBdDQhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAXwYU3lzdGVtBACtBwFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAEkIAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBCYWxhbmNlcwQAgQgBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgBET3JpZ2luUmVzdHJpY3Rpb24EAJUIAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFcnJvcjxSdW50aW1lPgANABhBc3NldHMEAMEIAXRwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEANEIAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXJyb3I8UnVudGltZT4ADwAkQXNzZXRSYXRlBADVCAGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBADtCAGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAEQkBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAE0JAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAtQkBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQA1QkBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAiABxVdGlsaXR5BADZCQF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBADpCQF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABBTdWRvBADtCQFscGFsbGV0X3N1ZG86OkVycm9yPFJ1bnRpbWU+ACoAFFByb3h5BAARCgFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAsACBJZGVudGl0eQQAYQoBlGluZGl2X3BhbGxldF9pZGVudGl0eTo6RXJyb3I8UnVudGltZT4AMgAYUGVvcGxlBABpCgGMaW5kaXZfcGFsbGV0X3Blb3BsZTo6RXJyb3I8UnVudGltZT4AMwAcTW9iUnVsZQQAqQoBlGluZGl2X3BhbGxldF9tb2JfcnVsZTo6RXJyb3I8UnVudGltZT4ANAAoUHJvb2ZPZkluawQA5QoBpGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkVycm9yPFJ1bnRpbWU+ADUAEEdhbWUEADELAYRpbmRpdl9wYWxsZXRfZ2FtZTo6RXJyb3I8UnVudGltZT4ANwAUU2NvcmUEAF0LAYhpbmRpdl9wYWxsZXRfc2NvcmU6OkVycm9yPFJ1bnRpbWU+ADgAIER1bW15RGltBABlCwGYaW5kaXZfcGFsbGV0X2R1bW15X2RpbTo6RXJyb3I8UnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAcQsBoGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6RXJyb3I8UnVudGltZT4APgAkUmVzb3VyY2VzBAClCwGYaW5kaXZfcGFsbGV0X3Jlc291cmNlczo6RXJyb3I8UnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQAuQsBrGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlcjo6RXJyb3I8UnVudGltZT4AQAAcTWVtYmVycwQACQwBkGluZGl2X3BhbGxldF9tZW1iZXJzOjpFcnJvcjxSdW50aW1lPgBDABxDb2luYWdlBAAdDAGQaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkVycm9yPFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQASQwBtGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyOjpFcnJvcjxSdW50aW1lPgBFABxBaXJkcm9wBABhDAGQaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkVycm9yPFJ1bnRpbWU+AD0AUE11bHRpQmxvY2tNaWdyYXRpb25zBABlDAGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AGIAALAYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBEEGQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAyAQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBAE0GGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEAUQYEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjxtBwQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAHUHBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQDIBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQDIBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAZQcEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAIEHBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEA1QEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAFdBgAYMEJsb2NrV2VpZ2h0c4UHiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwFYN70UBAgDAAQELAJj3Pl0BAgDgAQEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAiFJqdAIAoAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGiRBzQAADwAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHSZB0BAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9unQfJBERuZXh0LXBlb3BsZS1wYXNlb0RuZXh0LXBlb3BsZS1wYXNlbwEAAABNQg8AAAAAAFTdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAADM2d5jlsiZygEAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAADQuse+SmsJIAEAAACSh/sOAhvIVAEAAACEO2+M7ICYxwEAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAAABAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml4LQMIKgAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAGtBwAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ7EHBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NrtQcIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YUUGCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAADNBwQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AADRBwQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQDVBwQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAD9BwQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAMgEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj8AZExhc3RSZWxheUNoYWluQmxvY2tOdW1iZXIBADgQAAAAAAwdASBUaGUgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suAIggVGhpcyBpcyB1cGRhdGVkIGluIGBvbl9maW5hbGl6ZWAuAGBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBAAEIBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADhVcGdyYWRlR29BaGVhZAEA9QcEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA8UmVsYXlTdGF0ZVByb29mAABQBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBYUmVsZXZhbnRNZXNzYWdpbmdTdGF0ZQAACQgEABxlASBUaGUgc25hcHNob3Qgb2Ygc29tZSBzdGF0ZSByZWxhdGVkIHRvIG1lc3NhZ2luZyByZWxldmFudCB0byB0aGUgY3VycmVudCBwYXJhY2hhaW4gYXMgcGVySCB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAERIb3N0Q29uZmlndXJhdGlvbgAAHQgEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AOExhc3REbXFNcWNIZWFkAQAlCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBATGFzdEhybXBNcWNIZWFkcwEAKQgEABBJASBUaGUgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkcyB3ZSBoYXZlIG9ic2VydmVkIHBlciBlYWNoIGNoYW5uZWwgaW5jb21pbmcgY2hhbm5lbC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBADgQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suAHBMYXN0UHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlAAA1CAQADJQgVGhlIGxhc3QgcHJvY2Vzc2VkIGRvd253YXJkIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuADRIcm1wV2F0ZXJtYXJrAQA4EAAAAAAEoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4AYExhc3RQcm9jZXNzZWRIcm1wTWVzc2FnZQAANQgEAAyEIFRoZSBsYXN0IHByb2Nlc3NlZCBIUk1QIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuAFBIcm1wT3V0Ym91bmRNZXNzYWdlcwEAOQgEAAykIEhSTVAgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suADhVcHdhcmRNZXNzYWdlcwEANAQADKwgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAPAgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIGZvciBlYWNoIG5ldyBibG9jay4AVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEANAQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgBQUGVuZGluZ1Vwd2FyZFNpZ25hbHMBADQEAAwtASBVcHdhcmQgc2lnbmFscyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgDYIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9maW5hbGl6ZWAgZm9yIGVhY2ggYmxvY2suAExQZW5kaW5nQXBwcm92ZWRQZWVyAAB4BAAEOQEgVGhlIGFwcHJvdmVkIHBlZXIgaWQgdG8gYmUgc2VudCBhcyBhIFVNUCBzaWduYWwgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIFBvVi4AXFVwd2FyZERlbGl2ZXJ5RmVlRmFjdG9yAQAtAUAAAGSns7bgDQAAAAAAAAAABOQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkgZm9yIFVNUC4AhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAOBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuAGhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAA1QEEAAhdASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgWENNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAADVAQQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBgQ3VzdG9tVmFsaWRhdGlvbkhlYWREYXRhAAAYBAAMKQEgQSBjdXN0b20gaGVhZCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGFzIHJlc3VsdCBvZiBgdmFsaWRhdGVfYmxvY2tgLgARASBTZWUgYFBhbGxldDo6c2V0X2N1c3RvbV92YWxpZGF0aW9uX2hlYWRfZGF0YWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEhQb1ZNZXNzYWdlc1RyYWNrZXIAAEEIBAAMVQEgVHJhY2tzIGN1bXVsYXRpdmUgYFVNUGAgYW5kIGBIUk1QYCBtZXNzYWdlcyBzZW50IGFjcm9zcyBibG9ja3MgaW4gdGhlIGN1cnJlbnQgYFBvVmAuAHUBIEFjcm9zcyBkaWZmZXJlbnQgY2FuZGlkYXRlcy9Qb1ZzIHRoZSBidWRnZXRzIGFyZSB0cmFja2VkIGJ5IFtgQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50YF0uAAFAAAGFBgAEKFNlbGZQYXJhSWScEN4FAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4AAUkIAAAAAQAAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBACggAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4AJERpZFVwZGF0ZQEAyAQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAECIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAMRAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAMRAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIERQYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgRNCAQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgRdCAQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBGkIBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIEdQgEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABvAABjQYAEEhFeGlzdGVudGlhbERlcG9zaXTEQADKmjsAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAAAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAYEIABBEUnVudGltZUhvbGRSZWFzb26VBgR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZcQEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllcr0BDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyEARkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQAtAUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAIUIBAAAADxUeFBheW1lbnRDcmVkaXQAAIkIBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABvQYABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAAEhTa2lwRmVlbGVzc1BheW1lbnQAAAHBBgAAAAAADAAARE9yaWdpblJlc3RyaWN0aW9uAURPcmlnaW5SZXN0cmljdGlvbgQYVXNhZ2VzAAEEAtiRCAQABIwgVGhlIGN1cnJlbnQgdXNhZ2UgZm9yIGVhY2ggZW50aXR5LgAB1AABxQYAAAGVCAAEQFJlc3RyaWN0ZWRFbnRpdHnYJFEBIFRoZSB0eXBlIHRoYXQgcmVwcmVzZW50IHRoZSBlbnRpdGllcyB0cmFja2VkLCBpdHMgYWxsb3dhbmNlIGFuZCB0aGUgY29udmVyc2lvbiBmcm9tmCBvcmlnaW4gaXMgYm91bmRlZCBpbiBbYFJlc3RyaWN0aW9uYF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4ADQAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBALgmQgEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKhCKUIBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICsQi1CAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQC4LkIUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBALgHQEEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAA4AQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAHcAAHJBgAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdMRAAMqaOwAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXTEQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlxEAAqFvpAwAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlxEAA4fUFAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXTEQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABwQgAFBxCYWxhbmNlxAScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWTgBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVy4BxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhIQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZODFCASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWTgyQgEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlk4M0IBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlk4CUBBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgAOAAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgKhCGkIBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAICoQjEBAAEaQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgYmFsYW5jZSBvbiBob2xkIGZvciBldmVyeSBhY2NvdW50IG9uIGEgZ2l2ZW4gQXNzZXRJZC4AAAHNBgAAAdEIAAREUnVudGltZUhvbGRSZWFzb26VBgR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgAPAAAkQXNzZXRSYXRlASRBc3NldFJhdGUEWENvbnZlcnNpb25SYXRlVG9OYXRpdmUAAQQC4C0BBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAEpAQAB0QYAAAHVCAAEJEFzc2V0S2luZOAERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AEAAAOEFzc2V0VHhQYXltZW50AAAB1QYAAAAAABEAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDZCAQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAN0IBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAMRAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAExAQAB2QYAGBRQb3RJZOkIIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAwKgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAHtCAAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAMwEAAR8IFRoZSBjdXJyZW50IHNldCBvZiB2YWxpZGF0b3JzLgAwQ3VycmVudEluZGV4AQA4EAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLgA0UXVldWVkQ2hhbmdlZAEAyAQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDxCAQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQD5CAQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBDkBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFCQkEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAE1AQAB3QYABChLZXlEZXBvc2l0xEAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABEQkACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXM5AQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBABUJBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAB0JIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZD0BBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBABUJBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAAAhCQQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQAlCQQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBAC0JBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFQQlFCQQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnEUJBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQBJCTAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQDIBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFnC0BQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAUEBAAHhBgAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AAU0JAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAihRCQQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGPDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAmUJOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAmUJKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQJlCWkJBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAG0JBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAHkJBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQICfQmBCQQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEkQkEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAyAQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAyAQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AAF0CBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCSQGdCQQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAFFAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAeUGABBEVW5pdmVyc2FsTG9jYXRpb27kGAIJAgB5FwSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAG1CQQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AARkDAAH1BgAAAAAAIAAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQFIQO9CXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAAIQMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQXJCc0JBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAR0DAAH5BgAQIEhlYXBTaXplOBAAnAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodKUCLAEHAFhA+6ICAOAAGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0pQIsAQcAWED7ogIA4AAUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAdUJAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAiAAAcVXRpbGl0eQABJQMAAQEHAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAHZCQAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW4xAwTwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuACgAACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUC3QnhCQQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAAGJAwABCQcADCxEZXBvc2l0QmFzZcRAADyRYAQAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3LEQAAgvL4AAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAHpCQAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAGVAwABDQcAAAHtCQAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuACoAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJlNQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AKwAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUE8QlEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEAQpEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AAZkDAAEVBwAYQFByb3h5RGVwb3NpdEJhc2XEQAAMd0IDAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcsRAAAGyxAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlxEAAFCZyAwAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3LEQAACZIkBAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAREKAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBloQMQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZaEDyAT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2uhAxxhZ2FpbnN0oQPIBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACwAACBJZGVudGl0eQEgSWRlbnRpdHkwKElkZW50aXR5T2YAAQQFBBUKBAAQaQEgSW5mb3JtYXRpb24gdGhhdCBpcyBwZXJ0aW5lbnQgdG8gaWRlbnRpZnkgdGhlIGVudGl0eSBiZWhpbmQgYW4gYWNjb3VudC4gRmlyc3QgaXRlbSBpcyB0aGXgIHJlZ2lzdHJhdGlvbiwgc2Vjb25kIGlzIHRoZSBhY2NvdW50J3MgcHJpbWFyeSB1c2VybmFtZS4AwCBUV09YLU5PVEU6IE9LIOKAlSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVXNlcm5hbWVPZgABBAUEQQQEAAS8IElkZW50aWZpZXMgdGhlIHByaW1hcnkgdXNlcm5hbWUgb2YgYW4gYWNjb3VudC4AHFN1cGVyT2YAAQQCBCkEBAAIYQEgVGhlIHN1cGVyLWlkZW50aXR5IG9mIGFuIGFsdGVybmF0aXZlICJzdWIiIGlkZW50aXR5IHRvZ2V0aGVyIHdpdGggaXRzIG5hbWUsIHdpdGhpbiB0aGF0UQEgY29udGV4dC4gSWYgdGhlIGFjY291bnQgaXMgbm90IHNvbWUgb3RoZXIgYWNjb3VudCdzIHN1Yi1pZGVudGl0eSwgdGhlbiBqdXN0IGBOb25lYC4AGFN1YnNPZgEBBAUEJQpEAAAAAAAAAAAAAAAAAAAAAAAUuCBBbHRlcm5hdGl2ZSAic3ViIiBpZGVudGl0aWVzIG9mIHRoaXMgYWNjb3VudC4AHQEgVGhlIGZpcnN0IGl0ZW0gaXMgdGhlIGRlcG9zaXQsIHRoZSBzZWNvbmQgaXMgYSB2ZWN0b3Igb2YgdGhlIGFjY291bnRzLgDAIFRXT1gtTk9URTogT0sg4oCVIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChSZWdpc3RyYXJzAQApCgQAEE0BIFRoZSBzZXQgb2YgcmVnaXN0cmFycy4gTm90IGV4cGVjdGVkIHRvIGdldCB2ZXJ5IGJpZyBhcyBjYW4gb25seSBiZSBhZGRlZCB0aHJvdWdoIGGoIHNwZWNpYWwgb3JpZ2luIChsaWtlbHkgYSBjb3VuY2lsIG1vdGlvbikuACkBIFRoZSBpbmRleCBpbnRvIHRoaXMgY2FuIGJlIGNhc3QgdG8gYFJlZ2lzdHJhckluZGV4YCB0byBnZXQgYSB2YWxpZCB2YWx1ZS4ALEF1dGhvcml0eU9mAAEEBTkKPQoEAAT0IEEgbWFwIG9mIHRoZSBhY2NvdW50cyB3aG8gYXJlIGF1dGhvcml6ZWQgdG8gZ3JhbnQgdXNlcm5hbWVzLgA4VXNlcm5hbWVJbmZvT2YAAQQCQQRBCgQAGHUBIFJldmVyc2UgbG9va3VwIGZyb20gYHVzZXJuYW1lYCB0byB0aGUgYEFjY291bnRJZGAgdGhhdCBoYXMgcmVnaXN0ZXJlZCBpdCBhbmQgdGhlIHByb3ZpZGVyIG9mbQEgdGhlIHVzZXJuYW1lLiBUaGUgYG93bmVyYCB2YWx1ZSBzaG91bGQgYmUgYSBrZXkgaW4gdGhlIGBVc2VybmFtZU9mYCBtYXAsIGJ1dCBpdCBtYXkgbm90IGlm8CB0aGUgdXNlciBoYXMgY2xlYXJlZCB0aGVpciB1c2VybmFtZSBvciBpdCBoYXMgYmVlbiByZW1vdmVkLgBpASBNdWx0aXBsZSB1c2VybmFtZXMgbWF5IG1hcCB0byB0aGUgc2FtZSBgQWNjb3VudElkYCwgYnV0IGBVc2VybmFtZU9mYCB3aWxsIG9ubHkgbWFwIHRvIG9uZUggcHJpbWFyeSB1c2VybmFtZS4AQFBlbmRpbmdVc2VybmFtZXMAAQQCQQRJCgQAIG0BIFVzZXJuYW1lcyB0aGF0IGFuIGF1dGhvcml0eSBoYXMgZ3JhbnRlZCwgYnV0IHRoYXQgdGhlIGFjY291bnQgY29udHJvbGxlciBoYXMgbm90IGNvbmZpcm1lZEwgdGhhdCB0aGV5IHdhbnQgaXQuACUBIFVzZWQgcHJpbWFyaWx5IGluIGNhc2VzIHdoZXJlIHRoZSBgQWNjb3VudElkYCBjYW5ub3QgcHJvdmlkZSBhIHNpZ25hdHVyZV0BIGJlY2F1c2UgdGhleSBhcmUgYSBwdXJlIHByb3h5LCBtdWx0aXNpZywgZXRjLiBJbiBvcmRlciB0byBjb25maXJtIGl0LCB0aGV5IHNob3VsZCBjYWxssCBbYWNjZXB0X3VzZXJuYW1lXShgQ2FsbDo6YWNjZXB0X3VzZXJuYW1lYCkuAB0BIEZpcnN0IHR1cGxlIGl0ZW0gaXMgdGhlIGFjY291bnQgYW5kIHNlY29uZCBpcyB0aGUgYWNjZXB0YW5jZSBkZWFkbGluZS4ASFVuYmluZGluZ1VzZXJuYW1lcwABBAJBBDgEABBdASBVc2VybmFtZXMgZm9yIHdoaWNoIHRoZSBhdXRob3JpdHkgdGhhdCBncmFudGVkIHRoZW0gaGFzIHN0YXJ0ZWQgdGhlIHJlbW92YWwgcHJvY2VzcyBieXEBIHVuYmluZGluZyB0aGVtLiBFYWNoIHVuYmluZGluZyB1c2VybmFtZSBtYXBzIHRvIGl0cyBncmFjZSBwZXJpb2QgZXhwaXJ5LCB3aGljaCBpcyB0aGUgZmlyc3TcIGJsb2NrIGluIHdoaWNoIHRoZSB1c2VybmFtZSBjb3VsZCBiZSBkZWxldGVkIHRocm91Z2ggYcQgW3JlbW92ZV91c2VybmFtZV0oYENhbGw6OnJlbW92ZV91c2VybmFtZWApIGNhbGwuAEBQZXJzb25JZGVudGl0aWVzAAEEAghNCgQACGUBIFRoZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24gdGhyb3VnaCB0aGVpciBjb250ZXh0dWFsIGFsaWFzIGZvciB0aGUgcHVycG9zZXMgb2aIIHJlZ2lzdGVyaW5nIGlkZW50aXR5IGluZm9ybWF0aW9uLgA4QWNjb3VudFRvQWxpYXMAAQQCBAgEAAhlASBSZXZlcnNlIGxvb2t1cCBvZiBhY2NvdW50cyBjb250cm9sbGVkIGJ5IGEgcGVyc29uIHRocm91Z2ggYSBjb250ZXh0dWFsIGFsaWFzLiBBbGwgcGVvcGxlLQEgdGhhdCByZWdpc3RlcmVkIGFuIGlkZW50aXR5IG11c3QgYWxzbyBhc3NvY2lhdGUgYW4gb24tY2hhaW4gYWNjb3VudCB0byBpdC4AWFBlbmRpbmdVc2VybmFtZVJlcG9ydHMAAQQCCF0KBAAElCBTdG9yZXMgcGVuZGluZyByZXBvcnRzIG9mIHVzZXJuYW1lcy4AAaUDAAEdBwBAMEJhc2ljRGVwb3NpdMRAANVfuQIAAAAAAAAAAAAAAATYIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuACxCeXRlRGVwb3NpdMRAAOH1BQAAAAAAAAAAAAAAAAQdASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgZW5jb2RlZCBieXRlIGZvciBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuADxVc2VybmFtZURlcG9zaXTEQAAgvL4AAAAAAAAAAAAAAAAIVQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIHJlZ2lzdGVyZWQgdXNlcm5hbWUuIFRoaXMgdmFsdWUgc2hvdWxkIGNoYW5nZSBvbmx5IGlu9CBydW50aW1lIHVwZ3JhZGVzIHdpdGggcHJvcGVyIG1pZ3JhdGlvbiBvZiBleGlzdGluZyBkZXBvc2l0cy4ARFN1YkFjY291bnREZXBvc2l0xEAAefOPAwAAAAAAAAAAAAAADGUBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBhIHJlZ2lzdGVyZWQgc3ViYWNjb3VudC4gVGhpcyBzaG91bGQgYWNjb3VudCBmb3IgdGhlIGZhY3RlASB0aGF0IG9uZSBzdG9yYWdlIGl0ZW0ncyB2YWx1ZSB3aWxsIGluY3JlYXNlIGJ5IHRoZSBzaXplIG9mIGFuIGFjY291bnQgSUQsIGFuZCB0aGVyZSB3aWxsNQEgYmUgYW5vdGhlciB0cmllIGl0ZW0gd2hvc2UgdmFsdWUgaXMgdGhlIHNpemUgb2YgYW4gYWNjb3VudCBJRCBwbHVzIDMyIGJ5dGVzLgBUVXNlcm5hbWVSZXBvcnREZXBvc2l0xEAAKGvuAAAAAAAAAAAAAAAABMggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIHJlcG9ydGVkIHVzZXJuYW1lLgA4TWF4U3ViQWNjb3VudHM4EGQAAAAEDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Yi1hY2NvdW50cyBhbGxvd2VkIHBlciBpZGVudGlmaWVkIGFjY291bnQuAFRVc2VybmFtZVJlcG9ydFRpbWVvdXQ4EIDGEwAMSQEgVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBoYXZlIHRvIHBhc3MgYmV0d2VlbiB0aGUgbGFzdCB0aW1lIGEgZ2l2ZW4gdXNlcm5hbWUgd2FzXQEgcmVwb3J0ZWQgYW5kIG5vdyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlcG9ydCBpdCBhZ2Fpbi4gSW4gb3RoZXIgd29yZHMsIGl0IHJlcHJlc2VudHOUIHRoZSB1c2VybmFtZSB2YWxpZGl0eSBzYWZldHkgcGVyaW9kLgA0TWF4UmVnaXN0cmFyczgQFAAAAAhNASBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RyYXJzIGFsbG93ZWQgaW4gdGhlIHN5c3RlbS4gTmVlZGVkIHRvIGJvdW5kIHRoZSBjb21wbGV4aXR5fCBvZiwgZS5nLiwgdXBkYXRpbmcganVkZ2VtZW50cy4ANE1heEp1ZGdlbWVudHM4EAMAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YganVkZ2VtZW50cyBwZXIgcGVyc29uYWwgaWRlbnRpdHkgYWxsb3dlZCBpbiB0aGUgc3lzdGVtLgBkUGVuZGluZ1VzZXJuYW1lRXhwaXJhdGlvbjgQQJ0EAAQVASBUaGUgbnVtYmVyIG9mIGJsb2NrcyB3aXRoaW4gd2hpY2ggYSB1c2VybmFtZSBncmFudCBtdXN0IGJlIGFjY2VwdGVkLgBMVXNlcm5hbWVHcmFjZVBlcmlvZDgQQPoBAAhZASBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IG11c3QgcGFzcyB0byBlbmFibGUgdGhlIHBlcm1hbmVudCBkZWxldGlvbiBvZiBhIHVzZXJuYW1lIGJ5aCBpdHMgcmVzcGVjdGl2ZSBhdXRob3JpdHkuADxNYXhTdWZmaXhMZW5ndGg4EAcAAAAEgCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBzdWZmaXguAERNYXhVc2VybmFtZUxlbmd0aDgQIAAAAARhASBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSB1c2VybmFtZSwgaW5jbHVkaW5nIGl0cyBzdWZmaXggYW5kIGFueSBzeXN0ZW0tYWRkZWQgZGVsaW1pdGVycy4ARE1pblVzZXJuYW1lTGVuZ3RoOBACAAAABLAgVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgdXNlcm5hbWUgb3Igc3VmZml4LgBgQ3JlZGVudGlhbFJlbW92YWxQZW5hbHR5xEAA8gUqAQAAAAAAAAAAAAAACFUBIFRoZSBmZWUgdGhhdCBhIHBlcnNvbiBtdXN0IHBheSB0aHJvdWdoIHRoZWlyIGFzc29jaWF0ZWQgb24tY2hhaW4gYWNjb3VudCBpbiBvcmRlciB0b1wgcmVtb3ZlIHRoZWlyIGlkZW50aXR5LgBAaWRlbnRpdHlfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvaWRlbnRpdHkgICAIQQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiggaWRlbnRpdHkuAAFhCgAERE9mZmNoYWluU2lnbmF0dXJlNQQM4CBTaWduYXR1cmUgdHlwZSBmb3IgcHJlLWF1dGhvcml6aW5nIHVzZXJuYW1lcyBvZmYtY2hhaW4uABEBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6U2lnbmluZ1B1YmxpY0tleWAgY3JlYXRlZCBhIHNpZ25hdHVyZS4AMgAAGFBlb3BsZQEYUGVvcGxlJBBLZXlzAAEEAggoBAAUSQEgVGhlIGN1cnJlbnQgaW5kaXZpZHVhbHMgd2UgcmVjb2duaXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHlldCBpbmNsdWRlZCBpbiBhIHJpbmcuAHUBIExvb2stdXAgZnJvbSB0aGUgY3J5cHRvIChwdWJsaWMpIGtleSB0byB0aGUgaW1tdXRhYmxlIElEIG9mIHRoZSBpbmRpdmlkdWFsIChgUGVyc29uYWxJZGApLiBBXQEgcGVyc29uIGNhbiBoYXZlIHR3byBkaWZmZXJlbnQgZW50cmllcyBpbiB0aGlzIG1hcCBpZiB0aGV5IHF1ZXVlZCBhIGtleSBtaWdyYXRpb24gd2hpY2hkIGhhc24ndCBiZWVuIGVuYWN0ZWQgeWV0LgA4Q291bnRlckZvcktleXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAYUGVvcGxlAAEEAihlCgQADEkBIFRoZSBjdXJyZW50IGluZGl2aWR1YWxzIHdlIHJlY29nbmlzZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB5ZXQgaW5jbHVkZWQgaW4gYSByaW5nLgBlASBJbW11dGFibGUgSUQgb2YgdGhlIGluZGl2aWR1YWwgKGBQZXJzb25hbElkYCkgdG8gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIga2V5IGFuZCBzdGF0dXMuADhBbGlhc1RvQWNjb3VudAABBAJJAwQEAATMIENvbnZlcnNpb24gb2YgYSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIERQMEAATMIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGNvbnRleHR1YWwgYWxpYXMuAExBY2NvdW50VG9QZXJzb25hbElkAAEEAgQoBAAQvCBBc3NvY2lhdGlvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgcGVyc29uYWwgSUQuACEBIE1hbmFnZWQgd2l0aCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGFuZCBgdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudGAu+CBSZXZlcnNlIGxvb2t1cCBpcyBpbnNpZGUgYFBlb3BsZWAgc3RvcmFnZSwgaW5zaWRlIHRoZSByZWNvcmQuADhOZXh0UGVyc29uYWxJZAEAKCAAAAAAAAAAAAS4IFRoZSBuZXh0IGZyZWUgYW5kIG5ldmVyIHJlc2VydmVkIHBlcnNvbmFsIElELgBcUGVvcGxlQ29sbGVjdGlvbkNyZWF0ZWQBAMgEAATAIFdoZXRoZXIgdGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAEhSZXNlcnZlZFBlcnNvbmFsSWQAAQQFKBAEAATAIENhbmRpZGF0ZXMnIHJlc2VydmVkIGlkZW50aXRpZXMgd2hpY2ggd2UgdHJhY2suAAFRBAABIQcAEDBSaW5nRXhwb25lbnQJBQQJBE0BIFRoZSByaW5nIGV4cG9uZW50IHVzZWQgdG8gb3BlcmF0ZSB0aGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGluIGBNZW1iZXJTZXJ2aWNlYC4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBAeAAAACEkBIE1heGltdW0gbnVtYmVyIG9mIHBlb3BsZSBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AZFN0YWxlQWxpYXNDbGVhbnVwSW50ZXJ2YWw4EJYAAAAEMQEgSW50ZXJ2YWwgKGluIGJsb2NrcykgYXQgd2hpY2ggdGhlIG9mZmNoYWluIHdvcmtlciBydW5zIHN0YWxlIGFsaWFzIGNsZWFudXAuAHBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlOBBYAgAAFD0BIFRoZSBhbW91bnQgb2YgYmxvY2sgbnVtYmVyIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYSBzZXR1cCBhY2NvdW50IHRyYW5zYWN0aW9uLgAFASBgc2V0X2FsaWFzX2FjY291bnRgIGFuZCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGNhbGxzIGNvbnRhaW5zUQEgYGNhbGxfdmFsaWRfYXRgIGFzIGEgcGFyYW1ldGVyLCB0aG9zZSBjYWxscyBhcmUgdmFsaWQgaWYgdGhlIGJsb2NrIG51bWJlciBpcyB3aXRoaW5YIHRoZSB0b2xlcmFuY2UgcGVyaW9kLgABaQoAAAAzAAAcTW9iUnVsZQEcTW9iUnVsZTAcQ3JlZGl0cwEBBAIIbQpwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMIFRoZSB2b3RpbmcgcmVjb3JkcyBvZiBhbGwgYWxpYXNlcy4APFZvdGluZ1BlbmFsdGllcwABBAIIOAQACHEBIFRoZSB2b3RlIHBlbmFsdGllcyBvZiB1c2VycyBhbmQgdGhlaXIgc3RhcnRpbmcgbW9tZW50LiBWb3RlcnMgd2l0aCBwZW5hbHRpZXMgY2Fubm90IHZvdGUgaW7MIGNvbnRlbXB0IHVudGlsIHRoZSBwZW5hbHR5IGV4cGlyZXMgYW5kIGlzIHJlbW92ZWQuADBWb3RpbmdQb2ludHMBAQgGAnEKOBAAAAAACGUBIFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgb2YgYWxsIGFsaWFzZXMsIGR1cmluZyBlYWNoIGZ1bmRpbmcgcm91bmQuIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQhASBkdXJpbmcgcm91bmQgYE5gIGNhbiBiZSByZWRlZW1lZCBmb3IgcmV3YXJkcyBvbmx5IGR1cmluZyByb3VuZCBgTiArIDFgLgAUVm90ZXMAAQgCAnEKSQQEAAS4IEFsbCB2b3RlcyBjYXN0LCBzZWdyZWdhdGVkIGJ5IGNhc2UgYW5kIHZvdGVyLgAkQ2FzZUNvdW50AQA4EAAAAAAEEQEgVGhlIG51bWJlciBvZiBjYXNlcywgb3BlbiBvciByZWNlbnRseSBjbG9zZWQsIHN0b3JlZCBpbiB0aGUgcGFsbGV0LgAkT3BlbkNhc2VzAAEEAjh1CgQABCkBIFRoZSBvcGVuIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGNhbiBzdGlsbCBiZSB2b3RlZCBvbi4AJFJpcGVDYXNlcwABBAI4jQoEAAx1ASBUaGUgcmlwZSBjYXNlcyByZWNvcmRlZCBpbiB0aGUgcGFsbGV0LiBUaGUgdm90aW5nIGhhcyBjb25jbHVkZWQgb24gdGhlc2UgY2FzZXMgYW5kIGEgdmVyZGljdGUBIGhhcyBiZWVuIHJlYWNoZWQsIGJ1dCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIHlldCBpbiBvcmRlciB0byBhbGxvdyBwZW9wbGUgdG8gY2xhaW0gdGhlaXIcIHZvdGVzLgAkRG9uZUNhc2VzAAEEAjiRCgQACGEBIFRoZSBkb25lIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGFyZSBvYnNvbGV0ZSBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSQgc3RvcmFnZS4AREFjY3VtdWxhdGVkUG9pbnRzAQAoIAAAAAAAAAAACHUBIFRoZSBudW1iZXIgb2YgcG9pbnRzIGFjY3VtdWxhdGVkIHRocm91Z2ggY29ycmVjdCB2b3RlcyBkdXJpbmcgdGhlIGN1cnJlbnQgcGF5b3V0IHJvdW5kLiBUaGlzdQEgYW1vdW50IGlzIGdvaW5nIHRvIGRldGVybWluZSB0aGUgcG9pbnQvcmV3YXJkIGV4Y2hhbmdlIHJhdGUgb2YgdGhlIG5leHQgcmV3YXJkIHBheW91dCByb3VuZC4ASFBheW91dERpc3RyaWJ1dGlvbgAAlQoEAATYIERlc2NyaWJlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuADhSb3VuZFNjaGVkdWxlcwEAmQoEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAsQWN0aXZlU2luY2UAACgEAAhtASBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBvZiB0aGUgbW9tZW50IGVub3VnaCBhY3RpdmUgdm90ZXJzIHdlcmUgZGV0ZWN0ZWQgYW5kIHZvdGluZyB3YXMxASBlbmFibGVkLiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlcmUgYXJlIHRvbyBmZXcgYWN0aXZlIHZvdGVycy4AAWEEAAElBwA4UEN1cnJlbmN5TG9jYXRpb25JbmZv4DABAwBxFwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE1heFZvdGVDbGFpbUR1cmF0aW9uKCCAUQEAAAAAAAQFASBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIGEgY2FzZSB0aW1lcyBvdXQgYW5kIGNhbiBiZSByZWFwZWQuADxNaW5DYXNlRHVyYXRpb244EFgCAAAEQQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGEgY2FzZSBtdXN0IHN0YXkgb3BlbiBmb3Igdm90aW5nIGJlZm9yZSBpdCBjYW4gYmUgY2xvc2VkLgBETWF4Vm90aW5nRHVyYXRpb244ELAEAAAELQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgZm9yIHdoaWNoIGEgY2FzZSBjb3VsZCBzdGF5IG9wZW4gZm9yIHZvdGluZy4ARE1pblR1cm5vdXROb21pbmFsOBABAAAABEUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhIGNhc2UgbXVzdCByZWNlaXZlIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFBNaW5UdXJub3V0UGVyY2VudGFnZaUKBAoIZQEgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHZvdGVzIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgdm90ZXIgY291bnQgYSBjYXNlIG11c3QgcmVjZWl2ZYQgYmVmb3JlIGEgdmVyZGljdCBjYW4gYmUgcmVhY2hlZC4AVFZvdGluZ1BlbmFsdHlEdXJhdGlvbjgQwKgAAATQIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgYSBwZW5hbHR5IGlzIGFwcGxpZWQgZm9yLgBETWF4Vm90ZXNDbGFpbWFibGU4EAoAAAAE9CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgY2xhaW1hYmxlIGluIGEgc2luZ2xlIGV4dHJpbnNpYy4AUE9mZmNoYWluV29ya0ludGVydmFsOBCWAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgBMQ2xlYW5Wb3Rlc0JhdGNoU2l6ZTgQ6AMAAAQlASBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZCBkdXJpbmcgb2ZmY2hhaW4gd29ya2VyIHJ1bi4AaFZvdGVzT3BlbkZvckNsYWltc0R1cmF0aW9uOBBYAgAACBUBIFRoZSB0aW1lIGluIHNlY29uZHMgZHVyaW5nIHdoaWNoIHZvdGVzIGNhbiBiZSBjbGFpbWVkIG9uIGRvbmUgY2FzZXMuwCBNZWFzdXJlZCBmcm9tIHRoZSB0aW1lIHRoZSBjYXNlIGJlY29tZXMgJ0RvbmUnLgBUTWluaW11bVZvdGVyVGhyZXNob2xkOBADAAAACGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhY3RpdmUgdm90ZXJzIHJlcXVpcmVkIHRvIGFsbG93IHZvdGluZy4gV2hlbiB0aGlzIHRocmVzaG9sZCBpcyBub3SEIG1ldCwgb3BlbiBjYXNlcyBjYW5ub3QgdGltZSBvdXQuADxtb2JfcnVsZV9wb3RfaWQEgG1vZGxNb2JSd3JkcwAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgBAbW9iX3J1bGVfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvbW9iLXJ1bGUgICAIUQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBtb2IYIHJ1bGUuAAGpCgAAADQAAChQcm9vZk9mSW5rAShQcm9vZk9mSW5rLChDYW5kaWRhdGVzAAEEAgStCgQABEkBIFRoZSBjdXJyZW50IHBlcnNvbmFsIGlkZW50aXRpZXMgd2hpY2ggYXJlIGdvaW5nIHRocm91Z2ggdGhlIHByb29mLW9mLWluayBwcm9jZXNzLgAYUGVvcGxlAAEEBSi9CgQACHEBIFRoZSBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIHdlIHRyYWNrOyBhbGwgd2hpY2ggaGF2ZSBiZWVuIHJlY29nbml6ZWQgdGhyb3VnaCBwcm9vZi1vZi1pbms0IGFyZSBpbiBoZXJlLgA8UmVmZXJyYWxUaWNrZXRzAAEEBSjJCgQABAkBIFRoZSB0aWNrZXRzIHN0b3JlZCBvbi1jaGFpbiByZWFkeSB0byBiZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADhEZXNpZ25GYW1pbGllcwABBAItA9UKBAAEqCBUaGUgY3VycmVudCBkZXNpZ24gZmFtaWxpZXMgd2UgcmVjb2duaXNlLgBAQ29tbWl0dGVkRGVzaWducwABCAIC2QrdCgQABNQgVGhlIGNvbW1pdHRlZCBkZXNpZ25zIHdoaWNoIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLgA8QWxsb2NhdGlvbkNvdW50AQA4EAAAAAAEsCBUaGUgbnVtYmVyIG9mIGp1ZGdlbWVudHMgY3VycmVudGx5IG9uZ29pbmcuADRDb25maWd1cmF0aW9uAQB5BKBAnQQABAAAAOgDAAAAAAAEAAAAACAAAAAAACAAAAAAAAgAAABAnQQABEwgVGhlIGNvbmZpZ3VyYXRpb24uAEBBdmFpbGFibGVJbnZpdGVzAQEEAgQ4EAAAAAAE+CBOdW1iZXIgb2YgaW52aXRhdGlvbnMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAIC4QoQBAAMHQEgUGVuZGluZyBpbnZpdGF0aW9ucyBmb3IgZWFjaCBpbnZpdGVyIChhbiBhY2NvdW50IHRoYXQgaW52aXRlcyBvdGhlcnMpLgBZASBJZiB0aGUga2V5IGAoaW52aXRlciwgdGlja2V0KWAgZXhpc3RzLCB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUuAGxSZWZlcnJlclJlaW1idXJzZW1lbnRWYWx1ZXMAAH0EBAAUYQEgVGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVycywgYWxvbmcgd2l0aCBob3cgbWFueSBvZiBlYWNoIHZhbHVlbQEgc2hvdWxkIGJlIGF3YXJkZWQuIFRoZXNlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0QQEgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lIHRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLgBFASBTdG9yYWdlIGl0ZW0gbmFtZSBrZWVwcyB0aGUgbGVnYWN5IHByZWZpeCBmb3Igc3RvcmFnZSByZWFkYWJpbGl0eSBjb21wYXRpYmlsaXR5LgBsUmVmZXJyZWRSZWltYnVyc2VtZW50VmFsdWVzAAB9BAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBwZW9wbGUsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaHEBIHZhbHVlIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGVVASBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AAWkEAAEpBwAMSE1heEFjdGl2ZVJlZmVycmFsczgQCgAAAAj0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgcmVmZXJyYWxzIGEgdXNlciBjYW4gaGF2ZSBvcGVuLlggSXQgY2Fubm90IGV4Y2VlZCAyMDAuABRQb3RJZOkIIFBvSVBvdF9fIOwgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIHJld2FyZCBwb3QgaXMgZ2VuZXJhdGVkLgApASBUaGUgYWNjb3VudCBtdXN0IGJlIGZ1bmRlZCBzbyByZXdhcmRzIGNhbiBiZSBwYWlkIGR1cmluZyByZWdpc3RyYXRpb24gYW5kYCByZWZlcnJhbCByZXdhcmQgY2xhaW1zLgARASBUaGUgYFBhbGxldElkYCBtdXN0IGJlIGEgY29uc3RhbnQgYXMgaXQgaXMgZXhwb3NlZCBpbiB0aGUgbWV0YWRhdGEuZQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aXRoIGEgcnVudGltZSB1cGdyYWRlIGNhbiBiZSBkb25lIGF0IGFueSB0aW1lLCB0aGUgbmV3IGFjY291bnQgd2lsbJAgdGhlbiBuZWVkIHRvIGJlIGZ1bmRlZCBhY2NvcmRpbmdseS4ATHByb29mX29mX2lua19wb3RfaWQEgG1vZGxQb0lQb3RfXwAAAAAAAAAAAAAAAAAAAAAAAAAABNQgVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvdCB1c2VkIGZvciByZXdhcmQgdHJhbnNmZXJzLgAB5QoACDxUaWNrZXRTaWduYXR1cmU1BAyIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLgABASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6OlRpY2tldFB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4YVGlja2V0BASYIFRpY2tldCB0eXBlIHVzZWQgdG8gcmVmZXIgY2FuZGlkYXRlcy4ANQAAEEdhbWUBEEdhbWVgUFN0b3JlZFBoYXNlRHVyYXRpb25zAACpBAQADPQgUGhhc2UtZHVyYXRpb24gb3ZlcnJpZGUgc2V0IGJ5IFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gdmlh8CBgc2V0X2dhbWVfcGhhc2VzYC4gYE5vbmVgIG1lYW5zIHRoZSBjaGFpbiBmYWxscyBiYWNrIHRvIHRoZaggY29tcGlsZS10aW1lIGRlZmF1bHQgYFQ6OlBoYXNlRHVyYXRpb25zYC4ARFBsYXlEZXBvc2l0QW1vdW50AQDEQADIF6gEAAAAAAAAAAAAAAAQPQEgVGhlIGNvbmZpZ3VyZWQgbmF0aXZlIGJhbGFuY2UgaGVsZCBhcyBkZXBvc2l0IHdoZW4gYW4gYWNjb3VudCBwbGF5ZXIgc2lnbnMgdXAuADEBIFRoaXMgdmFsdWUgaXMgb25seSB1c2VkIGZvciBuZXcgZGVwb3NpdCBjcmVhdGlvbnM7IGV4aXN0aW5nIGFjdGl2ZSBkZXBvc2l0c6ggcmV0YWluIHRoZSBhbW91bnQgdGhleSB3ZXJlIGNyZWF0ZWQgd2l0aC4AEE5mdHMAAQgCAukKOAQAJCkBIEFsbCBtaW50ZWQgTkZUcywga2V5ZWQgYnkgb3duZXIgYW5kIE5GVCBoYXNoLiBUaGUgdmFsdWUgaXMgYSBVbml4LXNlY29uZHM1ASB0aW1lc3RhbXAgc2V0IHdoZW5ldmVyIHRoZSBlbnRyeSBpcyB3cml0dGVuOiBieSB0aGUgYHJlcG9ydGAgZXh0cmluc2ljIGZvciBhNQEgZnJlc2ggYFBlcnNvbmAgdm90ZSwgYnkgYG1pbnRfYXR0ZW5kYW5jZV9uZnRzYCB3aGVuIGFuIGF0dGVuZGVlJ3MgYXR0ZW5kYW5jZTEBIGlzIGZpbmFsaXNlZCwgb3IgYnkgYHByb21vdGVfbmZ0X2NhbmRpZGF0ZXNgIHdoZW4gYSBoZWxkIGBOb3RQZXJzb25gIE5GVCBpczUBIHJlc29sdmVkLiBCYWNrZmlsbCB3cml0ZXMgb3ZlcndyaXRlIGFuIGVhcmxpZXIgdGltZXN0YW1wIG9uIHRoZSBzYW1lIGtleSDigJQxASB0aGUgdmFsdWUgaXMgdGhlcmVmb3JlIHRoZSAqbW9zdCByZWNlbnQqIG1pbnQgdGltZSwgbm90IHRoZSBmaXJzdC4gV2l0aGluIGE5ASBzaW5nbGUgZ2FtZSB0aGVzZSB0aW1lc3RhbXBzIGFyZSBib3VuZGVkIHRvZ2V0aGVyICh0eXBpY2FsbHkgdGhlIHNhbWUgYmxvY2spLDUBIHNvIGNsaWVudHMgY2FuIHVzZSB0aGVtIGFzIGEgcGVyLWdhbWUgdmVyc2lvbiBtYXJrZXIgKGUuZy4gbWFwcGluZyBvbGQgbWludHPUIHRvIG9uZSBpbWFnZSBjb2xsZWN0aW9uIGFuZCBuZXdlciBtaW50cyB0byBhbm90aGVyKS4ANE5mdENhbmRpZGF0ZXMAAQgCAukKEAQAJCkBIENhbmRpZGF0ZSBORlRzIHN0YWdlZCBmcm9tIGBOb3RQZXJzb25gIHJlcG9ydHMsIGhlbGQgdW50aWwgdGhlIGF0dGVzdGVlJ3NcIGF0dGVuZGFuY2UgaXMgZGVjaWRlZC4AOQEgRHVyaW5nIHRoZSByZXBvcnRpbmcgcGhhc2UgYSBgTm90UGVyc29uYCB2b3RlIHN0YWdlcyB0aGUgTkZUIGhlcmUgcmF0aGVyIHRoYW49ASBtaW50aW5nIGRpcmVjdGx5IGludG8gW2BOZnRzYF06IHRoZSBhdHRlc3RlZSBvbmx5IGVhcm5zIHRoZSBORlQgaWYgdGhleSBlbmQgdXAhASBjbGFzc2VkIGFzIGhhdmluZyBhdHRlbmRlZC4gVGhlIGZpcnN0IGtleSBpcyB0aGUgcHJvc3BlY3RpdmUgb3duZXIgKHRoZSEBIGF0dGVzdGVlKSwgdGhlIHNlY29uZCBpcyB0aGUgTkZUIGhhc2ggKHNhbWUgZGVyaXZhdGlvbiBhcyBpbiBbYE5mdHNgXSkuIQEgUmVzb2x2ZWQgZW50cmllcyBhcmUgZWl0aGVyIHByb21vdGVkIGludG8gW2BOZnRzYF0gb3IgZGlzY2FyZGVkIOKAlCBzZWXUIGBwcm9tb3RlX25mdF9jYW5kaWRhdGVzYCAvIGBkaXNjYXJkX25mdF9jYW5kaWRhdGVzYC4APEFyY2hpdmVkUGxheWVycwABBAIxB+0KBAAEKQEgQWxsIHRoZSBwbGF5ZXIgd2l0aCB6ZXJvIHNjb3JlIGJ1dCBzdGlsbCBvbmJvYXJkZWQgaW4gaW5kaXZfcGFsbGV0X3Njb3JlLgAcUGxheWVycwABBAIxB/EKBAAQcCBBbGwgdGhlIHBsYXllciBpbiB0aGUgZ2FtZS4AIQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBzdGF0ZW1lbnQgYWNjb3VudHMgaW6kIFtgU3RtdEFjY291bnRUb0FsaWFzYF0gbXVzdCBub3Qgb3ZlcmxhcC4AJEdhbWVJbmRleAEAOBAAAAAABGAgVGhlIGN1cnJlbnQgZ2FtZSBpbmRleC4AEEdhbWUAAAULBAAEzCBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXh0IGdhbWUgb3Igb25nb2luZyBnYW1lLgAsR2FtZUhpc3RvcnkAAQQFODgEAAhhASBUaGUgbWFwcGluZyBmcm9tIHBhc3QgZ2FtZXMsIGlkZW50aWZpZWQgYnkgdGhlaXIgZ2FtZSBpbmRleCwgdG8gdGhlIHN0YXJ0IHRpbWVzdGFtcCwgaW54IHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guAFxQbGF5ZXJBdHRlbmRhbmNlSGlzdG9yeQEBBAIxBxULBAAQMQEgRW50cmllcyBvZiBwcmV2aW91c2x5IGF0dGVuZGVkIGdhbWVzIG9mIGVhY2ggcGxheWVyLiBSZXRhaW5lZCBvbiBgb2ZmYm9hcmRgKQEgYW5kIGBraWNrb3V0YCBzbyBhbiBhdHRlbmRlZCBpZGVudGl0eSBrZWVwcyBwYXNzaW5nIHRoZSBwYXJ0aWNpcGFudCBjaGVjazEBIGluIGBjbGFpbV9nYW1lX3ByaXplYCBhdCBjbGFpbSB0aW1lLiBCb3VuZGVkIGJ5IGBNYXhBdHRlbmRhbmNlSGlzdG9yeURlcHRoYDAgcGVyIHBsYXllci4AUEdhbWVQYXJ0aWNpcGFudENvdW50AQEEBTg4EAAAAAAc8CBDb3VudCBvZiBjb25maXJtZWQgYXR0ZW5kZWVzIHBlciBnYW1lIGluZGV4LiBJbmNyZW1lbnRlZCBieRkBIFtgUGFsbGV0Ojpub3RlX2F0dGVuZGFuY2VgXSBmb3IgZXZlcnkgYXR0ZW5kYW5jZSBlbnRyeSwgcmVnYXJkbGVzcyBvZvwgd2hldGhlciB0aGUgcGxheWVyIGlzIHJlY29yZGVkIGFzIGBBY2NvdW50T3JQZXJzb246OlBlcnNvbmAgb3IxASBgQWNjb3VudE9yUGVyc29uOjpBY2NvdW50YCDigJQgYm90aCBhcmUgZWxpZ2libGUgdG8gY2xhaW0gZnJvbSB0aGUgcGVyLWdhbWUNASBwcml6ZSBwb29sIHZpYSBbYFBhbGxldDo6Y2xhaW1fZ2FtZV9wcml6ZWBdLiBFeHBvc2VkIGZvciBvZmYtY2hhaW4pASBjb25zdW1lcnMgKGUuZy4gY2xpZW50cyBjb21wdXRpbmcgdGhlIGFpcmRyb3AgYHdpbm5lcl9yYXRpb2AgZm9yIHRoZSBuZXh0vCBwZXItZ2FtZSBwb29sKTsgbm90IHJlYWQgYnkgYW55IG9uLWNoYWluIGNvZGUuADRJbmRleFRvUGxheWVyAAEEBRkLMQcEAATkIFRoZSBtYXBwaW5nIGZyb20gcm91bmQgaW5kZXggYW5kIHBsYXllciBpbmRleCB0byBwbGF5ZXIuADRQbGF5ZXJUb0luZGV4AAEEAjEHHQsEAATgIFRoZSBtYXBwaW5nIGZyb20gcGxheWVyIHRvIHRoZWlyIGluZGljZXMgaW4gZWFjaCByb3VuZC4ARFNodWZmbGVSZWNvZ25pemVkAAEIBQYhCzEHBAAEAQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2YgcmVjb2duaXplZCBwZW9wbGUuAFBTaHVmZmxlTm90UmVjb2duaXplZAABCAUGIQsxBwQABFUBIFN0b3JhZ2UgdXNlZCB0byBjb21wdXRlIHRoZSBzaHVmZmxlIG9yZGVyIG9mIG5vdCByZWNvZ25pemVkIHBlb3BsZSwgaS5lLiBjYW5kaWRhdGVzLgA0R2FtZVNjaGVkdWxlcwEAJQsEAAAAQEF2YWlsYWJsZUludml0ZXMBAQQCBDgQAAAAAAToIE51bWJlciBvZiBpbnZpdGVzIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCAuEKEAQAEIggUGVuZGluZyBpbnZpdGVzIGZvciBlYWNoIGludml0ZXIuAGkBIElmIHRoZSBrZXkgYChpbnZpdGVyLCB0aWNrZXQpYCBleGlzdHMgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLCBmcm9tNCB0aGUgaW52aXRlci4ASEFsaWFzVG9TdG10QWNjb3VudAABBAIIBAQAHFkBIE1hcHBpbmcgZnJvbSBhbGlhcyB0byB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHN0YXRlbWVudCBzdG9yZS4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYFN0bXRBY2NvdW50VG9BbGlhc2BdLgDsIFRoaXMgaXMgcmVtb3ZlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgZ2V0cyBhcmNoaXZlZC5VASBUaGlzIGlzIHVwZGF0ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIHNpZ25zIHVwIHdpdGggYW5vdGhlciBzdGF0ZW1lbnQgYWNjb3VudC4ASFN0bXRBY2NvdW50VG9BbGlhcwABBAIECAQAJFkBIE1hcHBpbmcgZnJvbSB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggc3RhdGVtZW50IHN0b3JlIHRvIHRoZSBhbGlhcy4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYEFsaWFzVG9TdG10QWNjb3VudGBdLuwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBlASBTdGF0ZW1lbnQgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBhY2NvdW50LWJhc2VkIHBsYXllciBhY2NvdW50cyBpbiBbYFBsYXllcnNgXSBtdXN0NCBub3Qgb3ZlcmxhcC4AYENvbW11bmljYXRpb25JZGVudGlmaWVycwABBAIEPQQEAAxpASBUaGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVycyB1c2VkIGJ5IHBsYXllcnMgdG8gZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBQMlAgY29ubmVjdGlvbiBpbm0BIG9yZGVyIHRvIHBsYXkgdGhlIGdhbWUuIFRoZSBhY2NvdW50IHVuZGVyIHdoaWNoIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIgaXMgcmVnaXN0ZXJlZBkBIHNob3VsZCBiZSB0aGUgc2FtZSBhY2NvdW50IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgA0U2NyYXRjaFJld2FyZAAAKQsEAAwpASBTY3JhdGNoIGNhcmQgcmV3YXJkIGluZm8gZm9yIHRoZSBjdXJyZW50IG9yIG1vc3QgcmVjZW50bHkgY29uY2x1ZGVkIGdhbWUuHQEgT3ZlcndyaXR0ZW4gYnkgYGZpbmFsaXplX3NjcmF0Y2hfcmV3YXJkc2AgYXQgZ2FtZSBlbmQuIENsZWFyZWQgb24gZ2FtZTggY2FuY2VsbGF0aW9uLgBUU2NyYXRjaEVsaWdpYmlsaXR5TWFwAAEEAjEHLQsEAASsIFBlci1wbGF5ZXIgc2NyYXRjaCBjYXJkIGVsaWdpYmlsaXR5IHN0YXRlLgBMU2NyYXRjaENsYWltZWRDb3VudAEAOBAAAAAABAUBIFRvdGFsIG51bWJlciBvZiBzY3JhdGNoIGNhcmQgc3VjY2Vzc2Z1bCBjbGFpbXMgYWNyb3NzIGFsbCBnYW1lcy4AAYkEAAEtBwAsJE1heFJvdW5kczgQAwAAACSgIFRoZSBtYXhpbXVtIG51bWJlciBvZiByb3VuZHMgaW4gYSBnYW1lLgDoIE5vdGU6IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJvdW5kcyBpcyBjb25maWd1cmVkIHBlciBnYW1lLgBBASBUT0RPOiBpZiB0aGlzIGJvdW5kIGlzIHJhaXNlZCBtZWFuaW5nZnVsbHkgKGUuZy4gYWJvdmUgfjUpIG9yIHdoZW4gdGltZSBhbGxvd3MsWQEgcmV2aXNpdCB0aGUgYHByb2Nlc3NfcGxheWVyc2AgYW5kIGByZXBvcnRgIGJlbmNobWFya3MgdG8gYWRkIGEgYExpbmVhcjwxLCBNYXhSb3VuZHM+YBUBIHN3ZWVwLiBDdXJyZW50bHkgdGhleSBiZW5jaCBhdCBmaXhlZCBgTWF4Um91bmRzYCBzbyBnYW1lcyB3aXRoIGZld2VyjCByb3VuZHMgb3ZlcnBheSBmb3IgcGVyLXJvdW5kIHdvcmsu7CBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvaW5kaXZpZHVhbGl0eS9pc3N1ZXMvMjQ0ADBNYXhHcm91cFNpemU4EAYAAAAMqCBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwLgAZASBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1pbkdyb3VwU2l6ZTgQAAAAACCoIFRoZSBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuAGUBIFdoZW4gc2NoZWR1bGluZyBhIGdhbWUgdGhlIHZhbHVlIGZvciBgbWF4X2dyb3VwX3NpemVgIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBtaW5pbXVtICsgMS4AJQEgSW4gb3JkZXIgdG8gaGF2ZSBubyBzaW5nbGUtcGxheWVyIGdyb3VwcywgdGhpcyB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDIuAFEBIE5vdGU6IHRoZSBhY3R1YWwgbWluaW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUsIGl0IGlzWCBgbWF4X2dyb3VwX3NpemUgLSAxYC4AVE5vblBsYXlpbmdLaWNrb3V0VGltZTgQgFM7AAwVASBUaGUgdGltZSBhZnRlciB3aGljaCBhIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGNhbiBiZSBraWNrZWQgb3V0LgC8IFRoaXMgaXMgb25seSBmb3IgYWNjb3VudCBwbGF5ZXJzLCBub3QgcGVyc29ucy4ASERlZmF1bHRQbGF5RGVwb3NpdMRAAMgXqAQAAAAAAAAAAAAAAAhRASBUaGUgZGVmYXVsdCBwbGF5IGRlcG9zaXQgKG5hdGl2ZSBiYWxhbmNlKSB1c2VkIHdoZW4gW2BQbGF5RGVwb3NpdEFtb3VudGBdIGhhcyBuZXZlcnAgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuADhQaGFzZUR1cmF0aW9uc6kEUCwBAAA8AAAAHgAAAFgCAAA8AAAABLggVGhlIGR1cmF0aW9ucyBvZiBlYWNoIGdhbWUgcGhhc2UsIGluIHNlY29uZHMuAEBNYXhHYW1lU2NoZWR1bGVzOBAMAAAABOwgVGhlIE1heGltdW0gbnVtYmVyIG9mIGdhbWUgc2NoZWR1bGVzIHRoZSBwYWxsZXQgY2FuIHN0b3JlLgBkTWF4QXR0ZW5kYW5jZUhpc3RvcnlEZXB0aDgQDAAAAAhdASBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFzdCBnYW1lcyBmb3Igd2hpY2ggcGxheWVyIGF0dGVuZGFuY2UgaXMgc3RvcmVkLiBBbnkgYXR0ZW5kYW5jZQEBIGVudHJpZXMgb2xkZXIgdGhhbiB0aGlzIHdpbGwgYmUgaW1taW5lbnRseSBwdXJnZWQgZnJvbSBzdG9yYWdlLgA8UmV3YXJkUGVyV2lubmVyxEAAQOWcMBIAAAAAAAAAAAAACAkBIEZpeGVkIHJld2FyZCBhbW91bnQgcGVyIHNjcmF0Y2ggY2FyZCB3aW5uZXIuIFRoZSBhY3R1YWwgcGF5b3V0IGlzlCBgbWluKHBvdF9iYWxhbmNlLCBSZXdhcmRQZXJXaW5uZXIpYC4AbHByb29mX29mX293bmVyc2hpcF9tc2dfYmFzZQiAcG9wOmdhbWU6c3RtdF9hY2NvdW50X2Zvcl9hbGlhczoQGQEgVGhlIGJhc2UgbWVzc2FnZSBvZiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIGFuIGFjY291bnQgYnkgYW4gYWxpYXMuADUBIFRoZSBmdWxsIG1lc3NhZ2UgaXMgdGhpcyBiYXNlIGNvbmNhdGVuYXRlZCB0byB0aGUgYWxpYXMgYW5kIHRoZW4gaGFzaGVkIHdpdGisIGBibGFrZTJfMjU2YCAoYmxha2UyIHdpdGggMjU2IGJpdCBvdXRwdXQpLgA4bWF4X2VuYWN0bWVudHM4EBAAAAAUOQEgTWF4aW11bSBudW1iZXIgb2YgZnVsbCBlYXJseS1hdHRlbmRhbmNlIGVuYWN0bWVudHMgYSBzaW5nbGUgYHJlcG9ydGAgY2FsbCBjYW4ZASB0cmlnZ2VyOiBldmVyeSB1bmlxdWUgY28tcGxheWVyIGFjcm9zcyBhbGwgcm91bmRzLCBwbHVzIHRoZSByZXBvcnRlci4AGQEgVXNlZCBib3RoIGFzIHRoZSBwcmUtZGlzcGF0Y2ggb3ZlcmNoYXJnZSBib3VuZCBvbiBgcmVwb3J0YCBhbmQgYXMgdGhlxCB1cHBlciBib3VuZCBvZiBpdHMgYExpbmVhcmAgYmVuY2htYXJrIGNvbXBvbmVudC4AATELAAg8VGlja2V0U2lnbmF0dXJlNQQEiCBTaWduYXR1cmUgdXNlZCB0byB2ZXJpZnkgdGlja2V0cy5AQWNjb3VudFNpZ25hdHVyZTUEBGAgU2lnbmF0dXJlIGZvciBhY2NvdW50cy4ANwAAFFNjb3JlARRTY29yZSwwUGFydGljaXBhbnRzAAEEAjEHNQsEAAR8IFRoZSBwYXJ0aWNpcGFudHMgaW5mb3JtYXRpb25zLgBMUGVyc29uaG9vZFRocmVzaG9sZAEAOBAAAAAABMggVGhlIHNjb3JlIHRocmVzaG9sZCByZXF1aXJlZCB0byByZWFjaCBwZXJzb25ob29kLgBsUGVyc29uaG9vZFRocmVzaG9sZFNjaGVkdWxlAQDFBMQYiBMAAAEAAAAQJwAAAwAAACBOAAAGAAAAuIgAAAoAAABQwwAADwAAAP////8VAAAAKB0BIFJ1bnRpbWUtY29uZmlndXJhYmxlIHNjaGVkdWxlIG9mIHBlcnNvbmhvb2QtdGhyZXNob2xkIHRpZXJzLCBzb3J0ZWQgYnkdASBhc2NlbmRpbmcgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLiBFYWNoIHRpZXIgc3BlY2lmaWVzIHRoZSBzY29yZSBhHQEgcGFydGljaXBhbnQgbXVzdCByZWFjaCB0byBiZSByZWNvZ25pemVkIGFzIGEgcGVyc29uIGF0IHRoYXQgcG9wdWxhdGlvbhwgbGV2ZWwuAAUBIERlZmF1bHRzIHRvIFtgRGVmYXVsdFBlcnNvbmhvb2RUaHJlc2hvbGRUaWVyc2BdIHVudGlsIGdvdmVybmFuY2UBASBvdmVycmlkZXMgaXQgdmlhIFtgUGFsbGV0OjpzZXRfcGVyc29uaG9vZF90aHJlc2hvbGRfc2NoZWR1bGVgXS4AEQEgQSBuZXcgc2NoZWR1bGUgdGFrZXMgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbvwgd2hlbiBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcmVjYWxjdWxhdGVzIGBQZXJzb25ob29kVGhyZXNob2xkYC4AUEFic2VuY2VHcmFjZVNjaGVkdWxlAQC5BJQYiBMAAAYFECcAAAUEIE4AAAQDuIgAAAMCUMMAAAIB/////wYBICkBIFJ1bnRpbWUtY29uZmlndXJhYmxlIHNjaGVkdWxlIG9mIGFic2VuY2UtZ3JhY2UgdGllcnMsIHNvcnRlZCBieSBhc2NlbmRpbmcNASBwb3B1bGF0aW9uIHNpemUgdGhyZXNob2xkLiBFYWNoIHRpZXIgc3BlY2lmaWVzIGhvdyBtYW55IG1pc3NlcyBhcmUNASB0b2xlcmF0ZWQgd2l0aGluIHJlY2VudCBnYW1lcyBiZWZvcmUgYSBwYXJ0aWNpcGFudCdzIHBlcnNvbmhvb2QgaXMsIHN1c3BlbmRlZC4AHQEgRGVmYXVsdHMgdG8gW2BEZWZhdWx0QWJzZW5jZUdyYWNlVGllcnNgXSB1bnRpbCBnb3Zlcm5hbmNlIG92ZXJyaWRlcyBpdA0BIHZpYSBbYFBhbGxldDo6c2V0X2Fic2VuY2VfZ3JhY2Vfc2NoZWR1bGVgXS4gQW4gZW1wdHkgc2NoZWR1bGUgKHNldPggZXhwbGljaXRseSBieSBnb3Zlcm5hbmNlKSBkaXNhYmxlcyB0aGUgZ3JhY2UgcGVyaW9kIGVudGlyZWx5LgBEQWJzZW5jZUdyYWNlUmF0aW8BAF0JCAAAGBUBIFRoZSBjdXJyZW50bHkgYWN0aXZlIGFic2VuY2UtZ3JhY2UgcmF0aW8gYChhbGxvd2VkX21pc3Nlcywgd2luZG93KWAsJQEgZGVyaXZlZCBmcm9tIGBBYnNlbmNlR3JhY2VTY2hlZHVsZWAgYW5kIHRoZSBjdXJyZW50IGFjdGl2ZS1wZXJzb24gY291bnQuABEBIFVwZGF0ZWQgZWFjaCB0aW1lIGB1cGRhdGVfdGhyZXNob2xkcygpYCBydW5zIChhdCB0aGUgc3RhcnQgb2YgZXZlcnkdASBhdHRlbmRhbmNlIHJlcG9ydCBzZXNzaW9uKS4gUmVhZCBieSBgc2V0X2F0dGVuZGFuY2VgIHRvIGRlY2lkZSB3aGV0aGVyjCBhIHBhcnRpY2lwYW50IHNob3VsZCBiZSBzdXNwZW5kZWQuAEhDdXJyZW50Um91bmRQb2ludHMBADgQAAAAAAS0IFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgaW4gdGhlIGN1cnJlbnQgcm91bmQuAERDdXJyZW50Um91bmRJbmRleAEAOBAAAAAAHIAgVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IHJvdW5kLgBdASBUaGlzIG11c3QgYmUgdGhlIHN1bSBvZiBhbGwgcG9pbnRzIGFjY3VtdWxhdGVkIGluIGBSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudGAgZm9yIHRoZTwgY3VycmVudCByb3VuZC4AUQEgKipXQVJOSU5HKio6IFRoaXMgc3RvcmFnZSBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCBgUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnRgLCB1c2W0IGBmbiBhZGRfcG9pbnRzX3RvX3BhcnRpY2lwYW50YCB0byB1cGRhdGUgaXQuAGhSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudAEBCAICRQs4EAAAAAAY0CBUaGUgcG9pbnRzIGFjY3VtdWxhdGVkIGJ5IGEgcGFydGljaXBhbnQgaW4gYSByb3VuZC4AUQEgRm9yIHRoZSBjdXJyZW50IHJvdW5kLCB0aGlzIHN0b3JhZ2UgbXVzdCBiZSB1cGRhdGVkIGFsb25nc2lkZSBgQ3VycmVudFJvdW5kUG9pbnRzYC4AMQEgKipXQVJOSU5HKio6IFRoaXMgc3RvcmFnZSBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCBgQ3VycmVudFJvdW5kUG9pbnRzYCwgdXNltCBgZm4gYWRkX3BvaW50c190b19wYXJ0aWNpcGFudGAgdG8gdXBkYXRlIGl0LgAwUm91bmRQYXlvdXRzAAEEAjhJCwQAEKggVGhlIHJvdW5kcyB0aGF0IGFyZSBjdXJyZW50bHkgcGF5aW5nIG91dC4AEQEgUm91bmRzIGFyZSBwYXlpbmcgb3V0IGFmdGVyIHRoZXkgaGF2ZSBmaW5pc2hlZCBhY2N1bXVsYXRpbmcgcG9pbnRzLiUBIFdoZW4gYWxsIHRoZWlyIHBvaW50cyBoYXZlIGJlZW4gcGFpZCBvdXQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBzdG9yYWdlLgA0Um91bmRQbGFubmluZwAATQsEAAz8IFRoZSBwbGFubmluZyBvZiB0aGUgY3VycmVudCByb3VuZCB0aGF0IGlzIGFjY3VtdWxhdGluZyBwb2ludHMuAD0BIElmIG5vbmUgdGhlIGN1cnJlbnQgcm91bmQgaXMgb25nb2luZyBhbmQgd2lsbCBiZSBwbGFubmVkIG9uIHRoZSBuZXh0IHNjaGVkdWxlLgA4Um91bmRTY2hlZHVsZXMBAFELBAAEuCBEZXNjcmliZXMgdGhlIHNjaGVkdWxlcyBvZiB0aGUgcGF5b3V0IHJvdW5kcy4AAa0EAAE1BwAUUEN1cnJlbmN5TG9jYXRpb25JbmZv4DABAwBxFwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE9mZmNoYWluV29ya0ludGVydmFsOBACAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgAwc2NvcmVfcG90X2lkBIBtb2Rsc2NvcmVwb3QAAAAAAAAAAAAAAAAAAAAAAAAAAATgIEdldCBhIHVuaXF1ZSwgaW5hY2Nlc3NpYmxlIGFjY291bnQgSUQgZnJvbSB0aGUgYFBvdElkYC4ANHNjb3JlX2NvbnRleHQIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Njb3JlICAgICAgCFkBIFRoZSBjb250ZXh0IHVzZWQgZm9yIHRoZSBwcm9vZnMgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIGFzIGEgcGVyc29uYWwgYWxpYXMgaW4gc2NvcmUgIHBhbGxldC4AKHViaV9wb2ludHM4EAYAAAAEFQEgVGhlIG51bWJlciBvZiBwb2ludHMgcmVjZWl2ZWQgd2hlbiBhdHRlbmRpbmcgYXMgYSByZWNvZ25pemVkIHBlcnNvbi4AAV0LAAAAOAAAIER1bW15RGltASBEdW1teURpbQgsUmVzZXJ2ZWRJZHMAAQQCKBAEAATcIFRoZSBwZXJzb25hbCBJRHMgdGhhdCBhcmUgcmVzZXJ2ZWQgYnkgdW5wcm92ZW4gcGVvcGxlLgAYUGVvcGxlAAEEBShhCwQABLggVGhlIHBlb3BsZSB3ZSB0cmFjayBhbG9uZyB3aXRoIHRoZWlyIHJlY29yZHMuAAHRBAABOQcAAAFlCwAAADsAAChQZW9wbGVMaXRlAShQZW9wbGVMaXRlFChMaXRlUGVvcGxlAAEEAgRpCwQAAAA4QWxpYXNUb0FjY291bnQAAQQCSQMEBAAE4CBDb252ZXJzaW9uIG9mIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIERQMEAATgIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGxpdGUgY29udGV4dHVhbCBhbGlhcy4AbExpdGVQZW9wbGVDb2xsZWN0aW9uQ3JlYXRlZAEAyAQABPAgV2hldGhlciB0aGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIGJlZW4gY3JlYXRlZC4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEKQEgTnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhdmFpbGFibGUgdG8gZGlzdHJpYnV0ZSBmb3IgYSB2ZXJpZmllciBhY2NvdW50IGlkLgAB6QQAAT0HAAxATGl0ZVJpbmdFeHBvbmVudAkFBAkEzCBSaW5nIGV4cG9uZW50IHVzZWQgZm9yIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgBITGl0ZU9uYm9hcmRpbmdTaXplOBADAAAABPwgT25ib2FyZGluZyBzaXplIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgbGl0ZSBwZW9wbGUgY29sbGVjdGlvbi4AdGFjY291bnRfc2V0dXBfYmxvY2tfdG9sZXJhbmNlOBBYAgAABC0BIFRoZSBudW1iZXIgb2YgYmxvY2tzIG9mIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYW4gYWxpYXMgc2V0dXAgdHJhbnNhY3Rpb24uAAFxCwAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlNQQIYQEgU2lnbmF0dXJlIGdlbmVyYXRlZCBieSBsaXRlIHBlb3BsZSBhbmQgdXNlZCBieSB2ZXJpZmllcnMgdG8gY2xhaW0gYXR0ZXN0YXRpb25zIG9uIHRoZWlyICBiZWhhbGYuAD4AACRSZXNvdXJjZXMBJFJlc291cmNlcywkQ29uc3VtZXJzAAEEAgR1CwQABCkBIEFjY291bnRzIHVzZWQgdG8gaWRlbnRpZnkgY29uc3VtZXJzIG1hcHBlZCB0byB0aGVpciBjb25zdW1lciBpbmZvcm1hdGlvbi4AYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlcwABCAYCfQuFCwQAFHEBIEFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIHN0YXRlbWVudCBzdG9yZSBzbG90IHRocm91Z2ggYW4gYW5vbnltb3VzIGFsbG93YW5jZSwgcGVyIHBlcmlvZC4AYQEgVGhlIHBlcmlvZCBrZXkgaXMgYSBiaWctZW5kaWFuIGVuY29kZWQgZGF5IG51bWJlciAoc2Vjb25kcyBzaW5jZSBVbml4IGVwb2NoIC8gODY0MDApIHNvcQEgdGhhdCBgSWRlbnRpdHlgLWhhc2hlZCBpdGVyYXRpb24geWllbGRzIGVudHJpZXMgaW4gY2hyb25vbG9naWNhbCBvcmRlciB0byBiZSByZW1vdmVkIGJ5IHRoZUQgb2ZmY2hhaW4gd29ya2VyLgBsU3RtdFN0b3JlQWxsb3dhbmNlQnlBY2NvdW50AAEIAgKJCxAEABRBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgc3RhdGVtZW50IGFjY291bnQgdG8gYWxsIGl0cyBhY3RpdmUgYW5vbnltb3VzIGFsbG93YW5jZXMuAEUBIEtleWVkIGJ5IGAoQWNjb3VudElkLCAoQmlnRW5kaWFuVTMyIHBlcmlvZCwgdTMyIHNlcSwgQWxpYXMpKWAg4oaSIGAoKWAuIE11bHRpcGxlSQEgZW50cmllcyBwZXIgYWNjb3VudCBhcmUgcG9zc2libGUgd2hlbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYWNjb3VudCBpcyBhdXRob3JpemVkIGJ5zCBkaWZmZXJlbnQgYWxpYXNlcyBvciBhY3Jvc3MgZ3JhY2Utd2luZG93IG92ZXJsYXBzLgCARnJpZW5kUmVxdWVzdFJlZ2lzdHJhdGlvbkJ5QWxpYXMAAQQCCJELBAAEKQEgRnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGJ5IGFub255bW91cyBhbGlhcyBpbiBmcmllbmQgcmVxdWVzdCBjb250ZXh0LgBsRnJpZW5kUmVxdWVzdEFsaWFzQnlBY2NvdW50AAEEAgQIBAAEJQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBmcmllbmQgcmVxdWVzdCBzdGF0ZW1lbnQgYWNjb3VudCB0byBhbm9ueW1vdXMgYWxpYXMuAGxTcGVudExvbmdUZXJtU3RvcmFnZUFsaWFzZXMAAQgGAn0LEAQAIEkBIEFsaWFzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiB1c2VkIHRvIGNsYWltIGxvbmctdGVybSBzdG9yYWdlIGluIGEgZ2l2ZW4gcGVyaW9kLgBZASBLZXllZCBieSBgKHBlcmlvZCwgYWxpYXMpYC4gRWFjaCBjb3VudGVyIHZhbHVlIGluIHRoZSBwcm9vZiBjb250ZXh0IHByb2R1Y2VzIGEgdW5pcXVlXQEgYWxpYXMsIHNvIGEgcGVyc29uIGNhbiBoYXZlIHVwIHRvIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgIGVudHJpZXMgcGVyIHBlcmlvZC41ASBPbGQgcGVyaW9kcyBjYW4gYmUgY2xlYW5lZCB1cCB2aWEgYGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlc2AuAEEBIFRoZSBwZXJpb2Qga2V5IGlzIGBCaWdFbmRpYW5VMzJgIHdpdGggYElkZW50aXR5YCBzbyBpdGVyYXRpb24geWllbGRzIGVudHJpZXMgaW7oIGNocm9ub2xvZ2ljYWwgb3JkZXIsIG1hdGNoaW5nIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgLgA8VXNlcm5hbWVPd25lck9mAAEEAkEEBAQAGHEBIFJldmVyc2UgbG9va3VwIGZyb20gYHVzZXJuYW1lYCB0byB0aGUgYEFjY291bnRJZGAgdGhhdCBoYXMgcmVnaXN0ZXJlZCBpdC4gVGhlIGBvd25lcmAgdmFsdWVlASBzaG91bGQgYmUgYSBrZXkgaW4gdGhlIGBDb25zdW1lcnNgIG1hcC4gVGhlcmUgY2FuIGJlIGF0IG1vc3QgMiB1c2VybmFtZXMgcG9pbnRpbmcgdG8gdGhlOCBzYW1lIGBvd25lcmA6cQEgLSB1c2VybmFtZSBhc3NvY2lhdGVkIHdpdGggYSBjb25zdW1lcidzIGxpdGUgcGVyc29uIGlkZW50aXR5IC0gdGhpcyB3aWxsIGFsd2F5cyBiZSBwcmVzZW50O1kBIC0gb3B0aW9uYWxseSBhbm90aGVyIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29uc3VtZXIncyBmdWxsIHBlcnNvbiBpZGVudGl0eSwgaWY4ICAgYXBwbGljYWJsZS4AOEFjY291bnRPZkFsaWFzAAEEAggEBAAEaQEgUmV2ZXJzZSBsb29rdXAgZnJvbSByZWdpc3RlcmVkIGFsaWFzZXMgdG8gdGhlIGBBY2NvdW50SWRgIHVzZWQgdG8gcmVnaXN0ZXIgYXMgYSBjb25zdW1lci4AbFVzZXJuYW1lUmVzZXJ2YXRpb25EdXJhdGlvbgEAKCAAAAAAAAAAAAhVASBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIHdoaWNoIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gaXMgdmFsaWQsIGluIHNlY29uZHMuIEFmdGVyIHRoaXPQIHRpbWUgcGVyaW9kIGVsYXBzZXMsIHRoZSByZXNlcnZhdGlvbiBjYW4gYmUgdm9pZGVkLgBgVXNlcm5hbWVSZXNlcnZhdGlvblF1ZXVlAAEEAkEElQsEAAhxASBNYXAgZnJvbSBhIHJlc2VydmVkIGB1c2VybmFtZWAgdG8gYSBxdWV1ZSBvZiBgUmVzZXJ2YXRpb25RdWV1ZUVudHJ5YCBpdGVtcywgZWFjaCBob2xkaW5nIGFuYQEgYWNjb3VudCBhbmQgdGhlIHRpbWVzdGFtcCB3aGVuIGl0IGpvaW5lZC4gT2xkIHJlc2VydmF0aW9ucyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADRSZXNlcnZhdGlvbk9mAAEEAgRBBAQACGUBIFJldmVyc2UgbG9va3VwIGZyb20gYW4gYWNjb3VudCB0byB0aGUgdXNlcm5hbWUgaXQgaGFzIHJlc2VydmVkLiBFYWNoIGFjY291bnQgY2FuIGhhdmUgYXScIG1vc3Qgb25lIGFjdGl2ZSByZXNlcnZhdGlvbiBhdCBhIHRpbWUuAAH5BAABQQcAVERNYXhVc2VybmFtZUxlbmd0aDgQIAAAAAQtASBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSB1c2VybmFtZSwgaW5jbHVkaW5nIGFueSBwb3RlbnRpYWwgdHJhaWxpbmcgZGlnaXRzLgBETWluVXNlcm5hbWVMZW5ndGg4EAYAAAAEiCBUaGUgbWluaW11bSBsZW5ndGggb2YgYSB1c2VybmFtZS4ASFBlcnNvbkF1dGhEdXJhdGlvbjgQAKMCAAxVASBUaGUgZHVyYXRpb24gb2YgdGltZSwgaW4gc2Vjb25kcywgZm9yIHdoaWNoIGEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBpcyB2YWxpZC4gQWZ0ZXJRASB0aGlzIHBlcmlvZCBlbGFwc2VzLCBwZW9wbGUgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhY3RpdmUsIGJ1dCB0aGVpciByZXNvdXJjZQ0BIGFsbG93YW5jZXMgc2hvdWxkIGRlZmF1bHQgdG8gdGhlIHNhbWUgdmFsdWVzIHVzZWQgZm9yIGxpdGUgcGVvcGxlLgBsTWluUGVyc29uQXV0aFVwZGF0ZUludGVydmFsOBCAUQEACFUBIFRoZSBtaW5pbXVtIGludGVydmFsIG9mIHRpbWUsIGluIHNlY29uZHMsIHdoaWNoIG11c3QgcGFzcyBiZWZvcmUgdXBkYXRpbmcgYSBwZXJzb24nczwgYXV0aG9yaXphdGlvbi4AZE1heFJlc2VydmF0aW9uUXVldWVMZW5ndGg4EAoAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhhdCBjYW4gcXVldWUgZm9yIGEgc2luZ2xlIHJlc2VydmVkIHVzZXJuYW1lLgBQQWNjb3VudHNBcGlBbGxvd2FuY2WhCyACAAAAAMgAAATQIFRoZSBTdGF0ZW1lbnQgU3RvcmUgYWxsb3dhbmNlIGZvciB0aGUgYWNjb3VudHMgQVBJLgBcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2Q4EBQAAAAEOQEgTWF4aW11bSBudW1iZXIgb2Ygc3RhdGVtZW50IHN0b3JlIHNsb3RzIGEgcGVyc29uIGNhbiBjbGFpbSB3aXRoaW4gb25lIHBlcmlvZC4AbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZDgQCgAAABBNASBNYXhpbXVtIG51bWJlciBvZiBzdGF0ZW1lbnQgc3RvcmUgc2xvdHMgYSBsaXRlIHBlcnNvbiBjYW4gY2xhaW0gd2l0aGluIG9uZSBwZXJpb2QuAE0BIFNhbWUgc2VtYW50aWNzIGFzIGBTdG10U3RvcmVTbG90c1BlclBlcmlvZGAgYnV0IGFwcGxpZWQgd2hlbiB0aGUgcHJvb2YgdGFyZ2V0cyB0aGX8IGxpdGUtcGVvcGxlIGNvbGxlY3Rpb24gdmlhIGBNZW1iZXJzaGlwQ29sbGVjdGlvbjo6TGl0ZVBlb3BsZWAuAFRTdG10U3RvcmVDbGVhbnVwTGltaXQ4EDIAAAAEWQEgTWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZSBlbnRyaWVzIHRvIHJlbW92ZSBwZXIgY2xlYW51cCBjYWxsLgBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bjgQPAAAAAg1ASBNaW5pbXVtIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSBhbiBhbGlhcyBjYW4gcmVwbGFjZSBpdHMgb3du4CBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGVudHJ5IHdpdGhpbiB0aGUgc2FtZSBwZXJpb2QuAFhGcmllbmRSZXF1ZXN0QWxsb3dhbmNloQsgAQAAAAAoAAAEJQEgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIGZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCByZWdpc3RyYXRpb24uAGxGcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2QMBBAUSQEgTWF4aW11bSBudW1iZXIgb2YgZnJpZW5kIHJlcXVlc3RzIGEgcGVyc29uIGNhbiBzZW5kIHdpdGhpbiBvbmUgcmF0ZS1saW1pdCBwZXJpb2QuAFUBIEZvciBleGFtcGxlLCBpZiB0aGlzIGlzIGA4YCwgZWFjaCBwZXJzb24gY2FuIHNlbmQgdXAgdG8gOCBmcmllbmQgcmVxdWVzdHMgZHVyaW5nIHRoZVkBIHBlcmlvZCBzZWxlY3RlZCBieSBgRnJpZW5kUmVxdWVzdFBlcmlvZER1cmF0aW9uYC4gV2hlbiB0aGUgcGVyaW9kIGFkdmFuY2VzLCB0aGUgc2xvdHMcIHJlc2V0LgB8TGl0ZUZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZAwECBBdASBNYXhpbXVtIG51bWJlciBvZiBmcmllbmQgcmVxdWVzdHMgYSBsaXRlIHBlcnNvbiBjYW4gc2VuZCB3aXRoaW4gb25lIHJhdGUtbGltaXQgcGVyaW9kLgBdASBTYW1lIHNlbWFudGljcyBhcyBgRnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kYCBidXQgYXBwbGllZCB3aGVuIHRoZSBwcm9vZiB0YXJnZXRzIHRoZfwgbGl0ZS1wZW9wbGUgY29sbGVjdGlvbiB2aWEgYE1lbWJlcnNoaXBDb2xsZWN0aW9uOjpMaXRlUGVvcGxlYC4AbEZyaWVuZFJlcXVlc3RQZXJpb2REdXJhdGlvbjgQgFEBACQNASBSb2xsaW5nIHRpbWUgd2luZG93IGZvciByYXRlLWxpbWl0aW5nIGZyaWVuZCByZXF1ZXN0cywgaW4gc2Vjb25kcy4ANQEgVGltZSBpcyBkaXZpZGVkIGludG8gZml4ZWQtZHVyYXRpb24gcGVyaW9kcy4gVGhlIHBlcmlvZCBpbmRleCBpcyBjb21wdXRlZCBhc6ggYG5vd19zZWNzIC8gRnJpZW5kUmVxdWVzdFBlcmlvZER1cmF0aW9uYC4AYQEgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYDg2XzQwMGAgKDI0IGhvdXJzKSwgcGVyaW9kIGAwYCBpcyB0aGUgZmlyc3QgMjQgaG91cnMgc2luY2UgdGhlGQEgVW5peCBlcG9jaCwgcGVyaW9kIGAxYCBpcyB0aGUgbmV4dCAyNCBob3VycywgYW5kIHNvIG9uLiBDb21iaW5lZCB3aXRoZQEgYEZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZGAsIHRoaXMgZGVmaW5lcyBob3cgbWFueSBmcmllbmQgcmVxdWVzdHMgY2FuIGJlIHNlbnQgaW4gZWFjaCAgcGVyaW9kLgBgRnJpZW5kUmVxdWVzdEdyYWNlV2luZG93OBAQDgAAFEUBIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCB0aGUgcHJldmlvdXMgZnJpZW5kIHJlcXVlc3QgcGVyaW9kIGlzIHN0aWxsbCBhY2NlcHRlZCBhZnRlciBhIHJvbGxvdmVyLgBlASBUaGlzIGFsbG93cyB0cmFuc2FjdGlvbnMgY3JlYXRlZCBjbG9zZSB0byBhIHBlcmlvZCBib3VuZGFyeSB0byBzdGlsbCBiZSBpbmNsdWRlZCBldmVuIGlm1CB0aGV5IGFyZSBleGVjdXRlZCBqdXN0IGFmdGVyIHRoZSBuZXh0IHBlcmlvZCBiZWdpbnMuAHhGcmllbmRSZXF1ZXN0UmV0ZW50aW9uRHVyYXRpb24oIIA6CQAAAAAAFGEBIER1cmF0aW9uIGZvciB3aGljaCBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb25zIHdpbGwgYmUgcmV0YWluZWQuIFNwZWNpZmllZCBpbiBzZWNvbmRzLgAhASBBIHJlZ2lzdHJhdGlvbiBpcyBjcmVhdGVkIGZvciBhIHNwZWNpZmljIHBlcmlvZC4gT25jZSB0aGlzIHBlcmlvZCBlbmRzLCEBIHRoZSByZWdpc3RyYXRpb24gcmVtYWlucyB2YWxpZCBmb3IgdGhlIGNvbmZpZ3VyZWQgZHVyYXRpb24sIGFmdGVyIHdoaWNo8CBpdCBjYW4gYmUgY2xlYW5lZCB1cC4gU2VlIGBmcmllbmRfcmVxdWVzdF9leHBpcmF0aW9uX3RpbWVgLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATsIE51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbi13b3JrZXIgbWFpbnRlbmFuY2UgcnVucy4AdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uOBAAdRIAFAUBIFRoZSBkdXJhdGlvbiBvZiBhIGxvbmctdGVybSBzdG9yYWdlIGNsYWltaW5nIHBlcmlvZCwgaW4gc2Vjb25kcy4ANQEgVGltZSBpcyBkaXZpZGVkIGludG8gZml4ZWQtZHVyYXRpb24gcGVyaW9kcy4gVGhlIHBlcmlvZCBpbmRleCBpcyBjb21wdXRlZCBhcyUBIGBub3dfc2VjcyAvIExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uYC4gRWFjaCBwZXJzb24gY2FuIHN1Ym1pdCB1cCB0b9AgYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgY2xhaW1zIHBlciBwZXJpb2QuAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QMBAoQCQEgTWF4aW11bSBudW1iZXIgb2YgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1zIHBlciBwZXJzb24gcGVyIHBlcmlvZC4ASQEgRWFjaCBjbGFpbSB1c2VzIGEgZGlmZmVyZW50IGNvdW50ZXIgdmFsdWUgKDAuLmNsYWltc19wZXJfcGVyaW9kKSB3aGljaCBwcm9kdWNlcyBhKQEgZGlzdGluY3QgYWxpYXMgaW4gdGhlIHByb29mIGNvbnRleHQsIGVuc3VyaW5nIG9uZSBjbGFpbSBwZXIgY291bnRlciBzbG90LgBoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3c4EBAOAAAQUQEgRXh0cmEgdGltZSwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHRoZSBwcmV2aW91cyBsb25nLXRlcm0gc3RvcmFnZSBwZXJpb2QgaXMgc3RpbGxsIGFjY2VwdGVkIGFmdGVyIGEgcm9sbG92ZXIuAFkBIFNhbWUgc2VtYW50aWNzIGFzIGBGcmllbmRSZXF1ZXN0R3JhY2VXaW5kb3dgIGJ1dCBhcHBsaWVkIHRvIGxvbmctdGVybSBzdG9yYWdlIGNsYWltcy4AbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdDgQFAAAABRJASBNYXhpbXVtIG51bWJlciBvZiBzcGVudCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIHRoYXQgY2FuIGJlIGNsZWFyZWQgaW4gYSBzaW5nbGXAIGBjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXNgIGNhbGwuAE0BIEJvdW5kcyB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgb2YgdGhlIGNsZWFudXAgZXh0cmluc2ljOyBjYWxsZXJzIG11c3QgcGFzcyBhIGBsaW1pdGBwIG5vIGdyZWF0ZXIgdGhhbiB0aGlzIHZhbHVlLgABpQsABERPZmZjaGFpblNpZ25hdHVyZTUECFEBIFNpZ25hdHVyZSB0eXBlIGZvciBlbnN1cmluZyBvd25lcnNoaXAgb2YgcHJvdmlkZWQgYWNjb3VudHMgaW4gY2FzZSBvZiByZWdpc3RyYXRpb25zPCB0aHJvdWdoIGFsaWFzLgwhEeDfGd6VY7WDAeX34AdDNy0+pos6SqoYqViorNcaQ2RjdXJyZW50X3N0bXRfc3RvcmVfcGVyaW9kADgEUQEgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHBlcmlvZCAoZGF5IG51bWJlciBzaW5jZSBVbml4IGVwb2NoKS4AIRHg3xnelWO1gwHl9+AHQ6zIJchDXr2dNbwNtep2DpZsc3RtdF9zdG9yZV9zbG90X2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcTgIECEBIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgY2xhaW0gYXQgdGhlIGdpdmVuUCBgcGVyaW9kYCBhbmQgYHNlcWAuAD0BIExheW91dDogYFNTU19TTE9UOjxwZXJpb2QgKDQgYnl0ZXMgQkUpPjxzZXEgKDQgYnl0ZXMgQkUpPmAgcGFkZGVkIHRvIDMyIGJ5dGVzLgAhEeDfGd6VY7WDAeX34AdDPYPcixulipt5B3FsGali92hmcmllbmRfcmVxdWVzdF9jb250ZXh0X2ZvcggYcGVyaW9kOAxzZXEMCAglASBSZXR1cm5zIHRoZSBwcm9vZiBjb250ZXh0IGZvciBhIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbiBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4APwAANENodW5rc01hbmFnZXIBNENodW5rc01hbmFnZXIIGENodW5rcwABCAUFqQutCwQABBkBIFBhZ2luYXRlZCBjb2xsZWN0aW9uIG9mIGNodW5rcyAoUmluZ0V4cG9uZW50IC0+IFBhZ2VJbmRleCAtPiBDaHVua3MpLgA8Q2h1bmtQYWdlSGFzaGVzAAEIBQWpCwgEAASIIFRoZSBoYXNoIGZvciBlYWNoIHBhZ2Ugb2YgY2h1bmtzLgABBQUAAUUHAAQgUGFnZVNpemU4EP8AAAAEzCBOdW1iZXIgb2YgY2h1bmtzIHBlciBwYWdlLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgABuQsABBRDaHVua7ELBHAgVGhlIHR5cGUgb2YgYSBzaW5nbGUgY2h1bmsuAEAAABxNZW1iZXJzARxNZW1iZXJzRCxDb2xsZWN0aW9ucwABBAYIvQsEAATgIEluZm9ybWF0aW9uIGFib3V0IGVhY2ggY29sbGVjdGlvbiwga2V5ZWQgYnkgaWRlbnRpZmllci4AUFN1c3BlbmRlZENvbGxlY3Rpb25zAAEEBgi9CwQACCEBIENvbGxlY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24gYW5kIGFyZSBiZWluZyBwcm9jZXNzZWQuWQEgT25jZSBhIGNvbGxlY3Rpb24gaXMgbW92ZWQgaGVyZSwgbm9ybWFsIG9wZXJhdGlvbnMgd2lsbCBmYWlsIHdpdGggQ29sbGVjdGlvbk5vdEZvdW5kLgA0SWRlbnRpZmllcnNPZgABBALBC8kLBAAEzCBUaGUgaWRlbnRpZmllcnMgb2YgY29sbGVjdGlvbnMgb3duZWQgYnkgYW4gZW50aXR5LgAQUm9vdAABCAYCzQvRCwQABIggVGhlIGN1cnJlbnQgbWVtYmVycyB3ZSByZWNvZ25pc2UuACBPbGRSb290cwABDAYGBt0L4QsEACRBASBPbGQgcmluZyByb290cyBhcmUgcmV0YWluZWQgZm9yIGEgZ3JhY2UgcGVyaW9kIHNvIHRoYXQgcHJvb2ZzIGdlbmVyYXRlZCBhZ2FpbnN0ZQEgcHJldmlvdXMgcmV2aXNpb25zIHJlbWFpbiB2YWxpZC4gRWFjaCByb290IGluIHRoZSBtYXAgaXMgaWRlbnRpZmllZCBieSB0aGUgY29tcG9zaXRlIGtleS0BIGAoY29sbGVjdGlvbiwgcmluZyBpbmRleCwgcmluZyByZXZpc2lvbilgLiBFbnRyaWVzIGNhbiBiZSBjbGVhbmVkIHVwIGFmdGVyJQEgYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbmAgaGFzIHBhc3NlZCBzaW5jZSB0aGUgYGFyY2hpdmVkX2F0YCB0aW1lc3RhbXAuADkBIFRoaXMgc3RvcmFnZSBjYW4gY29udGFpbiBzb21lIHJvb3RzIGZvciBkZWxldGVkIGNvbGxlY3Rpb25zIG9yIHJlbW92ZWQgcmluZ3MuXQEgVGhlIGNhbGwgYHZlcmlmeV9tZW1iZXJzaGlwX2F0X3JldmAgYW5kIG90aGVyIG9wZXJhdGlvbiB1c2luZyBvbGQgcm9vdHMgbXVzdCBjaGVjayB0aGVBASBleGlzdGVuY2Ugb2YgdGhlIGNvbGxlY3Rpb24gYW5kIHRoZSByb290IGluIG9yZGVyIHRvIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IGR1c3Qu8CBUaGUgb2xkIHJvb3RzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciB0aGUgcmV0ZW50aW9uIGR1cmF0aW9uLgBAQ3VycmVudFJpbmdJbmRleAEBBAYIOBAAAAAABOQgS2VlcHMgdHJhY2sgb2YgdGhlIHJpbmcgaW5kZXggY3VycmVudGx5IGJlaW5nIHBvcHVsYXRlZC4AOE9uYm9hcmRpbmdTaXplAQEEBgg4EAAAAAAE+CBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHF1ZXVlZCBiZWZvcmUgb25ib2FyZGluZyB0byBhIHJpbmcuACBSaW5nS2V5cwEBDAYCBeUL6QsEABBhASBCb3RoIHRoZSBrZXlzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGJ1aWx0IHJpbmdzIGFuZCB0aGUga2V5cyB0aGF0IHdpbGwgYmUgdXNlZCBpbiBmdXR1cmVZASByaW5ncy4gUGFnaW5hdGVkIGJ5IChJZGVudGlmaWVyLCBSaW5nSW5kZXgsIFBhZ2VJbmRleCkgd2hlcmUgZWFjaCBwYWdlIGNvbnRhaW5zIHVwIHRvdQEgYFJpbmdDYXBhY2l0eUZyb21FeHBvbmVudGAga2V5cy4gVGhlIHBhZ2Ugc2l6ZSBlcXVhbHMgdGhlIGZsZXhpYmxlIHJpbmcgZXhwb25lbnQncyBjYXBhY2l0eSz0IGVuc3VyaW5nIEZsZXhpYmxlIGNvbGxlY3Rpb25zIG5ldmVyIG5lZWQgbW9yZSB0aGFuIG9uZSBwYWdlLgA4UmluZ0tleXNTdGF0dXMBAQgGAs0L7QskAAAAAAAAAAAACGEBIFN0b3JlcyB0aGUgbWV0YSBpbmZvcm1hdGlvbiBmb3IgZWFjaCByaW5nLCB0aGUgbnVtYmVyIG9mIGtleXMgYW5kIGhvdyBtYW55IGFyZSBhY3R1YWxseVggaW5jbHVkZWQgaW4gdGhlIHJvb3QuAEhQZW5kaW5nU3VzcGVuc2lvbnMBAQgGBc0L8QsEAAxpASBBIG1hcCBvZiBhbGwgcmluZ3Mgd2hpY2ggY3VycmVudGx5IGhhdmUgcGVuZGluZyBzdXNwZW5zaW9ucyBhbmQgbmVlZCBjbGVhbmluZywgYWxvbmcgd2l0aBEBIHRoZWlyIHJlc3BlY3RpdmUgbnVtYmVyIG9mIHN1c3BlbmRlZCBrZXlzIHdoaWNoIG5lZWQgdG8gYmUgcmVtb3ZlZC5tASBOb3RlOiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBzaW5nbGUtcGFnZSByaW5ncywgc28gYm91bmRlZCBieSBgUmluZ0NhcGFjaXR5RnJvbUV4cG9uZW50YC4ANEFjdGl2ZU1lbWJlcnMBAQQGCDgQAAAAAATQIFRoZSBudW1iZXIgb2YgbWVtYmVycyBjdXJyZW50bHkgaW5jbHVkZWQgaW4gYSByaW5nLgAcTWVtYmVycwABCAYC9Qv5CwQAGF0BIFRoZSBjdXJyZW50IG1lbWJlcnMgaW4gZWFjaCBjb2xsZWN0aW9uIChlaXRoZXIgaW5jbHVkZWQgaW4gcmluZ3MsIHN1c3BlbmRlZCBhbmQgcXVldWVkIQEgZm9yIHJlbW92YWwgZnJvbSBhIHJpbmcsIHN1c3BlbmRlZCBhbmQgbm90IGluIGFueSByaW5nLCBvciBvbmJvYXJkaW5nKS4ADQEgQ29sbGVjdGlvbiBpZGVudGlmaWVyIHRvIG1lbWJlciBwdWJsaWMga2V5IHRvIHRoZSBtZW1iZXIncyBzdGF0dXMuAKggQSBrZXkgY2FuIGJlbG9uZyB0byBtdWx0aXBsZSBjb2xsZWN0aW9ucy4AKFJpbmdzU3RhdGUBAQQGCP0LBAAE/CBUaGUgY3VycmVudCBzdGF0ZSBvZiBhbGwgcmluZ3MgbWFuYWdlZCBmb3IgYSBnaXZlbiBpZGVudGlmaWVyLgAoU3RhbGVSaW5ncwABCAYFzQsQBAAEzCBTZXQgb2YgcmluZ3Mgd2hpY2ggYXJlIHN0YWxlIGFuZCByZXF1aXJlIGJ1aWxkaW5nLgBAUXVldWVQYWdlSW5kaWNlcwEBBAYIcQcgAAAAAAAAAAAEOQEgS2VlcHMgdHJhY2sgb2YgdGhlIHBhZ2UgaW5kaWNlcyBvZiB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0aGUgb25ib2FyZGluZyBxdWV1ZS4APE9uYm9hcmRpbmdRdWV1ZQEBCAYFzQsFDAQABC0BIFBhZ2luYXRlZCBjb2xsZWN0aW9uIG9mIG1lbWJlciBwdWJsaWMga2V5cyByZWFkeSB0byBiZSBpbmNsdWRlZCBpbiBhIHJpbmcuAERSaW5nRGVsZXRpb25RdWV1ZQABDAYFBeULEAQAFJggUXVldWUgb2YgcmluZyBwYWdlcyBwZW5kaW5nIGRlbGV0aW9uLgAVASBUaGlzIGlzIHVzZWQgYm90aCBieSBgcmVtb3ZlX3JpbmdgIChpbmRpdmlkdWFsIHJpbmcgZGVsZXRpb24pIGFuZCBieRkBIGNvbGxlY3Rpb24gZGVsZXRpb24uIFJpbmcgcGFnZXMgYXJlIHByb2Nlc3NlZCBmcm9tIHRoaXMgcXVldWUgdmlhIE9DV6wgcmVnYXJkbGVzcyBvZiB3aGljaCBvcGVyYXRpb24gcXVldWVkIHRoZW0uAAEVBQABSQcAGDhNYXhDb2xsZWN0aW9uczgQZAAAAATEIE1heGltdW0gbnVtYmVyIG9mIGNvbGxlY3Rpb25zIGFuIG93bmVyIGNhbiBoYXZlLgBcT25ib2FyZGluZ1F1ZXVlUGFnZVNpemU4EP8AAAAITQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AXE1heEZsZXhpYmxlUmluZ0V4cG9uZW50CQUECQxdASBUaGUgbWF4aW11bSByaW5nIGV4cG9uZW50IHVzZWQgZm9yIEZsZXhpYmxlIGNvbGxlY3Rpb25zLiBUaGlzIGFsc28gZGV0ZXJtaW5lcyB0aGUgcGFnZVUBIHNpemUgZm9yIHBhZ2luYXRlZCByaW5nIGtleSBzdG9yYWdlLiBGbGV4aWJsZSBjb2xsZWN0aW9ucyBjYW4gb25seSB1c2UgcmluZyBzaXplcyB1cDwgdG8gdGhpcyB2YWx1ZS4AXFJpbmdCdWlsZGluZ01lbWJlckxpbWl0OBBkAAAACGEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBjYW4gYmUgaW5jbHVkZWQgaW4gYSByaW5nIHRocm91Z2ggYSBzaW5nbGUgcm9vdCBidWlsZGluZxggY2FsbC4AYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbiggWAIAAAAAAAAIUQEgRHVyYXRpb24gaW4gc2Vjb25kcyB0aGF0IG9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBiZWZvcmUgdGhleSBjYW4gYmUgY2xlYW5lZCB1cC5JASBUaGlzIGFsbG93cyBwcm9vZnMgZ2VuZXJhdGVkIHdpdGggb2xkZXIgcm9vdHMgdG8gcmVtYWluIHZhbGlkIGZvciBhIGdyYWNlIHBlcmlvZC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE5CBUaGUgbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBleGVjdXRpb25zLgABCQwABCBMb2NhdGlvbuAEOQEgTG9jYXRpb24gdHlwZSBmb3IgaWRlbnRpZnlpbmcgY29sbGVjdGlvbiBvd25lcnMgZnJvbSBvdGhlciBjaGFpbnMvcGFyYWNoYWlucy4AQwAAHENvaW5hZ2UBHENvaW5hZ2U8MENvaW5zQnlPd25lcgABBAUEcQMEABBAIENvaW5zIGJ5IG93bmVyLgBdASBUaGlzIHN0b3JhZ2UgbWFwIGNvbnRhaW5zIGFsbCB0aGUgY29pbnMgY3VycmVudGx5IGNpcmN1bGF0aW5nLiBUaGUgY29pbiBpcyBtaW50ZWQgd2hlbiUBIHVubG9hZGVkIGZyb20gdGhlIHJlY3ljbGVyLCBhbmQgZGVzdHJveWVkIHdoZW4gbG9hZGVkIGludG8gdGhlIHJlY3ljbGVyLgAsTG9ja2VkQ29pbnMAAQQFBA0MBAAQBQEgVGVtcG9yYXJ5IGxvY2sgZXhwaXJ5IGZvciBjb2lucyB0aGF0IHByZXZpb3VzbHkgZmFpbGVkIGRpc3BhdGNoLgBlASBBIGNvaW4gb3duZXIgZW50cnkgaXMgbG9ja2VkIHVudGlsIHRoZSBzdG9yZWQgVW5peCB0aW1lc3RhbXAsIHByZXZlbnRpbmcgcmVwZWF0ZWQgZmFpbGVklCBkaXNwYXRjaCBhdHRlbXB0cyBpbiBhIHNob3J0IHBlcmlvZC4AaFRvdGFsVmFsdWVPZkRlc3Ryb3llZENvaW5zAQDEQAAAAAAAAAAAAAAAAAAAAAAUqCBUaGUgdG90YWwgdmFsdWUgb2YgY29pbnMgdGhhdCB3ZXJlIGJ1cm50LgBpASBUaGlzIHRyYWNrcyB2YWx1ZSB0aGF0IGlzIGludGVudGlvbmFsbHkgZGVzdHJveWVkIGFzIHBhcnQgb2YgcHJvdG9jb2wgZmxvd3MgKGZvciBleGFtcGxlOmUBIHJlY3ljbGVyIGV4cGlyYXRpb24gY2xlYW51cCBhbmQgb3V0cHV0LXRva2VuIHNwYW0gcGVuYWx0eSBwYXRoKS4gVGhpcyBzdG9yYWdlIGl0ZW0ga2VlcHPIIHRyYWNrIG9mIHRoZSB0b3RhbCB2YWx1ZSBvZiBzdWNoIGRlc3Ryb3llZCBjb2lucy4AYENvbnN1bWVkRnJlZVVubG9hZFRva2VucwABCAUFcQoQBAAYxCBDb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kIGFuZCBhbGlhcy4AVQEgVGhpcyBzdG9yYWdlIGtlZXBzIHRyYWNrIG9mIHRoZSBmcmVlIHVubG9hZCB0b2tlbnMgdGhhdCBoYXZlIGJlZW4gY29uc3VtZWQgYnkgcGVvcGxlrCBhbmQgbGl0ZSBwZW9wbGUsIHRvIGF2b2lkIGRvdWJsZSBzcGVuZGluZy4AcCBJdCBpcyBjbGVhcmVkIHBlcmlvZGljYWxseS4AZFJlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWQAAQQFdQMQBABAEQEgVHJhY2tzIHdoZXRoZXIgYSByZWN5Y2xlciBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBjb2luIHZhbHVlLgBdASBBbGwgcmVjeWNsZXIgY29sbGVjdGlvbnMgYXJlIGNyZWF0ZWQgZWFnZXJseSBkdXJpbmcgb25lLXRpbWUgYG9uX3BvbGxgIGluaXRpYWxpemF0aW9uLi0BIFtgUmVjeWNsZXJNYW5hZ2VyOjplbnN1cmVfY29sbGVjdGlvbl9leGlzdHNgXSBzZXJ2ZXMgYXMgYSBzYWZldHkgZmFsbGJhY2suAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpBASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGNvaW4gdmFsdWUuVQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGNvaW4gdmFsdWUuWQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGlzIGluLmEBICogW1JlY3ljbGVyc1VubG9hZGVkXSAtIHRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgY29pbiB2YWx1ZSBhbmQgcmluZyQgICBpbmRleC4pASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgB0UmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXgAAQQFdQM4BABAxCBMYXN0IHJlbW92ZWQgcmluZyBpbmRleCBwZXIgcmVjeWNsZXIgY29pbiB2YWx1ZS4ARQEgUmluZ3MgYXJlIHJlbW92ZWQgc2VxdWVudGlhbGx5IHN0YXJ0aW5nIGZyb20gaW5kZXggMC4gVGhlIG5leHQgcmluZyB0byBjaGVjayBmb3ItASBleHBpcmF0aW9uIGlzIGBsYXN0X3JlbW92ZWQgKyAxYCAob3IgYDBgIGlmIG5vdGhpbmcgaGFzIGJlZW4gcmVtb3ZlZCB5ZXQpLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFJlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyAAEEBQh1AwQAQBEBIE1hcHBpbmcgZnJvbSBhIHJlY3ljbGVyIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgYmVsb25ncyB0by4ATQEgV2hlbiBhIGNvaW4gaXMgbG9hZGVkIGludG8gYSByZWN5Y2xlciwgdGhlIG1lbWJlciBrZXkgaXMgcmVjb3JkZWQgaGVyZSBzbyB0aGF0IHRoZQ0BIHBhbGxldCBjYW4gbG9vayB1cCB3aGljaCBjb2luIHZhbHVlIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4ARFJlY3ljbGVyc1VubG9hZGVkAAEMBQUFFQwQBABANQEgVGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSAoY29pbiB2YWx1ZSwgcmluZyBpbmRleCwgYWxpYXMpLgBVASBXaGVuIGEgY29pbiBpcyB1bmxvYWRlZCBmcm9tIGEgcmVjeWNsZXIsIHRoZSBhbGlhcyBwcm9kdWNlZCBieSB0aGUgcmluZy1WUkYgcHJvb2YgaXMZASBzdG9yZWQgaGVyZSB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyB3aXRoaW4gdGhlIHNhbWUgcmVjeWNsZXIgcmluZy4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAEBSZWN5Y2xlcnNEdXN0aW5nAAEEBRkMEAQASAUBIE1hcmtzIHJlY3ljbGVyIHJpbmdzIHRoYXQgaGF2ZSB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AIQEgV2hlbiBhIHJlY3ljbGVyIHJpbmcgaXMgcmVtb3ZlZCwgdGhlIGNsZWFudXAgb2YgaXRzIHVubG9hZGVkIGFsaWFzZXMgaW5RASBbUmVjeWNsZXJzVW5sb2FkZWRdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnkgaGVyZVEBIGluZGljYXRlcyB0aGF0IHVubG9hZGVkIGFsaWFzZXMgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlIGFuZCByaW5nIGluZGV4IHN0aWxsIGV4aXN0WCBhbmQgc2hvdWxkIGJlIGR1c3RlZC4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5NZW1iZXJzAAEEBQgQBAA4CQEgTWFwcGluZyBmcm9tIGEgcGFpZCB0b2tlbiBtZW1iZXIga2V5IHRvIHRoZSBwZXJpb2QgaXQgYmVsb25ncyB0by4ARQEgV2hlbiBhIHVzZXIgcGF5cyBmb3IgYSByZWN5Y2xlciB1bmxvYWQgdG9rZW4sIHRoZSBtZW1iZXIga2V5IGlzIHJlY29yZGVkIGhlcmUgc28hASB0aGF0IHRoZSBwYWxsZXQgY2FuIGxvb2sgdXAgd2hpY2ggcGVyaW9kIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcUGFpZFVubG9hZFRva2VuQ29uc3VtZWQAAQwGBQWNCxAEADj0IENvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VucyBieSBwZXJpb2QsIHJpbmcgaW5kZXggYW5kIGFsaWFzLgBJASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gaXMgY29uc3VtZWQsIHRoZSBhbGlhcyBwcm9kdWNlZCBieSB0aGUgcmluZy1WUkYgcHJvb2YgaXP0IHN0b3JlZCBoZXJlIHRvIHByZXZlbnQgZG91YmxlLXNwZW5kaW5nIHdpdGhpbiB0aGUgc2FtZSByaW5nLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBsUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkAAEEBoELEAQAOAkBIFRyYWNrcyB3aGV0aGVyIGEgcGFpZCB0b2tlbiBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBwZXJpb2QuAFUBIFVzZXMgYElkZW50aXR5YCBoYXNoZXIgc28gdGhhdCBpdGVyYXRpb24geWllbGRzIHBlcmlvZHMgaW4gb3JkZXIsIGVuYWJsaW5nIGVmZmljaWVudHAgY2xlYW51cCBvZiBleHBpcmVkIHBlcmlvZHMuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5EdXN0aW5nAAEEBoELEAQAQC0BIE1hcmtzIHBhaWQgdW5sb2FkIHRva2VuIHBlcmlvZHMgdGhhdCBoYXZlIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAFkBIFdoZW4gYSBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uIGlzIHJlbW92ZWQsIHRoZSBjbGVhbnVwIG9mIGl0cyBjb25zdW1lZCB0b2tlbnMgaW5VASBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnlNASBoZXJlIGluZGljYXRlcyB0aGF0IGNvbnN1bWVkIHRva2VucyBmb3IgdGhlIGdpdmVuIHBlcmlvZCBzdGlsbCBleGlzdCBhbmQgc2hvdWxkIGJlICBkdXN0ZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHhQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW4AAQQGgQs4BABg9CBUcmFja3MgdGhlIG5leHQgcmluZyBpbmRleCB0byBjbGVhbiBmb3IgZWFjaCBleHBpcmVkIHBlcmlvZC4ANQEgVXNlZCBieSB0aGUgT0NXIHRvIGRldGVybWluZSBjbGVhbnVwIHByb2dyZXNzIGFuZCBieSB0aGUgY29sbGVjdGlvbiBkZWxldGlvbsQgZXh0cmluc2ljIHRvIHZlcmlmeSBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAD0BIFJpbmdzIGFyZSBjbGVhbmVkIHNlcXVlbnRpYWxseSAob25lIHBlciBPQ1cgaW50ZXJ2YWwpIHJhdGhlciB0aGFuIGFsbCBhdCBvbmNlLj0BIFRoaXMgaXMgaW50ZW50aW9uYWw6IGEgc2luZ2xlIHN0b3JhZ2UgY3Vyc29yIGVuYWJsZXMgTygxKSBjb21wbGV0aW9uIGNoZWNrcyBpbswgYm90aCBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2NsZWFuX3JpbmdgXSBhbmRFASBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2RlbGV0ZV9jb2xsZWN0aW9uYF0uIFRoZSBhbHRlcm5hdGl2ZSDigJQgc3VibWl0dGluZ1UBIGFsbCByaW5nIGNsZWFucyBpbiBwYXJhbGxlbCDigJQgd291bGQgcmVxdWlyZSBmZXRjaGluZyByaW5nIG1lbWJlcnMgdG8gY2hlY2sgd2hldGhlck0BIGVhY2ggcmluZyB3YXMgYWxyZWFkeSBjbGVhbmVkIChzaW5jZSBgcmluZ19zdGF0dXNgIHN0aWxsIHJlcG9ydHMgYHRvdGFsID4gMGAgYWZ0ZXJVASBjbGVhbnVwIGJlY2F1c2UgcmluZ3MgYXJlIG5vdCByZW1vdmVkIHVudGlsIGNvbGxlY3Rpb24gZGVsZXRpb24pLiBDbGVhbnVwIG9mIGV4cGlyZWRNASBjb2xsZWN0aW9ucyBpcyBub3QgdGltZS1jcml0aWNhbCwgc28gdGhlIHNpbXBsZXIgc2VxdWVudGlhbCBhcHByb2FjaCBpcyBwcmVmZXJyZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4dASAqIFtQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW5dIC0gc2VxdWVudGlhbCByaW5nIGNsZWFudXAgcHJvZ3Jlc3MuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcSW5pdGlhbGl6ZVBhbGxldEFjY291bnQAABAEABDEIFdoZXRoZXIgdGhlIHBhbGxldCBhY2NvdW50IGhhcyBiZWVuIGluaXRpYWxpemVkLgBZASBXZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBhbGxldCBhY2NvdW50IHdpdGggbWluaW11bSBiYWxhbmNlIHNvIHRoYXQgaXQgY2FuIGhvbGQgYW557CBhbW91bnQgb2YgdW5kZXJseWluZyBhc3NldCBldmVuIGxlc3MgdGhhbiBtaW5pbXVtIGJhbGFuY2UuAAEZBQABTQcARFBSZWN5Y2xlclJpbmdFeHBvbmVudAkFBAoEsCBUaGUgcmluZyBleHBvbmVudCBmb3IgcmVjeWNsZXIgY29sbGVjdGlvbnMuAGxQYWlkVW5sb2FkVG9rZW5SaW5nRXhwb25lbnQJBQQKBNQgVGhlIHJpbmcgZXhwb25lbnQgZm9yIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb25zLgBEVW5kZXJseWluZ0Fzc2V0SWTgMAEDAHEXBDIFdsjrCwTMIFRoZSBhc3NldCBpZCBvZiB0aGUgdW5kZXJseWluZyBhc3NldCBvZiB0aGUgY29pbnMuAExVbmRlcmx5aW5nQXNzZXRVbml0xEAQJwAAAAAAAAAAAAAAAAAABLwgVGhlIHVuaXQgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgb2YgdGhlIGNvaW5zLgA8TWluaW11bUV4cG9uZW50dQMEAASkIFRoZSBtaW5pbXVtIGV4cG9uZW50IGZvciB0aGUgY29pbiB2YWx1ZS4APE1heGltdW1FeHBvbmVudHUDBA4EpCBUaGUgbWF4aW11bSBleHBvbmVudCBmb3IgdGhlIGNvaW4gdmFsdWUuAIRNaW5pbXVtRXhwb25lbnRGb3JPdXRwdXRVbmxvYWRGZWV1AwQAIF0BIFRoZSBtaW5pbXVtIGNvaW4gZXhwb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBkaXNwYXRjaCBhIGNhbGwgYHVubG9hZF9yZWN5Y2xlcl8qYCB3aXRo1CB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGBBc1VubG9hZFRva2VuRnJvbU91dHB1dGAuAGEBIFRoaXMgZW5zdXJlcyB0aGUgZmVlIGNvaW4gaXMgbGFyZ2UgZW5vdWdoIHRvIHBlbmFsaXplIGZhaWxpbmcgdHJhbnNhY3Rpb25zLCBidXQgaXQgZG9lc7ggbm90IG5lZWQgdG8gY292ZXIgdGhlIHdob2xlIHVubG9hZCB0b2tlbiBmZWUuAFEBIFRoZSBoZWxwZXIgZnVuY3Rpb24gYHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXRgIGNhbiBiZSB1c2VkIHRvzCBldmFsdWF0ZSB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgZm9yIHRoaXMgb3BlcmF0aW9uLgA8TWF4U3BsaXRPdXRwdXRzOBAgAAAABKwgVGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dHMgZm9yIGEgc3BsaXQuAEBNYXhDb25zb2xpZGF0aW9uOBBAAAAABNwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFsaWFzIHByb29mcyBpbiBhIGNvbnNvbGlkYXRpb24uAEhNYXhCYXRjaFVucGFpZExvYWQ4EAoAAAAIuCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5uZXIgY2FsbHMgaW4gYSBzaW5nbGUNASBbYENhbGw6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRfYmF0Y2hgXSBkaXNwYXRjaC4AlFVubG9hZFRva2VuVGltZVBlcmlvZFBlb3BsZUxpdGVQZW9wbGU4EIBRAQAE4CBUaGUgdGltZSBwZXJpb2QgZHVyYXRpb24gZm9yIHVubG9hZCB0b2tlbnMsIGluIHNlY29uZHMuAKhVbmxvYWRUb2tlbkFsbG93YW5jZVBlclRpbWVQZXJpb2RGb3JQZW9wbGXEQICEHgAAAAAAAAAAAAAAAAAUXQEgVGhlIGFsbG93YW5jZSBvZiB1bmxvYWQgdG9rZW5zIHRoYXQgYSBwZXJzb24gY2FuIHVzZSBwZXIgdGltZSBwZXJpb2QsIGV4cHJlc3NlZCBpbiB0aGVIIHVuZGVybHlpbmcgYXNzZXQuAFUBIFVzZSBwYWxsZXQgdmlldyB0byBmZXRjaCB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgdW5sb2FkIHRva2VucyBnaXZlbiB0aGUgY3VycmVudGQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuALhVbmxvYWRUb2tlbkFsbG93YW5jZVBlclRpbWVQZXJpb2RGb3JMaXRlUGVvcGxlxEAgoQcAAAAAAAAAAAAAAAAAFGEBIFRoZSBhbGxvd2FuY2Ugb2YgdW5sb2FkIHRva2VucyB0aGF0IGEgbGl0ZSBwZXJzb24gY2FuIHVzZSBwZXIgdGltZSBwZXJpb2QsIGV4cHJlc3NlZCBpblggdGhlIHVuZGVybHlpbmcgYXNzZXQuAFkBIFVzZSBwYWxsZXQncyBnZXRfZnJlZV91bmxvYWRfdG9rZW5faW5mbygpIHRvIGZldGNoIHRoZSBjb3JyZXNwb25kaW5nIG51bWJlciBvZiB1bmxvYWTIIHRva2VucyBnaXZlbiB0aGUgY3VycmVudCBwcmljZSBmb3IgdW5sb2FkIHRva2Vucy4AgE1heEZyZWVVbmxvYWRUb2tlbnNQZXJUaW1lUGVyaW9kOBAKAAAAEBkBIEhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBmcmVlIHVubG9hZCB0b2tlbnMgcGVyIHRpbWUgcGVyaW9kLgCMIFRoZSBlZmZlY3RpdmUgZnJlZSB0b2tlbiBsaW1pdCBpczoJASBgbWluKGFsbG93YW5jZSAvIGN1cnJlbnRfZmVlLCBNYXhGcmVlVW5sb2FkVG9rZW5zUGVyVGltZVBlcmlvZClgLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQBAAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAFRDb2luRmFpbHVyZUxvY2tQZXJpb2QoIDwAAAAAAAAAEFEBIFRoZSBiYXNlIG51bWJlciBvZiBzZWNvbmRzIHRvIGxvY2sgYSBjb2luIGFmdGVyIGEgZmFpbGVkIGRpc3BhdGNoIGluIGBBc0NvaW5gIGZsb3cuAD0BIFRoZSBhY3R1YWwgbG9jayBkdXJhdGlvbiBpcyBleHBvbmVudGlhbDogYDJecmV0cmllcyAqIGJhc2VgIHdoZXJlIGByZXRyaWVzYCBpc5AgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBmYWlsdXJlcy4AOHBhbGxldF9hY2NvdW50BIBtb2RsY29pbmFnZSAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4IFRoZSBhY2NvdW50IGlkIG9mIHRoZSBwYWxsZXQuAAEdDAAARHrCcSyKdqUqw7oQopAh7Jn5LyTubT1XSX6PPFJhXGFhaGdldF9mcmVlX3VubG9hZF90b2tlbl9pbmZvACEMJE0BIEdldCB0aGUgY3VycmVudCBudW1iZXIgb2YgZnJlZSB1bmxvYWQgdG9rZW5zIGRpc3RyaWJ1dGVkIHRvIHBlb3BsZSBhbmQgbGl0ZSBwZW9wbGWsIGdpdmVuIHRoZSBjdXJyZW50IHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgBdASBJZiBhbiBlbGVtZW50IGlzIGBOb25lYCwgbm8gcHJpY2UgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBhbmQgY29udmVyc2lvbiBiZXR3ZWVuIG5hdGl2ZcQgYW5kIHRoZSB1bmRlcmx5aW5nIGFzc2V0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQuALggUmV0dXJuczogYChsaW1pdF9wZW9wbGUsIGxpbWl0X2xpdGVfcGVvcGxlKWAuAOggRWFjaCBlbGVtZW50IGlzIGBOb25lYCB3aGVuIGl0cyBsaW1pdCBjYW5ub3QgYmUgY29tcHV0ZWQuAHrCcSyKdqUqw7oQopAh7Jlz3RmCn2nEk576y2aKrIOrYGdldF9yZWN5Y2xlcl9yaW5nX3N0YXR1cwgUdmFsdWV1AxRpbmRleDglDAToIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcmVjeWNsZXIgYXQgYSBnaXZlbiByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZSNpY7ahV6pVQvr0qolt98mhnZXRfcmVjeWNsZXJfcmluZ19yZXZpc2lvbggUdmFsdWV1AxRpbmRleDgJAwTwIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jm178aAmmvzawOuV/TGbASJaGdldF9wYWlkX3Rva2VuX3Jpbmdfc3RhdHVzCBhwZXJpb2Q4FGluZGV4OCUMBB0BIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmaD2wxD2qCqffHbvIH/9njVwZ2V0X3BhaWRfdG9rZW5fcmluZ19yZXZpc2lvbggYcGVyaW9kOBRpbmRleDgJAwQlASBHZXQgdGhlIHJpbmcgcmV2aXNpb24gZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmW68Vemc1+I+cyXj7PzZm2aIZ2V0X3BhaWRfdW5sb2FkX3Rva2VuX2ZlZV9pbl9hc3NldADJCBARASBHZXQgdGhlIGN1cnJlbnQgZmVlIGluIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAF0BIElmIG5vbmUgaXMgcmV0dXJuZWQgaXQgbWVhbnMgdGhhdCBubyBwcmljZSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLCBhbmQgc29tZSBjb252ZXJzaW9uAQEgYmV0d2VlbiBuYXRpdmUgYW5kIHRoZSB1bmRlcmx5aW5nIGFzc2V0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQuAHrCcSyKdqUqw7oQopAh7JnOvUSgz1HVuplPbA/gLOnqjGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fbmF0aXZlAMQEDQEgR2V0IHRoZSBjdXJyZW50IGZlZSBpbiB0aGUgbmF0aXZlIGN1cnJlbmN5IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAHrCcSyKdqUqw7oQopAh7JmeXpBeWapAn7GAa3iZpheFRGdldF9jb2luX2J5X293bmVyBBRvd25lcgQpDASEIEdldCBjb2luIGRldGFpbHMgZm9yIGFuIGFjY291bnQuAHrCcSyKdqUqw7oQopAh7JnanBbpJIKl96OX8Z/8pH8aTGdldF9jb2luX2xvY2tfdW50aWwEFG93bmVyBBUDDFUBIEdldCB0aGUgVW5peCB0aW1lc3RhbXAgdW50aWwgd2hpY2ggYSBjb2luIGlzIGN1cnJlbnRseSBsb2NrZWQgYWZ0ZXIgZmFpbGVkIGRpc3BhdGNoLgBJASBSZXR1cm5zIGBOb25lYCB3aGVuIHRoZXJlIGlzIG5vIGxvY2sgb3Igd2hlbiB0aGUgc3RvcmVkIGxvY2sgaGFzIGFscmVhZHkgZXhwaXJlZC4AesJxLIp2pSrDuhCikCHsmWRjKKh5eAr8EuFCWWARYFBgZ2V0X3JlY3ljbGVyX21lbWJlcl9pbmZvBBhtZW1iZXIILQwE3CBHZXQgdGhlIGNvaW4gdmFsdWUgZm9yIGEgc3BlY2lmaWMgcmVjeWNsZXIgbWVtYmVyIGtleS4AesJxLIp2pSrDuhCikCHsmU8iBwpDfNFUQuU+iaAqaHRQaXNfcGFpZF90b2tlbl9tZW1iZXIEGG1lbWJlcgjIBNQgQ2hlY2sgd2hldGhlciBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSBpcyByZWdpc3RlcmVkLgB6wnEsinalKsO6EKKQIeyZLPZHZCEzYZ1/Hjy8Xbh7OFBnZXRfcmVjeWNsZXJfbWVtYmVycwgUdmFsdWV1AxRpbmRleDhVBAjgIEdldCB0aGUgbWVtYmVycyBvZiBhIHJlY3ljbGVyIHJpbmcgKHRoZSBhbm9ueW1pdHkgc2V0KS4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmfE4/CBo8j4A9lUO7c5iT2FsZ2V0X3BhaWRfdG9rZW5fcmluZ19tZW1iZXJzCBhwZXJpb2Q4FGluZGV4OFUECOggR2V0IHRoZSBtZW1iZXJzIG9mIGEgcGFpZCB0b2tlbiByaW5nICh0aGUgYW5vbnltaXR5IHNldCkuDQEgUmVxdWlyZWQgdG8gYnVpbGQgdGhlIHJpbmcgY29tbWl0bWVudCAoYWNjdW11bGF0b3IpIGZvciB0aGUgcHJvb2YuAHrCcSyKdqUqw7oQopAh7JkF2qg6IjGFaW4l7IHksnyGaGlzX3JlY3ljbGVyX2FsaWFzX3VubG9hZGVkDBR2YWx1ZXUDFGluZGV4OBRhbGlhcwjIDPQgQ2hlY2sgaWYgYSByZWN5Y2xlciBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVubG9hZGVkIChzcGVudCkuAPAgSWYgdGhlIHJlY3ljbGVyIGlzIG5vdCBsaXZlLCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmS6NiyqbxAjIWuSgBYhX0I9waXNfcGFpZF90b2tlbl9hbGlhc19jb25zdW1lZAwYcGVyaW9kOBRpbmRleDgUYWxpYXMIyAzAIENoZWNrIGlmIGEgcGFpZCB1bmxvYWQgdG9rZW4gaGFzIGJlZW4gY29uc3VtZWQuAPQgSWYgdGhlIHBlcmlvZCBpcyBub3QgY3VycmVudCwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7Jm/EtB6iDYdDvU17ItcGeXTcGlzX2ZyZWVfdG9rZW5fYWxpYXNfY29uc3VtZWQIGHBlcmlvZDgUYWxpYXMIyAzAIENoZWNrIGlmIGEgZnJlZSB1bmxvYWQgdG9rZW4gaGFzIGJlZW4gY29uc3VtZWQuAPQgSWYgdGhlIHBlcmlvZCBpcyBub3QgY3VycmVudCwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JmRsy8uvB8r+d6VykJZ3bjFuHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXQA1QEUMQEgR2V0IHRoZSB3b3JzdC1jYXNlIHdlaWdodCBmb3IgYSB0cmFuc2FjdGlvbiB1c2luZyBvdXRwdXQtYmFzZWQgZmVlIHBheW1lbnQuACkBIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbWF4aW11bSB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9ucyBkaXNwYXRjaGVkIHdpdGhVASBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLCB1c2VmdWwgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0byBmaW5kIGEgZ29vZCB2YWx1ZSBmb3KUIGBNaW5pbXVtRXhwb25lbnRGb3JPdXRwdXRVbmxvYWRGZWVgLgBEAAA8TWVtYmVyc05vdGlmaWVyATxNZW1iZXJzTm90aWZpZXIwLFN1YnNjcmliZXJzAAEEBpwxDAQABEEBIFN1YnNjcmliZXIgcmVnaXN0cnkgd2l0aCB0aGVpciBzdWJzY3JpYmVkIGNvbGxlY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiBzdGF0ZS4AVENvdW50ZXJGb3JTdWJzY3JpYmVycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAExTZWFsZWRCYXRjaFNlcXVlbmNlAQAoIAAAAAAAAAAADIggU2VxdWVuY2UgbnVtYmVyIGZvciBzZWFsZWQgYmF0Y2gu9CBJbmNyZW1lbnRlZCB3aGVuIGEgYmF0Y2ggaXMgc2VhbGVkIC0gcmVhZHkgZm9yIGRpc3RyaWJ1dGlvbi7wIFNlcnZlcyBhcyB0aGUgYmF0Y2ggaWRlbnRpZmllciBmb3IgcmVwbGF5IGFuZCBkaXN0cmlidXRpb24uACRQYWdlU3RhdGUBADUMIAAAAAAAAAAABPAgUGFnaW5nIHN0YXRlOiB3cml0ZSBwYWdlLCBzZW5kIHBhZ2UsIGFuZCBsYXN0IHVwZGF0ZSBibG9jay4AOFBlbmRpbmdVcGRhdGVzAAEMBgYGOQwQBAAMfCBDaGFuZ2VkIHJpbmcgcm9vdCBrZXlzLCBwYWdlZC4xASBLZXk6IChwYWdlX2luZGV4LCBpZGVudGlmaWVyLCByaW5nX2luZGV4KS4gUG9wdWxhdGVkIGJ5IGBPblJpbmdSb290Q2hhbmdlYCw5ASBjb25zdW1lZCBieSBgZW5xdWV1ZV91cGRhdGVzYCBvbmUgcGFnZSBhdCBhIHRpbWUgZnJvbSBgUGFnZVN0YXRlOjpzZW5kX3BhZ2VgLgBAUGFnZVVwZGF0ZXNDb3VudAEBBAYtAzgQAAAAAAS0IFBlci1wYWdlIGNvdW50IG9mIGVudHJpZXMgaW4gUGVuZGluZ1VwZGF0ZXMuACxQZW5kaW5nSW5pdAABBAacPQwEAAS8IFN0YXRlIGZvciBwYWdpbmF0ZWQgc3Vic2NyaWJlciBpbml0aWFsaXphdGlvbi4AVENvdW50ZXJGb3JQZW5kaW5nSW5pdAEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEhTZWFsZWRCYXRjaEluZGljZXMAAQQGCG0FBAAE3CBJbmRpY2VzIHBlciBjb2xsZWN0aW9uIGZvciB0aGUgc2VhbGVkIChjdXJyZW50KSBiYXRjaC4AMEN1cnJlbnRCYXRjaAAAQQwEAASIIEN1cnJlbnQgYmF0Y2ggZGlzdHJpYnV0aW9uIHN0YXRlLgBsU3Vic2NyaWJlcnNXaXRoQ3VycmVudEJhdGNoAAEEBpwQBAAE6CBUcmFja3Mgd2hpY2ggc3Vic2NyaWJlcnMgaGF2ZSByZWNlaXZlZCB0aGUgY3VycmVudCBiYXRjaC4AOExhc3RSZXBsYXlUaW1lAAEIBgZFDCgEAAjQIExhc3QgcmVwbGF5IHRpbWUgcGVyIChzdWJzY3JpYmVyLCBjb2xsZWN0aW9uKSBwYWlyLtAgVXNlZCB0byBlbmZvcmNlIGEgY29vbGRvd24gYmV0d2VlbiByZXBsYXkgcmVxdWVzdHMuAAFZBQABUQcAKDhNYXhTdWJzY3JpYmVyczgQCgAAAAScIE1heGltdW0gbnVtYmVyIG9mIHN1YnNjcmliZXJzIGFsbG93ZWQuAEhNYXhVcGRhdGVzUGVyQmF0Y2g4EAoAAAAEbCBNYXhpbXVtIHVwZGF0ZXMgcGVyIGJhdGNoLgBsTWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyOBADAAAABMwgTWF4aW11bSBjb2xsZWN0aW9ucyBhIHN1YnNjcmliZXIgY2FuIHN1YnNjcmliZSB0by4AOE1heENvbGxlY3Rpb25zOBBkAAAABJAgTWF4aW11bSBudW1iZXIgb2YgcmluZyBjb2xsZWN0aW9ucy4ATFVwZGF0ZVRyaWdnZXJCbG9ja3M4EAEAAAAExCBNaW5pbXVtIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiB1cGRhdGUgYmF0Y2hlcy4AWFVwZGF0ZVRyaWdnZXJUaHJlc2hvbGQ4EAEAAAAE7CBNaW5pbXVtIG51bWJlciBvZiB1cGRhdGVzIHRvIHRyaWdnZXIgaW1tZWRpYXRlIGJhdGNoIHNlbmQuAGRSZXF1ZXN0UmVwbGF5UmVtb3RlV2VpZ2h01QEMQZwABCUBIFBlci1pbmRleCB3ZWlnaHQgc3VyY2hhcmdlIGZvciByZW1vdGUgZXhlY3V0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIGNoYWluLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATcIE1pbmltdW0gbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBydW5zLgBEU3R1Y2tCYXRjaFRpbWVvdXQ4EGQAAAAE5CBOdW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIGEgc3R1Y2sgYmF0Y2ggaXMgYWJhbmRvbmVkLgBUUmVwbGF5Q29vbGRvd25TZWNvbmRzKCA8AAAAAAAAAARZASBDb29sZG93biwgaW4gc2Vjb25kcywgYmV0d2VlbiByZXBsYXkgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIHN1YnNjcmliZXIgYW5kIGNvbGxlY3Rpb24uAAFJDAAAAEUAAFRTdG9yYWdlSW5pdGlhbGl6YXRpb24BVFN0b3JhZ2VJbml0aWFsaXphdGlvbhAwT25Qb2xsU3RhdHVzAQBNDAQABPQgQ3VycmVudCBzdGF0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBvbl9wb2xsIGhvb2suAFhYY21UcmFuc2ZlckluaXRpYXRlZEF0AAA4BAAIuCBCbG9jayBudW1iZXIgd2hlbiBYQ00gdHJhbnNmZXIgd2FzIGluaXRpYXRlZC6AIFVzZWQgdG8gdHJhY2sgdHJhbnNmZXIgdGltZW91dC4AVExhc3RBaXJkcm9wUG9vbFBlcmlvZAEAOBAAAAAAGD0BIFBlcmlvZCBpbmRleCBvZiB0aGUgbW9zdCByZWNlbnRseSBvcGVuZWQgcmVjdXJyaW5nIGFpcmRyb3AgcHJpemUgcG9vbCwgd2hlcmUgYUEBICJwZXJpb2QiIGlzIGEgd2luZG93IG9mIGBBaXJkcm9wUG9vbFBlcmlvZGAgc2Vjb25kcyBhbmNob3JlZCBhdCAxMjowMCBVVEMgZGFpbHlBASAoc2VlIFtgUE9PTF9QRVJJT0RfT0ZGU0VUYF0pLiBPbiBlYWNoIGBvbl9wb2xsYCB0aWNrIHRoZSBzY2hlZHVsZXIgY29tcHV0ZXMgdGhlQQEgY3VycmVudCBwZXJpb2Q7IGlmIGl0IGV4Y2VlZHMgdGhpcyB2YWx1ZSwgb25lIHBvb2wgaXMgb3BlbmVkIGFuZCB0aGlzIGlzIGJ1bXBlZEUBIHRvIHRoZSBjdXJyZW50IHBlcmlvZC4gQSBjaGFpbiBwYXVzZSBzcGFubmluZyBtdWx0aXBsZSBwZXJpb2RzIG9wZW5zIGF0IG1vc3Qgb25l3CBwb29sIG9uIHJlc3VtZSDigJQgbWlzc2VkIHBlcmlvZHMgYXJlIG5vdCBiYWNrLWZpbGxlZC4AYEFpcmRyb3BTY2hlZHVsaW5nRW5hYmxlZAEAyAQADEEBIFdoZXRoZXIgb25fcG9sbCBhaXJkcm9wIHNjaGVkdWxpbmcgaXMgY3VycmVudGx5IGVuYWJsZWQuIFNldCB0byBgdHJ1ZWAgd2hlbiB0aGU9ASBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0cmFuc2l0aW9ucyBpbnRvIFtgT25Qb2xsU3RhdGU6Ok9wZW5pbmdBaXJkcm9wUG9vbHNgXTsVASB0b2dnbGFibGUgdGhlcmVhZnRlciB2aWEgW2BQYWxsZXQ6OnNldF9haXJkcm9wX3NjaGVkdWxpbmdfZW5hYmxlZGBdLgABcQUAAVUHAAAAAAA8AABkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQFkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQQwT25Qb2xsU3RhdHVzAQBRDAQABPQgQ3VycmVudCBzdGF0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBvbl9wb2xsIGhvb2suAAABWQcAAAAAAEEAABxBaXJkcm9wARxBaXJkcm9wEDxOZXh0UHJpemVQb29sSWQBADgQAAAAAAQJASBDb3VudGVyIHRoYXQgc3VwcGxpZXMgW2BQcml6ZVBvb2w6OmlkYF0gZm9yIHRoZSBuZXh0IHBvb2wgb3BlbmVkLgAoUHJpemVQb29scwABBAU4VQwEAAwZASBDdXJyZW50bHktb3BlbiBwcml6ZSBwb29scywga2V5ZWQgYnkgaWQuIFRoZSBhc3NvY2lhdGVkIGNvdW50ZXIgKGZyb21JASBbYENvdW50ZWRTdG9yYWdlTWFwYF0pIGRyaXZlcyB0aGUgYE1BWF9DT05DVVJSRU5UX1BSSVpFX1BPT0xTYCBjYXAgYW5kIHJlcGxhY2VzIGF4IHNlcGFyYXRlICJhY3RpdmUgaWRzIiBtaXJyb3IuAFBDb3VudGVyRm9yUHJpemVQb29scwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwADxQcml6ZVBvb2xDbGFpbXMAAQgFBUULEAQAEAkBIFBlci1wb29sIHJlY29yZCBvZiB3aGljaCBjbGFpbWFudHMgaGF2ZSBhbHJlYWR5IGNsYWltZWQuIEtleWVkIG9uJQEgW2BBY2NvdW50T3JQZXJzb25gXSBzbyB0aGUgUGVyc29uIGFuZCBBY2NvdW50IGNsYWltIHBhdGhzIHNoYXJlIGEgc2luZ2xlJQEgcmVwbGF5LWd1YXJkOiBlYWNoIGlkZW50aXR5ICh3aGljaGV2ZXIgaXQgaXMpIGNhbiBjbGFpbSBhdCBtb3N0IG9uY2UgcGVyGCBwb29sLgABdQUAAV0HABBITWluVmFsaWRpdHlTZWNvbmRzOBA8AAAAEEEBIExvd2VyIGJvdW5kIG9uIGEgcHJpemUgcG9vbCdzIGB2YWxpZGl0eWAgKGluIHNlY29uZHMpLiBBIHBvb2wgd2hvc2UgdmFsaWRpdHkgaXNBASBiZWxvdyB0aGlzIGlzIHJlamVjdGVkIHdpdGggW2BFcnJvcjo6VmFsaWRpdHlUb29TaG9ydGBdIOKAlCB0aGUgZmxvb3IgZXhpc3RzIHNvMQEgY2xhaW1hbnRzIGhhdmUgYXQgbGVhc3QgYSBtaW5pbXVtIHdpbmRvdyBpbiB3aGljaCB0byBzdWJtaXQgYmVmb3JlIHRoZSBwb29sQCBhdXRvLWNsZWFucy11cC4ASE1heFZhbGlkaXR5U2Vjb25kczgQgDoJAAw5ASBVcHBlciBib3VuZCBvbiBhIHByaXplIHBvb2wncyBgdmFsaWRpdHlgIChpbiBzZWNvbmRzKS4gQm91bmRzIHRoZSBsaWZldGltZSBvZjEBIGBQcml6ZVBvb2xDbGFpbXNgIGVudHJpZXMgZm9yIGEgc2luZ2xlIHBvb2wuIERlZmF1bHQgY2hvc2VuIGJ5IHRoZSBydW50aW1lO6ggdGhlIHNwZWMgcmVjb21tZW5kcyBvbmUgd2VlayAoYDYwNF84MDBgKS4ATFByaXplUG9vbENsZWFyTGltaXQ4EPQBAAAIMQEgTWF4aW11bSBudW1iZXIgb2YgYFByaXplUG9vbENsYWltc2AgZW50cmllcyB0byBkcm9wIHBlciBgb25fcG9sbGAgdGljayB3aGVujCBjbGVhbmluZyB1cCBhbiBleHBpcmVkIHByaXplIHBvb2wuADhhaXJkcm9wX3BvdF9pZASAbW9kbHBvcDphZHJwAAAAAAAAAAAAAAAAAAAAAAAAAAAEkCBUaGUgYWNjb3VudCBpZCBmb3IgdGhlIGFpcmRyb3AgcG90LgABYQwAAAA9AABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAIkFBAAM2CBUaGUgY3VycmVudGx5IGFjdGl2ZSBtaWdyYXRpb24gdG8gcnVuIGFuZCBpdHMgY3Vyc29yLgC8IGBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBtaWdyYXRpb24gaXMgcnVubmluZy4AIEhpc3RvcmljAAEEBZ0FEAQAELQgU2V0IG9mIGFsbCBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgbWlncmF0aW9ucy4AcQEgVGhpcyBpcyB1c2VkIGFzIGJsYWNrbGlzdCwgdG8gbm90IHJlLWV4ZWN1dGUgbWlncmF0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZTEBIGNvZGViYXNlIHlldC4gR292ZXJuYW5jZSBjYW4gcmVndWxhcmx5IGNsZWFyIHRoaXMgb3V0IHZpYSBgY2xlYXJfaGlzdG9yaWNgLgABgQUAAWEHAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABZQwAABALIBmazjVk0JZOLE1Km6RplE28/2ps4aTQsnxvzALSTDhvbmdvaW5nX3N0YXR1cwBpDASoIFJldHVybnMgdGhlIG9uZ29pbmcgc3RhdHVzIG9mIG1pZ3JhdGlvbnMuAAsgGZrONWTQlk4sTUqbpGlevXdssV2bkS4njU0tYsWhIHByb2dyZXNzAG0MEAkBIFJldHVybnMgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uLCBpZiBhbnkuAFEBIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uJ3MgcHJvZ3Jlc3MsHQEgaW5jbHVkaW5nIHRoZSBudW1iZXIgb2Ygc3RlcHMgY29tcGxldGVkIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHN0ZXBzLgALIBmazjVk0JZOLE1Km6RpRq9LzsbzWnu77p2fwQlb4URhZmZlY3RlZF9wcmVmaXhlcwA0DAEBIFJldHVybnMgdGhlIHN0b3JhZ2UgcHJlZml4ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgbWlncmF0aW9uLgAZASBDYW4gYmUgZW1wdHkgaWYgdGhlIG1pZ3JhdGlvbiBkb2VzIG5vdCBrbm93IG9yIHRoZXJlIGFyZSBubyBwcmVmaXhlcy4ACyAZms41ZNCWTixNSpukaapMKKBvGYhFvRuynsYgXd0Yc3RhdHVzAHUMBPAgUmV0dXJucyB0aGUgY29tcHJlaGVuc2l2ZSBzdGF0dXMgb2YgbXVsdGktYmxvY2sgbWlncmF0aW9ucy4AYgAACAQFACA1BAQAUAAECAwQFBgcICQoLDA0ODxAREhMUFBWZXJpZnlNdWx0aVNpZ25hdHVyZakFECBBc1BlcnNvbq0FEFxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudLkFEEhTY29yZUFzUGFydGljaXBhbnTFBRA0R2FtZUFzSW52aXRlZNEFEDhQZW9wbGVMaXRlQXV0aN0FECBBc01lbWJlcukFECRBc0NvaW5hZ2X1BRAsQXNSZXNvdXJjZXMJBhA0QXV0aG9yaXplQ2FsbBUGEDxSZXN0cmljdE9yaWdpbnMZBhBIQ2hlY2tOb25aZXJvU2VuZGVyHQYQQENoZWNrU3BlY1ZlcnNpb24hBjg4Q2hlY2tUeFZlcnNpb24lBjgwQ2hlY2tHZW5lc2lzKQY8OENoZWNrTW9ydGFsaXR5LQY8KENoZWNrTm9uY2U1BhAsQ2hlY2tXZWlnaHQ5BhBQQ2hhcmdlQXNzZXRUeFBheW1lbnQ9BhBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEFQcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgB5DAyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAGQkEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQRMcmVsYXlfcGFyZW50X29mZnNldAA4BPQgRmV0Y2ggdGhlIHNsb3Qgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uABAFASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4uAGkBIEEgbGFyZ2VyIG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZiB0aGUgcmVsYXkgY2hhaW4sMQEgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlIHJ1bnRpbWUuBABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaDwQc2xvdB0JyCg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AnQcEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2t9DBAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclyJDARBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQCNDASMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244kQwQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAZQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWSVDBRpbnB1dBiZDAR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY7kHoQwQbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnSxDMkHBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja30MEGRhdGGxDMEMBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2XFDAh0eLkHKGJsb2NrX2hhc2g8yQwkaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzCBRvd25lchgQc2VlZKUF0QwcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGNUMDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHS5BwxsZW444QwAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0uQcMbGVuOOUMAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h01QHEAABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOMQAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjjhDARJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjjlDAS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHTVAcQEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4xAQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uOPEMFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2WVAf0MFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodNUBFGFzc2V0EQMBDRjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9uSQEcbWVzc2FnZZUBIGFzc2V0X2lkEQMFDShgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW4xAxBjYWxsIExyZXN1bHRfeGNtc192ZXJzaW9uOAkNBEQgRHJ5IHJ1biBjYWxsIFYyLgAsZHJ5X3J1bl94Y20IPG9yaWdpbl9sb2NhdGlvbkkBDHhjbd0CNQ0EUCBEcnkgcnVuIFhDTSBwcm9ncmFtACSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS4IAFBMb2NhdGlvblRvQWNjb3VudEFwaQRAY29udmVydF9sb2NhdGlvbgQgbG9jYXRpb25JAT0NBJAgQ29udmVydHMgYExvY2F0aW9uYCB0byBgQWNjb3VudElkYC4ABA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLgQAKE1vYlJ1bGVBcGkEIHZvdGVkX29uCBR2b3RlcggkZG9uZV9vbmx5yGUEDFkBIFJldHVybnMgYSBsaXN0IG9mIGNhc2VzIHdoZXJlIHRoZSB1c2VyIGhhcyBhIHZvdGUgc3RvcmVkIG9uIGNoYWluLiBJZiB0aGUgYGRvbmVfb25seWBVASBmbGFnIGlzIHNldCwgb25seSBjYXNlcyB0aGF0IGFyZSBkb25lIGFuZCByZWFkeSB0byBiZSBjbGFpbWVkIHdpbGwgYmUgcmV0dXJuZWQuIFRoaXMFASBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdm90ZSBpbnRvIGFjY291bnQuAAS0IFRoZSBBUEkgdG8gcXVlcnkgdGhlIHJld2FyZHMgZm9yIG1vYiBjcmVkaXQuBAA0UHJvb2ZPZklua0FwaQREY2FuZGlkYWN5X2RlcG9zaXQAxATUIFJldHVybnMgdGhlIGRlcG9zaXQgbmVjZXNzYXJ5IHRvIGJlY29tZSBhIGNhbmRpZGF0ZS4ABOwgVGhlIEFQSSB0byBxdWVyeSB0aGUgZGVwb3NpdCBmb3IgYSBwcm9vZiBvZiBpbmsgY2FuZGlkYWN5LgQANFBhbGxldEdhbWVBcGkEMHBsYXlfZGVwb3NpdADEBLggUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gcGxheSBhIGdhbWUuAASsIFRoZSBBUEkgdG8gcXVlcnkgdGhlIGRlcG9zaXQgZm9yIGdhbWVwbGF5LgQAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJcRQ0QnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhhRDShlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkVQ2lBThhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAFkNEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQAIFkGXQ0A";
2
+
3
+ export { binMeta as default };