@decentro-dev/polkadot-sufficient-assets 0.0.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 (123) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +60 -0
  3. package/package.json +99 -0
  4. package/packages/client/README.md +333 -0
  5. package/packages/client/dist/chain-specs/ksmcc3/index.d.mts +1 -0
  6. package/packages/client/dist/chain-specs/ksmcc3/index.d.ts +1 -0
  7. package/packages/client/dist/chain-specs/ksmcc3/index.js +2 -0
  8. package/packages/client/dist/chain-specs/ksmcc3/index.mjs +2 -0
  9. package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.d.mts +1 -0
  10. package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.d.ts +1 -0
  11. package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.js +2 -0
  12. package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.mjs +2 -0
  13. package/packages/client/dist/chain-specs/paseo/index.d.mts +1 -0
  14. package/packages/client/dist/chain-specs/paseo/index.d.ts +1 -0
  15. package/packages/client/dist/chain-specs/paseo/index.js +2 -0
  16. package/packages/client/dist/chain-specs/paseo/index.mjs +2 -0
  17. package/packages/client/dist/chain-specs/paseo_asset_hub/index.d.mts +1 -0
  18. package/packages/client/dist/chain-specs/paseo_asset_hub/index.d.ts +1 -0
  19. package/packages/client/dist/chain-specs/paseo_asset_hub/index.js +2 -0
  20. package/packages/client/dist/chain-specs/paseo_asset_hub/index.mjs +2 -0
  21. package/packages/client/dist/chain-specs/polkadot/index.d.mts +1 -0
  22. package/packages/client/dist/chain-specs/polkadot/index.d.ts +1 -0
  23. package/packages/client/dist/chain-specs/polkadot/index.js +2 -0
  24. package/packages/client/dist/chain-specs/polkadot/index.mjs +2 -0
  25. package/packages/client/dist/chain-specs/polkadot_asset_hub/index.d.mts +1 -0
  26. package/packages/client/dist/chain-specs/polkadot_asset_hub/index.d.ts +1 -0
  27. package/packages/client/dist/chain-specs/polkadot_asset_hub/index.js +2 -0
  28. package/packages/client/dist/chain-specs/polkadot_asset_hub/index.mjs +2 -0
  29. package/packages/client/dist/chain-specs/rococo_v2_2/index.d.mts +1 -0
  30. package/packages/client/dist/chain-specs/rococo_v2_2/index.d.ts +1 -0
  31. package/packages/client/dist/chain-specs/rococo_v2_2/index.js +2 -0
  32. package/packages/client/dist/chain-specs/rococo_v2_2/index.mjs +2 -0
  33. package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.d.mts +1 -0
  34. package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.d.ts +1 -0
  35. package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.js +2 -0
  36. package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.mjs +2 -0
  37. package/packages/client/dist/chain-specs/westend2/index.d.mts +1 -0
  38. package/packages/client/dist/chain-specs/westend2/index.d.ts +1 -0
  39. package/packages/client/dist/chain-specs/westend2/index.js +2 -0
  40. package/packages/client/dist/chain-specs/westend2/index.mjs +2 -0
  41. package/packages/client/dist/chain-specs/westend2_asset_hub/index.d.mts +1 -0
  42. package/packages/client/dist/chain-specs/westend2_asset_hub/index.d.ts +1 -0
  43. package/packages/client/dist/chain-specs/westend2_asset_hub/index.js +2 -0
  44. package/packages/client/dist/chain-specs/westend2_asset_hub/index.mjs +2 -0
  45. package/packages/client/dist/index.d.mts +106 -0
  46. package/packages/client/dist/index.d.ts +106 -0
  47. package/packages/client/dist/index.js +2 -0
  48. package/packages/client/dist/index.mjs +2 -0
  49. package/packages/client/dist/smoldot/from-node-worker/index.d.mts +1 -0
  50. package/packages/client/dist/smoldot/from-node-worker/index.d.ts +1 -0
  51. package/packages/client/dist/smoldot/from-node-worker/index.js +2 -0
  52. package/packages/client/dist/smoldot/from-node-worker/index.mjs +2 -0
  53. package/packages/client/dist/smoldot/from-worker/index.d.mts +1 -0
  54. package/packages/client/dist/smoldot/from-worker/index.d.ts +1 -0
  55. package/packages/client/dist/smoldot/from-worker/index.js +2 -0
  56. package/packages/client/dist/smoldot/from-worker/index.mjs +2 -0
  57. package/packages/client/dist/smoldot/index.d.mts +14 -0
  58. package/packages/client/dist/smoldot/index.d.ts +14 -0
  59. package/packages/client/dist/smoldot/index.js +2 -0
  60. package/packages/client/dist/smoldot/index.mjs +2 -0
  61. package/packages/client/dist/smoldot/worker/index.d.mts +1 -0
  62. package/packages/client/dist/smoldot/worker/index.d.ts +1 -0
  63. package/packages/client/dist/smoldot/worker/index.js +2 -0
  64. package/packages/client/dist/smoldot/worker/index.mjs +2 -0
  65. package/packages/core/.papi/descriptors/dist/common-types.d.ts +21274 -0
  66. package/packages/core/.papi/descriptors/dist/descriptors-EQXQJ7SL.mjs +1 -0
  67. package/packages/core/.papi/descriptors/dist/descriptors.d.ts +11 -0
  68. package/packages/core/.papi/descriptors/dist/hdx.d.ts +366 -0
  69. package/packages/core/.papi/descriptors/dist/hdx_metadata-XH2Y6EGQ.mjs +1 -0
  70. package/packages/core/.papi/descriptors/dist/hdx_metadata.d.ts +2 -0
  71. package/packages/core/.papi/descriptors/dist/index.d.mts +24579 -0
  72. package/packages/core/.papi/descriptors/dist/index.d.ts +23 -0
  73. package/packages/core/.papi/descriptors/dist/index.js +1 -0
  74. package/packages/core/.papi/descriptors/dist/index.mjs +1 -0
  75. package/packages/core/.papi/descriptors/dist/kah.d.ts +434 -0
  76. package/packages/core/.papi/descriptors/dist/kah_metadata-OCBL5LAN.mjs +1 -0
  77. package/packages/core/.papi/descriptors/dist/kah_metadata.d.ts +2 -0
  78. package/packages/core/.papi/descriptors/dist/kusama.d.ts +291 -0
  79. package/packages/core/.papi/descriptors/dist/kusama_metadata-TGJ43LLG.mjs +1 -0
  80. package/packages/core/.papi/descriptors/dist/kusama_metadata.d.ts +2 -0
  81. package/packages/core/.papi/descriptors/dist/metadataTypes-MIM6CGSL.mjs +1 -0
  82. package/packages/core/.papi/descriptors/dist/metadataTypes.d.ts +2 -0
  83. package/packages/core/.papi/descriptors/dist/pah.d.ts +434 -0
  84. package/packages/core/.papi/descriptors/dist/pah_metadata-JG7F7QDO.mjs +1 -0
  85. package/packages/core/.papi/descriptors/dist/pah_metadata.d.ts +2 -0
  86. package/packages/core/.papi/descriptors/dist/paseo.d.ts +291 -0
  87. package/packages/core/.papi/descriptors/dist/paseo_metadata-5VVMOYKO.mjs +1 -0
  88. package/packages/core/.papi/descriptors/dist/paseo_metadata.d.ts +2 -0
  89. package/packages/core/.papi/descriptors/dist/paseoah.d.ts +242 -0
  90. package/packages/core/.papi/descriptors/dist/paseoah_metadata-KVQKFE5R.mjs +1 -0
  91. package/packages/core/.papi/descriptors/dist/paseoah_metadata.d.ts +2 -0
  92. package/packages/core/.papi/descriptors/dist/polkadot.d.ts +291 -0
  93. package/packages/core/.papi/descriptors/dist/polkadot_metadata-ASE5745E.mjs +1 -0
  94. package/packages/core/.papi/descriptors/dist/polkadot_metadata.d.ts +2 -0
  95. package/packages/core/.papi/descriptors/dist/rah.d.ts +434 -0
  96. package/packages/core/.papi/descriptors/dist/rah_metadata-FL7L2MWD.mjs +1 -0
  97. package/packages/core/.papi/descriptors/dist/rah_metadata.d.ts +2 -0
  98. package/packages/core/.papi/descriptors/dist/rococo.d.ts +291 -0
  99. package/packages/core/.papi/descriptors/dist/rococo_metadata-CHYQZIV5.mjs +1 -0
  100. package/packages/core/.papi/descriptors/dist/rococo_metadata.d.ts +2 -0
  101. package/packages/core/.papi/descriptors/dist/wah.d.ts +434 -0
  102. package/packages/core/.papi/descriptors/dist/wah_metadata-M2H6IX7C.mjs +1 -0
  103. package/packages/core/.papi/descriptors/dist/wah_metadata.d.ts +2 -0
  104. package/packages/core/.papi/descriptors/dist/westend.d.ts +291 -0
  105. package/packages/core/.papi/descriptors/dist/westend_metadata-IAM3KHRQ.mjs +1 -0
  106. package/packages/core/.papi/descriptors/dist/westend_metadata.d.ts +2 -0
  107. package/packages/core/.papi/descriptors/package.json +24 -0
  108. package/packages/core/.papi/metadata/hdx.scale +0 -0
  109. package/packages/core/.papi/metadata/kah.scale +0 -0
  110. package/packages/core/.papi/metadata/kusama.scale +0 -0
  111. package/packages/core/.papi/metadata/pah.scale +0 -0
  112. package/packages/core/.papi/metadata/paseo.scale +0 -0
  113. package/packages/core/.papi/metadata/paseoah.scale +0 -0
  114. package/packages/core/.papi/metadata/polkadot.scale +0 -0
  115. package/packages/core/.papi/metadata/rah.scale +0 -0
  116. package/packages/core/.papi/metadata/rococo.scale +0 -0
  117. package/packages/core/.papi/metadata/wah.scale +0 -0
  118. package/packages/core/.papi/metadata/westend.scale +0 -0
  119. package/packages/core/.papi/polkadot-api.json +50 -0
  120. package/packages/core/dist/index.d.mts +676 -0
  121. package/packages/core/dist/index.d.ts +676 -0
  122. package/packages/core/dist/index.js +1 -0
  123. package/packages/core/dist/index.mjs +1 -0
@@ -0,0 +1 @@
1
+ var G="bWV0YQ9VCAAMHHNwX2NvcmUYY3J5cHRvLEFjY291bnRJZDMyAAAEAAQBIFt1ODsgMzJdAAAEAAADIAAAAAgACAAABQMADAgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQEQLEFjY291bnREYXRhARQAFAEUbm9uY2UQARROb25jZQABJGNvbnN1bWVycxABIFJlZkNvdW50AAEkcHJvdmlkZXJzEAEgUmVmQ291bnQAASxzdWZmaWNpZW50cxABIFJlZkNvdW50AAEQZGF0YRQBLEFjY291bnREYXRhAAAQAAAFBQAUDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBGAAQARBmcmVlGAEcQmFsYW5jZQABIHJlc2VydmVkGAEcQmFsYW5jZQABGGZyb3plbhgBHEJhbGFuY2UAARRmbGFncxwBKEV4dHJhRmxhZ3MAABgAAAUHABwMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEABgBEHUxMjgAACAAAAUAACQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEoAAwBGG5vcm1hbCgBBFQAASxvcGVyYXRpb25hbCgBBFQAASRtYW5kYXRvcnkoAQRUAAAoDChzcF93ZWlnaHRzJHdlaWdodF92MhhXZWlnaHQAAAgBIHJlZl90aW1lLAEMdTY0AAEocHJvb2Zfc2l6ZSwBDHU2NAAALAAABjAAMAAABQYANAg8cHJpbWl0aXZlX3R5cGVzEEgyNTYAAAQABAEgW3U4OyAzMl0AADgAAAIIADwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzQAE8VmVjPERpZ2VzdEl0ZW0+AABAAAACRABEEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgASAFEQ29uc2Vuc3VzRW5naW5lSWQAADgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABIAURDb25zZW5zdXNFbmdpbmVJZAAAOAEcVmVjPHU4PgAEABBTZWFsCABIAURDb25zZW5zdXNFbmdpbmVJZAAAOAEcVmVjPHU4PgAFABRPdGhlcgQAOAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAEgAAAMEAAAACABMAAACUABQCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBVARUATQADAEUcGhhc2VlAgEUUGhhc2UAARRldmVudFQBBEUAARh0b3BpY3NpAgEYVmVjPFQ+AABUCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUwUnVudGltZUV2ZW50AAFYGFN5c3RlbQQAWAFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAHwBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAIEJhbGFuY2VzBACEAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQAjAGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAOEFzc2V0VHhQYXltZW50BACQAchwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50OjpFdmVudDxSdW50aW1lPgANABxWZXN0aW5nBAC8AXhwYWxsZXRfdmVzdGluZzo6RXZlbnQ8UnVudGltZT4ADgBEQ29sbGF0b3JTZWxlY3Rpb24EAMABpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EAMgBVHBhbGxldF9zZXNzaW9uOjpFdmVudAAWACRYY21wUXVldWUEAMwBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADQAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBADVAQGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEANkBAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwAcVXRpbGl0eQQA6QEBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQA9QEBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAUUHJveHkEAP0BAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACoAGEFzc2V0cwQACQIB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AMgAcVW5pcXVlcwQADQIBeHBhbGxldF91bmlxdWVzOjpFdmVudDxSdW50aW1lPgAzABBOZnRzBAApAgFscGFsbGV0X25mdHM6OkV2ZW50PFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAEUCAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTI+ADUAUE5mdEZyYWN0aW9uYWxpemF0aW9uBABJAgGwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbjo6RXZlbnQ8UnVudGltZT4ANgAoUG9vbEFzc2V0cwQATQIB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANwA8QXNzZXRDb252ZXJzaW9uBABRAgGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkV2ZW50PFJ1bnRpbWU+ADgAAFgMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARxARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm9cATBEaXNwYXRjaEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9yaAE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm9cATBEaXNwYXRjaEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQAAgRQYDpjb2RlYCB3YXMgdXBkYXRlZC4oTmV3QWNjb3VudAQBHGFjY291bnQAATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQAATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgABMFQ6OkFjY291bnRJZAABEGhhc2g0ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g0ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbiABEGJvb2wABgRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC5cDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoMERpc3BhdGNoSW5mbwAADAEYd2VpZ2h0KAEYV2VpZ2h0AAEUY2xhc3NgATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWVkARBQYXlzAABgDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAABkDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAAGgIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABOBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAbAEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAcAEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBAB0ATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAeAFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AAGwIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4CAEIdTgAARRlcnJvckgBjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAABwCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAHQINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAB4CChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtEAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50EAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZCgBGFdlaWdodAABIGRtcV9oZWFkNAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2iAATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIAEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACEDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAFYHEVuZG93ZWQIARxhY2NvdW50AAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlGAEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8AATBUOjpBY2NvdW50SWQAARBmcmVlGAEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tAAEwVDo6QWNjb3VudElkAAEIdG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVziAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4YQnVybmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQALBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4kU3VzcGVuZGVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAMBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQANBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwABMFQ6OkFjY291bnRJZAAOBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50GAEoVDo6QmFsYW5jZQAPBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudBgBKFQ6OkJhbGFuY2UAEAQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQARBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABIEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAFARgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGQYAShUOjpCYWxhbmNlAAEMbmV3GAEoVDo6QmFsYW5jZQAVBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0iBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAAIwMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8AATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlGAEwQmFsYW5jZU9mPFQ+AAEMdGlwGAEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJAMiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEIOEFzc2V0VHhGZWVQYWlkEAEMd2hvAAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZRgBREFzc2V0QmFsYW5jZU9mPFQ+AAEMdGlwGAEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWSUAUhDaGFyZ2VBc3NldElkT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC5EQXNzZXRSZWZ1bmRGYWlsZWQEAUhuYXRpdmVfYW1vdW50X2tlcHQYATBCYWxhbmNlT2Y8VD4AAQT0QSBzd2FwIG9mIHRoZSByZWZ1bmQgaW4gbmF0aXZlIGN1cnJlbmN5IGJhY2sgdG8gYXNzZXQgZmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJQQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwgBCHU4AAEgaW50ZXJpb3KYASRKdW5jdGlvbnMAAJgQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAJwBIEp1bmN0aW9uAAEACFgyCACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAgAIWDMMAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAwAIWDQQAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAAQACFg1FACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24ABQAIWDYYAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24ABgAIWDccAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAAcACFg4IACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24AAJwBIEp1bmN0aW9uAACcASBKdW5jdGlvbgAAnAEgSnVuY3Rpb24ACAAAnBAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAoAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya6QBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQEASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmukAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4LAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmukAURPcHRpb248TmV0d29ya0lkPgABDGtleawBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAIAQh1OAAEADBHZW5lcmFsSW5kZXgEALABEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAgBCHU4AAEQZGF0YQQBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZLQBGEJvZHlJZAABEHBhcnS4ASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAKgBJE5ldHdvcmtJZAAJAACgAAAGEACkBBhPcHRpb24EBFQBqAEIEE5vbmUAAAAQU29tZQQAqAAAAQAAqBAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAQBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcjABDHU2NAABKGJsb2NrX2hhc2gEASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWQsAQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAACsAAADFAAAAAgAsAAABhgAtBAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAEgBHFt1ODsgNF0AAQAUSW5kZXgEAKABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAAuBAMeGNtCHYzIGp1bmN0aW9uIEJvZHlQYXJ0AAEUFFZvaWNlAAAAHE1lbWJlcnMEARRjb3VudKABDHUzMgABACBGcmFjdGlvbggBDG5vbaABDHUzMgABFGRlbm9toAEMdTMyAAIAREF0TGVhc3RQcm9wb3J0aW9uCAEMbm9toAEMdTMyAAEUZGVub22gAQx1MzIAAwBITW9yZVRoYW5Qcm9wb3J0aW9uCAEMbm9toAEMdTMyAAEUZGVub22gAQx1MzIABAAAvAw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEIOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAABIHVudmVzdGVkGAEwQmFsYW5jZU9mPFQ+AAAIUQFUaGUgYW1vdW50IHZlc3RlZCBoYXMgYmVlbiB1cGRhdGVkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGZ1bmRzIGF2YWlsYWJsZS4lAVRoZSBiYWxhbmNlIGdpdmVuIGlzIHRoZSBhbW91bnQgd2hpY2ggaXMgbGVmdCB1bnZlc3RlZCAoYW5kIHRodXMgbG9ja2VkKS5AVmVzdGluZ0NvbXBsZXRlZAQBHGFjY291bnQAATBUOjpBY2NvdW50SWQAAQScQW4gXFthY2NvdW50XF0gaGFzIGJlY29tZSBmdWxseSB2ZXN0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0wAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXPEAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkAAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkAAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXMQAQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50GAEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQAATBUOjpBY2NvdW50SWQAARxkZXBvc2l0GAEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAABMFQ6OkFjY291bnRJZAABHGRlcG9zaXQYATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAABMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQAATBUOjpBY2NvdW50SWQAAQxuZXcAATBUOjpBY2NvdW50SWQAARxkZXBvc2l0GAEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkAAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0xAAAAgAAyAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50AAEEKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4EAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zAxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoBAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTQDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABYCRBdHRlbXB0ZWQEARxvdXRjb21l1AFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW7cASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u3AEgTG9jYXRpb24AARxtZXNzYWdlEQEBHFhjbTwoKT4AAShtZXNzYWdlX2lkBAEcWGNtSGFzaAABBFxBIFhDTSBtZXNzYWdlIHdhcyBzZW50LkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW7cASBMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAACDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQwARxRdWVyeUlkAAEgcmVzcG9uc2U9AQEgUmVzcG9uc2UAAwhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkMAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAgBCHU4AAEoY2FsbF9pbmRleAgBCHU4AAQIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkMAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAgBCHU4AAEoY2FsbF9pbmRleAgBCHU4AAE0YWN0dWFsX3dlaWdodCgBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQoARhXZWlnaHQABQxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQwARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4CAEIdTgAAShjYWxsX2luZGV4CAEIdTgABghVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZDABHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgIAQh1OAABKGNhbGxfaW5kZXgIAQh1OAAHDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW7cASBMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAABRGV4cGVjdGVkX2xvY2F0aW9uYQEBQE9wdGlvbjxMb2NhdGlvbj4ACAxZAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgb3JpZ2luIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzVQFub3QgbWF0Y2ggdGhhdCBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlxJbnZhbGlkUmVzcG9uZGVyVmVyc2lvbggBGG9yaWdpbtwBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkAAkcUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZDABHFF1ZXJ5SWQACgTIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g0ARBIMjU2AAEYb3JpZ2lu3AEgTG9jYXRpb24AARhhc3NldHOBAQE8VmVyc2lvbmVkQXNzZXRzAAsEuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb27cASBMb2NhdGlvbgABGHJlc3VsdBABKFhjbVZlcnNpb24AARBjb3N0HQEBGEFzc2V0cwABKG1lc3NhZ2VfaWQEARxYY21IYXNoAAwMJQFBbiBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgaGFzIGJlZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnQuAOBUaGUgY29zdCBvZiBzZW5kaW5nIGl0IChib3JuZSBieSB0aGUgY2hhaW4pIGlzIGluY2x1ZGVkLlxTdXBwb3J0ZWRWZXJzaW9uQ2hhbmdlZAgBIGxvY2F0aW9u3AEgTG9jYXRpb24AARx2ZXJzaW9uEAEoWGNtVmVyc2lvbgANCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9u3AEgTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQAARRlcnJvctgBIFhjbUVycm9yAA4IWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbtEBAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAAPCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbtwBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkABAcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbtwBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllctwBIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJhAQFAT3B0aW9uPExvY2F0aW9uPgARDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb27cASBMb2NhdGlvbgABEGNvc3QdAQEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAEghZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb27cASBMb2NhdGlvbgABEGNvc3QdAQEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAEwQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb27cASBMb2NhdGlvbgABEGNvc3QdAQEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAFAglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmfcASBMb2NhdGlvbgABEGZlZXMdAQEYQXNzZXRzABUEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoNAEQSDI1NgABGG9yaWdpbtwBIExvY2F0aW9uAAEYYXNzZXRzgQEBPFZlcnNpb25lZEFzc2V0cwAWBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbhABKFhjbVZlcnNpb24AFwSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV01BAsc3RhZ2luZ194Y20IdjQYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkKAEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkKAEYV2VpZ2h0AAEUZXJyb3LYARRFcnJvcgABABRFcnJvcgQBFGVycm9y2AEURXJyb3IAAgAA2BAMeGNtCHYzGHRyYWl0cxRFcnJvcgABoCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAwAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgBMVW5oYW5kbGVkWGNtVmVyc2lvbgAjAEhXZWlnaHRMaW1pdFJlYWNoZWQEACgBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAA3BAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMIAQh1OAABIGludGVyaW9y4AEkSnVuY3Rpb25zAADgECxzdGFnaW5nX3hjbQh2NCRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAOQBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQA9AFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAD4AUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEAPwBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAAQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQABQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQACQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQADQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADkAAADAQAAAOgA6BAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBACgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr7AFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAQBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya+wBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXgsAQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya+wBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5rAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAgBCHU4AAQAMEdlbmVyYWxJbmRleAQAsAEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoCAEIdTgAARBkYXRhBAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlktAEYQm9keUlkAAEQcGFydLgBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA8AEkTmV0d29ya0lkAAkAAOwEGE9wdGlvbgQEVAHwAQgQTm9uZQAAABBTb21lBADwAAABAADwECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAEASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIwAQx1NjQAAShibG9ja19oYXNoBAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lkLAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA9AAAAwIAAADoAPgAAAMDAAAA6AD8AAADBAAAAOgAAQEAAAMFAAAA6AAFAQAAAwYAAADoAAkBAAADBwAAAOgADQEAAAMIAAAA6AARAQwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEABUBAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAVAQAAAhkBABkBDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAAdAQEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQEBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAQEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZCwBHFF1ZXJ5SWQAASByZXNwb25zZT0BASBSZXNwb25zZQABKG1heF93ZWlnaHQoARhXZWlnaHQAARxxdWVyaWVyYQEBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0BARhBc3NldHMAASxiZW5lZmljaWFyedwBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzHQEBGEFzc2V0cwABEGRlc3TcASBMb2NhdGlvbgABDHhjbREBARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRlAQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QoARhXZWlnaHQAARBjYWxsaQEBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcqABDHUzMgABQG1heF9tZXNzYWdlX3NpemWgAQx1MzIAATBtYXhfY2FwYWNpdHmgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudKABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3KgAQx1MzIAARhzZW5kZXKgAQx1MzIAASRyZWNpcGllbnSgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA4AFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAbQEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c3EBASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ53AEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c3EBASxBc3NldEZpbHRlcgABEGRlc3TcASBMb2NhdGlvbgABDHhjbREBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlcQEBLEFzc2V0RmlsdGVyAAEQd2FudB0BARhBc3NldHMAARxtYXhpbWFsIAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c3EBASxBc3NldEZpbHRlcgABHHJlc2VydmXcASBMb2NhdGlvbgABDHhjbREBARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNxAQEsQXNzZXRGaWx0ZXIAARBkZXN03AEgTG9jYXRpb24AAQx4Y20RAQEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb20BAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c3EBASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQEBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0fQEBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAARAQEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAARAQEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0BARhBc3NldHMAARh0aWNrZXTcASBMb2NhdGlvbgAYABBUcmFwBAAsAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQoARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAHQEBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAHQEBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAGEBAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABBAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAFkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lOAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9tAQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXigAQx1MzIAARBuYW1lOAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lOAEcVmVjPHU4PgABLGNyYXRlX21ham9yoAEMdTMyAAE8bWluX2NyYXRlX21pbm9yoAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABtAQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAOgBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr8AEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27gAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtEQEBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQlAQEUQXNzZXQAASB1bmxvY2tlctwBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAQEUQXNzZXQAARh0YXJnZXTcASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQEBFEFzc2V0AAEUb3duZXLcASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQlAQEUQXNzZXQAARhsb2NrZXLcASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdyABEGJvb2wAKwAgU2V0VG9waWMEAAQBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EANwBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdH0BASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbmEBAUBPcHRpb248TG9jYXRpb24+AC8AAB0BECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAIQEBKFZlYzxBc3NldD4AACEBAAACJQEAJQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZCkBARxBc3NldElkAAEMZnVuLQEBLEZ1bmdpYmlsaXR5AAApARAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABADcASBMb2NhdGlvbgAALQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBACwARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAxAQE0QXNzZXRJbnN0YW5jZQABAAAxARAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEALABEHUxMjgAAQAYQXJyYXk0BABIARxbdTg7IDRdAAIAGEFycmF5OAQANQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAOQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAQBIFt1ODsgMzJdAAUAADUBAAADCAAAAAgAOQEAAAMQAAAACAA9AQwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0BARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BABBAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAEAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAEkBAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAWQEBOE1heWJlRXJyb3JDb2RlAAUAAEEBBBhPcHRpb24EBFQBRQEBCBBOb25lAAAAEFNvbWUEAEUBAAABAABFAQAABAgQ2ABJAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAU0BBFMAAAQAVQEBGFZlYzxUPgAATQEMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4oAEMdTMyAAEQbmFtZVEBAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lUQEBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3KgAQx1MzIAARRtaW5vcqABDHUzMgABFHBhdGNooAEMdTMyAABRAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAFUBAAACTQEAWQEMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBABdAQGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAF0BAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAABdAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAGEBBBhPcHRpb24EBFQB3AEIEE5vbmUAAAAQU29tZQQA3AAAAQAAZQEMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAaQEMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkOAEcVmVjPHU4PgAAbQEMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbtwBIExvY2F0aW9uAAEgcXVlcnlfaWQsARxRdWVyeUlkAAEobWF4X3dlaWdodCgBGFdlaWdodAAAcQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAAdAQEYQXNzZXRzAAAAEFdpbGQEAHUBASRXaWxkQXNzZXQAAQAAdQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZCkBARxBc3NldElkAAEMZnVueQEBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBACgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWQpAQEcQXNzZXRJZAABDGZ1bnkBATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudKABDHUzMgADAAB5ARAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAH0BDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEACgBGFdlaWdodAABAACBAQgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMgQAhQEBPHYyOjpNdWx0aUFzc2V0cwABAAhWMwQAuQEBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQAHQEBKHY0OjpBc3NldHMABAAAhQEQDHhjbQh2MihtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEAIkBATxWZWM8TXVsdGlBc3NldD4AAIkBAAACjQEAjQEQDHhjbQh2MihtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlkkQEBHEFzc2V0SWQAAQxmdW6xAQEsRnVuZ2liaWxpdHkAAJEBEAx4Y20IdjIobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBACVAQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQAOAEcVmVjPHU4PgABAACVARAMeGNtCHYyNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwgBCHU4AAEgaW50ZXJpb3KZAQEkSnVuY3Rpb25zAACZARAMeGNtCHYyNG11bHRpbG9jYXRpb24kSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAJ0BASBKdW5jdGlvbgABAAhYMggAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAgAIWDMMAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAwAIWDQQAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAEAAhYNRQAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24ABQAIWDYYAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24ABgAIWDccAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAHAAhYOCAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24AAJ0BASBKdW5jdGlvbgAAnQEBIEp1bmN0aW9uAACdAQEgSnVuY3Rpb24ACAAAnQEQDHhjbQh2MiBqdW5jdGlvbiBKdW5jdGlvbgABJCRQYXJhY2hhaW4EAKABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuhAQEkTmV0d29ya0lkAAEIaWQEASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmuhAQEkTmV0d29ya0lkAAEUaW5kZXgsAQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya6EBASROZXR3b3JrSWQAAQxrZXmsASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQACAEIdTgABAAwR2VuZXJhbEluZGV4BACwARB1MTI4AAUAKEdlbmVyYWxLZXkEAKUBAYBXZWFrQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWSpAQEYQm9keUlkAAEQcGFydK0BASBCb2R5UGFydAAIAAChAQwMeGNtCHYyJE5ldHdvcmtJZAABEAxBbnkAAAAUTmFtZWQEAKUBAYBXZWFrQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgABACBQb2xrYWRvdAACABhLdXNhbWEAAwAApQEMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AACpAQwMeGNtCHYyGEJvZHlJZAABKBBVbml0AAAAFE5hbWVkBAClAQGAV2Vha0JvdW5kZWRWZWM8dTgsIENvbnN0VTMyPDMyPj4AAQAUSW5kZXgEAKABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAArQEMDHhjbQh2MiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnSgAQx1MzIAAQAgRnJhY3Rpb24IAQxub22gAQx1MzIAARRkZW5vbaABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbaABDHUzMgABFGRlbm9toAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbaABDHUzMgABFGRlbm9toAEMdTMyAAQAALEBEAx4Y20IdjIobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAsAEQdTEyOAAAACxOb25GdW5naWJsZQQAtQEBNEFzc2V0SW5zdGFuY2UAAQAAtQEQDHhjbQh2MihtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARwkVW5kZWZpbmVkAAAAFEluZGV4BACwARB1MTI4AAEAGEFycmF5NAQASAEcW3U4OyA0XQACABhBcnJheTgEADUBARxbdTg7IDhdAAMAHEFycmF5MTYEADkBASBbdTg7IDE2XQAEABxBcnJheTMyBAAEASBbdTg7IDMyXQAFABBCbG9iBAA4ARxWZWM8dTg+AAYAALkBEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABAC9AQE8VmVjPE11bHRpQXNzZXQ+AAC9AQAAAsEBAMEBEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZMUBARxBc3NldElkAAEMZnVuyQEBLEZ1bmdpYmlsaXR5AADFARAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAlAE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQABAEgW3U4OyAzMl0AAQAAyQEQDHhjbQh2MyhtdWx0aWFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBACwARB1MTI4AAAALE5vbkZ1bmdpYmxlBADNAQE0QXNzZXRJbnN0YW5jZQABAADNARAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEALABEHUxMjgAAQAYQXJyYXk0BABIARxbdTg7IDRdAAIAGEFycmF5OAQANQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAOQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAQBIFt1ODsgMzJdAAUAANEBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjIEAJUBAUR2Mjo6TXVsdGlMb2NhdGlvbgABAAhWMwQAlAFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEANwBMHY0OjpMb2NhdGlvbgAEAADVAQxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAEASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAQBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAQBIFt1ODsgMzJdAADUARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTZAQxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZDQBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbt0BAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9y5QEBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZDQBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbt0BAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2VkKAEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3MgARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkBAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbt0BAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXgQASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleBABHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbt0BAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4EAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV03QEIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQA4QEBGFBhcmFJZAACAADhAQx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAAQAQx1MzIAAOUBEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEACgBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAADpAQw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEV2ZW50AAEYQEJhdGNoSW50ZXJydXB0ZWQIARRpbmRleBABDHUzMgABFGVycm9yaAE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3JoATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHTtAQE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldO0BBBhSZXN1bHQIBFQB8QEERQFoAQgIT2sEAPEBAAAAAAxFcnIEAGgAAAEAAPEBAAAEAAD1AQw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABECxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwABMFQ6OkFjY291bnRJZAABIG11bHRpc2lnAAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoBAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwABMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludPkBAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcAATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gEASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nAAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50+QEBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwABMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAQBIENhbGxIYXNoAAEYcmVzdWx07QEBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcAATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnT5AQFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnAAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoBAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPkBCDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgEQAAgBGGhlaWdodBABLEJsb2NrTnVtYmVyAAEUaW5kZXgQAQx1MzIAAP0BDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEUNFByb3h5RXhlY3V0ZWQEARhyZXN1bHTtAQE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQQARBwdXJlAAEwVDo6QWNjb3VudElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZQECATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleAUCAQx1MTYAAQjcQSBwdXJlIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBieSBuZXcgcHJveHkgd2l0aCBnaXZlbpBkaXNhbWJpZ3VhdGlvbiBpbmRleCBhbmQgcHJveHkgdHlwZS4kQW5ub3VuY2VkDAEQcmVhbAABMFQ6OkFjY291bnRJZAABFHByb3h5AAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoNAE0Q2FsbEhhc2hPZjxUPgACBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yAAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlAAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZQECATBUOjpQcm94eVR5cGUAARRkZWxheRABREJsb2NrTnVtYmVyRm9yPFQ+AAMESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IAATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUAATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlAQIBMFQ6OlByb3h5VHlwZQABFGRlbGF5EAFEQmxvY2tOdW1iZXJGb3I8VD4ABARQQSBwcm94eSB3YXMgcmVtb3ZlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQBAghgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lJFByb3h5VHlwZQABHAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAAAUCAAAFBAAJAgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAWgcQ3JlYXRlZAwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABHGNyZWF0b3IAATBUOjpBY2NvdW50SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABHGJhbGFuY2UYAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABGGlzc3VlcgABMFQ6OkFjY291bnRJZAABFGFkbWluAAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgABMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZBABKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZBABDHUzMgABSGFjY291bnRzX3JlbWFpbmluZxABDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQQAQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nEAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARhzb3VyY2UAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQQAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IAATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQIMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFdmVudAgEVAAESQABbBxDcmVhdGVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IAATBUOjpBY2NvdW50SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARBmcm9tAAEwVDo6QWNjb3VudElkAAEIdG8AATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC4YRnJvemVuCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQABgRcU29tZSBgaXRlbWAgd2FzIGZyb3plbi4YVGhhd2VkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQABwRcU29tZSBgaXRlbWAgd2FzIHRoYXdlZC5AQ29sbGVjdGlvbkZyb3plbgQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQACAR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGZyb3plbi5AQ29sbGVjdGlvblRoYXdlZAQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIHRoYXdlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgABMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyAAEwVDo6QWNjb3VudElkAAEUYWRtaW4AATBUOjpBY2NvdW50SWQAARxmcmVlemVyAAEwVDo6QWNjb3VudElkAAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AQXBwcm92ZWRUcmFuc2ZlchABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLkRJdGVtU3RhdHVzQ2hhbmdlZAQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQADgQRAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhEQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbiABEGJvb2wADwS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkABAEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLixNZXRhZGF0YVNldBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEQZGF0YRECAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW4gARBib29sABEEmE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGl0ZW0uPE1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkABIEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXMVAgE4VmVjPFQ6Okl0ZW1JZD4AEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4wQXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW0ZAgFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXkdAgFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWUhAgF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AFAQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbRkCAURPcHRpb248VDo6SXRlbUlkPgABDGtleR0CAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFQQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvAAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbhkCAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5EAEMdTMyABcEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24uMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUcHJpY2UYATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllciUCAVBPcHRpb248VDo6QWNjb3VudElkPgAYBIxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGluc3RhbmNlLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAGQScVGhlIHByaWNlIGZvciB0aGUgaW5zdGFuY2Ugd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNlGAE8SXRlbVByaWNlPFQsIEk+AAEYc2VsbGVyAAEwVDo6QWNjb3VudElkAAEUYnV5ZXIAATBUOjpBY2NvdW50SWQAGgRMQW4gaXRlbSB3YXMgYm91Z2h0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAAFQIAAAIQABkCBBhPcHRpb24EBFQBEAEIEE5vbmUAAAAQU29tZQQAEAAAAQAAHQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAAhAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AACUCBBhPcHRpb24EBFQBAAEIEE5vbmUAAAAQU29tZQQAAAAAAQAAKQIMLHBhbGxldF9uZnRzGHBhbGxldBRFdmVudAgEVAAESQABmBxDcmVhdGVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IAATBUOjpBY2NvdW50SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARBmcm9tAAEwVDo6QWNjb3VudElkAAEIdG8AATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC5ISXRlbVRyYW5zZmVyTG9ja2VkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQABgSIQW4gYGl0ZW1gIGJlY2FtZSBub24tdHJhbnNmZXJhYmxlLlBJdGVtVHJhbnNmZXJVbmxvY2tlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAcEeEFuIGBpdGVtYCBiZWNhbWUgdHJhbnNmZXJhYmxlLlBJdGVtUHJvcGVydGllc0xvY2tlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YSABEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXMgARBib29sAAgEqGBpdGVtYCBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIHdlcmUgbG9ja2VkLkBDb2xsZWN0aW9uTG9ja2VkBAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgbG9ja2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIlAgFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARRhZG1pbiUCAVBPcHRpb248VDo6QWNjb3VudElkPgABHGZyZWV6ZXIlAgFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBUcmFuc2ZlckFwcHJvdmVkFAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkAAEgZGVhZGxpbmUZAgFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLlRBbGxBcHByb3ZhbHNDYW5jZWxsZWQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFG93bmVyAAEwVDo6QWNjb3VudElkAA4EnEFsbCBhcHByb3ZhbHMgb2YgYW4gaXRlbSBnb3QgY2FuY2VsbGVkLlxDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZAQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQADwQBAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGNvbmZpZyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGEtAgF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABAEtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAARBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC48SXRlbU1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARBkYXRhLQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgASBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLkxJdGVtTWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtcxUCAThWZWM8VDo6SXRlbUlkPgAUBCEBVGhlIGRlcG9zaXQgZm9yIGEgc2V0IG9mIGBpdGVtYHMgd2l0aGluIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIHVwZGF0ZWQuMEF0dHJpYnV0ZVNldBQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtGQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5IQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlLQIBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+AAEkbmFtZXNwYWNlMQIBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABUEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW0ZAgFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXkhAgFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEkbmFtZXNwYWNlMQIBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABYEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmxJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkABcEzEEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIGFkZGVkLnRJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQAGATUQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgcmVtb3ZlZC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9uGQIBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABkEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHkQAQx1MzIAGgSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi50Q29sbGVjdGlvbk1pbnRTZXR0aW5nc1VwZGF0ZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkABsErE1pbnQgc2V0dGluZ3MgZm9yIGEgY29sbGVjdGlvbiBoYWQgY2hhbmdlZC5sTmV4dENvbGxlY3Rpb25JZEluY3JlbWVudGVkBAEcbmV4dF9pZBkCAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcBAEBRXZlbnQgZ2V0cyBlbWl0dGVkIHdoZW4gdGhlIGBOZXh0Q29sbGVjdGlvbklkYCBnZXRzIGluY3JlbWVudGVkLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNlGAE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXIlAgFQT3B0aW9uPFQ6OkFjY291bnRJZD4AHQR8VGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpdGVtLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAHgSMVGhlIHByaWNlIGZvciB0aGUgaXRlbSB3YXMgcmVtb3ZlZC4oSXRlbUJvdWdodBQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUcHJpY2UYATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIAATBUOjpBY2NvdW50SWQAARRidXllcgABMFQ6OkFjY291bnRJZAAfBExBbiBpdGVtIHdhcyBib3VnaHQuHFRpcFNlbnQUAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABGHNlbmRlcgABMFQ6OkFjY291bnRJZAABIHJlY2VpdmVyAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAFYRGVwb3NpdEJhbGFuY2VPZjxULCBJPgAgBDxBIHRpcCB3YXMgc2VudC4sU3dhcENyZWF0ZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW0QASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW0ZAgFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZTUCAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmUQAURCbG9ja051bWJlckZvcjxUPgAhBIhBbiBgaXRlbWAgc3dhcCBpbnRlbnQgd2FzIGNyZWF0ZWQuNFN3YXBDYW5jZWxsZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW0QASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW0ZAgFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZTUCAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmUQAURCbG9ja051bWJlckZvcjxUPgAiBFxUaGUgc3dhcCB3YXMgY2FuY2VsbGVkLixTd2FwQ2xhaW1lZCABPHNlbnRfY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABJHNlbnRfaXRlbRABJFQ6Okl0ZW1JZAABPHNlbnRfaXRlbV9vd25lcgABMFQ6OkFjY291bnRJZAABTHJlY2VpdmVkX2NvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATRyZWNlaXZlZF9pdGVtEAEkVDo6SXRlbUlkAAFMcmVjZWl2ZWRfaXRlbV9vd25lcgABMFQ6OkFjY291bnRJZAABFHByaWNlNQIBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZRABREJsb2NrTnVtYmVyRm9yPFQ+ACMEaFRoZSBzd2FwIGhhcyBiZWVuIGNsYWltZWQuWFByZVNpZ25lZEF0dHJpYnV0ZXNTZXQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABJG5hbWVzcGFjZTECAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAkBPxOZXcgYXR0cmlidXRlcyBoYXZlIGJlZW4gc2V0IGZvciBhbiBgaXRlbWAgb2YgdGhlIGBjb2xsZWN0aW9uYC5IUGFsbGV0QXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0ZAgFET3B0aW9uPFQ6Okl0ZW1JZD4AASRhdHRyaWJ1dGVBAgGEUGFsbGV0QXR0cmlidXRlczxUOjpDb2xsZWN0aW9uSWQ+AAEUdmFsdWUtAgF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AJQhNAUEgbmV3IGF0dHJpYnV0ZSBpbiB0aGUgYFBhbGxldGAgbmFtZXNwYWNlIHdhcyBzZXQgZm9yIHRoZSBgY29sbGVjdGlvbmAgb3IgYW4gYGl0ZW1gZHdpdGhpbiB0aGF0IGBjb2xsZWN0aW9uYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQtAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AADECDCxwYWxsZXRfbmZ0cxR0eXBlc0hBdHRyaWJ1dGVOYW1lc3BhY2UEJEFjY291bnRJZAEAARAYUGFsbGV0AAAAPENvbGxlY3Rpb25Pd25lcgABACRJdGVtT3duZXIAAgAcQWNjb3VudAQAAAEkQWNjb3VudElkAAMAADUCBBhPcHRpb24EBFQBOQIBCBBOb25lAAAAEFNvbWUEADkCAAABAAA5AgwscGFsbGV0X25mdHMUdHlwZXNIUHJpY2VXaXRoRGlyZWN0aW9uBBhBbW91bnQBGAAIARhhbW91bnQYARhBbW91bnQAASRkaXJlY3Rpb249AgE4UHJpY2VEaXJlY3Rpb24AAD0CDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAQQIMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAEQAQgsVXNlZFRvQ2xhaW0EABABMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAAEUCDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABaBxDcmVhdGVkDAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEcY3JlYXRvcgABMFQ6OkFjY291bnRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARBmcm9tAAEwVDo6QWNjb3VudElkAAEIdG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZRgBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEYaXNzdWVyAAEwVDo6QWNjb3VudElkAAEUYWRtaW4AATBUOjpBY2NvdW50SWQAARxmcmVlemVyAAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkEAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nEAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZBABDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmcQAQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWSUAShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEQbmFtZTgBHFZlYzx1OD4AARhzeW1ib2w4ARxWZWM8dTg+AAEgZGVjaW1hbHMIAQh1OAABJGlzX2Zyb3plbiABEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABGHNvdXJjZQABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZRgBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgABMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJAgxwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbhhwYWxsZXQURXZlbnQEBFQAAQhETmZ0RnJhY3Rpb25hbGl6ZWQUAThuZnRfY29sbGVjdGlvbhABSFQ6Ok5mdENvbGxlY3Rpb25JZAABDG5mdBABIFQ6Ok5mdElkAAEkZnJhY3Rpb25zGAFEQXNzZXRCYWxhbmNlT2Y8VD4AARRhc3NldBABMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5AAEwVDo6QWNjb3VudElkAAAEnEFuIE5GVCB3YXMgc3VjY2Vzc2Z1bGx5IGZyYWN0aW9uYWxpemVkLihOZnRVbmlmaWVkEAE4bmZ0X2NvbGxlY3Rpb24QAUhUOjpOZnRDb2xsZWN0aW9uSWQAAQxuZnQQASBUOjpOZnRJZAABFGFzc2V0EAEwQXNzZXRJZE9mPFQ+AAEsYmVuZWZpY2lhcnkAATBUOjpBY2NvdW50SWQAAQSYQW4gTkZUIHdhcyBzdWNjZXNzZnVsbHkgcmV0dXJuZWQgYmFjay4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRNAgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAWgcQ3JlYXRlZAwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABHGNyZWF0b3IAATBUOjpBY2NvdW50SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABHGJhbGFuY2UYAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABGGlzc3VlcgABMFQ6OkFjY291bnRJZAABFGFkbWluAAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgABMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZBABKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZBABDHUzMgABSGFjY291bnRzX3JlbWFpbmluZxABDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQQAQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nEAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARhzb3VyY2UAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQQAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IAATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0UQIMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFdmVudAQEVAABGCxQb29sQ3JlYXRlZBABHGNyZWF0b3IAATBUOjpBY2NvdW50SWQEiFRoZSBhY2NvdW50IHRoYXQgY3JlYXRlZCB0aGUgcG9vbC4BHHBvb2xfaWRVAgEkVDo6UG9vbElkCEkBVGhlIHBvb2wgaWQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhc3NldHMgbWF5IG5vdCBiZfR0aGUgc2FtZSBhcyB0aGUgb3JkZXIgc3BlY2lmaWVkIGluIHRoZSBjcmVhdGUgcG9vbCBleHRyaW5zaWMuATBwb29sX2FjY291bnQAATBUOjpBY2NvdW50SWQEbFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb29sLgEgbHBfdG9rZW4QAThUOjpQb29sQXNzZXRJZAhBAVRoZSBpZCBvZiB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHdpbGwgYmUgbWludGVkIHdoZW4gYXNzZXRzIGFyZSBhZGRlZCB0byB0aGlzFHBvb2wuAAQdAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQ3JlYXRlUG9vbGAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuOExpcXVpZGl0eUFkZGVkHAEMd2hvAAEwVDo6QWNjb3VudElkBLhUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHRha2VuIGZyb20uARxtaW50X3RvAAEwVDo6QWNjb3VudElkBNRUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgbWludGVkIHRvLgEccG9vbF9pZFUCASRUOjpQb29sSWQE4FRoZSBwb29sIGlkIG9mIHRoZSBwb29sIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgYWRkZWQgdG8uAUBhbW91bnQxX3Byb3ZpZGVkGAEoVDo6QmFsYW5jZQTkVGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuAUBhbW91bnQyX3Byb3ZpZGVkGAEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW4QAThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWQYAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgbWludGVkIG9mIHRoYXQgaWQuAQQlAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQWRkTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC5ATGlxdWlkaXR5UmVtb3ZlZCABDHdobwABMFQ6OkFjY291bnRJZATcVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIGJ1cm5lZCBmcm9tLgEsd2l0aGRyYXdfdG8AATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEccG9vbF9pZFUCASRUOjpQb29sSWQEwFRoZSBwb29sIGlkIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgcmVtb3ZlZCBmcm9tLgEcYW1vdW50MRgBKFQ6OkJhbGFuY2UE9FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BHGFtb3VudDIYAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW4QAThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWQYAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgYnVybmVkIG9mIHRoYXQgaWQuATh3aXRoZHJhd2FsX2ZlZVkCARxQZXJtaWxsBHRMaXF1aWRpdHkgd2l0aGRyYXdhbCBmZWUgKCUpLgIEMQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYFJlbW92ZUxpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuMFN3YXBFeGVjdXRlZBQBDHdobwABMFQ6OkFjY291bnRJZAS0V2hpY2ggYWNjb3VudCB3YXMgdGhlIGluc3RpZ2F0b3Igb2YgdGhlIHN3YXAuARxzZW5kX3RvAAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BJGFtb3VudF9pbhgBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0GAEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aF0CAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW4YAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dBgBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGhdAgE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQQEvEFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuHFRvdWNoZWQIARxwb29sX2lkVQIBJFQ6OlBvb2xJZARMVGhlIElEIG9mIHRoZSBwb29sLgEMd2hvAAEwVDo6QWNjb3VudElkBIRUaGUgYWNjb3VudCBpbml0aWF0aW5nIHRoZSB0b3VjaC4FBA0BUG9vbCBoYXMgYmVlbiB0b3VjaGVkIGluIG9yZGVyIHRvIGZ1bGZpbGwgb3BlcmF0aW9uYWwgcmVxdWlyZW1lbnRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFUCAAAECJSUAFkCDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAAQAQx1MzIAAF0CAAACYQIAYQIAAAQIlBgAZQIIMGZyYW1lX3N5c3RlbRRQaGFzZQABDDhBcHBseUV4dHJpbnNpYwQAEAEMdTMyAAAAMEZpbmFsaXphdGlvbgABADhJbml0aWFsaXphdGlvbgACAABpAgAAAjQAbQIAAAJxAgBxAgAABAgQEAB1AggwZnJhbWVfc3lzdGVtWExhc3RSdW50aW1lVXBncmFkZUluZm8AAAgBMHNwZWNfdmVyc2lvbqABTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWV5AgFkc3BfcnVudGltZTo6UnVudGltZVN0cmluZwAAeQIAAAUCAH0CCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g0ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbiABEGJvb2wAAIECDDBmcmFtZV9zeXN0ZW0YcGFsbGV0EENhbGwEBFQAASwYcmVtYXJrBAEYcmVtYXJrOAEcVmVjPHU4PgAADGhNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrLgCIQ2FuIGJlIGV4ZWN1dGVkIGJ5IGV2ZXJ5IGBvcmlnaW5gLjhzZXRfaGVhcF9wYWdlcwQBFHBhZ2VzMAEMdTY0AAEE+FNldCB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBXZWJBc3NlbWJseSBlbnZpcm9ubWVudCdzIGhlYXAuIHNldF9jb2RlBAEQY29kZTgBHFZlYzx1OD4AAgRkU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlLlxzZXRfY29kZV93aXRob3V0X2NoZWNrcwQBEGNvZGU4ARxWZWM8dTg+AAMQGQFTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUgd2l0aG91dCBkb2luZyBhbnkgY2hlY2tzIG9mIHRoZSBnaXZlbiBgY29kZWAuAFEBTm90ZSB0aGF0IHJ1bnRpbWUgdXBncmFkZXMgd2lsbCBub3QgcnVuIGlmIHRoaXMgaXMgY2FsbGVkIHdpdGggYSBub3QtaW5jcmVhc2luZyBzcGVjIHZlcnNpb24hLHNldF9zdG9yYWdlBAEUaXRlbXOFAgE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzjQIBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4OAEMS2V5AAEcc3Via2V5cxABDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcms4ARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoNAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g0ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGU4ARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuhQIAAAKJAgCJAgAABAg4OACNAgAAAjgAkQIMMGZyYW1lX3N5c3RlbRhsaW1pdHMwQmxvY2tXZWlnaHRzAAAMAShiYXNlX2Jsb2NrKAEYV2VpZ2h0AAEkbWF4X2Jsb2NrKAEYV2VpZ2h0AAEkcGVyX2NsYXNzlQIBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAlQIMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAGZAgAMARhub3JtYWyZAgEEVAABLG9wZXJhdGlvbmFsmQIBBFQAASRtYW5kYXRvcnmZAgEEVAAAmQIMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpYygBGFdlaWdodAABNG1heF9leHRyaW5zaWOdAgE4T3B0aW9uPFdlaWdodD4AASRtYXhfdG90YWydAgE4T3B0aW9uPFdlaWdodD4AASByZXNlcnZlZJ0CAThPcHRpb248V2VpZ2h0PgAAnQIEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAChAgwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAABAEMbWF4pQIBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgAApQIMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEQAAwBGG5vcm1hbBABBFQAASxvcGVyYXRpb25hbBABBFQAASRtYW5kYXRvcnkQAQRUAACpAggoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQwAQx1NjQAARR3cml0ZTABDHU2NAAArQIIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZXkCATRSdW50aW1lU3RyaW5nAAEkaW1wbF9uYW1leQIBNFJ1bnRpbWVTdHJpbmcAAURhdXRob3JpbmdfdmVyc2lvbhABDHUzMgABMHNwZWNfdmVyc2lvbhABDHUzMgABMGltcGxfdmVyc2lvbhABDHUzMgABEGFwaXOxAgEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb24QAQx1MzIAATRzdGF0ZV92ZXJzaW9uCAEIdTgAALECBAxDb3cEBFQBtQIABAC1AgAAALUCAAACuQIAuQIAAAQINQEQAL0CDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldMECAAACxQIAxQIMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50IEFuY2VzdG9yBARIATQADAE4dXNlZF9iYW5kd2lkdGjJAgE0VXNlZEJhbmR3aWR0aAABOHBhcmFfaGVhZF9oYXNo3QIBJE9wdGlvbjxIPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbOECAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAAyQIMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50NFVzZWRCYW5kd2lkdGgAAAwBNHVtcF9tc2dfY291bnQQAQx1MzIAATx1bXBfdG90YWxfYnl0ZXMQAQx1MzIAATRocm1wX291dGdvaW5nzQIBjEJUcmVlTWFwPFBhcmFJZCwgSHJtcENoYW5uZWxVcGRhdGU+AADNAgQgQlRyZWVNYXAIBEsB4QEEVgHRAgAEANUCAAAA0QIMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQQAQx1MzIAASx0b3RhbF9ieXRlcxABDHUzMgAA1QIAAALZAgDZAgAABAjhAdECAN0CBBhPcHRpb24EBFQBNAEIEE5vbmUAAAAQU29tZQQANAAAAQAA4QIEGE9wdGlvbgQEVAHlAgEIEE5vbmUAAAAQU29tZQQA5QIAAAEAAOUCDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAA6QIMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATQADAE4dXNlZF9iYW5kd2lkdGjJAgE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJrGQIBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFs4QIBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AADtAgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N1xQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQgESAE0BE4BEAAQASxwYXJlbnRfaGVhZPECASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXIQAQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDQBBEgAATBtYXhfcG92X3NpemUQAQx1MzIAAPECDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEADgBHFZlYzx1OD4AAPUCBBhPcHRpb24EBFQB+QIBCBBOb25lAAAAEFNvbWUEAPkCAAABAAD5AgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N0hVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAAD9Agwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2RlcwEDAURCVHJlZVNldDxWZWM8dTg+PgAAAQMEIEJUcmVlU2V0BARUATgABACNAgAAAAUDDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtUHJlbGF5X3N0YXRlX3NuYXBzaG90WE1lc3NhZ2luZ1N0YXRlU25hcHNob3QAABABMGRtcV9tcWNfaGVhZDQBRHJlbGF5X2NoYWluOjpIYXNoAAGccmVsYXlfZGlzcGF0Y2hfcXVldWVfcmVtYWluaW5nX2NhcGFjaXR5CQMBjFJlbGF5RGlzcGF0Y2hRdWV1ZVJlbWFpbmluZ0NhcGFjaXR5AAFAaW5ncmVzc19jaGFubmVscw0DAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAE8ZWdyZXNzX2NoYW5uZWxzDQMBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AAAkDDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtUHJlbGF5X3N0YXRlX3NuYXBzaG90jFJlbGF5RGlzcGF0Y2hRdWV1ZVJlbWFpbmluZ0NhcGFjaXR5AAAIATxyZW1haW5pbmdfY291bnQQAQx1MzIAAThyZW1haW5pbmdfc2l6ZRABDHUzMgAADQMAAAIRAwARAwAABAjhARUDABUDDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eRABDHUzMgABOG1heF90b3RhbF9zaXplEAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZRABDHUzMgABJG1zZ19jb3VudBABDHUzMgABKHRvdGFsX3NpemUQAQx1MzIAASBtcWNfaGVhZN0CATBPcHRpb248SGFzaD4AABkDDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemUQAQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemUQAQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50EAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplEAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemUQAQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUQAQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlEAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duEAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXkQASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zHQMBSEFzeW5jQmFja2luZ1BhcmFtcwAAHQMQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGgQAQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbhABDHUzMgAAIQMIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQANAEkUmVsYXlIYXNoAAAlAwQgQlRyZWVNYXAIBEsB4QEEVgEhAwAEACkDAAAAKQMAAAItAwAtAwAABAjhASEDADEDAAACNQMANQMIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAHhAQAIASRyZWNpcGllbnThAQEISWQAARBkYXRhOAFQc3Bfc3RkOjp2ZWM6OlZlYzx1OD4AADkDDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAAYARB1MTI4AAA9Awx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABEExzZXRfdmFsaWRhdGlvbl9kYXRhBAEQZGF0YUEDAVRQYXJhY2hhaW5JbmhlcmVudERhdGEAACSAU2V0IHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZGF0YS4AQQFUaGlzIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbohwaGFzZSBpZiB0aGUgY2FsbCB3YXMgbm90IGludm9rZWQuANBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgSW5oZXJlbnRgACEBQXMgYSBzaWRlIGVmZmVjdCwgdGhpcyBmdW5jdGlvbiB1cGdyYWRlcyB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGZ1bmN0aW9uhGlmIHRoZSBhcHByb3ByaWF0ZSB0aW1lIGhhcyBjb21lLmBzdWRvX3NlbmRfdXB3YXJkX21lc3NhZ2UEARxtZXNzYWdlOAE0VXB3YXJkTWVzc2FnZQABAERhdXRob3JpemVfdXBncmFkZQgBJGNvZGVfaGFzaDQBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uIAEQYm9vbAACIGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AXQFUaGUgYGNoZWNrX3ZlcnNpb25gIHBhcmFtZXRlciBzZXRzIGEgYm9vbGVhbiBmbGFnIGZvciB3aGV0aGVyIG9yIG5vdCB0aGUgcnVudGltZSdzIHNwZWNhAXZlcnNpb24gYW5kIG5hbWUgc2hvdWxkIGJlIHZlcmlmaWVkIG9uIHVwZ3JhZGUuIFNpbmNlIHRoZSBhdXRob3JpemF0aW9uIG9ubHkgaGFzIGEgaGFzaCywaXQgY2Fubm90IGFjdHVhbGx5IHBlcmZvcm0gdGhlIHZlcmlmaWNhdGlvbi4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gZW5hY3RfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZTgBHFZlYzx1OD4AAyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AXQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBhcHBseSB0aGUgbmV3IGBjb2RlYCwgYnV0IG9ubHkgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGV0dXBncmFkZSB3aXRoIHRoZSBSZWxheSBDaGFpbi4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BAwiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudFRQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0Ye0CAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRl/QIBVHNwX3RyaWU6OlN0b3JhZ2VQcm9vZgABRGRvd253YXJkX21lc3NhZ2VzRQMBbFZlYzxJbmJvdW5kRG93bndhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNNAwGkQlRyZWVNYXA8UGFyYUlkLCBWZWM8SW5ib3VuZEhybXBNZXNzYWdlPj4AAEUDAAACSQMASQMIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc1hJbmJvdW5kRG93bndhcmRNZXNzYWdlBCxCbG9ja051bWJlcgEQAAgBHHNlbnRfYXQQASxCbG9ja051bWJlcgABDG1zZzgBPERvd253YXJkTWVzc2FnZQAATQMEIEJUcmVlTWFwCARLAeEBBFYBUQMABABZAwAAAFEDAAACVQMAVQMIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyARAACAEcc2VudF9hdBABLEJsb2NrTnVtYmVyAAEQZGF0YTgBUHNwX3N0ZDo6dmVjOjpWZWM8dTg+AABZAwAAAl0DAF0DAAAECOEBUQMAYQMMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEgTE92ZXJsYXBwaW5nVXBncmFkZXMAAAQZAUF0dGVtcHQgdG8gdXBncmFkZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdoaWxlIGV4aXN0aW5nIHVwZ3JhZGUgcGVuZGluZy5QUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQRNAVBvbGthZG90IGN1cnJlbnRseSBwcm9oaWJpdHMgdGhpcyBwYXJhY2hhaW4gZnJvbSB1cGdyYWRpbmcgaXRzIHZhbGlkYXRpb24gZnVuY3Rpb24uGFRvb0JpZwACCEUBVGhlIHN1cHBsaWVkIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGNvbXBpbGVkIGludG8gYSBibG9iIGxhcmdlciB0aGFuIFBvbGthZG90IGlzPHdpbGxpbmcgdG8gcnVuLmhWYWxpZGF0aW9uRGF0YU5vdEF2YWlsYWJsZQADBB0BVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSB2YWxpZGF0aW9uIGRhdGEgZGlkIG5vdCBydW4gdGhpcyBibG9jay50SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUABAQpAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgaG9zdCBjb25maWd1cmF0aW9uIGRpZCBub3QgcnVuIHRoaXMgYmxvY2suME5vdFNjaGVkdWxlZAAFBNhObyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHVwZ3JhZGUgaXMgY3VycmVudGx5IHNjaGVkdWxlZC5ETm90aGluZ0F1dGhvcml6ZWQABgSQTm8gY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAHBLxUaGUgZ2l2ZW4gY29kZSB1cGdyYWRlIGhhcyBub3QgYmVlbiBhdXRob3JpemVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5lAwxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3csASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQMMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQMMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAFxAwRTAAAEAHkDARhWZWM8VD4AAHEDDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQmFsYW5jZUxvY2sEHEJhbGFuY2UBGAAMAQhpZDUBAThMb2NrSWRlbnRpZmllcgABGGFtb3VudBgBHEJhbGFuY2UAARxyZWFzb25zdQMBHFJlYXNvbnMAAHUDDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAAeQMAAAJxAwB9AwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEDBFMAAAQAhQMBGFZlYzxUPgAAgQMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBNQEcQmFsYW5jZQEYAAgBCGlkNQEBRFJlc2VydmVJZGVudGlmaWVyAAEYYW1vdW50GAEcQmFsYW5jZQAAhQMAAAKBAwCJAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0DBFMAAAQAnQMBGFZlYzxUPgAAjQMUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAGRAxxCYWxhbmNlARgACAEIaWSRAwEISWQAARhhbW91bnQYARxCYWxhbmNlAACRAwhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEIUE5mdEZyYWN0aW9uYWxpemF0aW9uBACVAwGgcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbjo6SG9sZFJlYXNvbgA2AEhTdGF0ZVRyaWVNaWdyYXRpb24EAJkDAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgAAlQMMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ4RnJhY3Rpb25hbGl6ZWQAAAAAmQMMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDxTbGFzaEZvck1pZ3JhdGUAAAAAnQMAAAKNAwChAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUDBFMAAAQAqQMBGFZlYzxUPgAApQMUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAHxARxCYWxhbmNlARgACAEIaWTxAQEISWQAARhhbW91bnQYARxCYWxhbmNlAACpAwAAAqUDAK0DDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWwAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlsAEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlsAEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmUgARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudBgBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvxAFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlsAEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb265AwFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRhsAEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWWwAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZSABEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQMMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQAwQWNjb3VudEluZGV4AfEBARQISWQEAAABJEFjY291bnRJZAAAABRJbmRleAQAtQMBMEFjY291bnRJbmRleAABAAxSYXcEADgBHFZlYzx1OD4AAgAkQWRkcmVzczMyBAAEASBbdTg7IDMyXQADACRBZGRyZXNzMjAEAKwBIFt1ODsgMjBdAAQAALUDAAAG8QEAuQMMPHBhbGxldF9iYWxhbmNlcxR0eXBlc0xBZGp1c3RtZW50RGlyZWN0aW9uAAEIIEluY3JlYXNlAAAAIERlY3JlYXNlAAEAAL0DDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7BAwhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAMUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQByQMEUwAABADNAwEYVmVjPFQ+AADJAww4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlARgsQmxvY2tOdW1iZXIBEAAMARhsb2NrZWQYARxCYWxhbmNlAAEkcGVyX2Jsb2NrGAEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrEAEsQmxvY2tOdW1iZXIAAM0DAAACyQMA0QMIOHBhbGxldF92ZXN0aW5nIFJlbGVhc2VzAAEICFYwAAAACFYxAAEAANUDDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQQQ2FsbAQEVAABGBB2ZXN0AAAkuFVubG9jayBhbnkgdmVzdGVkIGZ1bmRzIG9mIHRoZSBzZW5kZXIgYWNjb3VudC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4odmVzdF9vdGhlcgQBGHRhcmdldLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGXJAwGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2WxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARh0YXJnZXSxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZckDAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4EAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4EAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0sQMBjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXgQAQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7ZAww4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0Lt0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBAARTAAAEAMQBGFZlYzxUPgAA4QMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHlAwRTAAAEAOkDARhWZWM8VD4AAOUDDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBABxCYWxhbmNlARgACAEMd2hvAAEkQWNjb3VudElkAAEcZGVwb3NpdBgBHEJhbGFuY2UAAOkDAAAC5QMA7QMMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXfEAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXgQAQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmQYATBCYWxhbmNlT2Y8VD4AAhx4U2V0IHRoZSBjYW5kaWRhY3kgYm9uZCBhbW91bnQuAFEBSWYgdGhlIGNhbmRpZGFjeSBib25kIGlzIGluY3JlYXNlZCBieSB0aGlzIGNhbGwsIGFsbCBjdXJyZW50IGNhbmRpZGF0ZXMgd2hpY2ggaGF2ZSBhTQFkZXBvc2l0IGxvd2VyIHRoYW4gdGhlIG5ldyBib25kIHdpbGwgYmUga2lja2VkIGZyb20gdGhlIGxpc3QgYW5kIGdldCB0aGVpciBkZXBvc2l0cxRiYWNrLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLlRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAxBBAVJlZ2lzdGVyIHRoaXMgYWNjb3VudCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gVGhlIGFjY291bnQgbXVzdCAoYSkgYWxyZWFkeSBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cyBhbmQgKGIpIGJlIGFibGUgdG8gcmVzZXJ2ZSB0aGUgYENhbmRpZGFjeUJvbmRgLgDcVGhpcyBjYWxsIGlzIG5vdCBhdmFpbGFibGUgdG8gYEludnVsbmVyYWJsZWAgY29sbGF0b3JzLjBsZWF2ZV9pbnRlbnQABBRVAURlcmVnaXN0ZXIgYG9yaWdpbmAgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIE5vdGUgdGhhdCB0aGUgY29sbGF0b3IgY2FuIG9ubHkgbGVhdmUgb24NAXNlc3Npb24gY2hhbmdlLiBUaGUgYENhbmRpZGFjeUJvbmRgIHdpbGwgYmUgdW5yZXNlcnZlZCBpbW1lZGlhdGVseS4AGQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSB0b3RhbCBudW1iZXIgb2YgY2FuZGlkYXRlcyB3b3VsZCBkcm9wIGJlbG93XGBNaW5FbGlnaWJsZUNvbGxhdG9yc2AuQGFkZF9pbnZ1bG5lcmFibGUEAQx3aG8AATBUOjpBY2NvdW50SWQABRBFAUFkZCBhIG5ldyBhY2NvdW50IGB3aG9gIHRvIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGB3aG9gIG11c3QgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuIElmIGB3aG9gIGlzIGEgY2FuZGlkYXRlLCB0aGV5IHdpbGwgYmUgcmVtb3ZlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5McmVtb3ZlX2ludnVsbmVyYWJsZQQBDHdobwABMFQ6OkFjY291bnRJZAAGEGEBUmVtb3ZlIGFuIGFjY291bnQgYHdob2AgZnJvbSB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgSW52dWxuZXJhYmxlc2AgbXVzdChiZSBzb3J0ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuLHVwZGF0ZV9ib25kBAEsbmV3X2RlcG9zaXQYATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXQYATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQAATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu8QMMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu9QMAAAL5AwD5AwAABAgA/QMA/QMIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYQEEAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAABBBBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQABAE8c3IyNTUxOTo6UHVibGljAAAFBAAABAgJBDgACQQMHHNwX2NvcmUYY3J5cHRvJEtleVR5cGVJZAAABABIARxbdTg7IDRdAAANBAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0EENhbGwEBFQAAQggc2V0X2tleXMIARBrZXlz/QMBHFQ6OktleXMAARRwcm9vZjgBHFZlYzx1OD4AACTkU2V0cyB0aGUgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlciB0byBga2V5c2AuHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC4ANCMjIENvbXBsZXhpdHlZAS0gYE8oMSlgLiBBY3R1YWwgY29zdCBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgbGVuZ3RoIG9mIGBUOjpLZXlzOjprZXlfaWRzKClgIHdoaWNoIGlzICAgZml4ZWQuKHB1cmdlX2tleXMAATDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4ANCMjIENvbXBsZXhpdHk9AS0gYE8oMSlgIGluIG51bWJlciBvZiBrZXkgdHlwZXMuIEFjdHVhbCBjb3N0IGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBsZW5ndGggb2aYICBgVDo6S2V5czo6a2V5X2lkcygpYCB3aGljaCBpcyBmaXhlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuEQQMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC4VBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQEEBFMAAAQAGQQBGFZlYzxUPgAAGQQAAAIBBAAdBAhIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAMAEMdTY0AAAhBAAABAgdBBAAJQQMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAeEBBFMAAAQAKQQBLEJUcmVlU2V0PFQ+AAApBAQgQlRyZWVTZXQEBFQB4QEABAAtBAAAAC0EAAAC4QEAMQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE1BARTAAAEAD0EARhWZWM8VD4AADUECGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABQBJHJlY2lwaWVudOEBARhQYXJhSWQAARRzdGF0ZTkEATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdCABEGJvb2wAASxmaXJzdF9pbmRleAUCAQx1MTYAAShsYXN0X2luZGV4BQIBDHUxNgAAOQQIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAPQQAAAI1BABBBAAABAjhAQUCAEUEDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAASQQIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZBABDHUzMgABOGRyb3BfdGhyZXNob2xkEAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZBABDHUzMgAATQQMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3EAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXcQAQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldxABDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQQMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuVQQMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgEQAQwcUGVuZGluZxABJHJlc3BvbmRlctEBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXJZBAFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeV0EAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dBABLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbtEBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZSABEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZWUEAURWZXJzaW9uZWRSZXNwb25zZQABCGF0EAEsQmxvY2tOdW1iZXIAAgAAWQQEGE9wdGlvbgQEVAHRAQEIEE5vbmUAAAAQU29tZQQA0QEAAAEAAF0EBBhPcHRpb24EBFQBYQQBCBBOb25lAAAAEFNvbWUEAGEEAAABAABhBAAABAgICABlBAgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYyBABpBAEwdjI6OlJlc3BvbnNlAAIACFYzBAB5BAEwdjM6OlJlc3BvbnNlAAMACFY0BAA9AQEwdjQ6OlJlc3BvbnNlAAQAAGkEDAx4Y20IdjIgUmVzcG9uc2UAARAQTnVsbAAAABhBc3NldHMEAIUBASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAG0EAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAAQAThzdXBlcjo6VmVyc2lvbgADAABtBAQYT3B0aW9uBARUAXEEAQgQTm9uZQAAABBTb21lBABxBAAAAQAAcQQAAAQIEHUEAHUEEAx4Y20IdjIYdHJhaXRzFEVycm9yAAFoIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwBETXVsdGlMb2NhdGlvbkZ1bGwABABoTXVsdGlMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAwAQx1NjQAFQBMVW5oYW5kbGVkWGNtVmVyc2lvbgAWAEhXZWlnaHRMaW1pdFJlYWNoZWQEADABGFdlaWdodAAXABxCYXJyaWVyABgATFdlaWdodE5vdENvbXB1dGFibGUAGQAAeQQMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAuQEBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAQQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EABABOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAB9BAGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAFkBAThNYXliZUVycm9yQ29kZQAFAAB9BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEEBFMAAAQAiQQBGFZlYzxUPgAAgQQMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleKABDHUzMgABEG5hbWWFBAGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZYUEAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yoAEMdTMyAAEUbWlub3KgAQx1MzIAARRwYXRjaKABDHUzMgAAhQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AACJBAAAAoEEAI0EAAAECBDRAQCRBAAABAwwKBAAlQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZBARTAAAEAJ0EARhWZWM8VD4AAJkEAAAECNEBEACdBAAAApkEAKEEDChwYWxsZXRfeGNtGHBhbGxldFRWZXJzaW9uTWlncmF0aW9uU3RhZ2UAARBcTWlncmF0ZVN1cHBvcnRlZFZlcnNpb24AAABcTWlncmF0ZVZlcnNpb25Ob3RpZmllcnMAAQBQTm90aWZ5Q3VycmVudFRhcmdldHMEAKUEATxPcHRpb248VmVjPHU4Pj4AAgBoTWlncmF0ZUFuZE5vdGlmeU9sZFRhcmdldHMAAwAApQQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAACpBAAABAwQAK0EAK0ECAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABCAhWMwQAxQEBLHYzOjpBc3NldElkAAMACFY0BAApAQEsdjQ6OkFzc2V0SWQABAAAsQQMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIB8QEwTWF4Q29uc3VtZXJzAAAQARhhbW91bnQYARB1MTI4AAEUb3duZXLRAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLRAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnO1BAHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAtQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5BARTAAAEAL0EARhWZWM8VD4AALkEAAAECPEBGAC9BAAAArkEAMEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBxQQEUwAABADJBAEYVmVjPFQ+AADFBAAABAgY0QEAyQQAAALFBADNBAwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABOBBzZW5kCAEQZGVzdNEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZdEEAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdNEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnRAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4EBAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtEAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN00QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyedEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzgQEBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZRUFAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAMg0EV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UgZnJvbSBhIGxvY2FsLCBzaWduZWQsIG9yaWdpbi4ATQFBbiBldmVudCBpcyBkZXBvc2l0ZWQgaW5kaWNhdGluZyB3aGV0aGVyIGBtc2dgIGNvdWxkIGJlIGV4ZWN1dGVkIGNvbXBsZXRlbHkgb3Igb25seShwYXJ0aWFsbHkuAF0BTm8gbW9yZSB0aGFuIGBtYXhfd2VpZ2h0YCB3aWxsIGJlIHVzZWQgaW4gaXRzIGF0dGVtcHRlZCBleGVjdXRpb24uIElmIHRoaXMgaXMgbGVzcyB0aGFuQQF0aGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IHRoYXQgdGhlIG1lc3NhZ2UgY291bGQgdGFrZSB0byBiZSBleGVjdXRlZCwgdGhlbiBub3xleGVjdXRpb24gYXR0ZW1wdCB3aWxsIGJlIG1hZGUuRGZvcmNlX3hjbV92ZXJzaW9uCAEgbG9jYXRpb27cATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbhABKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9uGQIBSE9wdGlvbjxYY21WZXJzaW9uPgAFFFkBU2V0IGEgc2FmZSBYQ00gdmVyc2lvbiAodGhlIHZlcnNpb24gdGhhdCBYQ00gc2hvdWxkIGJlIGVuY29kZWQgd2l0aCBpZiB0aGUgbW9zdCByZWNlbnS0dmVyc2lvbiBhIGRlc3RpbmF0aW9uIGNhbiBhY2NlcHQgaXMgdW5rbm93bikuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uOQEtIGBtYXliZV94Y21fdmVyc2lvbmA6IFRoZSBkZWZhdWx0IFhDTSBlbmNvZGluZyB2ZXJzaW9uLCBvciBgTm9uZWAgdG8gZGlzYWJsZS54Zm9yY2Vfc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27RAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAGEDkBQXNrIGEgbG9jYXRpb24gdG8gbm90aWZ5IHVzIHJlZ2FyZGluZyB0aGVpciBYQ00gdmVyc2lvbiBhbmQgYW55IGNoYW5nZXMgdG8gaXQuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uWQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBzaG91bGQgc3Vic2NyaWJlIGZvciBYQ00gdmVyc2lvbiBub3RpZmljYXRpb25zLoBmb3JjZV91bnN1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9u0QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABxhJAVJlcXVpcmUgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gc2hvdWxkIG5vIGxvbmdlciBub3RpZnkgdXMgcmVnYXJkaW5nIGFueSBYQ01AdmVyc2lvbiBjaGFuZ2VzLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLj0BLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2UgYXJlIGN1cnJlbnRseSBzdWJzY3JpYmVkIGZvciBYQ00gdmVyc2lvbqggIG5vdGlmaWNhdGlvbnMgd2hpY2ggd2Ugbm8gbG9uZ2VyIGRlc2lyZS58bGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cxQBEGRlc3TRAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ50QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOBAQFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbRABDHUzMgABMHdlaWdodF9saW1pdH0BASxXZWlnaHRMaW1pdAAIeF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWwseGRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLgA9AWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gYW5kIG1heSBub3QgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC5NASAtIGBhc3NldHNgIGhhdmUgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5VASAtIGBhc3NldHNgIGhhdmUgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLmEBIC0gYGFzc2V0c2AgaGF2ZSByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZWEBICAgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YPQgICB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlxsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0cxQBEGRlc3TRAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ50QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOBAQFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbRABDHUzMgABMHdlaWdodF9saW1pdH0BASxXZWlnaHRMaW1pdAAJSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZWggIGZlZSBvbiB0aGUgYGRlc3RgIGNoYWluLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuQGZvcmNlX3N1c3BlbnNpb24EASRzdXNwZW5kZWQgARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN00QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyedEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzgQEBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAATB3ZWlnaHRfbGltaXR9AQEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c4EBAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ50QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADBhVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdNEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzgQEBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGVBBQFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZK0EAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGVBBQFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3TRBAFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0fQEBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7RBAgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjIEANUEAVB2Mjo6WGNtPFJ1bnRpbWVDYWxsPgACAAhWMwQA9QQBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAARAQFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAA1QQMDHhjbQh2MgxYY20ELFJ1bnRpbWVDYWxsAAAEANkEAXRWZWM8SW5zdHJ1Y3Rpb248UnVudGltZUNhbGw+PgAA2QQAAALdBADdBAwMeGNtCHYyLEluc3RydWN0aW9uBCxSdW50aW1lQ2FsbAABcDRXaXRoZHJhd0Fzc2V0BACFAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBACFAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAhQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UMASBxdWVyeV9pZCwBHFF1ZXJ5SWQAASByZXNwb25zZWkEASBSZXNwb25zZQABKG1heF93ZWlnaHQsAQx1NjQAAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c4UBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5lQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOFAQEsTXVsdGlBc3NldHMAARBkZXN0lQEBNE11bHRpTG9jYXRpb24AAQx4Y23VBAEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl90eXBl4QQBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0LAEMdTY0AAEQY2FsbGkBAWhEb3VibGVFbmNvZGVkPFJ1bnRpbWVDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyoAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZaABDHUzMgABMG1heF9jYXBhY2l0eaABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50oAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcqABDHUzMgABGHNlbmRlcqABDHUzMgABJHJlY2lwaWVudKABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACZAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yDAEgcXVlcnlfaWQsARxRdWVyeUlkAAEQZGVzdJUBATRNdWx0aUxvY2F0aW9uAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAAMADBEZXBvc2l0QXNzZXQMARhhc3NldHPlBAFATXVsdGlBc3NldEZpbHRlcgABKG1heF9hc3NldHOgAQx1MzIAASxiZW5lZmljaWFyeZUBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQQARhhc3NldHPlBAFATXVsdGlBc3NldEZpbHRlcgABKG1heF9hc3NldHOgAQx1MzIAARBkZXN0lQEBNE11bHRpTG9jYXRpb24AAQx4Y23VBAEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0CAEQZ2l2ZeUEAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVjZWl2ZYUBASxNdWx0aUFzc2V0cwAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c+UEAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZZUBATRNdWx0aUxvY2F0aW9uAAEMeGNt1QQBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c+UEAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdJUBATRNdWx0aUxvY2F0aW9uAAEMeGNt1QQBHFhjbTwoKT4AEQAwUXVlcnlIb2xkaW5nEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEQZGVzdJUBATRNdWx0aUxvY2F0aW9uAAEYYXNzZXRz5QQBQE11bHRpQXNzZXRGaWx0ZXIAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0LAEMdTY0ABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXONAQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdPEEASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA1QQBQFhjbTxSdW50aW1lQ2FsbD4AFQAsU2V0QXBwZW5kaXgEANUEAUBYY208UnVudGltZUNhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c4UBASxNdWx0aUFzc2V0cwABGHRpY2tldJUBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAA4QQMDHhjbQh2MihPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAA5QQQDHhjbQh2MihtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAIUBASxNdWx0aUFzc2V0cwAAABBXaWxkBADpBAE4V2lsZE11bHRpQXNzZXQAAQAA6QQQDHhjbQh2MihtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEIDEFsbAAAABRBbGxPZggBCGlkkQEBHEFzc2V0SWQAAQxmdW7tBAE8V2lsZEZ1bmdpYmlsaXR5AAEAAO0EEAx4Y20IdjIobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAA8QQMDHhjbQh2MixXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQALAEMdTY0AAEAAPUEDAx4Y20IdjMMWGNtBBBDYWxsAAAEAPkEAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAD5BAAAAv0EAP0EDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAuQEBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAuQEBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEALkBASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2V5BAEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllcgEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c7kBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5lAE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c7kBASxNdWx0aUFzc2V0cwABEGRlc3SUATRNdWx0aUxvY2F0aW9uAAEMeGNt9QQBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCgBGFdlaWdodAABEGNhbGxpAQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyoAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZaABDHUzMgABMG1heF9jYXBhY2l0eaABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50oAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcqABDHUzMgABGHNlbmRlcqABDHUzMgABJHJlY2lwaWVudKABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACYAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAUFAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMJBQFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5lAE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzCQUBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0lAE0TXVsdGlMb2NhdGlvbgABDHhjbfUEARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlCQUBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50uQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMJBQFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWUATRNdWx0aUxvY2F0aW9uAAEMeGNt9QQBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwkFAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdJQBNE11bHRpTG9jYXRpb24AAQx4Y231BAEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwUFAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwkFAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPBAQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdH0BASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA9QQBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA9QQBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO5AQEsTXVsdGlBc3NldHMAARh0aWNrZXSUATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCgBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC5AQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEALkBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEEBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAWQEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwUFAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleKABDHUzMgABEG5hbWU4ARxWZWM8dTg+AAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAEsY3JhdGVfbWFqb3KgAQx1MzIAATxtaW5fY3JhdGVfbWlub3KgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAUFAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAnAEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuoASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbpgBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbfUEARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0wQEBKE11bHRpQXNzZXQAASB1bmxvY2tlcpQBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMEBAShNdWx0aUFzc2V0AAEYdGFyZ2V0lAE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0wQEBKE11bHRpQXNzZXQAARRvd25lcpQBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0wQEBKE11bHRpQXNzZXQAARhsb2NrZXKUATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAlAE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXR9AQEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4BBQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAAEFBBhPcHRpb24EBFQBlAEIEE5vbmUAAAAQU29tZQQAlAAAAQAABQUMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb26UATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWQsARxRdWVyeUlkAAEobWF4X3dlaWdodCgBGFdlaWdodAAACQUQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEALkBASxNdWx0aUFzc2V0cwAAABBXaWxkBAANBQE4V2lsZE11bHRpQXNzZXQAAQAADQUQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkxQEBHEFzc2V0SWQAAQxmdW4RBQE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAKABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZMUBARxBc3NldElkAAEMZnVuEQUBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50oAEMdTMyAAMAABEFEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAFQUIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYyBAAZBQFQdjI6OlhjbTxSdW50aW1lQ2FsbD4AAgAIVjMEACkFAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQANQUBUHY0OjpYY208UnVudGltZUNhbGw+AAQAABkFDAx4Y20IdjIMWGNtBCxSdW50aW1lQ2FsbAAABAAdBQF0VmVjPEluc3RydWN0aW9uPFJ1bnRpbWVDYWxsPj4AAB0FAAACIQUAIQUMDHhjbQh2MixJbnN0cnVjdGlvbgQsUnVudGltZUNhbGwAAXA0V2l0aGRyYXdBc3NldAQAhQEBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAhQEBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAIUBASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlDAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2VpBAEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0LAEMdTY0AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHOFAQEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeZUBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzhQEBLE11bHRpQXNzZXRzAAEQZGVzdJUBATRNdWx0aUxvY2F0aW9uAAEMeGNt1QQBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fdHlwZeEEAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCwBDHU2NAABEGNhbGwlBQFoRG91YmxlRW5jb2RlZDxSdW50aW1lQ2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcqABDHUzMgABQG1heF9tZXNzYWdlX3NpemWgAQx1MzIAATBtYXhfY2FwYWNpdHmgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudKABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3KgAQx1MzIAARhzZW5kZXKgAQx1MzIAASRyZWNpcGllbnSgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAmQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgwBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABEGRlc3SVAQE0TXVsdGlMb2NhdGlvbgABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQADAAwRGVwb3NpdEFzc2V0DAEYYXNzZXRz5QQBQE11bHRpQXNzZXRGaWx0ZXIAAShtYXhfYXNzZXRzoAEMdTMyAAEsYmVuZWZpY2lhcnmVAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0EAEYYXNzZXRz5QQBQE11bHRpQXNzZXRGaWx0ZXIAAShtYXhfYXNzZXRzoAEMdTMyAAEQZGVzdJUBATRNdWx0aUxvY2F0aW9uAAEMeGNt1QQBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAgBEGdpdmXlBAFATXVsdGlBc3NldEZpbHRlcgABHHJlY2VpdmWFAQEsTXVsdGlBc3NldHMADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPlBAFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWVAQE0TXVsdGlMb2NhdGlvbgABDHhjbdUEARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPlBAFATXVsdGlBc3NldEZpbHRlcgABEGRlc3SVAQE0TXVsdGlMb2NhdGlvbgABDHhjbdUEARxYY208KCk+ABEAMFF1ZXJ5SG9sZGluZxABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABEGRlc3SVAQE0TXVsdGlMb2NhdGlvbgABGGFzc2V0c+UEAUBNdWx0aUFzc2V0RmlsdGVyAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAASADBCdXlFeGVjdXRpb24IARBmZWVzjQEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXTxBAEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABkFAUBYY208UnVudGltZUNhbGw+ABUALFNldEFwcGVuZGl4BAAZBQFAWGNtPFJ1bnRpbWVDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHOFAQEsTXVsdGlBc3NldHMAARh0aWNrZXSVAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAAsAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAACUFDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZDgBHFZlYzx1OD4AACkFDAx4Y20IdjMMWGNtBBBDYWxsAAAEAC0FAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAtBQAAAjEFADEFDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAuQEBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAuQEBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEALkBASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2V5BAEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllcgEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c7kBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5lAE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c7kBASxNdWx0aUFzc2V0cwABEGRlc3SUATRNdWx0aUxvY2F0aW9uAAEMeGNt9QQBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCgBGFdlaWdodAABEGNhbGwlBQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyoAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZaABDHUzMgABMG1heF9jYXBhY2l0eaABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50oAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcqABDHUzMgABGHNlbmRlcqABDHUzMgABJHJlY2lwaWVudKABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACYAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAUFAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMJBQFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5lAE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzCQUBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0lAE0TXVsdGlMb2NhdGlvbgABDHhjbfUEARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlCQUBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50uQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMJBQFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWUATRNdWx0aUxvY2F0aW9uAAEMeGNt9QQBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwkFAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdJQBNE11bHRpTG9jYXRpb24AAQx4Y231BAEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwUFAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwkFAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPBAQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdH0BASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAKQUBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAKQUBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO5AQEsTXVsdGlBc3NldHMAARh0aWNrZXSUATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCgBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC5AQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEALkBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEEBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAWQEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwUFAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleKABDHUzMgABEG5hbWU4ARxWZWM8dTg+AAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAEsY3JhdGVfbWFqb3KgAQx1MzIAATxtaW5fY3JhdGVfbWlub3KgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAUFAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAnAEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuoASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbpgBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbfUEARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0wQEBKE11bHRpQXNzZXQAASB1bmxvY2tlcpQBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMEBAShNdWx0aUFzc2V0AAEYdGFyZ2V0lAE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0wQEBKE11bHRpQXNzZXQAARRvd25lcpQBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0wQEBKE11bHRpQXNzZXQAARhsb2NrZXKUATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAlAE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXR9AQEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4BBQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AADUFDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAOQUBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AADkFAAACPQUAPQUMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0BARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAQEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0BARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABIHJlc3BvbnNlPQEBIFJlc3BvbnNlAAEobWF4X3dlaWdodCgBGFdlaWdodAABHHF1ZXJpZXJhAQFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzHQEBGEFzc2V0cwABLGJlbmVmaWNpYXJ53AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMdAQEYQXNzZXRzAAEQZGVzdNwBIExvY2F0aW9uAAEMeGNtEQEBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZGUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCgBGFdlaWdodAABEGNhbGwlBQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyoAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZaABDHUzMgABMG1heF9jYXBhY2l0eaABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50oAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcqABDHUzMgABGHNlbmRlcqABDHUzMgABJHJlY2lwaWVudKABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADgAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABtAQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzcQEBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnncASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzcQEBLEFzc2V0RmlsdGVyAAEQZGVzdNwBIExvY2F0aW9uAAEMeGNtEQEBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVxAQEsQXNzZXRGaWx0ZXIAARB3YW50HQEBGEFzc2V0cwABHG1heGltYWwgARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzcQEBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZdwBIExvY2F0aW9uAAEMeGNtEQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c3EBASxBc3NldEZpbHRlcgABEGRlc3TcASBMb2NhdGlvbgABDHhjbREBARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvbQEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzcQEBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAQEUQXNzZXQAATB3ZWlnaHRfbGltaXR9AQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEADUFASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEADUFASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQEBGEFzc2V0cwABGHRpY2tldNwBIExvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCgBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAQEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAQEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAYQEBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAEEBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAWQEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb20BAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleKABDHUzMgABEG5hbWU4ARxWZWM8dTg+AAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAEsY3JhdGVfbWFqb3KgAQx1MzIAATxtaW5fY3JhdGVfbWlub3KgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAG0BAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA6AEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvwASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbuABQEludGVyaW9yTG9jYXRpb24AAQx4Y20RAQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUBARRBc3NldAABIHVubG9ja2Vy3AEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUBARRBc3NldAABGHRhcmdldNwBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQlAQEUQXNzZXQAARRvd25lctwBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUBARRBc3NldAABGGxvY2tlctwBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA3AEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0fQEBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luYQEBQE9wdGlvbjxMb2NhdGlvbj4ALwAAQQUQUHN0YWdpbmdfeGNtX2V4ZWN1dG9yGHRyYWl0czhhc3NldF90cmFuc2ZlcjBUcmFuc2ZlclR5cGUAARAgVGVsZXBvcnQAAAAwTG9jYWxSZXNlcnZlAAEASERlc3RpbmF0aW9uUmVzZXJ2ZQACADRSZW1vdGVSZXNlcnZlBADRAQFEVmVyc2lvbmVkTG9jYXRpb24AAwAARQUMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFgLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5JBQxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0FCGBicF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIsQnJpZGdlU3RhdGUAAAgBTGRlbGl2ZXJ5X2ZlZV9mYWN0b3I5AwEkRml4ZWRVMTI4AAEwaXNfY29uZ2VzdGVkIAEQYm9vbAAAUQUMcHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIYcGFsbGV0EENhbGwIBFQABEkAAQRQcmVwb3J0X2JyaWRnZV9zdGF0dXMIASRicmlkZ2VfaWQ0ARBIMjU2AAEwaXNfY29uZ2VzdGVkIAEQYm9vbAAABKhOb3RpZmljYXRpb24gYWJvdXQgY29uZ2VzdGVkIGJyaWRnZSBxdWV1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQUIUHBhbGxldF9tZXNzYWdlX3F1ZXVlJEJvb2tTdGF0ZQQ0TWVzc2FnZU9yaWdpbgHdAQAYARRiZWdpbhABJFBhZ2VJbmRleAABDGVuZBABJFBhZ2VJbmRleAABFGNvdW50EAEkUGFnZUluZGV4AAFAcmVhZHlfbmVpZ2hib3Vyc1kFAYRPcHRpb248TmVpZ2hib3VyczxNZXNzYWdlT3JpZ2luPj4AATRtZXNzYWdlX2NvdW50MAEMdTY0AAEQc2l6ZTABDHU2NAAAWQUEGE9wdGlvbgQEVAFdBQEIEE5vbmUAAAAQU29tZQQAXQUAAAEAAF0FCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZShOZWlnaGJvdXJzBDRNZXNzYWdlT3JpZ2luAd0BAAgBEHByZXbdAQE0TWVzc2FnZU9yaWdpbgABEG5leHTdAQE0TWVzc2FnZU9yaWdpbgAAYQUAAAQI3QEQAGUFCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRBQYWdlCBBTaXplARAgSGVhcFNpemUAABgBJHJlbWFpbmluZxABEFNpemUAAThyZW1haW5pbmdfc2l6ZRABEFNpemUAASxmaXJzdF9pbmRleBABEFNpemUAARRmaXJzdBABEFNpemUAARBsYXN0EAEQU2l6ZQABEGhlYXBpBQGcQm91bmRlZFZlYzx1OCwgSW50b1UzMjxIZWFwU2l6ZSwgU2l6ZT4+AABpBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAG0FDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbt0BAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4EAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2lu3QEBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2UQASRQYWdlSW5kZXgAARRpbmRleBABHFQ6OlNpemUAATB3ZWlnaHRfbGltaXQoARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMucQUMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC51BQw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAARgUYmF0Y2gEARRjYWxsc3kFAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleAUCAQx1MTYAARBjYWxsfQUBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHN5BQF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2luDQYBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGx9BQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHN5BQF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAENHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMu1FVubGlrZSBgYmF0Y2hgLCBpdCBhbGxvd3MgZXJyb3JzIGFuZCB3b24ndCBpbnRlcnJ1cHQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAE0BSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLix3aXRoX3dlaWdodAgBEGNhbGx9BQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodCgBGFdlaWdodAAFGMREaXNwYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHNwZWNpZmllZCB3ZWlnaHQuAC0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhluFJvb3Qgb3JpZ2luIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMueQUAAAJ9BQB9BQhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lLFJ1bnRpbWVDYWxsAAFcGFN5c3RlbQQAgQIBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3lzdGVtLCBSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAD0DAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpblN5c3RlbSwgUnVudGltZT4AAQAkVGltZXN0YW1wBABlAwG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EAGkDAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpbkluZm8sIFJ1bnRpbWU+AAQAIEJhbGFuY2VzBACtAwG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgAcVmVzdGluZwQA1QMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VmVzdGluZywgUnVudGltZT4ADgBEQ29sbGF0b3JTZWxlY3Rpb24EAO0DAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBAANBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAE0EAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAM0EAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBABJBQG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgAExUb1BvbGthZG90WGNtUm91dGVyBABRBQHhAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb1BvbGthZG90WGNtUm91dGVyLCBSdW50aW1lPgAiADBNZXNzYWdlUXVldWUEAG0FAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIwAcVXRpbGl0eQQAdQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEAIEFAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABRQcm94eQQAiQUBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACoAGEFzc2V0cwQAkQUBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRzLCBSdW50aW1lPgAyABxVbmlxdWVzBACVBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVbmlxdWVzLCBSdW50aW1lPgAzABBOZnRzBAClBQGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZnRzLCBSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAD5BQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxGb3JlaWduQXNzZXRzLCBSdW50aW1lPgA1AFBOZnRGcmFjdGlvbmFsaXphdGlvbgQA/QUB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TmZ0RnJhY3Rpb25hbGl6YXRpb24sIFJ1bnRpbWU+ADYAKFBvb2xBc3NldHMEAAEGAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADcAPEFzc2V0Q29udmVyc2lvbgQABQYB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA4AACBBQw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEQUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXPEAURWZWM8VDo6QWNjb3VudElkPgABEGNhbGx9BQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGQFAgEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXPEAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludIUFAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AARBjYWxsfQUBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAGcVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuALBJZiB0aGVyZSBhcmUgZW5vdWdoLCB0aGVuIGRpc3BhdGNoIHRoZSBjYWxsLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgAdAU5PVEU6IFVubGVzcyB0aGlzIGlzIHRoZSBmaW5hbCBhcHByb3ZhbCwgeW91IHdpbGwgZ2VuZXJhbGx5IHdhbnQgdG8gdXNlGQFgYXBwcm92ZV9hc19tdWx0aWAgaW5zdGVhZCwgc2luY2UgaXQgb25seSByZXF1aXJlcyBhIGhhc2ggb2YgdGhlIGNhbGwuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGQFAgEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXPEAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludIUFAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gEASBbdTg7IDMyXQABKG1heF93ZWlnaHQoARhXZWlnaHQAAnhVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA1AU5PVEU6IElmIHRoaXMgaXMgdGhlIGZpbmFsIGFwcHJvdmFsLCB5b3Ugd2lsbCB3YW50IHRvIHVzZSBgYXNfbXVsdGlgIGluc3RlYWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZAUCAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc8QBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50+QEBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gEASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuhQUEGE9wdGlvbgQEVAH5AQEIEE5vbmUAAAAQU29tZQQA+QEAAAEAAIkFDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASgUcHJveHkMARByZWFssQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZY0FAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGx9BQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlAQIBMFQ6OlByb3h5VHlwZQABFGRlbGF5EAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUBAgEwVDo6UHJveHlUeXBlAAEUZGVsYXkQAURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAEEBV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYHB1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZQECATBUOjpQcm94eVR5cGUAARRkZWxheRABREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXgFAgEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZQECATBUOjpQcm94eVR5cGUAARRpbmRleAUCAQx1MTYAARhoZWlnaHSgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleKABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+UYHB1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgA5AS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBwdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LjkBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYHB1cmVgLiBQcm9iYWJseSBgMGAu7C0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgcHVyZWAuKQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBwdXJlYCB3YXMgcHJvY2Vzc2VkLjUBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZdxhY2NvdW50IHdob3NlIGBwdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDQBNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFssQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoNAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoNAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWyxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBljQUBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbH0FAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLo0FBBhPcHRpb24EBFQBAQIBCBBOb25lAAAAEFNvbWUEAAECAAABAACRBQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABgBhjcmVhdGUMAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlGAEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnQgARBib29sAAEsbWluX2JhbGFuY2WwAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACLNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A+FRoZSBhc3NldCBjbGFzcyBtdXN0IGJlIGZyb3plbiBiZWZvcmUgY2FsbGluZyBgc3RhcnRfZGVzdHJveWAuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnmxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2WxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lOAEcVmVjPHU4PgABGHN5bWJvbDgBHFZlYzx1OD4AASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZbABKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50IAEQYm9vbAABJGlzX2Zyb3plbiABEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb26xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuIAEQYm9vbAAbKFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWSgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZKABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG+xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSiIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAGEBLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQgYnkgYEZyZWV6ZXJgIG9yIGBBZG1pbmAgb2YgdGhlIGFzc2V0IGBpZGA7IHRoZSBzaWduZXIgYWNjb3VudNwgIG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeKF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkoAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6VBQw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWlusQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AABACQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4ArGBJdGVtRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6YQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBjb2xsZWN0aW9uLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuRQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmcgARBib29sAAFEGQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAEkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlLjkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyNCAgcGVybWlzc2lvbnMhAW92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzc5kFAThEZXN0cm95V2l0bmVzcwACPJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgBkV2VpZ2h0OiBgTyhuICsgbSlgIHdoZXJlOlQtIGBuID0gd2l0bmVzcy5pdGVtc2B4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFG93bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAMsoE1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbi4AQQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC7ILSBgaXRlbWA6IFRoZSBpdGVtIHZhbHVlIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC7YLSBgYmVuZWZpY2lhcnlgOiBUaGUgaW5pdGlhbCBvd25lciBvZiB0aGUgbWludGVkIGl0ZW0uAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBBidXJuDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASxjaGVja19vd25lcp0FAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAQ8WERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsA4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQusC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQuUQEtIGBjaGVja19vd25lcmA6IElmIGBTb21lYCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIHdpdGggYFdyb25nT3duZXJgIHVubGVzcyB0aGV4ICBpdGVtIGlzIG93bmVkIGJ5IHRoaXMgdmFsdWUuALRFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4AOFdlaWdodDogYE8oMSlgfE1vZGVzOiBgY2hlY2tfb3duZXIuaXNfc29tZSgpYC4gdHJhbnNmZXIMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABEGRlc3SxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zFQIBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADDDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIHRlYW0gc2hvdWxkIGJlIGNoYW5nZWQuuC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgY29sbGVjdGlvbi6wLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi7ALSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGNvbGxlY3Rpb24uAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADTgVAUFwcHJvdmUgYW4gaXRlbSB0byBiZSB0cmFuc2ZlcnJlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBNAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJl+GVpdGhlciB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYCBvciB0aGUgYWRtaW4gb2YgdGhlIGNvbGxlY3Rpb24uAEUBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuFQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS4AGQFJbXBvcnRhbnQgTk9URTogVGhlIGBhcHByb3ZlZGAgYWNjb3VudCBnZXRzIHJlc2V0IGFmdGVyIGVhY2ggdHJhbnNmZXIuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAFQbWF5YmVfY2hlY2tfZGVsZWdhdGWdBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAOQBEBQ2FuY2VsIHRoZSBwcmlvciBhcHByb3ZhbCBmb3IgdGhlIHRyYW5zZmVyIG9mIGFuIGl0ZW0gYnkgYSBkZWxlZ2F0ZS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW47/C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4NAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC5RAS0gYG1heWJlX2NoZWNrX2RlbGVnYXRlYDogSWYgYFNvbWVgIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGdpdmVuIGFjY291bnQgaXMgdGhlIG9uZSB0b7AgIHdoaWNoIHBlcm1pc3Npb24gb2YgdHJhbnNmZXIgaXMgZGVsZWdhdGVkLgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEZm9yY2VfaXRlbV9zdGF0dXMcAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmcgARBib29sAAEkaXNfZnJvemVuIAEQYm9vbAAPQJRBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGl0ZW0uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLpgtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBpdGVtLqAtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGl0ZW0umC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGl0ZW0uqC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBpdGVtLlEBLSBgZnJlZV9ob2xkaW5nYDogV2hldGhlciBhIGRlcG9zaXQgaXMgdGFrZW4gZm9yIGhvbGRpbmcgYW4gaXRlbSBvZiB0aGlzIGNvbGxlY3Rpb24uOQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgY29sbGVjdGlvbiBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDgRW1pdHMgYEl0ZW1TdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgaXRlbS4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbRkCAURPcHRpb248VDo6SXRlbUlkPgABDGtleR0CAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZSECAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtGQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5HQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAROLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABEGRhdGERAgF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGERAgF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAAUQIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC41AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBmcm96ZW4gYWdhaW5zdCBmdXJ0aGVyIGNoYW5nZXMuAHhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgZGNsZWFyX2NvbGxlY3Rpb25fbWV0YWRhdGEEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkABUwkENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgAlAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AiEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgUHNldF9hY2NlcHRfb3duZXJzaGlwBAFAbWF5YmVfY29sbGVjdGlvbhkCAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseRABDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNloQUBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKdBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASRiaWRfcHJpY2UYATxJdGVtUHJpY2U8VCwgST4AGSSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkFDDhwYWxsZXRfdW5pcXVlcxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAEUaXRlbXOgAQx1MzIAAThpdGVtX21ldGFkYXRhc6ABDHUzMgABKGF0dHJpYnV0ZXOgAQx1MzIAAJ0FBBhPcHRpb24EBFQBsQMBCBBOb25lAAAAEFNvbWUEALEDAAABAAChBQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAKUFDCxwYWxsZXRfbmZ0cxhwYWxsZXQQQ2FsbAgEVAAESQABnBhjcmVhdGUIARRhZG1pbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ6kFAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ6kFAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAE8GQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuADkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyWQEgIHBlcm1pc3Npb25zIG92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5ggIGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzxQUBOERlc3Ryb3lXaXRuZXNzAAJEnERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDcTk9URTogVGhlIGNvbGxlY3Rpb24gbXVzdCBoYXZlIDAgaXRlbXMgdG8gYmUgZGVzdHJveWVkLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAHRXZWlnaHQ6IGBPKG0gKyBjICsgYSlgIHdoZXJlOngtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BwLSBgYyA9IHdpdG5lc3MuaXRlbV9jb25maWdzYGgtIGBhID0gd2l0bmVzcy5hdHRyaWJ1dGVzYBBtaW50EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARxtaW50X3RvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwd2l0bmVzc19kYXRhyQUB2E9wdGlvbjxNaW50V2l0bmVzczxUOjpJdGVtSWQsIERlcG9zaXRCYWxhbmNlT2Y8VCwgST4+PgADQKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGNvbXBseSB3aXRoIHRoZSBgbWludF9zZXR0aW5nc2AgcnVsZXMuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuRQEtIGB3aXRuZXNzX2RhdGFgOiBXaGVuIHRoZSBtaW50IHR5cGUgaXMgYEhvbGRlck9mKGNvbGxlY3Rpb25faWQpYCwgdGhlbiB0aGUgb3duZWRZASAgaXRlbV9pZCBmcm9tIHRoYXQgY29sbGVjdGlvbiBuZWVkcyB0byBiZSBwcm92aWRlZCB3aXRoaW4gdGhlIHdpdG5lc3MgZGF0YSBvYmplY3QuIElmYQEgIHRoZSBtaW50IHByaWNlIGlzIHNldCwgdGhlbiBpdCBzaG91bGQgYmUgYWRkaXRpb25hbGx5IGNvbmZpcm1lZCBpbiB0aGUgYHdpdG5lc3NfZGF0YWAuAFEBTm90ZTogdGhlIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBgb3JpZ2luYCBhbmQgbm90IHRoZSBgb3duZXJgIG9mIHRoZSBgaXRlbWAuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYChmb3JjZV9taW50EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARxtaW50X3RvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWfRBQEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEQZGVzdLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGOMBNb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjpoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC6ULSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zFQIBOFZlYzxUOjpJdGVtSWQ+AAdEnFJlLWV2YWx1YXRlIHRoZSBkZXBvc2l0cyBvbiBzb21lIGl0ZW1zLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPgtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW1zIHRvIGJlIHJlZXZhbHVhdGVkLikBLSBgaXRlbXNgOiBUaGUgaXRlbXMgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgZGVwb3NpdHMgd2lsbCBiZSByZWV2YWx1YXRlZC4ALQFOT1RFOiBUaGlzIGV4aXN0cyBhcyBhIGJlc3QtZWZmb3J0IGZ1bmN0aW9uLiBBbnkgaXRlbXMgd2hpY2ggYXJlIHVua25vd24gb3I5AWluIHRoZSBjYXNlIHRoYXQgdGhlIG93bmVyIGFjY291bnQgZG9lcyBub3QgaGF2ZSByZXNlcnZhYmxlIGZ1bmRzIHRvIHBheSBmb3IgYU0BZGVwb3NpdCBpbmNyZWFzZSBhcmUgaWdub3JlZC4gR2VuZXJhbGx5IHRoZSBvd25lciBpc24ndCBnb2luZyB0byBjYWxsIHRoaXMgb24gaXRlbXNVAXdob3NlIGV4aXN0aW5nIGRlcG9zaXQgaXMgbGVzcyB0aGFuIHRoZSByZWZyZXNoZWQgZGVwb3NpdCBhcyBpdCB3b3VsZCBvbmx5IGNvc3QgdGhlbSx4c28gaXQncyBvZiBsaXR0bGUgY29uc2VxdWVuY2UuAFkBSXQgd2lsbCBzdGlsbCByZXR1cm4gYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY29sbGVjdGlvbiBpcyB1bmtub3duIG9yIHRoZSBzaWduZXJwaXMgbm90IHBlcm1pdHRlZCB0byBjYWxsIGl0LgBgV2VpZ2h0OiBgTyhpdGVtcy5sZW4oKSlgSGxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAgoyERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuuC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgbm9uLXRyYW5zZmVyYWJsZS4AbEVtaXRzIGBJdGVtVHJhbnNmZXJMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBQdW5sb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAAJKKhSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC6oLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSB0cmFuc2ZlcmFibGUuAHRFbWl0cyBgSXRlbVRyYW5zZmVyVW5sb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA8bG9ja19jb2xsZWN0aW9uCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABNGxvY2tfc2V0dGluZ3OtBQFIQ29sbGVjdGlvblNldHRpbmdzAAow2ERpc2FsbG93cyBzcGVjaWZpZWQgc2V0dGluZ3MgZm9yIHRoZSB3aG9sZSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgbG9ja2VkLrQtIGBsb2NrX3NldHRpbmdzYDogVGhlIHNldHRpbmdzIHRvIGJlIGxvY2tlZC4AHQFOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgbG9jayhzZXQpIHRoZSBzZXR0aW5nLCBidXQgbm90IHRvIHVuc2V0IGl0LgBkRW1pdHMgYENvbGxlY3Rpb25Mb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3Vlcp0FAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEUYWRtaW6dBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABHGZyZWV6ZXKdBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAMQNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBTm90ZTogYnkgc2V0dGluZyB0aGUgcm9sZSB0byBgTm9uZWAgb25seSB0aGUgYEZvcmNlT3JpZ2luYCB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIGl0ZGFmdGVyIHRvIGBTb21lKGFjY291bnQpYC4A8C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSB0ZWFtIHNob3VsZCBiZSBjaGFuZ2VkLrgtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGNvbGxlY3Rpb24usC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uwC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgWGZvcmNlX2NvbGxlY3Rpb25fb3duZXIIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWepBQFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAThtYXliZV9kZWFkbGluZRkCAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AA84FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLuQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS5JAS0gYG1heWJlX2RlYWRsaW5lYDogT3B0aW9uYWwgZGVhZGxpbmUgZm9yIHRoZSBhcHByb3ZhbC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGXYCW51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggdGhlIGFwcHJvdmFsIHdpbGwgZXhwaXJlAJBFbWl0cyBgVHJhbnNmZXJBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhIAEQYm9vbAABPGxvY2tfYXR0cmlidXRlcyABEGJvb2wAEkToRGlzYWxsb3dzIGNoYW5naW5nIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgBBAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluUG9mIHRoZSBgY29sbGVjdGlvbmAuALQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gaWYgdGhlIGBpdGVtYC58LSBgaXRlbWA6IEFuIGl0ZW0gdG8gYmUgbG9ja2VkLg0BLSBgbG9ja19tZXRhZGF0YWA6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgbG9ja2VkLmEBLSBgbG9ja19hdHRyaWJ1dGVzYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZUwgIHNob3VsZCBiZSBsb2NrZWQuAF0BTm90ZTogYGxvY2tfYXR0cmlidXRlc2AgYWZmZWN0cyB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlIG9ubHkuRQFXaGVuIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQsIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRoZSB1bmxvY2sgdGhlbS4AdEVtaXRzIGBJdGVtUHJvcGVydGllc0xvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDRzZXRfYXR0cmlidXRlFAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW0ZAgFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2UxAgGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXkhAgFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWUtAgF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hcyUCAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtGQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlMQIBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5IQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlLQIBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABREwEZvcmNlLXNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AOQFJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIGFuZCBpdCB3YXMgc2V0IGJ5IGFub3RoZXIgYWNjb3VudCwgdGhlIGRlcG9zaXScd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgcHJldmlvdXMgb3duZXIuALwtIGBzZXRfYXNgOiBBbiBvcHRpb25hbCBvd25lciBvZiB0aGUgYXR0cmlidXRlLjkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZRABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtGQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlMQIBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5IQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAVPLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZShhdHRyaWJ1dGUuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXGFwcHJvdmVfaXRlbV9hdHRyaWJ1dGVzDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAWJC0BQXBwcm92ZSBpdGVtJ3MgYXR0cmlidXRlcyB0byBiZSBjaGFuZ2VkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ApC0gYGNvbGxlY3Rpb25gOiBBIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMuSQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uALxFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBvbiBzdWNjZXNzLnxjYW5jZWxfaXRlbV9hdHRyaWJ1dGVzX2FwcHJvdmFsEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3PVBQF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARBkYXRhLQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhLQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9uGQIBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABwoEQFTZXQgKG9yIHJlc2V0KSB0aGUgYWNjZXB0YW5jZSBvZiBvd25lcnNoaXAgZm9yIGEgcGFydGljdWxhciBhY2NvdW50LgBhAU9yaWdpbiBtdXN0IGJlIGBTaWduZWRgIGFuZCBpZiBgbWF5YmVfY29sbGVjdGlvbmAgaXMgYFNvbWVgLCB0aGVuIHRoZSBzaWduZXIgbXVzdCBoYXZlIGFMcHJvdmlkZXIgcmVmZXJlbmNlLgBRAS0gYG1heWJlX2NvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBvd25lcnNoaXAgdGhlIHNpZ25lciBpc2EBICB3aWxsaW5nIHRvIGFjY2VwdCwgb3IgaWYgYE5vbmVgLCBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNpZ25lciBpcyB3aWxsaW5nIHRvIGFjY2VwdCBub1wgIG93bmVyc2hpcCB0cmFuc2ZlcmFsLgCMRW1pdHMgYE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkYC5kc2V0X2NvbGxlY3Rpb25fbWF4X3N1cHBseQgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5EAEMdTMyAB0k4FNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLlB1cGRhdGVfbWludF9zZXR0aW5ncwgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATRtaW50X3NldHRpbmdztQUBBQFNaW50U2V0dGluZ3M8QmFsYW5jZU9mPFQsIEk+LCBCbG9ja051bWJlckZvcjxUPiwgVDo6Q29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNloQUBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKdBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABJGJpZF9wcmljZRgBPEl0ZW1QcmljZTxULCBJPgAgJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4gcGF5X3RpcHMEARB0aXBz2QUBnEJvdW5kZWRWZWM8SXRlbVRpcE9mPFQsIEk+LCBUOjpNYXhUaXBzPgAhHFxBbGxvd3MgdG8gcGF5IHRoZSB0aXBzLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBULSBgdGlwc2A6IFRpcHMgYXJyYXkuAJhFbWl0cyBgVGlwU2VudGAgb24gZXZlcnkgdGlwIHRyYW5zZmVyLixjcmVhdGVfc3dhcBgBSG9mZmVyZWRfY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbRABJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABSG1heWJlX2Rlc2lyZWRfaXRlbRkCAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlNQIBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbhABREJsb2NrTnVtYmVyRm9yPFQ+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtEAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtEAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtEAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZTUCAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGHlBQFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmXpBQFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIAATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRh9QUBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZekFAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgABMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuqQUMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlARgsQmxvY2tOdW1iZXIBEDBDb2xsZWN0aW9uSWQBEAAMASBzZXR0aW5nc60FAUhDb2xsZWN0aW9uU2V0dGluZ3MAAShtYXhfc3VwcGx5GQIBLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc7UFAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AACtBQwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBsQUABAAwAURDb2xsZWN0aW9uU2V0dGluZwAAsQUMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAAC1BQwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQEYLEJsb2NrTnVtYmVyARAwQ29sbGVjdGlvbklkARAAFAEkbWludF90eXBluQUBWE1pbnRUeXBlPENvbGxlY3Rpb25JZD4AARRwcmljZaEFATRPcHRpb248UHJpY2U+AAEsc3RhcnRfYmxvY2sZAgFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9jaxkCAUxPcHRpb248QmxvY2tOdW1iZXI+AAFUZGVmYXVsdF9pdGVtX3NldHRpbmdzvQUBMEl0ZW1TZXR0aW5ncwAAuQUMLHBhbGxldF9uZnRzFHR5cGVzIE1pbnRUeXBlBDBDb2xsZWN0aW9uSWQBEAEMGElzc3VlcgAAABhQdWJsaWMAAQAgSG9sZGVyT2YEABABMENvbGxlY3Rpb25JZAACAAC9BQwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBwQUABAAwASxJdGVtU2V0dGluZwAAwQUMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1TZXR0aW5nAAEMMFRyYW5zZmVyYWJsZQABAEBVbmxvY2tlZE1ldGFkYXRhAAIASFVubG9ja2VkQXR0cmlidXRlcwAEAADFBQwscGFsbGV0X25mdHMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBOGl0ZW1fbWV0YWRhdGFzoAEMdTMyAAEwaXRlbV9jb25maWdzoAEMdTMyAAEoYXR0cmlidXRlc6ABDHUzMgAAyQUEGE9wdGlvbgQEVAHNBQEIEE5vbmUAAAAQU29tZQQAzQUAAAEAAM0FDCxwYWxsZXRfbmZ0cxR0eXBlcyxNaW50V2l0bmVzcwgYSXRlbUlkARAcQmFsYW5jZQEYAAgBKG93bmVkX2l0ZW0ZAgE4T3B0aW9uPEl0ZW1JZD4AAShtaW50X3ByaWNloQUBPE9wdGlvbjxCYWxhbmNlPgAA0QUMLHBhbGxldF9uZnRzFHR5cGVzKEl0ZW1Db25maWcAAAQBIHNldHRpbmdzvQUBMEl0ZW1TZXR0aW5ncwAA1QUMLHBhbGxldF9uZnRzFHR5cGVzfENhbmNlbEF0dHJpYnV0ZXNBcHByb3ZhbFdpdG5lc3MAAAQBSGFjY291bnRfYXR0cmlidXRlcxABDHUzMgAA2QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHdBQRTAAAEAOEFARhWZWM8VD4AAN0FDCxwYWxsZXRfbmZ0cxR0eXBlcxxJdGVtVGlwEDBDb2xsZWN0aW9uSWQBEBhJdGVtSWQBECRBY2NvdW50SWQBABhBbW91bnQBGAAQAShjb2xsZWN0aW9uEAEwQ29sbGVjdGlvbklkAAEQaXRlbRABGEl0ZW1JZAABIHJlY2VpdmVyAAEkQWNjb3VudElkAAEYYW1vdW50GAEYQW1vdW50AADhBQAAAt0FAOUFDCxwYWxsZXRfbmZ0cxR0eXBlczRQcmVTaWduZWRNaW50FDBDb2xsZWN0aW9uSWQBEBhJdGVtSWQBECRBY2NvdW50SWQBACBEZWFkbGluZQEQHEJhbGFuY2UBGAAcAShjb2xsZWN0aW9uEAEwQ29sbGVjdGlvbklkAAEQaXRlbRABGEl0ZW1JZAABKGF0dHJpYnV0ZXOFAgFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASBtZXRhZGF0YTgBHFZlYzx1OD4AATBvbmx5X2FjY291bnQlAgFET3B0aW9uPEFjY291bnRJZD4AASBkZWFkbGluZRABIERlYWRsaW5lAAEobWludF9wcmljZaEFATxPcHRpb248QmFsYW5jZT4AAOkFCChzcF9ydW50aW1lOE11bHRpU2lnbmF0dXJlAAEMHEVkMjU1MTkEAO0FAUhlZDI1NTE5OjpTaWduYXR1cmUAAAAcU3IyNTUxOQQA7QUBSHNyMjU1MTk6OlNpZ25hdHVyZQABABRFY2RzYQQA8QUBQGVjZHNhOjpTaWduYXR1cmUAAgAA7QUAAANAAAAACADxBQAAA0EAAAAIAPUFDCxwYWxsZXRfbmZ0cxR0eXBlc0xQcmVTaWduZWRBdHRyaWJ1dGVzEDBDb2xsZWN0aW9uSWQBEBhJdGVtSWQBECRBY2NvdW50SWQBACBEZWFkbGluZQEQABQBKGNvbGxlY3Rpb24QATBDb2xsZWN0aW9uSWQAARBpdGVtEAEYSXRlbUlkAAEoYXR0cmlidXRlc4UCAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABJG5hbWVzcGFjZTECAXRBdHRyaWJ1dGVOYW1lc3BhY2U8QWNjb3VudElkPgABIGRlYWRsaW5lEAEgRGVhZGxpbmUAAPkFDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGAGGNyZWF0ZQwBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWlusQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudCABEGJvb2wAASxtaW5fYmFsYW5jZbABKFQ6OkJhbGFuY2UAAUz4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAIs3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgD4VGhlIGFzc2V0IGNsYXNzIG11c3QgYmUgZnJvemVuIGJlZm9yZSBjYWxsaW5nIGBzdGFydF9kZXN0cm95YC5AZGVzdHJveV9hY2NvdW50cwQBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyebEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG+xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXSxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3SxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG+xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG+xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWlusQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZTgBHFZlYzx1OD4AARhzeW1ib2w4ARxWZWM8dTg+AAEgZGVjaW1hbHMIAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWlusQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlsAEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnQgARBib29sAAEkaXNfZnJvemVuIAEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm4gARBib29sABsoWQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZRgBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdKIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AYQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZCBieSBgRnJlZXplcmAgb3IgYEFkbWluYCBvZiB0aGUgYXNzZXQgYGlkYDsgdGhlIHNpZ25lciBhY2NvdW503CAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdCB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AB4oXQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLv0FDHBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uGHBhbGxldBBDYWxsBARUAAEINGZyYWN0aW9uYWxpemUUAURuZnRfY29sbGVjdGlvbl9pZBABSFQ6Ok5mdENvbGxlY3Rpb25JZAABGG5mdF9pZBABIFQ6Ok5mdElkAAEgYXNzZXRfaWQQATBBc3NldElkT2Y8VD4AASxiZW5lZmljaWFyebEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGZyYWN0aW9ucxgBREFzc2V0QmFsYW5jZU9mPFQ+AABErExvY2sgdGhlIE5GVCBhbmQgbWludCBhIG5ldyBmdW5naWJsZSBhc3NldC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4BAVRoZSBvcmlnaW4gbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIE5GVCB0aGV5IGFyZSB0cnlpbmcgdG8gbG9jay4AnGBEZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAlAS0gYG5mdF9jb2xsZWN0aW9uX2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvbGxlY3Rpb24gb2YgdGhlIE5GVC6wSXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9uZnRzYC4hAS0gYG5mdF9pZGA6IFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBORlQgd2l0aGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLuQtIGBhc3NldF9pZGA6IFRoZSBJRCBvZiB0aGUgbmV3IGFzc2V0LiBJdCBtdXN0IG5vdCBleGlzdC64SXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9hc3NldHNgLh0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbmV3bHkgY3JlYXRlZCBhc3NldC4NAS0gYGZyYWN0aW9uc2A6IFRoZSB0b3RhbCBpc3N1YW5jZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBhc3NldCBjbGFzcy4AwEVtaXRzIGBOZnRGcmFjdGlvbmFsaXplZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhR1bmlmeRABRG5mdF9jb2xsZWN0aW9uX2lkEAFIVDo6TmZ0Q29sbGVjdGlvbklkAAEYbmZ0X2lkEAEgVDo6TmZ0SWQAASBhc3NldF9pZBABMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAFARQFCdXJuIHRoZSB0b3RhbCBpc3N1YW5jZSBvZiB0aGUgZnVuZ2libGUgYXNzZXQgYW5kIHJldHVybiAodW5sb2NrKSB0aGUgbG9ja2VkIE5GVC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4A0GBEZXBvc2l0YCBmdW5kcyB3aWxsIGJlIHJldHVybmVkIHRvIGBhc3NldF9jcmVhdG9yYC4AJQEtIGBuZnRfY29sbGVjdGlvbl9pZGA6IFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjb2xsZWN0aW9uIG9mIHRoZSBORlQusElzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWxsZXRfbmZ0c2AuIQEtIGBuZnRfaWRgOiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgTkZUIHdpdGhpbiB0aGUgZ2l2ZW4gY29sbGVjdGlvbi6wSXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9uZnRzYC4pAS0gYGFzc2V0X2lkYDogVGhlIElEIG9mIHRoZSBhc3NldCBiZWluZyByZXR1cm5lZCBhbmQgZGVzdHJveWVkLiBNdXN0IG1hdGNo/HRoZSBvcmlnaW5hbCBJRCBvZiB0aGUgY3JlYXRlZCBhc3NldCwgY29ycmVzcG9uZGluZyB0byB0aGUgTkZULrhJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X2Fzc2V0c2Au/C0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHVuaWZpZWQgTkZULgCkRW1pdHMgYE5mdFVuaWZpZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuAQYMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYAYY3JlYXRlDAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW6xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZRgBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXKxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50IAEQYm9vbAABLG1pbl9iYWxhbmNlsAEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAizcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAPhUaGUgYXNzZXQgY2xhc3MgbXVzdCBiZSBmcm96ZW4gYmVmb3JlIGNhbGxpbmcgYHN0YXJ0X2Rlc3Ryb3lgLkBkZXN0cm95X2FjY291bnRzBAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5sQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXSxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSwAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdLEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob7EDAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW6xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lOAEcVmVjPHU4PgABGHN5bWJvbDgBHFZlYzx1OD4AASBkZWNpbWFscwgBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZTgBHFZlYzx1OD4AARhzeW1ib2w4ARxWZWM8dTg+AAEgZGVjaW1hbHMIAQh1OAABJGlzX2Zyb3plbiABEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW6xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2WwAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudCABEGJvb2wAASRpc19mcm96ZW4gARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZbEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLABKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVysQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGWxAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcrEDAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9usQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50sAEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybiABEGJvb2wAGyhZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlGAEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvsQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AB0oiENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBhAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkIGJ5IGBGcmVlemVyYCBvciBgQWRtaW5gIG9mIHRoZSBhc3NldCBgaWRgOyB0aGUgc2lnbmVyIGFjY291bnTcICBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0IHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG+xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AHihdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG+xAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuBQYMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBBDYWxsBARUAAEYLGNyZWF0ZV9wb29sCAEYYXNzZXQxlAFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDKUAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDGUAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MpQBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVkGAEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZBgBKFQ6OkJhbGFuY2UAASxhbW91bnQxX21pbhgBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pbhgBKFQ6OkJhbGFuY2UAARxtaW50X3RvAAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbNhbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHN1Y2Nlc3NmdWxseS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MZQBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQylAFEQm94PFQ6OkFzc2V0S2luZD4AATRscF90b2tlbl9idXJuGAEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmUYAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZRgBKFQ6OkJhbGFuY2UAASx3aXRoZHJhd190bwABMFQ6OkFjY291bnRJZAACDE0BQWxsb3dzIHlvdSB0byByZW1vdmUgbGlxdWlkaXR5IGJ5IHByb3ZpZGluZyB0aGUgYGxwX3Rva2VuX2J1cm5gIHRva2VucyB0aGF0IHdpbGwgYmVRAWJ1cm5lZCBpbiB0aGUgcHJvY2Vzcy4gV2l0aCB0aGUgdXNhZ2Ugb2YgYGFtb3VudDFfbWluX3JlY2VpdmVgL2BhbW91bnQyX21pbl9yZWNlaXZlYDUBaXQncyBwb3NzaWJsZSB0byBjb250cm9sIHRoZSBtaW4gYW1vdW50IG9mIHJldHVybmVkIHRva2VucyB5b3UncmUgaGFwcHkgd2l0aC5wc3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2VucxQBEHBhdGgJBgFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABJGFtb3VudF9pbhgBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbhgBKFQ6OkJhbGFuY2UAARxzZW5kX3RvAAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZSABEGJvb2wAAxjAU3dhcCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGludG8gYGFzc2V0MmAuLQFgYW1vdW50X291dF9taW5gIHBhcmFtIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbWluIGFtb3VudCBvZiB0aGUgYGFzc2V0MmBgeW91J3JlIGhhcHB5IHRvIHJlY2VpdmUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUucHN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMUARBwYXRoCQYBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AAShhbW91bnRfb3V0GAEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXgYAShUOjpCYWxhbmNlAAEcc2VuZF90bwABMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmUgARBib29sAAQYAQFTd2FwIGFueSBhbW91bnQgb2YgYGFzc2V0MWAgdG8gZ2V0IHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuGQFgYW1vdW50X2luX21heGAgcGFyYW0gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIG1heCBhbW91bnQgb2YgdGhlIGBhc3NldDFgYHlvdSdyZSBoYXBweSB0byBwcm92aWRlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLhR0b3VjaAgBGGFzc2V0MZQBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQylAFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy4JBgAAApQADQYIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZTBPcmlnaW5DYWxsZXIAARAYc3lzdGVtBAARBgF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EABUGAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAGQYBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAEFZvaWQEAB0GAUEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OgpfX3ByaXZhdGU6OlZvaWQAAwAAEQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBAAEMEFJvb3QAAAAYU2lnbmVkBAAAASRBY2NvdW50SWQAAQAQTm9uZQACAAAVBgwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQA3AEgTG9jYXRpb24AAAAgUmVzcG9uc2UEANwBIExvY2F0aW9uAAEAABkGDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBADhAQEYUGFyYUlkAAEAAB0GCBxzcF9jb3JlEFZvaWQAAQAAIQYMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuJQYAAAQIAAQAKQYIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBEBxCYWxhbmNlARgkQWNjb3VudElkAQAwTWF4QXBwcm92YWxzAAAQARB3aGVu+QEBWFRpbWVwb2ludDxCbG9ja051bWJlcj4AARxkZXBvc2l0GAEcQmFsYW5jZQABJGRlcG9zaXRvcgABJEFjY291bnRJZAABJGFwcHJvdmFscy0GAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAALQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEABFMAAAQAxAEYVmVjPFQ+AAAxBgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBNxNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIHdoZW4gYXR0ZW1wdGluZyB0byBjYW5jZWwuIE5vdE93bmVyAAgELQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdC4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC41BgAABAg5BhgAOQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE9BgRTAAAEAEEGARhWZWM8VD4AAD0GCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBACRQcm94eVR5cGUBAQIsQmxvY2tOdW1iZXIBEAAMASBkZWxlZ2F0ZQABJEFjY291bnRJZAABKHByb3h5X3R5cGUBAgEkUHJveHlUeXBlAAEUZGVsYXkQASxCbG9ja051bWJlcgAAQQYAAAI9BgBFBgAABAhJBhgASQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNBgRTAAAEAFEGARhWZWM8VD4AAE0GCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBABBIYXNoATQsQmxvY2tOdW1iZXIBEAAMARByZWFsAAEkQWNjb3VudElkAAEkY2FsbF9oYXNoNAEQSGFzaAABGGhlaWdodBABLEJsb2NrTnVtYmVyAABRBgAAAk0GAFUGDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5ZBgw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBGCRBY2NvdW50SWQBADhEZXBvc2l0QmFsYW5jZQEYADABFG93bmVyAAEkQWNjb3VudElkAAEYaXNzdWVyAAEkQWNjb3VudElkAAEUYWRtaW4AASRBY2NvdW50SWQAARxmcmVlemVyAAEkQWNjb3VudElkAAEYc3VwcGx5GAEcQmFsYW5jZQABHGRlcG9zaXQYAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlGAEcQmFsYW5jZQABNGlzX3N1ZmZpY2llbnQgARBib29sAAEgYWNjb3VudHMQAQx1MzIAASxzdWZmaWNpZW50cxABDHUzMgABJGFwcHJvdmFscxABDHUzMgABGHN0YXR1c10GASxBc3NldFN0YXR1cwAAXQYMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAABhBgAABAgQAABlBgw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBGDhEZXBvc2l0QmFsYW5jZQEYFEV4dHJhAfEBJEFjY291bnRJZAEAABABHGJhbGFuY2UYARxCYWxhbmNlAAEYc3RhdHVzaQYBNEFjY291bnRTdGF0dXMAARhyZWFzb25tBgGoRXhpc3RlbmNlUmVhc29uPERlcG9zaXRCYWxhbmNlLCBBY2NvdW50SWQ+AAEUZXh0cmHxAQEURXh0cmEAAGkGDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAG0GDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQEYJEFjY291bnRJZAEAARQgQ29uc3VtZXIAAAAoU3VmZmljaWVudAABACxEZXBvc2l0SGVsZAQAGAEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAABJEFjY291bnRJZAAAGAEcQmFsYW5jZQAEAABxBgAABAwQAAAAdQYMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBGDhEZXBvc2l0QmFsYW5jZQEYAAgBGGFtb3VudBgBHEJhbGFuY2UAARxkZXBvc2l0GAE4RGVwb3NpdEJhbGFuY2UAAHkGDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlARg0Qm91bmRlZFN0cmluZwF9BgAUARxkZXBvc2l0GAE4RGVwb3NpdEJhbGFuY2UAARBuYW1lfQYBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2x9BgE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sAAB9BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAIEGDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABVChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUGDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQA4RGVwb3NpdEJhbGFuY2UBGAAoARRvd25lcgABJEFjY291bnRJZAABGGlzc3VlcgABJEFjY291bnRJZAABFGFkbWluAAEkQWNjb3VudElkAAEcZnJlZXplcgABJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXQYAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZyABEGJvb2wAARRpdGVtcxABDHUzMgABOGl0ZW1fbWV0YWRhdGFzEAEMdTMyAAEoYXR0cmlidXRlcxABDHUzMgABJGlzX2Zyb3plbiABEGJvb2wAAIkGAAAEDAAQEACNBgAABAgAEACRBgw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEAOERlcG9zaXRCYWxhbmNlARgAEAEUb3duZXIAASRBY2NvdW50SWQAASBhcHByb3ZlZCUCAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plbiABEGJvb2wAARxkZXBvc2l0GAE4RGVwb3NpdEJhbGFuY2UAAJUGDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlARgsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXQYAThEZXBvc2l0QmFsYW5jZQABEGRhdGERAgFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAAAmQYMOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBGCxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEQZGF0YRECAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW4gARBib29sAACdBgAABAwQGQIdAgChBgAABAghAhgApQYAAAQIGCUCAKkGDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAUgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQYMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBADhEZXBvc2l0QmFsYW5jZQEYABgBFG93bmVyAAEkQWNjb3VudElkAAE0b3duZXJfZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXMQAQx1MzIAAThpdGVtX21ldGFkYXRhcxABDHUzMgABMGl0ZW1fY29uZmlncxABDHUzMgABKGF0dHJpYnV0ZXMQAQx1MzIAALEGDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAG1BgAEAAgBOENvbGxlY3Rpb25Sb2xlAAC1BgwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAAuQYMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBABxEZXBvc2l0Ab0GJEFwcHJvdmFscwHBBgAMARRvd25lcgABJEFjY291bnRJZAABJGFwcHJvdmFsc8EGASRBcHByb3ZhbHMAARxkZXBvc2l0vQYBHERlcG9zaXQAAL0GDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBGCRBY2NvdW50SWQBAAAIARxhY2NvdW50AAEkQWNjb3VudElkAAEYYW1vdW50GAE4RGVwb3NpdEJhbGFuY2UAAMEGDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEABFYBGQIEUwAABADFBgE4QlRyZWVNYXA8SywgVj4AAMUGBCBCVHJlZU1hcAgESwEABFYBGQIABADJBgAAAMkGAAACzQYAzQYAAAQIABkCANEGDCxwYWxsZXRfbmZ0cxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIHERlcG9zaXQBGCxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdBgBHERlcG9zaXQAARBkYXRhLQIBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAA1QYMLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAHZBixTdHJpbmdMaW1pdAAACAEcZGVwb3NpdNkGARxEZXBvc2l0AAEQZGF0YS0CAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AANkGDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQEYJEFjY291bnRJZAEAAAgBHGFjY291bnQlAgFET3B0aW9uPEFjY291bnRJZD4AARhhbW91bnQYAThEZXBvc2l0QmFsYW5jZQAA3QYAAAQQEBkCMQIhAgDhBgAABAgtAuUGAOUGDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQEYJEFjY291bnRJZAEAAAgBHGFjY291bnQlAgFET3B0aW9uPEFjY291bnRJZD4AARhhbW91bnQYAThEZXBvc2l0QmFsYW5jZQAA6QYMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQAEUwAABADtBgEsQlRyZWVTZXQ8VD4AAO0GBCBCVHJlZVNldAQEVAEAAAQAxAAAAPEGDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkARAYSXRlbUlkARBYSXRlbVByaWNlV2l0aERpcmVjdGlvbgE5AiBEZWFkbGluZQEQABABSGRlc2lyZWRfY29sbGVjdGlvbhABMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbRkCAThPcHRpb248SXRlbUlkPgABFHByaWNlNQIBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lEAEgRGVhZGxpbmUAAPUGDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAH5BgAEADABNFBhbGxldEZlYXR1cmUAAPkGDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAA/QYMLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgEHAAAECJQAAAUHAAAEDJQAAAAJBww0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQEYNEJvdW5kZWRTdHJpbmcBDQcAFAEcZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEQbmFtZQ0HATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sDQcBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAAADQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAARBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAVQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4VBwxwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbhR0eXBlcxxEZXRhaWxzEBxBc3NldElkARAkRnJhY3Rpb25zARgcRGVwb3NpdAEYJEFjY291bnRJZAEAABABFGFzc2V0EAEcQXNzZXRJZAABJGZyYWN0aW9ucxgBJEZyYWN0aW9ucwABHGRlcG9zaXQYARxEZXBvc2l0AAE0YXNzZXRfY3JlYXRvcgABJEFjY291bnRJZAAAGQcINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQANQEBHFt1ODsgOF0AAB0HDHBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uGHBhbGxldBRFcnJvcgQEVAABEEBJbmNvcnJlY3RBc3NldElkAAAErEFzc2V0IElEIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gbG9ja2VkIE5GVC4wTm9QZXJtaXNzaW9uAAEE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4sTmZ0Tm90Rm91bmQAAgRITkZUIGRvZXNuJ3QgZXhpc3QuUE5mdE5vdEZyYWN0aW9uYWxpemVkAAMEkE5GVCBoYXMgbm90IHlldCBiZWVuIGZyYWN0aW9uYWxpc2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4hBww0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQEYNEJvdW5kZWRTdHJpbmcBJQcAFAEcZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEQbmFtZSUHATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sJQcBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAAAJQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAApBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAVQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4tBwxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkARAABAEgbHBfdG9rZW4QASxQb29sQXNzZXRJZAAAMQcMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABXEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjUHAAAEJDkHPQdBB0UHSQdRB1UHWQddBwA5BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAAA9BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAQQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAARQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAAEkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQATQcBDEVyYQAATQcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAIAAABABxNb3J0YWwyBAAIAAACABxNb3J0YWwzBAAIAAADABxNb3J0YWw0BAAIAAAEABxNb3J0YWw1BAAIAAAFABxNb3J0YWw2BAAIAAAGABxNb3J0YWw3BAAIAAAHABxNb3J0YWw4BAAIAAAIABxNb3J0YWw5BAAIAAAJACBNb3J0YWwxMAQACAAACgAgTW9ydGFsMTEEAAgAAAsAIE1vcnRhbDEyBAAIAAAMACBNb3J0YWwxMwQACAAADQAgTW9ydGFsMTQEAAgAAA4AIE1vcnRhbDE1BAAIAAAPACBNb3J0YWwxNgQACAAAEAAgTW9ydGFsMTcEAAgAABEAIE1vcnRhbDE4BAAIAAASACBNb3J0YWwxOQQACAAAEwAgTW9ydGFsMjAEAAgAABQAIE1vcnRhbDIxBAAIAAAVACBNb3J0YWwyMgQACAAAFgAgTW9ydGFsMjMEAAgAABcAIE1vcnRhbDI0BAAIAAAYACBNb3J0YWwyNQQACAAAGQAgTW9ydGFsMjYEAAgAABoAIE1vcnRhbDI3BAAIAAAbACBNb3J0YWwyOAQACAAAHAAgTW9ydGFsMjkEAAgAAB0AIE1vcnRhbDMwBAAIAAAeACBNb3J0YWwzMQQACAAAHwAgTW9ydGFsMzIEAAgAACAAIE1vcnRhbDMzBAAIAAAhACBNb3J0YWwzNAQACAAAIgAgTW9ydGFsMzUEAAgAACMAIE1vcnRhbDM2BAAIAAAkACBNb3J0YWwzNwQACAAAJQAgTW9ydGFsMzgEAAgAACYAIE1vcnRhbDM5BAAIAAAnACBNb3J0YWw0MAQACAAAKAAgTW9ydGFsNDEEAAgAACkAIE1vcnRhbDQyBAAIAAAqACBNb3J0YWw0MwQACAAAKwAgTW9ydGFsNDQEAAgAACwAIE1vcnRhbDQ1BAAIAAAtACBNb3J0YWw0NgQACAAALgAgTW9ydGFsNDcEAAgAAC8AIE1vcnRhbDQ4BAAIAAAwACBNb3J0YWw0OQQACAAAMQAgTW9ydGFsNTAEAAgAADIAIE1vcnRhbDUxBAAIAAAzACBNb3J0YWw1MgQACAAANAAgTW9ydGFsNTMEAAgAADUAIE1vcnRhbDU0BAAIAAA2ACBNb3J0YWw1NQQACAAANwAgTW9ydGFsNTYEAAgAADgAIE1vcnRhbDU3BAAIAAA5ACBNb3J0YWw1OAQACAAAOgAgTW9ydGFsNTkEAAgAADsAIE1vcnRhbDYwBAAIAAA8ACBNb3J0YWw2MQQACAAAPQAgTW9ydGFsNjIEAAgAAD4AIE1vcnRhbDYzBAAIAAA/ACBNb3J0YWw2NAQACAAAQAAgTW9ydGFsNjUEAAgAAEEAIE1vcnRhbDY2BAAIAABCACBNb3J0YWw2NwQACAAAQwAgTW9ydGFsNjgEAAgAAEQAIE1vcnRhbDY5BAAIAABFACBNb3J0YWw3MAQACAAARgAgTW9ydGFsNzEEAAgAAEcAIE1vcnRhbDcyBAAIAABIACBNb3J0YWw3MwQACAAASQAgTW9ydGFsNzQEAAgAAEoAIE1vcnRhbDc1BAAIAABLACBNb3J0YWw3NgQACAAATAAgTW9ydGFsNzcEAAgAAE0AIE1vcnRhbDc4BAAIAABOACBNb3J0YWw3OQQACAAATwAgTW9ydGFsODAEAAgAAFAAIE1vcnRhbDgxBAAIAABRACBNb3J0YWw4MgQACAAAUgAgTW9ydGFsODMEAAgAAFMAIE1vcnRhbDg0BAAIAABUACBNb3J0YWw4NQQACAAAVQAgTW9ydGFsODYEAAgAAFYAIE1vcnRhbDg3BAAIAABXACBNb3J0YWw4OAQACAAAWAAgTW9ydGFsODkEAAgAAFkAIE1vcnRhbDkwBAAIAABaACBNb3J0YWw5MQQACAAAWwAgTW9ydGFsOTIEAAgAAFwAIE1vcnRhbDkzBAAIAABdACBNb3J0YWw5NAQACAAAXgAgTW9ydGFsOTUEAAgAAF8AIE1vcnRhbDk2BAAIAABgACBNb3J0YWw5NwQACAAAYQAgTW9ydGFsOTgEAAgAAGIAIE1vcnRhbDk5BAAIAABjACRNb3J0YWwxMDAEAAgAAGQAJE1vcnRhbDEwMQQACAAAZQAkTW9ydGFsMTAyBAAIAABmACRNb3J0YWwxMDMEAAgAAGcAJE1vcnRhbDEwNAQACAAAaAAkTW9ydGFsMTA1BAAIAABpACRNb3J0YWwxMDYEAAgAAGoAJE1vcnRhbDEwNwQACAAAawAkTW9ydGFsMTA4BAAIAABsACRNb3J0YWwxMDkEAAgAAG0AJE1vcnRhbDExMAQACAAAbgAkTW9ydGFsMTExBAAIAABvACRNb3J0YWwxMTIEAAgAAHAAJE1vcnRhbDExMwQACAAAcQAkTW9ydGFsMTE0BAAIAAByACRNb3J0YWwxMTUEAAgAAHMAJE1vcnRhbDExNgQACAAAdAAkTW9ydGFsMTE3BAAIAAB1ACRNb3J0YWwxMTgEAAgAAHYAJE1vcnRhbDExOQQACAAAdwAkTW9ydGFsMTIwBAAIAAB4ACRNb3J0YWwxMjEEAAgAAHkAJE1vcnRhbDEyMgQACAAAegAkTW9ydGFsMTIzBAAIAAB7ACRNb3J0YWwxMjQEAAgAAHwAJE1vcnRhbDEyNQQACAAAfQAkTW9ydGFsMTI2BAAIAAB+ACRNb3J0YWwxMjcEAAgAAH8AJE1vcnRhbDEyOAQACAAAgAAkTW9ydGFsMTI5BAAIAACBACRNb3J0YWwxMzAEAAgAAIIAJE1vcnRhbDEzMQQACAAAgwAkTW9ydGFsMTMyBAAIAACEACRNb3J0YWwxMzMEAAgAAIUAJE1vcnRhbDEzNAQACAAAhgAkTW9ydGFsMTM1BAAIAACHACRNb3J0YWwxMzYEAAgAAIgAJE1vcnRhbDEzNwQACAAAiQAkTW9ydGFsMTM4BAAIAACKACRNb3J0YWwxMzkEAAgAAIsAJE1vcnRhbDE0MAQACAAAjAAkTW9ydGFsMTQxBAAIAACNACRNb3J0YWwxNDIEAAgAAI4AJE1vcnRhbDE0MwQACAAAjwAkTW9ydGFsMTQ0BAAIAACQACRNb3J0YWwxNDUEAAgAAJEAJE1vcnRhbDE0NgQACAAAkgAkTW9ydGFsMTQ3BAAIAACTACRNb3J0YWwxNDgEAAgAAJQAJE1vcnRhbDE0OQQACAAAlQAkTW9ydGFsMTUwBAAIAACWACRNb3J0YWwxNTEEAAgAAJcAJE1vcnRhbDE1MgQACAAAmAAkTW9ydGFsMTUzBAAIAACZACRNb3J0YWwxNTQEAAgAAJoAJE1vcnRhbDE1NQQACAAAmwAkTW9ydGFsMTU2BAAIAACcACRNb3J0YWwxNTcEAAgAAJ0AJE1vcnRhbDE1OAQACAAAngAkTW9ydGFsMTU5BAAIAACfACRNb3J0YWwxNjAEAAgAAKAAJE1vcnRhbDE2MQQACAAAoQAkTW9ydGFsMTYyBAAIAACiACRNb3J0YWwxNjMEAAgAAKMAJE1vcnRhbDE2NAQACAAApAAkTW9ydGFsMTY1BAAIAAClACRNb3J0YWwxNjYEAAgAAKYAJE1vcnRhbDE2NwQACAAApwAkTW9ydGFsMTY4BAAIAACoACRNb3J0YWwxNjkEAAgAAKkAJE1vcnRhbDE3MAQACAAAqgAkTW9ydGFsMTcxBAAIAACrACRNb3J0YWwxNzIEAAgAAKwAJE1vcnRhbDE3MwQACAAArQAkTW9ydGFsMTc0BAAIAACuACRNb3J0YWwxNzUEAAgAAK8AJE1vcnRhbDE3NgQACAAAsAAkTW9ydGFsMTc3BAAIAACxACRNb3J0YWwxNzgEAAgAALIAJE1vcnRhbDE3OQQACAAAswAkTW9ydGFsMTgwBAAIAAC0ACRNb3J0YWwxODEEAAgAALUAJE1vcnRhbDE4MgQACAAAtgAkTW9ydGFsMTgzBAAIAAC3ACRNb3J0YWwxODQEAAgAALgAJE1vcnRhbDE4NQQACAAAuQAkTW9ydGFsMTg2BAAIAAC6ACRNb3J0YWwxODcEAAgAALsAJE1vcnRhbDE4OAQACAAAvAAkTW9ydGFsMTg5BAAIAAC9ACRNb3J0YWwxOTAEAAgAAL4AJE1vcnRhbDE5MQQACAAAvwAkTW9ydGFsMTkyBAAIAADAACRNb3J0YWwxOTMEAAgAAMEAJE1vcnRhbDE5NAQACAAAwgAkTW9ydGFsMTk1BAAIAADDACRNb3J0YWwxOTYEAAgAAMQAJE1vcnRhbDE5NwQACAAAxQAkTW9ydGFsMTk4BAAIAADGACRNb3J0YWwxOTkEAAgAAMcAJE1vcnRhbDIwMAQACAAAyAAkTW9ydGFsMjAxBAAIAADJACRNb3J0YWwyMDIEAAgAAMoAJE1vcnRhbDIwMwQACAAAywAkTW9ydGFsMjA0BAAIAADMACRNb3J0YWwyMDUEAAgAAM0AJE1vcnRhbDIwNgQACAAAzgAkTW9ydGFsMjA3BAAIAADPACRNb3J0YWwyMDgEAAgAANAAJE1vcnRhbDIwOQQACAAA0QAkTW9ydGFsMjEwBAAIAADSACRNb3J0YWwyMTEEAAgAANMAJE1vcnRhbDIxMgQACAAA1AAkTW9ydGFsMjEzBAAIAADVACRNb3J0YWwyMTQEAAgAANYAJE1vcnRhbDIxNQQACAAA1wAkTW9ydGFsMjE2BAAIAADYACRNb3J0YWwyMTcEAAgAANkAJE1vcnRhbDIxOAQACAAA2gAkTW9ydGFsMjE5BAAIAADbACRNb3J0YWwyMjAEAAgAANwAJE1vcnRhbDIyMQQACAAA3QAkTW9ydGFsMjIyBAAIAADeACRNb3J0YWwyMjMEAAgAAN8AJE1vcnRhbDIyNAQACAAA4AAkTW9ydGFsMjI1BAAIAADhACRNb3J0YWwyMjYEAAgAAOIAJE1vcnRhbDIyNwQACAAA4wAkTW9ydGFsMjI4BAAIAADkACRNb3J0YWwyMjkEAAgAAOUAJE1vcnRhbDIzMAQACAAA5gAkTW9ydGFsMjMxBAAIAADnACRNb3J0YWwyMzIEAAgAAOgAJE1vcnRhbDIzMwQACAAA6QAkTW9ydGFsMjM0BAAIAADqACRNb3J0YWwyMzUEAAgAAOsAJE1vcnRhbDIzNgQACAAA7AAkTW9ydGFsMjM3BAAIAADtACRNb3J0YWwyMzgEAAgAAO4AJE1vcnRhbDIzOQQACAAA7wAkTW9ydGFsMjQwBAAIAADwACRNb3J0YWwyNDEEAAgAAPEAJE1vcnRhbDI0MgQACAAA8gAkTW9ydGFsMjQzBAAIAADzACRNb3J0YWwyNDQEAAgAAPQAJE1vcnRhbDI0NQQACAAA9QAkTW9ydGFsMjQ2BAAIAAD2ACRNb3J0YWwyNDcEAAgAAPcAJE1vcnRhbDI0OAQACAAA+AAkTW9ydGFsMjQ5BAAIAAD5ACRNb3J0YWwyNTAEAAgAAPoAJE1vcnRhbDI1MQQACAAA+wAkTW9ydGFsMjUyBAAIAAD8ACRNb3J0YWwyNTMEAAgAAP0AJE1vcnRhbDI1NAQACAAA/gAkTW9ydGFsMjU1BAAIAAD/AABRBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABACgASBUOjpOb25jZQAAVQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAABZBwiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwsAEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQBBQFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAF0HCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZWEHARBNb2RlAABhBwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAGUHCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUcUnVudGltZQAAAABpBwhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAwAQx1NjQAAG0HEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFxByRFeHRyaW5zaWMBdQcACAEYaGVhZGVycQcBGEhlYWRlcgABKGV4dHJpbnNpY3N5BwE4VmVjPEV4dHJpbnNpYz4AAHEHEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyARAQSGFzaAAAFAEscGFyZW50X2hhc2g0ATBIYXNoOjpPdXRwdXQAARhudW1iZXKgARhOdW1iZXIAAShzdGF0ZV9yb290NAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290NAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0PAEYRGlnZXN0AAB1BxAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAbEDEENhbGwBfQUkU2lnbmF0dXJlAekFFEV4dHJhATUHAAQAOAAAAHkHAAACdQcAfQcIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAgQcIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAOAEcVmVjPHU4PgAAhQcEGE9wdGlvbgQEVAGBBwEIEE5vbmUAAAAQU29tZQQAgQcAAAEAAIkHBBhSZXN1bHQIBFQB7QEERQGNBwEICE9rBADtAQAAAAAMRXJyBACNBwAAAQAAjQcMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAJEHAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQAlQcBSFVua25vd25UcmFuc2FjdGlvbgABAACRBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AASwQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAgBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAACVBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAIAQh1OAACAACZBwgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YZ0HAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AACdBwQgQlRyZWVNYXAIBEsBNQEEVgE4AAQAoQcAAAChBwAAAqUHAKUHAAAECDUBOACpBwgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5IAEQYm9vbAABLGZhdGFsX2Vycm9yIAEQYm9vbAABGGVycm9yc5kHATBJbmhlcmVudERhdGEAAK0HDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAsQcEGFJlc3VsdAgEVAG1BwRFAY0HAQgIT2sEALUHAAAAAAxFcnIEAI0HAAABAAC1Bwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eTABTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlc40CAUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXONAgFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eTABUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlIAEQYm9vbAAAuQcEGE9wdGlvbgQEVAG9BwEIEE5vbmUAAAAQU29tZQQAvQcAAAEAAL0HAAACwQcAwQcAAAQIOAkEAMUHBBhPcHRpb24EBFQByQcBCBBOb25lAAAAEFNvbWUEAMkHAAABAADJBwAABAgYGADNBwxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQEYGFdlaWdodAEoAAwBGHdlaWdodCgBGFdlaWdodAABFGNsYXNzYAE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlGAEcQmFsYW5jZQAA0QcMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBGAAIATRpbmNsdXNpb25fZmVl1QcBdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwGAEcQmFsYW5jZQAA1QcEGE9wdGlvbgQEVAHZBwEIEE5vbmUAAAAQU29tZQQA2QcAAAEAANkHDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBGAAMASBiYXNlX2ZlZRgBHEJhbGFuY2UAARxsZW5fZmVlGAEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWUYARxCYWxhbmNlAADdBwQYUmVzdWx0CARUAeEHBEUB5QcBCAhPawQA4QcAAAAADEVycgQA5QcAAAEAAOEHAAACrQQA5QcMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAADpBwQYUmVzdWx0CARUASgERQHlBwEICE9rBAAoAAAAAAxFcnIEAOUHAAABAADtBwQYUmVzdWx0CARUARgERQHlBwEICE9rBAAYAAAAAAxFcnIEAOUHAAABAADxBwQYUmVzdWx0CARUAYEBBEUB5QcBCAhPawQAgQEAAAAADEVycgQA5QcAAAEAAPUHBBhSZXN1bHQIBFQB+QcERQEdCAEICE9rBAD5BwAAAAAMRXJyBAAdCAAAAQAA+QcMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQBVAAQAUBleGVjdXRpb25fcmVzdWx0/QcBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHMJCAEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbQ0IAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtcxEIAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAA/QcEGFJlc3VsdAgEVAEBCARFAQUIAQgIT2sEAAEIAAAAAAxFcnIEAAUIAAABAAABCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0nQIBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWVkARBQYXlzAAAFCAgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAQEIAAgBJHBvc3RfaW5mbwEIARBJbmZvAAEUZXJyb3JoATREaXNwYXRjaEVycm9yAAAJCAAAAlQADQgEGE9wdGlvbgQEVAHRBAEIEE5vbmUAAAAQU29tZQQA0QQAAAEAABEIAAACFQgAFQgAAAQI0QEZCAAZCAAAAtEEAB0IDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAACEIBBhSZXN1bHQIBFQBJQgERQEdCAEICE9rBAAlCAAAAAAMRXJyBAAdCAAAAQAAJQgMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAFUAAwBQGV4ZWN1dGlvbl9yZXN1bHTUARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHMJCAEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zEQgBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAApCAQYUmVzdWx0CARUAQAERQEtCAEICE9rBAAAAAAAAAxFcnIEAC0IAAABAAAtCAxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAADEIBBhSZXN1bHQIBFQBgQEERQE1CAEICE9rBACBAQAAAAAMRXJyBAA1CAAAAQAANQgMNGFzc2V0c19jb21tb24scnVudGltZV9hcGlQRnVuZ2libGVzQWNjZXNzRXJyb3IAAQhcQXNzZXRJZENvbnZlcnNpb25GYWlsZWQAAAB8QW1vdW50VG9CYWxhbmNlQ29udmVyc2lvbkZhaWxlZAABAAA5CAhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzjQIBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXMxAwFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZT0IAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlcxABDHUzMgABOGhybXBfd2F0ZXJtYXJrEAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRh8QIBIEhlYWREYXRhAAA9CAQYT3B0aW9uBARUAUEIAQgQTm9uZQAAABBTb21lBABBCAAAAQAAQQgMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAOAEcVmVjPHU4PgAARQgEGFJlc3VsdAgEVAHxAQRFAXkCAQgIT2sEAPEBAAAAAAxFcnIEAHkCAAABAABJCAQYT3B0aW9uBARUAXkCAQgQTm9uZQAAABBTb21lBAB5AgAAAQAATQgAAAJ5AgBRCAhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lMFJ1bnRpbWVFcnJvcgABTBhTeXN0ZW0EAL0CAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAYQMBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEAIEJhbGFuY2VzBAC9AwF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKABxWZXN0aW5nBADZAwF4cGFsbGV0X3Zlc3Rpbmc6OkVycm9yPFJ1bnRpbWU+AA4ARENvbGxhdG9yU2VsZWN0aW9uBADxAwGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAEQQBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAFEEAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQARQUBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQAcQUBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAjABxVdGlsaXR5BAAhBgF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBAAxBgF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABRQcm94eQQAVQYBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4AKgAYQXNzZXRzBACBBgHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBACpBgF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEAP0GAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAEQcB3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQBQTmZ0RnJhY3Rpb25hbGl6YXRpb24EAB0HAbBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uOjpFcnJvcjxSdW50aW1lPgA2AChQb29sQXNzZXRzBAApBwHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA3ADxBc3NldENvbnZlcnNpb24EADEHAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXJyb3I8UnVudGltZT4AOAAAcBhTeXN0ZW0BGFN5c3RlbUgcQWNjb3VudAEBBAIADEEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC44RXh0cmluc2ljQ291bnQAABAEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkBJbmhlcmVudHNBcHBsaWVkAQAgBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuLEJsb2NrV2VpZ2h0AQAkGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLkBBbGxFeHRyaW5zaWNzTGVuAAAQBAAEQQEgVG90YWwgbGVuZ3RoIChpbiBieXRlcykgZm9yIGFsbCBleHRyaW5zaWNzIHB1dCB0b2dldGhlciwgZm9yIHRoZSBjdXJyZW50IGJsb2NrLiRCbG9ja0hhc2gBAQQFEDSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuNEV4dHJpbnNpY0RhdGEBAQQFEDgEAAQ9ASBFeHRyaW5zaWNzIGRhdGEgZm9yIHRoZSBjdXJyZW50IGJsb2NrIChtYXBzIGFuIGV4dHJpbnNpYydzIGluZGV4IHRvIGl0cyBkYXRhKS4YTnVtYmVyAQAQEAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4oUGFyZW50SGFzaAEANIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLhhEaWdlc3QBADwEAATwIERpZ2VzdCBvZiB0aGUgY3VycmVudCBibG9jaywgYWxzbyBwYXJ0IG9mIHRoZSBibG9jayBoZWFkZXIuGEV2ZW50cwEATAQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4oRXZlbnRDb3VudAEAEBAAAAAABLggVGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIGBFdmVudHM8VD5gIGxpc3QuLEV2ZW50VG9waWNzAQEEAjRtAgQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuSExhc3RSdW50aW1lVXBncmFkZQAAdQIEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC5UVXBncmFkZWRUb1UzMlJlZkNvdW50AQAgBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LmBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBACAEAAhdASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBBY2NvdW50SW5mbyBjb250YWlucyB0aHJlZSB0eXBlcyBvZiBgUmVmQ291bnRgLiBGYWxzZUggKGRlZmF1bHQpIGlmIG5vdC44RXhlY3V0aW9uUGhhc2UAAGUCBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay5EQXV0aG9yaXplZFVwZ3JhZGUAAH0CBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4BgQIBWBgwQmxvY2tXZWlnaHRzkQJ1AQcA8gUqAQAHAIhSanQCAEABAmXNHQABB8DSLHZRAgDgAAEHAOa9T1cCAPAAAQAAAmXNHQABB8B0wZBuAgAwAQEHAIhSanQCAEABAQcAopQaHQIAUAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLixCbG9ja0xlbmd0aKECMAAAPAAAAFAAAABQAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuOEJsb2NrSGFzaENvdW50EBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLiBEYldlaWdodKkCQEB4fQEAAAAAAOH1BQAAAAAECQEgVGhlIHdlaWdodCBvZiBydW50aW1lIGRhdGFiYXNlIG9wZXJhdGlvbnMgdGhlIHJ1bnRpbWUgY2FuIGludm9rZS4cVmVyc2lvbq0C+QMkc3RhdGVtaW5lJHN0YXRlbWluZQEAAAD4TQ8AAAAAAEjdcY1cxTJi1AEAAADXvdiicsoNZQEAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwEAAAC8nYmQT1uSPwEAAACKgEelOoJ37AEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQEAAACRscixYyjrkgEAAACf+1BapzjWnAEAAADekrigQmub9gIAAADqk+Pxbz1pYgIAAAD7xXe510fv1gEAAAAPAAAAAASEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uKFNTNThQcmVmaXgFAggCABSoIFRoZSBkZXNpZ25hdGVkIFNTNTggcHJlZml4IG9mIHRoaXMgY2hhaW4uADkBIFRoaXMgcmVwbGFjZXMgdGhlICJzczU4Rm9ybWF0IiBwcm9wZXJ0eSBkZWNsYXJlZCBpbiB0aGUgY2hhaW4gc3BlYy4gUmVhc29uIGlzMQEgdGhhdCB0aGUgcnVudGltZSBzaG91bGQga25vdyBhYm91dCB0aGUgcHJlZml4IGluIG9yZGVyIHRvIG1ha2UgdXNlIG9mIGl0IGFzcCBhbiBpZGVudGlmaWVyIG9mIHRoZSBjaGFpbi4BvQIAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbWBEVW5pbmNsdWRlZFNlZ21lbnQBAMECBAAYSQEgTGF0ZXN0IGluY2x1ZGVkIGJsb2NrIGRlc2NlbmRhbnRzIHRoZSBydW50aW1lIGFjY2VwdGVkLiBJbiBvdGhlciB3b3JkcywgdGhlc2UgYXJlYQEgYW5jZXN0b3JzIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGJsb2NrIHdoaWNoIGhhdmUgbm90IGJlZW4gaW5jbHVkZWQgaW4gdGhlIG9ic2VydmVkTCByZWxheS1jaGFpbiBzdGF0ZS4AdQEgVGhlIHNlZ21lbnQgbGVuZ3RoIGlzIGxpbWl0ZWQgYnkgdGhlIGNhcGFjaXR5IHJldHVybmVkIGZyb20gdGhlIFtgQ29uc2Vuc3VzSG9va2BdIGNvbmZpZ3VyZWQ8IGluIHRoZSBwYWxsZXQubEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudAAA6QIEAAxpASBTdG9yYWdlIGZpZWxkIHRoYXQga2VlcHMgdHJhY2sgb2YgYmFuZHdpZHRoIHVzZWQgYnkgdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBhbG9uZyB3aXRoIHRoZS0BIGxhdGVzdCBIUk1QIHdhdGVybWFyay4gVXNlZCBmb3IgbGltaXRpbmcgdGhlIGFjY2VwdGFuY2Ugb2YgbmV3IGJsb2NrcyB3aXRokCByZXNwZWN0IHRvIHJlbGF5IGNoYWluIGNvbnN0cmFpbnRzLlRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBADgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVxASBbYDpjb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpDT0RFXSB3aGljaCB3aWxsIHJlc3VsdCB0aGUgbmV4dCBibG9jayBwcm9jZXNzCQEgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5ETmV3VmFsaWRhdGlvbkNvZGUAADgEABRdASBWYWxpZGF0aW9uIGNvZGUgdGhhdCBpcyBzZXQgYnkgdGhlIHBhcmFjaGFpbiBhbmQgaXMgdG8gYmUgY29tbXVuaWNhdGVkIHRvIGNvbGxhdG9yIGFuZHggY29uc2VxdWVudGx5IHRoZSByZWxheS1jaGFpbi4AZQEgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrIGlmIG5vIG90aGVyIHBhbGxldCBhbHJlYWR5IHNldCwgdGhlIHZhbHVlLjhWYWxpZGF0aW9uRGF0YQAA7QIEAAzQIFRoZSBbYFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhYF0gc2V0IGZvciB0aGlzIGJsb2NrLi0BIFRoaXMgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0IG9ubHkgb25jZSBwZXIgYmxvY2sgYW5kIGl0J3MgbmV2ZXIgc3RvcmVkNCBpbiB0aGUgdHJpZS5QRGlkU2V0VmFsaWRhdGlvbkNvZGUBACAEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj9kTGFzdFJlbGF5Q2hhaW5CbG9ja051bWJlcgEAEBAAAAAADB0BIFRoZSByZWxheSBjaGFpbiBibG9jayBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay4AiCBUaGlzIGlzIHVwZGF0ZWQgaW4gYG9uX2ZpbmFsaXplYC5gVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQD1AgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LjhVcGdyYWRlR29BaGVhZAEA4QIEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LjxSZWxheVN0YXRlUHJvb2YAAP0CBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLlhSZWxldmFudE1lc3NhZ2luZ1N0YXRlAAAFAwQAHGUBIFRoZSBzbmFwc2hvdCBvZiBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gbWVzc2FnaW5nIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBhcyBwZXJIIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy5ESG9zdENvbmZpZ3VyYXRpb24AABkDBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuOExhc3REbXFNcWNIZWFkAQAhA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LkBMYXN0SHJtcE1xY0hlYWRzAQAlAwQAEEkBIFRoZSBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWRzIHdlIGhhdmUgb2JzZXJ2ZWQgcGVyIGVhY2ggY2hhbm5lbCBpbmNvbWluZyBjaGFubmVsLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LmRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQAQEAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLjRIcm1wV2F0ZXJtYXJrAQAQEAAAAAAMoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suUEhybXBPdXRib3VuZE1lc3NhZ2VzAQAxAwQADKQgSFJNUCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay44VXB3YXJkTWVzc2FnZXMBAI0CBAAMrCBVcHdhcmQgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEAjQIEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW5kIHRvIHRoZSByZWxheSBjaGFpbi5cVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBADkDQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLoRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBABAQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLmhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAAKAQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC5kUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAKAQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LmBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAADgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4BPQMBfAQoU2VsZlBhcmFJZOEBEOgDAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4BYQMBACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAwIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suJERpZFVwZGF0ZQEAIAQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4BZQMABDRNaW5pbXVtUGVyaW9kMCBwFwAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAMANFBhcmFjaGFpbkluZm8BNFBhcmFjaGFpbkluZm8ELFBhcmFjaGFpbklkAQDhARBkAAAAAAFpAwAAAAQAIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEAGEAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLkBJbmFjdGl2ZUlzc3VhbmNlAQAYQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4cQWNjb3VudAEBBAIAFAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGAJASBUaGUgQmFsYW5jZXMgcGFsbGV0IGV4YW1wbGUgb2Ygc3RvcmluZyB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUgexkCICAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3RvcmFnZU1hcFNoaW08U2VsZjo6QWNjb3VudDxSdW50aW1lPiwgZnJhbWVfc3lzdGVtOjpQcm92aWRlcjxSdW50aW1lPiwgQWNjb3VudElkLCBTZWxmOjpBY2NvdW50RGF0YTxCYWxhbmNlPj4MICB9ECBgYGAAFQEgWW91IGNhbiBhbHNvIHN0b3JlIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQgaW4gdGhlIGBTeXN0ZW1gIHBhbGxldC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHt0ICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTeXN0ZW0MICB9ECBgYGAAUQEgQnV0IHRoaXMgY29tZXMgd2l0aCB0cmFkZW9mZnMsIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUgc3lzdGVtIHBhbGxldCBzdG9yZXNtASBgZnJhbWVfc3lzdGVtYCBkYXRhIGFsb25nc2lkZSB0aGUgYWNjb3VudCBkYXRhIGNvbnRyYXJ5IHRvIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUpASBgQmFsYW5jZXNgIHBhbGxldCwgd2hpY2ggdXNlcyBhIGBTdG9yYWdlTWFwYCB0byBzdG9yZSBiYWxhbmNlcyBkYXRhIG9ubHkuQQEgTk9URTogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGhlIGNhc2UgdGhhdCB0aGlzIHBhbGxldCBpcyB1c2VkIHRvIHN0b3JlIGJhbGFuY2VzLhRMb2NrcwEBBAIAbQMEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gIFJlc2VydmVzAQEEAgB9AwQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYBRIb2xkcwEBBAIAiQMEAARsIEhvbGRzIG9uIGFjY291bnQgYmFsYW5jZXMuHEZyZWV6ZXMBAQQCAKEDBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4BrQMBhBBIRXhpc3RlbnRpYWxEZXBvc2l0GEDV3DIAAAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lISBNYXhMb2NrcxAQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AsTWF4UmVzZXJ2ZXMQEDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gKE1heEZyZWV6ZXMQEAAAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAb0DCgBIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQIRE5leHRGZWVNdWx0aXBsaWVyAQA5A0AAAGSns7bgDQAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAwQMEAAAAAYwEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcggEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4ACwA4QXNzZXRUeFBheW1lbnQAAAGQAAANABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgDFAwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC44U3RvcmFnZVZlcnNpb24BANEDBAAMfCBTdG9yYWdlIHZlcnNpb24gb2YgdGhlIHBhbGxldC4AMQEgTmV3IG5ldHdvcmtzIHN0YXJ0IHdpdGggbGF0ZXN0IHZlcnNpb24sIGFzIGRldGVybWluZWQgYnkgdGhlIGdlbmVzaXMgYnVpbGQuAdUDAbwIRE1pblZlc3RlZFRyYW5zZmVyGEDV3DIAAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuTE1heFZlc3RpbmdTY2hlZHVsZXMQEBwAAAAAAdkDDgAoQXV0aG9yc2hpcAEoQXV0aG9yc2hpcAQYQXV0aG9yAAAABAAEZCBBdXRob3Igb2YgY3VycmVudCBibG9jay4AAAAAFABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDdAwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC40Q2FuZGlkYXRlTGlzdAEA4QMEABRpASBUaGUgKGNvbW11bml0eSwgbGltaXRlZCkgY29sbGF0aW9uIGNhbmRpZGF0ZXMuIGBDYW5kaWRhdGVzYCBhbmQgYEludnVsbmVyYWJsZXNgIHNob3VsZCBiZVAgbXV0dWFsbHkgZXhjbHVzaXZlLgB1ASBUaGlzIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSBkZXBvc2l0IGFuZCB3aGVuIHRoZSBkZXBvc2l0cyBhcmUgZXF1YWwsIHRoZSBsZWFzdKAgcmVjZW50bHkgdXBkYXRlZCBpcyBjb25zaWRlcmVkIGdyZWF0ZXIuRExhc3RBdXRob3JlZEJsb2NrAQEEBQAQEAAAAAAEhCBMYXN0IGJsb2NrIGF1dGhvcmVkIGJ5IGNvbGxhdG9yLkREZXNpcmVkQ2FuZGlkYXRlcwEAEBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC40Q2FuZGlkYWN5Qm9uZAEAGEAAAAAAAAAAAAAAAAAAAAAADLggRml4ZWQgYW1vdW50IHRvIGRlcG9zaXQgdG8gYmVjb21lIGEgY29sbGF0b3IuAEEBIFdoZW4gYSBjb2xsYXRvciBjYWxscyBgbGVhdmVfaW50ZW50YCB0aGV5IGltbWVkaWF0ZWx5IHJlY2VpdmUgdGhlIGRlcG9zaXQgYmFjay4B7QMBwAAB8QMVABxTZXNzaW9uARxTZXNzaW9uHChWYWxpZGF0b3JzAQDEBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4wQ3VycmVudEluZGV4AQAQEAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLjRRdWV1ZWRDaGFuZ2VkAQAgBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4oUXVldWVkS2V5cwEA9QMEAAg9ASBUaGUgcXVldWVkIGtleXMgZm9yIHRoZSBuZXh0IHNlc3Npb24uIFdoZW4gdGhlIG5leHQgc2Vzc2lvbiBiZWdpbnMsIHRoZXNlIGtleXPgIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZhbGlkYXRvcidzIHNlc3Npb24ga2V5cy5IRGlzYWJsZWRWYWxpZGF0b3JzAQAVAgQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLiBOZXh0S2V5cwABBAUA/QMEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleU93bmVyAAEEBQUEAAQABAkBIFRoZSBvd25lciBvZiBhIGtleS4gVGhlIGtleSBpcyB0aGUgYEtleVR5cGVJZGAgKyB0aGUgZW5jb2RlZCBrZXkuAQ0EAcgAAREEFgAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBABUEBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LixDdXJyZW50U2xvdAEAHQQgAAAAAAAAAAAMgCBUaGUgY3VycmVudCBzbG90IG9mIHRoaXMgYmxvY2suAJQgVGhpcyB3aWxsIGJlIHNldCBpbiBgb25faW5pdGlhbGl6ZWAuAAAEMFNsb3REdXJhdGlvbjAg4C4AAAAAAAAQDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuPQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgc2hvdWxkIG5vdCBjaGFuZ2Ugd2hpbGUgdGhlIGNoYWluIGlzIHJ1bm5pbmcuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AFwAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBABUEBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuIFNsb3RJbmZvAAAhBAQADNggQ3VycmVudCBzbG90IHBhaXJlZCB3aXRoIGEgbnVtYmVyIG9mIGF1dGhvcmVkIGJsb2Nrcy4AmCBVcGRhdGVkIG9uIGVhY2ggYmxvY2sgaW5pdGlhbGl6YXRpb24uAAAAABgAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAJQQEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLkhPdXRib3VuZFhjbXBTdGF0dXMBADEEBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuUE91dGJvdW5kWGNtcE1lc3NhZ2VzAQEIAgVBBEUEBAAEvCBUaGUgbWVzc2FnZXMgb3V0Ym91bmQgaW4gYSBnaXZlbiBYQ01QIGNoYW5uZWwuOFNpZ25hbE1lc3NhZ2VzAQEEAuEBRQQEAASgIEFueSBzaWduYWwgbWVzc2FnZXMgd2FpdGluZyB0byBiZSBzZW50LixRdWV1ZUNvbmZpZwEASQQwIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuOFF1ZXVlU3VzcGVuZGVkAQAgBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LkREZWxpdmVyeUZlZUZhY3RvcgEBBAXhATkDQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4BTQQBzAxMTWF4SW5ib3VuZFN1c3BlbmRlZBAQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS5kTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVscxAQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4sTWF4UGFnZVNpemUQEACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4BUQQeACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY204MFF1ZXJ5Q291bnRlcgEAMCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LhxRdWVyaWVzAAEEAjBVBAQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4oQXNzZXRUcmFwcwEBBAY0EBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuOFNhZmVYY21WZXJzaW9uAAAQBAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuQFN1cHBvcnRlZFZlcnNpb24AAQgFAo0EEAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC5AVmVyc2lvbk5vdGlmaWVycwABCAUCjQQwBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLlBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCjQSRBAQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLlRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAJUEBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi5AQ3VycmVudE1pZ3JhdGlvbgAAoQQEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAqkEsQQEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uPExvY2tlZEZ1bmdpYmxlcwABBAIAwQQEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi5UWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQAgBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLjxTaG91bGRSZWNvcmRYY20BACAEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4sUmVjb3JkZWRYY20AABEBBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgHNBAHQAAFFBR8AKEN1bXVsdXNYY20AAUkFAdUBAAAgAExUb1BvbGthZG90WGNtUm91dGVyAUxUb1BvbGthZG90WGNtUm91dGVyBBhCcmlkZ2UBAE0FRAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgFRBQAAACIAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQF3QFVBXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuLFNlcnZpY2VIZWFkAADdAQQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLhRQYWdlcwABCAUFYQVlBQQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAW0FAdkBECBIZWFwU2l6ZRAQAAABABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLiBNYXhTdGFsZRAQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLjRTZXJ2aWNlV2VpZ2h0nQIsAQcAFtC+KAIAcAAYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLlBJZGxlTWF4U2VydmljZVdlaWdodJ0CLAEHAOh2SBcCAEAAFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAXEFIwAcVXRpbGl0eQABdQUB6QEETGJhdGNoZWRfY2FsbHNfbGltaXQQEKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgEhBigAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQIlBikGBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4BgQUB9QEMLERlcG9zaXRCYXNlGEDc2RyPAQAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLjREZXBvc2l0RmFjdG9yGECgwqIAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS44TWF4U2lnbmF0b3JpZXMQEGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuATEGKQAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQA1BkQAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuNEFubm91bmNlbWVudHMBAQQFAEUGRAAAAAAAAAAAAAAAAAAAAAAABKwgVGhlIGFubm91bmNlbWVudHMgbWFkZSBieSB0aGUgcHJveHkgKGtleSkuAYkFAf0BGEBQcm94eURlcG9zaXRCYXNlGEDstSiOAQAAAAAAAAAAAAAAEBEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBwcm94eS4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzJQEgYHNpemVvZihCYWxhbmNlKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuSFByb3h5RGVwb3NpdEZhY3RvchhAtdinAAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuKE1heFByb3hpZXMQECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LihNYXhQZW5kaW5nEBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuXEFubm91bmNlbWVudERlcG9zaXRCYXNlGECUZlGOAQAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS5kQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvchhAarFPAQAAAAAAAAAAAAAAABDUIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBhbm5vdW5jZW1lbnQgbWFkZS4AWQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgYW4gYEFjY291bnRJZGAsIGBIYXNoYCBhbmQgYEJsb2NrTnVtYmVyYCAodHlwaWNhbGx5IDY4IGJ5dGVzKYwgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgFVBioAGEFzc2V0cwEYQXNzZXRzFBRBc3NldAABBAIQWQYEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuHEFjY291bnQAAQgCAmEGZQYEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuJEFwcHJvdmFscwABDAICAnEGdQYEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4gTWV0YWRhdGEBAQQCEHkGUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuLE5leHRBc3NldElkAAAQBAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4BkQUBCQIcQFJlbW92ZUl0ZW1zTGltaXQQEOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4wQXNzZXREZXBvc2l0GEA6piORAQAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LkxBc3NldEFjY291bnREZXBvc2l0GED0o66NAQAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLkxNZXRhZGF0YURlcG9zaXRCYXNlGEA4ILeOAQAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUYQBUWBQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS48QXBwcm92YWxEZXBvc2l0GEDV3DIAAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuLFN0cmluZ0xpbWl0EBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgGBBjIAHFVuaXF1ZXMBHFVuaXF1ZXMoFENsYXNzAAEEAhCFBgQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uTE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCABAEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuHEFjY291bnQAAQwCAgKJBvEBBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4wQ2xhc3NBY2NvdW50AAEIAgKNBvEBBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuFEFzc2V0AAEIAgJxApEGBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy48Q2xhc3NNZXRhZGF0YU9mAAEEAhCVBgQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLkhJbnN0YW5jZU1ldGFkYXRhT2YAAQgCAnECmQYEAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uJEF0dHJpYnV0ZQABDAICAp0GoQYEAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLixJdGVtUHJpY2VPZgABCAICcQKlBgQABHAgUHJpY2Ugb2YgYW4gYXNzZXQgaW5zdGFuY2UuTENvbGxlY3Rpb25NYXhTdXBwbHkAAQQCEBAEAATwIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIG1pZ2h0IGhhdmUuAZUFAQ0CIERDb2xsZWN0aW9uRGVwb3NpdBhAAOh2SBcAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4sSXRlbURlcG9zaXQYQADKmjsAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS5MTWV0YWRhdGFEZXBvc2l0QmFzZRhAOWPtjwEAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uUEF0dHJpYnV0ZURlcG9zaXRCYXNlGECkQl2NAQAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLjhEZXBvc2l0UGVyQnl0ZRhAFRYFAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLixTdHJpbmdMaW1pdBAQgAAAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4gS2V5TGltaXQQECAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4oVmFsdWVMaW1pdBAQQAAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuAakGMwAQTmZ0cwEQTmZ0czwoQ29sbGVjdGlvbgABBAIQrQYEAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLkxPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgAQBAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLhxBY2NvdW50AAEMAgICiQbxAQQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuRENvbGxlY3Rpb25BY2NvdW50AAEIAgKNBvEBBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuQENvbGxlY3Rpb25Sb2xlT2YAAQgCAmEGsQYEAAjQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLqAgU3RvcmVzIGNvbGxlY3Rpb24gcm9sZXMgYXMgcGVyIGFjY291bnQuEEl0ZW0AAQgCAnECuQYEAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLlBDb2xsZWN0aW9uTWV0YWRhdGFPZgABBAIQ0QYEAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi44SXRlbU1ldGFkYXRhT2YAAQgCAnEC1QYEAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uJEF0dHJpYnV0ZQABEAICAgLdBuEGBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4sSXRlbVByaWNlT2YAAQgCAnECpQYEAARQIEEgcHJpY2Ugb2YgYW4gaXRlbS5kSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNPZgEBCAICcQLpBgQABGggSXRlbSBhdHRyaWJ1dGUgYXBwcm92YWxzLkBOZXh0Q29sbGVjdGlvbklkAAAQBAAIMQEgU3RvcmVzIHRoZSBgQ29sbGVjdGlvbklkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNvbGxlY3Rpb24u8CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgY29sbGVjdGlvbiBpcyBjcmVhdGVkLjRQZW5kaW5nU3dhcE9mAAEIAgJxAvEGBAAEfCBIYW5kbGVzIGFsbCB0aGUgcGVuZGluZyBzd2Fwcy5IQ29sbGVjdGlvbkNvbmZpZ09mAAEEAhCpBQQABGAgQ29uZmlnIG9mIGEgY29sbGVjdGlvbi4wSXRlbUNvbmZpZ09mAAEIAgJxAtEFBAAETCBDb25maWcgb2YgYW4gaXRlbS4BpQUBKQI4RENvbGxlY3Rpb25EZXBvc2l0GEBOefKPAQAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLixJdGVtRGVwb3NpdBhAM/wDCgAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLkxNZXRhZGF0YURlcG9zaXRCYXNlGECFI/4nAAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS5QQXR0cmlidXRlRGVwb3NpdEJhc2UYQKqGvCcAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uOERlcG9zaXRQZXJCeXRlGEAVFgUAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuLFN0cmluZ0xpbWl0EBAAAQAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLiBLZXlMaW1pdBAQQAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LihWYWx1ZUxpbWl0EBAAAQAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS44QXBwcm92YWxzTGltaXQQEBQAAAAEqCBUaGUgbWF4aW11bSBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLnBJdGVtQXR0cmlidXRlc0FwcHJvdmFsc0xpbWl0EBAeAAAABNQgVGhlIG1heGltdW0gYXR0cmlidXRlcyBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLhxNYXhUaXBzEBAKAAAABKggVGhlIG1heCBudW1iZXIgb2YgdGlwcyBhIHVzZXIgY291bGQgc2VuZC5MTWF4RGVhZGxpbmVEdXJhdGlvbhAQAI0nAASoIFRoZSBtYXggZHVyYXRpb24gaW4gYmxvY2tzIGZvciBkZWFkbGluZXMuUE1heEF0dHJpYnV0ZXNQZXJDYWxsEBAKAAAABOAgVGhlIG1heCBudW1iZXIgb2YgYXR0cmlidXRlcyBhIHVzZXIgY291bGQgc2V0IHBlciBjYWxsLiBGZWF0dXJlc/UGIAAAAAAAAAAABJAgRGlzYWJsZXMgc29tZSBvZiBwYWxsZXQncyBmZWF0dXJlcy4B/QY0ADRGb3JlaWduQXNzZXRzATRGb3JlaWduQXNzZXRzFBRBc3NldAABBAKUWQYEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuHEFjY291bnQAAQgCAgEHZQYEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuJEFwcHJvdmFscwABDAICAgUHdQYEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4gTWV0YWRhdGEBAQQClAkHUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuLE5leHRBc3NldElkAACUBAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4B+QUBRQIcQFJlbW92ZUl0ZW1zTGltaXQQEOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4wQXNzZXREZXBvc2l0GEA6piORAQAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LkxBc3NldEFjY291bnREZXBvc2l0GED0o66NAQAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLkxNZXRhZGF0YURlcG9zaXRCYXNlGEA4ILeOAQAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUYQBUWBQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS48QXBwcm92YWxEZXBvc2l0GEDV3DIAAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuLFN0cmluZ0xpbWl0EBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgERBzUAUE5mdEZyYWN0aW9uYWxpemF0aW9uAVBOZnRGcmFjdGlvbmFsaXphdGlvbgQoTmZ0VG9Bc3NldAABBAJxAhUHBAAEFQEgS2VlcHMgdHJhY2sgb2YgdGhlIGNvcnJlc3BvbmRpbmcgTkZUIElELCBhc3NldCBJRCBhbmQgYW1vdW50IG1pbnRlZC4B/QUBSQIUHERlcG9zaXQYQDqmI5EBAAAAAAAAAAAAAAAIZQEgVGhlIGRlcG9zaXQgcGFpZCBieSB0aGUgdXNlciBsb2NraW5nIGFuIE5GVC4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQgdG8gdGhlIG9yaWdpbmFsIE5GVOQgb3duZXIgd2hlbiB0aGUgYXNzZXQgaXMgdW5pZmllZCBhbmQgdGhlIE5GVCBpcyB1bmxvY2tlZC4gUGFsbGV0SWQZByBmcmFjdGlvbgT0IFRoZSBwYWxsZXQncyBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELjhOZXdBc3NldFN5bWJvbH0GFBBGUkFDBIggVGhlIG5ld2x5IGNyZWF0ZWQgYXNzZXQncyBzeW1ib2wuME5ld0Fzc2V0TmFtZX0GFBBGcmFjBIAgVGhlIG5ld2x5IGNyZWF0ZWQgYXNzZXQncyBuYW1lLixTdHJpbmdMaW1pdBAQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4BHQc2AChQb29sQXNzZXRzAShQb29sQXNzZXRzFBRBc3NldAABBAIQWQYEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuHEFjY291bnQAAQgCAmEGZQYEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuJEFwcHJvdmFscwABDAICAnEGdQYEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4gTWV0YWRhdGEBAQQCECEHUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuLE5leHRBc3NldElkAAAQBAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4BAQYBTQIcQFJlbW92ZUl0ZW1zTGltaXQQEOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4wQXNzZXREZXBvc2l0GEAAAAAAAAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LkxBc3NldEFjY291bnREZXBvc2l0GED0o66NAQAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLkxNZXRhZGF0YURlcG9zaXRCYXNlGEAAAAAAAAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUYQAAAAAAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS48QXBwcm92YWxEZXBvc2l0GEDV3DIAAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuLFN0cmluZ0xpbWl0EBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgEpBzcAPEFzc2V0Q29udmVyc2lvbgE8QXNzZXRDb252ZXJzaW9uCBRQb29scwABBAJVAi0HBAAIaQEgTWFwIGZyb20gYFBvb2xBc3NldElkYCB0byBgUG9vbEluZm9gLiBUaGlzIGVzdGFibGlzaGVzIHdoZXRoZXIgYSBwb29sIGhhcyBiZWVuIG9mZmljaWFsbHk9ASBjcmVhdGVkIHJhdGhlciB0aGFuIHBlb3BsZSBzZW5kaW5nIHRva2VucyBkaXJlY3RseSB0byBhIHBvb2wncyBwdWJsaWMgYWNjb3VudC48TmV4dFBvb2xBc3NldElkAAAQBAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgEFBgFRAhwUTFBGZWUQEAMAAAAEUQEgQSAlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXJzIHdpbGwgdGFrZSBvZiBldmVyeSBzd2FwLiBSZXByZXNlbnRzIDEwdGhzIG9mIGEgcGVyY2VudC4wUG9vbFNldHVwRmVlGEAyQZUeAwAAAAAAAAAAAAAABIggQSBvbmUtdGltZSBmZWUgdG8gc2V0dXAgdGhlIHBvb2wuRFBvb2xTZXR1cEZlZUFzc2V0lAgBAAQ5ASBBc3NldCBjbGFzcyBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSB1c2VkIHRvIHBheSB0aGUgW2BDb25maWc6OlBvb2xTZXR1cEZlZWBdLlhMaXF1aWRpdHlXaXRoZHJhd2FsRmVlWQIQAAAAAASEIEEgZmVlIHRvIHdpdGhkcmF3IHRoZSBsaXF1aWRpdHkuQE1pbnRNaW5MaXF1aWRpdHkYQGQAAAAAAAAAAAAAAAAAAAAEPQEgVGhlIG1pbmltdW0gTFAgdG9rZW4gYW1vdW50IHRoYXQgY291bGQgYmUgbWludGVkLiBBbWVsaW9yYXRlcyByb3VuZGluZyBlcnJvcnMuRE1heFN3YXBQYXRoTGVuZ3RoEBADAAAABIggVGhlIG1heCBudW1iZXIgb2YgaG9wcyBpbiBhIHN3YXAuIFBhbGxldElkGQcgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4BMQc4AASxA30F6QU1ByRIQ2hlY2tOb25aZXJvU2VuZGVyOQfxAUBDaGVja1NwZWNWZXJzaW9uPQcQOENoZWNrVHhWZXJzaW9uQQcQMENoZWNrR2VuZXNpc0UHNDhDaGVja01vcnRhbGl0eUkHNChDaGVja05vbmNlUQfxASxDaGVja1dlaWdodFUH8QFQQ2hhcmdlQXNzZXRUeFBheW1lbnRZB/EBRENoZWNrTWV0YWRhdGFIYXNoXQeAZQdIHEF1cmFBcGkINHNsb3RfZHVyYXRpb24AaQcMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4sYXV0aG9yaXRpZXMAGQQEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLmBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoNBBzbG90HQQgKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZEAgdGhlIGdpdmVuIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLig1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuEENvcmUMHHZlcnNpb24ArQIEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLjRleGVjdXRlX2Jsb2NrBBRibG9ja20H8QEEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay5AaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVycQd9BwRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuBCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuIE1ldGFkYXRhDCBtZXRhZGF0YQCBBwSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS5MbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbhCFBxCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuRG1ldGFkYXRhX3ZlcnNpb25zABUCDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuBAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLjBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljdQeJBxBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC44ZmluYWxpemVfYmxvY2sAcQcEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suTGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50mQd5BwQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi48Y2hlY2tfaW5oZXJlbnRzCBRibG9ja20HEGRhdGGZB6kHBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgRxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2WtBwh0eHUHKGJsb2NrX2hhc2g0sQckaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgRNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuRE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlcnEH8QEEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuBGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuLFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMEEHNlZWSlBDgcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuTGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQ4uQcMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuBGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLjxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQAEATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuBIAgVGhlIEFQSSB0byBxdWVyeSBhY2NvdW50IG5vbmNlLkhBc3NldENvbnZlcnNpb25BcGkMjHF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zEBhhc3NldDGUGGFzc2V0MpQYYW1vdW50GCxpbmNsdWRlX2ZlZSChBRD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLimMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0MZQYYXNzZXQylBhhbW91bnQYLGluY2x1ZGVfZmVlIKEFEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6wIChVc2UgYGFtb3VudF9vdXRfbWluYCB0byBjb250cm9sIHNsaXBwYWdlLikwZ2V0X3Jlc2VydmVzCBhhc3NldDGUGGFzc2V0MpTFBwQFASBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbCBmb3IgdGhlIGdpdmVuIGFzc2V0IHBhaXIuCCEBIFRoaXMgcnVudGltZSBhcGkgYWxsb3dzIHBlb3BsZSB0byBxdWVyeSB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2xzcCBhbmQgcXVvdGUgcHJpY2VzIGZvciBzd2Fwcy5UVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHR1BwxsZW4QzQcARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHR1BwxsZW4Q0QcATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodCgYAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGgQGAAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbH0FDGxlbhDNBwRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC5YcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbH0FDGxlbhDRBwS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuTHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodCgYBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYFdlaWdodFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LkxxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGgQGAQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uEN0HFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi5AcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZdEE6QcUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLmRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQoFGFzc2V0rQTtBxjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC5McXVlcnlfZGVsaXZlcnlfZmVlcwgsZGVzdGluYXRpb27RARxtZXNzYWdl0QTxByAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLixwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLiREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAgYb3JpZ2luDQYQY2FsbH0F9QcEOCBEcnkgcnVuIGNhbGwuLGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27RAQx4Y20VBSEIBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbSSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS5QTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9u0QEpCASQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuBA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLjBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQAMQgE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuBNggVGhlIEFQSSBmb3IgcXVlcnlpbmcgYWNjb3VudCdzIGJhbGFuY2VzIGZyb20gcnVudGltZS5QQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlcnEHOQgQnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4E2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLjhHZW5lc2lzQnVpbGRlcgwsYnVpbGRfc3RhdGUEEGpzb244RQgkZQEgQnVpbGQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIGEgSlNPTiBibG9iIG5vdCB1c2luZyBhbnkgZGVmYXVsdHMgYW5kIHN0b3JlIGl0IGluIHRoZSQgc3RvcmFnZS4A+QEgSW4gdGhlIGNhc2Ugb2YgYSBGUkFNRS1iYXNlZCBydW50aW1lLCB0aGlzIGZ1bmN0aW9uIGRlc2VyaWFsaXplcyB0aGUgZnVsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmRZASBwdXRzIGl0IGludG8gdGhlIHN0b3JhZ2UuIElmIHRoZSBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhltCBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yIGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLihnZXRfcHJlc2V0BAhpZEkIpQQ4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgA9ASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gcmV0dXJucyBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RlASBleGlzdHMuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuMHByZXNldF9uYW1lcwBNCBBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4E6CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBSdW50aW1lR2VuZXNpc0NvbmZpZyBmb3IgdGhlIHJ1bnRpbWV9BVRRCAA=",A=G;export{A as default};