1778692671
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A24764b59a4efb27b2490b09d3ace5d96-115cef5b18d815700811cc69ede7d1ba
s:25252:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjIwOiJNYWNyb1Rva2VuUGFyc2VyLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6MTc6IlxUd2lnXFRva2VuUGFyc2VyIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MTc6IlxUd2lnXFRva2VuUGFyc2VyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6IlRva2VuUGFyc2VyIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6MzQ6IlxUd2lnXFRva2VuUGFyc2VyXE1hY3JvVG9rZW5QYXJzZXIiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxNTp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0aG9kcyI7YTo1OntzOjQzOiJcVHdpZ1xUb2tlblBhcnNlclxNYWNyb1Rva2VuUGFyc2VyOjpwYXJzZSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxMToiXFR3aWdcVG9rZW4iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo1OiJUb2tlbiI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6InRva2VuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo4ODg7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTg3Mjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxNToiXFR3aWdcTm9kZVxOb2RlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiTm9kZSI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0MzoiXFR3aWdcVG9rZW5QYXJzZXJcTWFjcm9Ub2tlblBhcnNlcjo6cGFyc2UoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjU6InBhcnNlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6NTI6IlxUd2lnXFRva2VuUGFyc2VyXE1hY3JvVG9rZW5QYXJzZXI6OmRlY2lkZUJsb2NrRW5kKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjExOiJcVHdpZ1xUb2tlbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjU6IlRva2VuIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToidG9rZW4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjYyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE4Nzk7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTk4MTt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xCb29sZWFuIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTI6IlxUd2lnXFRva2VuUGFyc2VyXE1hY3JvVG9rZW5QYXJzZXI6OmRlY2lkZUJsb2NrRW5kKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiZGVjaWRlQmxvY2tFbmQiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo0NDoiXFR3aWdcVG9rZW5QYXJzZXJcTWFjcm9Ub2tlblBhcnNlcjo6Z2V0VGFnKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxOTg4O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjcwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjIwNTU7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ0OiJcVHdpZ1xUb2tlblBhcnNlclxNYWNyb1Rva2VuUGFyc2VyOjpnZXRUYWcoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjY6ImdldFRhZyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjUzOiJcVHdpZ1xUb2tlblBhcnNlclxNYWNyb1Rva2VuUGFyc2VyOjpwYXJzZURlZmluaXRpb24oKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjcyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjIwNjI7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTA0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjM4MDc7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mzc6IlxUd2lnXE5vZGVcRXhwcmVzc2lvblxBcnJheUV4cHJlc3Npb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToiQXJyYXlFeHByZXNzaW9uIjt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUzOiJcVHdpZ1xUb2tlblBhcnNlclxNYWNyb1Rva2VuUGFyc2VyOjpwYXJzZURlZmluaXRpb24oKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJwYXJzZURlZmluaXRpb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6NjE6IlxUd2lnXFRva2VuUGFyc2VyXE1hY3JvVG9rZW5QYXJzZXI6OmNoZWNrQ29uc3RhbnRFeHByZXNzaW9uKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE1OiJcVHdpZ1xOb2RlXE5vZGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJOb2RlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NDoibm9kZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTA3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjM4NzY7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTIyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjQzMTQ7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQm9vbGVhbiI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjYxOiJcVHdpZ1xUb2tlblBhcnNlclxNYWNyb1Rva2VuUGFyc2VyOjpjaGVja0NvbnN0YW50RXhwcmVzc2lvbigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjM6ImNoZWNrQ29uc3RhbnRFeHByZXNzaW9uIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMjM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MzQ6IlxUd2lnXFRva2VuUGFyc2VyXE1hY3JvVG9rZW5QYXJzZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNjoiTWFjcm9Ub2tlblBhcnNlciI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MTY6IkRlZmluZXMgYSBtYWNyby4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MTc4OiJ7JSUgbWFjcm8gaW5wdXQobmFtZSwgdmFsdWUsIHR5cGUsIHNpemUpICUlfQogICA8aW5wdXQgdHlwZT0ie3sgdHlwZXxkZWZhdWx0KCd0ZXh0JykgfX0iIG5hbWU9Int7IG5hbWUgfX0iIHZhbHVlPSJ7eyB2YWx1ZXxlIH19IiBzaXplPSJ7eyBzaXplfGRlZmF1bHQoMjApIH19IiAvPgp7JSUgZW5kbWFjcm8gJSV9IjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo4OiJpbnRlcm5hbCI7czoxNDoiACoAZGVzY3JpcHRpb24iO047fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjE2OiJUd2lnXFRva2VuUGFyc2VyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YToxMTp7czoxMToiU3ludGF4RXJyb3IiO3M6MjI6IlR3aWdcRXJyb3JcU3ludGF4RXJyb3IiO3M6ODoiQm9keU5vZGUiO3M6MTg6IlR3aWdcTm9kZVxCb2R5Tm9kZSI7czo5OiJFbXB0eU5vZGUiO3M6MTk6IlR3aWdcTm9kZVxFbXB0eU5vZGUiO3M6MTU6IkFycmF5RXhwcmVzc2lvbiI7czozNjoiVHdpZ1xOb2RlXEV4cHJlc3Npb25cQXJyYXlFeHByZXNzaW9uIjtzOjE4OiJDb25zdGFudEV4cHJlc3Npb24iO3M6Mzk6IlR3aWdcTm9kZVxFeHByZXNzaW9uXENvbnN0YW50RXhwcmVzc2lvbiI7czo4OiJOZWdVbmFyeSI7czozNToiVHdpZ1xOb2RlXEV4cHJlc3Npb25cVW5hcnlcTmVnVW5hcnkiO3M6ODoiUG9zVW5hcnkiO3M6MzU6IlR3aWdcTm9kZVxFeHByZXNzaW9uXFVuYXJ5XFBvc1VuYXJ5IjtzOjEzOiJMb2NhbFZhcmlhYmxlIjtzOjQzOiJUd2lnXE5vZGVcRXhwcmVzc2lvblxWYXJpYWJsZVxMb2NhbFZhcmlhYmxlIjtzOjk6Ik1hY3JvTm9kZSI7czoxOToiVHdpZ1xOb2RlXE1hY3JvTm9kZSI7czo0OiJOb2RlIjtzOjE0OiJUd2lnXE5vZGVcTm9kZSI7czo1OiJUb2tlbiI7czoxMDoiVHdpZ1xUb2tlbiI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwYXJlbnQiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozNzoiXFR3aWdcVG9rZW5QYXJzZXJcQWJzdHJhY3RUb2tlblBhcnNlciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE5OiJBYnN0cmFjdFRva2VuUGFyc2VyIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjE7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHJlYWRPbmx5IjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6IjExNWNlZjViMThkODE1NzAwODExY2M2OWVkZTdkMWJhIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NTM6InZlbmRvci90d2lnL3R3aWcvc3JjL1Rva2VuUGFyc2VyL01hY3JvVG9rZW5QYXJzZXIucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czo0MzE4OiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgVHdpZy4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIKICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFR3aWdcVG9rZW5QYXJzZXI7Cgp1c2UgVHdpZ1xFcnJvclxTeW50YXhFcnJvcjsKdXNlIFR3aWdcTm9kZVxCb2R5Tm9kZTsKdXNlIFR3aWdcTm9kZVxFbXB0eU5vZGU7CnVzZSBUd2lnXE5vZGVcRXhwcmVzc2lvblxBcnJheUV4cHJlc3Npb247CnVzZSBUd2lnXE5vZGVcRXhwcmVzc2lvblxDb25zdGFudEV4cHJlc3Npb247CnVzZSBUd2lnXE5vZGVcRXhwcmVzc2lvblxVbmFyeVxOZWdVbmFyeTsKdXNlIFR3aWdcTm9kZVxFeHByZXNzaW9uXFVuYXJ5XFBvc1VuYXJ5Owp1c2UgVHdpZ1xOb2RlXEV4cHJlc3Npb25cVmFyaWFibGVcTG9jYWxWYXJpYWJsZTsKdXNlIFR3aWdcTm9kZVxNYWNyb05vZGU7CnVzZSBUd2lnXE5vZGVcTm9kZTsKdXNlIFR3aWdcVG9rZW47CgovKioKICogRGVmaW5lcyBhIG1hY3JvLgogKgogKiAgIHslIG1hY3JvIGlucHV0KG5hbWUsIHZhbHVlLCB0eXBlLCBzaXplKSAlfQogKiAgICAgIDxpbnB1dCB0eXBlPSJ7eyB0eXBlfGRlZmF1bHQoJ3RleHQnKSB9fSIgbmFtZT0ie3sgbmFtZSB9fSIgdmFsdWU9Int7IHZhbHVlfGUgfX0iIHNpemU9Int7IHNpemV8ZGVmYXVsdCgyMCkgfX0iIC8+CiAqICAgeyUgZW5kbWFjcm8gJX0KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNYWNyb1Rva2VuUGFyc2VyIGV4dGVuZHMgQWJzdHJhY3RUb2tlblBhcnNlcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoVG9rZW4gJHRva2VuKTogTm9kZQogICAgewogICAgICAgICRsaW5lbm8gPSAkdG9rZW4tPmdldExpbmUoKTsKICAgICAgICAkc3RyZWFtID0gJHRoaXMtPnBhcnNlci0+Z2V0U3RyZWFtKCk7CiAgICAgICAgJG5hbWUgPSAkc3RyZWFtLT5leHBlY3QoVG9rZW46Ok5BTUVfVFlQRSktPmdldFZhbHVlKCk7CiAgICAgICAgJGFyZ3VtZW50cyA9ICR0aGlzLT5wYXJzZURlZmluaXRpb24oKTsKCiAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpCTE9DS19FTkRfVFlQRSk7CiAgICAgICAgJHRoaXMtPnBhcnNlci0+cHVzaExvY2FsU2NvcGUoKTsKICAgICAgICAkYm9keSA9ICR0aGlzLT5wYXJzZXItPnN1YnBhcnNlKFskdGhpcywgJ2RlY2lkZUJsb2NrRW5kJ10sIHRydWUpOwogICAgICAgIGlmICgkdG9rZW4gPSAkc3RyZWFtLT5uZXh0SWYoVG9rZW46Ok5BTUVfVFlQRSkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJHRva2VuLT5nZXRWYWx1ZSgpOwoKICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPSAkbmFtZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxzcHJpbnRmKCdFeHBlY3RlZCBlbmRtYWNybyBmb3IgbWFjcm8gIiVzIiAoYnV0ICIlcyIgZ2l2ZW4pLicsICRuYW1lLCAkdmFsdWUpLCAkc3RyZWFtLT5nZXRDdXJyZW50KCktPmdldExpbmUoKSwgJHN0cmVhbS0+Z2V0U291cmNlQ29udGV4dCgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+cGFyc2VyLT5wb3BMb2NhbFNjb3BlKCk7CiAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpCTE9DS19FTkRfVFlQRSk7CgogICAgICAgICR0aGlzLT5wYXJzZXItPnNldE1hY3JvKCRuYW1lLCBuZXcgTWFjcm9Ob2RlKCRuYW1lLCBuZXcgQm9keU5vZGUoWyRib2R5XSksICRhcmd1bWVudHMsICRsaW5lbm8pKTsKCiAgICAgICAgcmV0dXJuIG5ldyBFbXB0eU5vZGUoJGxpbmVubyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlY2lkZUJsb2NrRW5kKFRva2VuICR0b2tlbik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRva2VuLT50ZXN0KCdlbmRtYWNybycpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUYWcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdtYWNybyc7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZURlZmluaXRpb24oKTogQXJyYXlFeHByZXNzaW9uCiAgICB7CiAgICAgICAgJGFyZ3VtZW50cyA9IG5ldyBBcnJheUV4cHJlc3Npb24oW10sICR0aGlzLT5wYXJzZXItPmdldEN1cnJlbnRUb2tlbigpLT5nZXRMaW5lKCkpOwogICAgICAgICRzdHJlYW0gPSAkdGhpcy0+cGFyc2VyLT5nZXRTdHJlYW0oKTsKICAgICAgICAkc3RyZWFtLT5leHBlY3QoVG9rZW46Ok9QRVJBVE9SX1RZUEUsICcoJywgJ0EgbGlzdCBvZiBhcmd1bWVudHMgbXVzdCBiZWdpbiB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMnKTsKICAgICAgICB3aGlsZSAoISRzdHJlYW0tPnRlc3QoVG9rZW46OlBVTkNUVUFUSU9OX1RZUEUsICcpJykpIHsKICAgICAgICAgICAgaWYgKFxjb3VudCgkYXJndW1lbnRzKSkgewogICAgICAgICAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpQVU5DVFVBVElPTl9UWVBFLCAnLCcsICdBcmd1bWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgYSBjb21tYScpOwoKICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjb21tYSBhYm92ZSB3YXMgYSB0cmFpbGluZyBjb21tYSwgZWFybHkgZXhpdCB0aGUgYXJndW1lbnQgcGFyc2UgbG9vcAogICAgICAgICAgICAgICAgaWYgKCRzdHJlYW0tPnRlc3QoVG9rZW46OlBVTkNUVUFUSU9OX1RZUEUsICcpJykpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRva2VuID0gJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpOQU1FX1RZUEUsIG51bGwsICdBbiBhcmd1bWVudCBtdXN0IGJlIGEgbmFtZScpOwogICAgICAgICAgICAkbmFtZSA9IG5ldyBMb2NhbFZhcmlhYmxlKCR0b2tlbi0+Z2V0VmFsdWUoKSwgJHRoaXMtPnBhcnNlci0+Z2V0Q3VycmVudFRva2VuKCktPmdldExpbmUoKSk7CiAgICAgICAgICAgIGlmICgkdG9rZW4gPSAkc3RyZWFtLT5uZXh0SWYoVG9rZW46Ok9QRVJBVE9SX1RZUEUsICc9JykpIHsKICAgICAgICAgICAgICAgICRkZWZhdWx0ID0gJHRoaXMtPnBhcnNlci0+cGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZGVmYXVsdCA9IG5ldyBDb25zdGFudEV4cHJlc3Npb24obnVsbCwgJHRoaXMtPnBhcnNlci0+Z2V0Q3VycmVudFRva2VuKCktPmdldExpbmUoKSk7CiAgICAgICAgICAgICAgICAkZGVmYXVsdC0+c2V0QXR0cmlidXRlKCdpc19pbXBsaWNpdCcsIHRydWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISR0aGlzLT5jaGVja0NvbnN0YW50RXhwcmVzc2lvbigkZGVmYXVsdCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignQSBkZWZhdWx0IHZhbHVlIGZvciBhbiBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RhbnQgKGEgYm9vbGVhbiwgYSBzdHJpbmcsIGEgbnVtYmVyLCBhIHNlcXVlbmNlLCBvciBhIG1hcHBpbmcpLicsICR0b2tlbi0+Z2V0TGluZSgpLCAkc3RyZWFtLT5nZXRTb3VyY2VDb250ZXh0KCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhcmd1bWVudHMtPmFkZEVsZW1lbnQoJGRlZmF1bHQsICRuYW1lKTsKICAgICAgICB9CiAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpQVU5DVFVBVElPTl9UWVBFLCAnKScsICdBIGxpc3Qgb2YgYXJndW1lbnRzIG11c3QgYmUgY2xvc2VkIGJ5IGEgcGFyZW50aGVzaXMnKTsKCiAgICAgICAgcmV0dXJuICRhcmd1bWVudHM7CiAgICB9CgogICAgLy8gY2hlY2tzIHRoYXQgdGhlIG5vZGUgb25seSBjb250YWlucyAiY29uc3RhbnQiIGVsZW1lbnRzCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrQ29uc3RhbnRFeHByZXNzaW9uKE5vZGUgJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCEoJG5vZGUgaW5zdGFuY2VvZiBDb25zdGFudEV4cHJlc3Npb24gfHwgJG5vZGUgaW5zdGFuY2VvZiBBcnJheUV4cHJlc3Npb24KICAgICAgICAgICAgfHwgJG5vZGUgaW5zdGFuY2VvZiBOZWdVbmFyeSB8fCAkbm9kZSBpbnN0YW5jZW9mIFBvc1VuYXJ5CiAgICAgICAgKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkbm9kZSBhcyAkbikgewogICAgICAgICAgICBpZiAoISR0aGlzLT5jaGVja0NvbnN0YW50RXhwcmVzc2lvbigkbikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";