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jZsAADIAAADGmwAALAAAAPmbAAAsAAAAJpwAACIAAABTnAAASQAAAHacAABWAAAAwJwAADcAAAAXnQAAMQAAAE+dAAAmAAAAgZ0AAC8AAAConQAAPgAAANidAAAUAAAAF54AABgAAAAsngAASgAAAEWeAABDAAAAkJ4AAGQAAADUngAAmQAAADmfAACZAAAA058AAJYAAABtoAAACgAAAAShAAA8AAAAD6EAAHYAAABMoQAAKwAAAMOhAAB5AAAA76EAAFAAAABpogAAPAAAALqiAABaAAAA96IAACAAAABSowAAXAAAAHOjAACVAAAA0KMAAGwAAABmpAAAOgAAANOkAAB6AAAADqUAAGIAAACJpQAATwAAAOylAABPAAAAPKYAAEcAAACMpgAAOwAAANSmAAAyAAAAEKcAAD0AAABDpwAAFQAAAIGnAABeAAAAl6cAAEsAAAD2pwAAVAAAAEKoAABMAAAAl6gAAC8AAADkqAAASQAAABSpAABdAAAAXqkAADEAAAC8qQAAWwAAAO6pAAB9AAAASqoAAEgAAADIqgAAiQAAABGrAABVAAAAm6sAADQAAADxqwAAOgAAACasAABQAAAAYawAAEMAAACyrAAAegAAAPasAAA2AAAAca0AADcAAACorQAAPAAAAOCtAABBAAAAHa4AAG4AAABfrgAAcgAAAM6uAABIAAAAQa8AADIAAACKrwAAJQAAAL2vAAAcAAAA468AAGQAAAAAsAAANgAAAGWwAAB0AAAAnLAAAD0AAAARsQAAOQAAAE+xAABRAAAAibEAAC0AAADbsQAAPQAAAAmyAAA8AAAAR7IAAD0AAACEsgAARgAAAMKyAABQAAAACbMAADcAAABaswAATAAAAJKzAAAfAAAA37MAADkAAAD/swAAUAAAADm0AAAoAAAAirQAACcAAACztAAAJAAAANu0AAAuAAAAALUAAEEAAAAvtQAAQQAAAHG1AABKAAAAs7UAAFUAAAD+tQAAjQAAAFS2AAAwAAAA4rYAAGQAAAATtwAAXwAAAHi3AACeAAAA2LcAACsAAAB3uAAAOAAAAKO4AABWAAAA3LgAAD4AAAAzuQAANwAAAHK5AABEAAAAqrkAADMAAADvuQAANQAAACO6AABfAAAAWboAAHUAAAC5ugAARgAAAC+7AABaAAAAdrsAAFMAAADRuwAA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ZXJpYyBmb3JtIGNhbm5vdCBiZSByZWRlZmluZWQAJXMgaXMgbm90IGEgZGVmaW5lZCBjbGFzcwAlcyBpcyBub3QgYSBkZWZpbmVkIGNsYXNzIGluIHRoaXMgZW52aXJvbm1lbnQAJXMgaXMgbm90IGEgZmllbGQgaW4gY2xhc3MgJXMAJXMgaXMgbm90IGEgZmllbGQgaW4gdGhpcyBjbGFzcwAlcyBpcyBub3QgYSBnZW5lcmljIGZ1bmN0aW9uIChvciBub3QgdmlzaWJsZSBoZXJlKQAlcyBpcyBub3QgYSBtZXRob2QgZm9yIHJlZmVyZW5jZSBjbGFzcyAlcwAlcyBpcyBub3QgYSByZWZlcmVuY2UgY2xhc3MAJXMgaXMgbm90IGEgc2xvdCBpbiBjbGFzcyAlcwAlcyBpcyBub3QgYSB2YWxpZCBmaWVsZCBvciBtZXRob2QgbmFtZSBmb3IgcmVmZXJlbmNlIGNsYXNzICVzACVzIGlzIG5vdCBhIHZhbGlkIGZpZWxkIG9yIG1ldGhvZCBuYW1lIGZvciB0aGlzIGNsYXNzACVzIGlzIG5vdCBhbiBTNCBnZW5lcmljIGZ1bmN0aW9uIGluICVzOyBtZXRob2RzIG5vdCByZW1vdmVkACVzIGlzIG5vdCBjdXJyZW50bHkgYSBnZW5lcmljOiAgZGVmaW5lIGl0IGZpcnN0IHRvIGNyZWF0ZSBhIG5vbi1kZWZhdWx0IGltcGxpY2l0IGZvcm0AJXMgaXMgbm90IGVsaWdpYmxlIHRvIGJlIHRoZSBkYXRhIHBhcnQgb2YgYW5vdGhlciBjbGFzcyAobXVzdCBiZSBhIGJhc2ljIGNsYXNzIG9yIGEgdmlydHVhbCBjbGFzcyB3aXRoIG5vIHNsb3RzKQAlcyBpcyBub3Qgb25lIG9mIHRoZSBlbGVtZW50IG5hbWVzACVzIGlzIG5vdCBvbmUgb2YgdGhlIHJlZmVyZW5jZSBzdXBlciBjbGFzc2VzIGZvciB0aGlzIG9iamVjdAAlcyBtdXN0IGJlIFRSVUUsIEZBTFNFLCBvciBhIG5hbWVkIGxvZ2ljYWwgdmVjdG9yIG9mIHRob3NlIHZhbHVlczsgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwAlcygpIGlzIG5vdCBhIGdlbmVyaWMgZnVuY3Rpb24gaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudCAtLSBtZXRob2RzIHdpbGwgbm90IGJlIGluc2VydGVkACVzLCBhbG9uZyB3aXRoIG90aGVyIHVzZSBvZiB0aGUgIk1ldGhvZHNMaXN0IiBtZXRhZGF0YSBvYmplY3RzLCBpcyBkZWZ1bmN0LgAlcywgYWxvbmcgd2l0aCBvdGhlciB1c2Ugb2YgdGhlICJNZXRob2RzTGlzdCIgbWV0YWRhdGEgb2JqZWN0cywgaXMgZGVwcmVjYXRlZC4AJyVzJyBpcyBub3QgYSBrbm93biBnZW5lcmljIGZ1bmN0aW9uIHthbmQgJ3BhY2thZ2UnIG5vdCBzcGVjaWZpZWR9ACdDbGFzcycgbXVzdCBiZSBhIHZhbGlkIGNsYXNzIGRlZmluaXRpb24gb3IgY2xhc3MAJ1MzQ2xhc3MnIGNhbiBvbmx5IGFzc2lnbiB0byBTNCBvYmplY3RzIHRoYXQgZXh0ZW5kICJvbGRDbGFzcyI7IG5vdCB0cnVlIG9mIGNsYXNzICVzACdTM0NsYXNzJyBvbmx5IGRlZmluZWQgZm9yIGV4dGVuc2lvbnMgb2YgJXMgb3IgY2xhc3NlcyB3aXRoIGEgZGF0YSBwYXJ0OiAgbm90IHRydWUgb2YgY2xhc3MgJXMAJ2FzJyBtZXRob2Qgc2hvdWxkIGhhdmUgb25lIGFyZ3VtZW50LCBvciBtYXRjaCB0aGUgYXJndW1lbnRzIG9mIGNvZXJjZSgpOiBnb3QgICglcykAJ2NsYXNzMScgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIGNsYXNzIG9yIGEgY2xhc3MgZGVmaW5pdGlvbgAnY2xhc3MyJyBtdXN0IGJlIHRoZSBuYW1lIG9mIGEgY2xhc3Mgb3IgYSBjbGFzcyBkZWZpbml0aW9uACdleHRlcm5hbHB0cicgb2JqZWN0cyBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgZnJvbSBuZXcoKQAnZmlsZScgbXVzdCBiZSBhIGNoYXJhY3RlciBzdHJpbmcgb3IgYSBjb25uZWN0aW9uACdpbml0aWFsaXplJyBtZXRob2QgcmV0dXJuZWQgYW4gb2JqZWN0IG9mIGNsYXNzICVzIGluc3RlYWQgb2YgdGhlIHJlcXVpcmVkIGNsYXNzICVzAChjbGFzcyAlcykAQWxsICVzIG5hbWVzIG11c3QgYmUgZGlzdGluY3QgaW46CiglcykAQWxsICVzIG5hbWVzIG11c3QgYmUgbm9uZW1wdHkgaW46CiglcykAQW4gb2JqZWN0IG9mIGNsYXNzICVzAEFyZ3VtZW50ICJyZXByZXNlbnRhdGlvbiIgY2Fubm90IGJlIHVzZWQgaWYgYXJndW1lbnQgInNsb3RzIiBpcyBzdXBwbGllZABDaG9vc2luZyBtZXRob2QgJXMgZnJvbSAlZCBhbWJpZ3VvdXMgcG9zc2liaWxpdHkAQ2hvb3NpbmcgbWV0aG9kICVzIGZyb20gJWQgYW1iaWd1b3VzIHBvc3NpYmlsaXRpZXMAQ2xhc3MgJXMgaXMgbm90IGEgc3ViY2xhc3Mgb2YgJXM7IGZ1bmN0aW9uYWwgc2VtYW50aWNzIG5vdCBkZWZpbmVkIGZvciB0aGlzIGNsYXNzAENvcHlpbmcgdGhlIGdlbmVyaWMgZnVuY3Rpb24gJXMgdG8gZW52aXJvbm1lbnQgJXMsIGJlY2F1c2UgdGhlIHByZXZpb3VzIHZlcnNpb24gd2FzIGluIGEgc2VhbGVkIG5hbWVzcGFjZSAoJXMpAENvdWxkIG5vdCBmaW5kIGxvY2FsIG9iamVjdCBpbiBzdXBwbGllZCBlbnZpcm9ubWVudABDcmVhdGVkIGEgcGFja2FnZSBuYW1lLCAlcywgd2hlbiBub25lIGZvdW5kAENyZWF0aW5nIGEgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgZnJvbSAlcyBpbiAlcwogICAgKGZyb20gdGhlIHNhdmVkIGltcGxpY2l0IGRlZmluaXRpb24pAENyZWF0aW5nIGEgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgZnJvbSBwYWNrYWdlICVzIGluICVzAENyZWF0aW5nIGEgZ2VuZXJpYyBmdW5jdGlvbiBmcm9tIGZ1bmN0aW9uICVzIGluICVzAENyZWF0aW5nIGEgbmV3IGdlbmVyaWMgZnVuY3Rpb24gZm9yICVzIGluICVzAERhdGEgcGFydCBpcyB1bmRlZmluZWQgZm9yIGdlbmVyYWwgUzQgb2JqZWN0AEVtcHR5IGZ1bmN0aW9uIG5hbWUgaW4gLmdldEdlbmVyaWMARW52aXJvbm1lbnQgb2YgY2xhc3MgJXMgaXMgbG9ja2VkOyB1c2luZyBnbG9iYWwgZW52aXJvbm1lbnQgZm9yIG5ldyBjbGFzcwBGb3IgZnVuY3Rpb24gJXMsIHNpZ25hdHVyZSAlczogYXJndW1lbnQgaW4gbWV0aG9kIGRlZmluaXRpb24gY2hhbmdlZCBmcm9tICglcykgdG8gKCVzKQBGdW5jdGlvbiAlcyBpcyBhIGdyb3VwIGdlbmVyaWM7IGRvIG5vdCBjYWxsIGl0IGRpcmVjdGx5AEZ1bmN0aW9uICVzIGlzIGFscmVhZHkgYSBncm91cCBnZW5lcmljOyBubyBjaGFuZ2UATWV0aG9kcyBpbnNlcnRlZCBmb3IgZnVuY3Rpb24gJXMoKTogJXMATW9kaWZpZWQgZnVuY3Rpb25zIGluc2VydGVkIHRocm91Z2ggdHJhY2UoKTogJXMATmV3IGZ1bmN0aW9ucyBhcmUgbm90IGN1cnJlbnRseSBpbnNlcnRlZCAobm90IHVudHJhY2VhYmxlKTogJXMATm8gJXMgbmFtZXMgc3VwcGxpZWQATm8gbmV4dCBtZXRob2QgYXZhaWxhYmxlAE5vIHNpbXBseSBpbmhlcml0ZWQgbWV0aG9kcyBmb3VuZCBmb3IgZnVuY3Rpb24gJXM7IHVzaW5nIG5vbi1zaW1wbGUgbWV0aG9kAE5vbi1mdW5jdGlvbiBvYmplY3RzIGFyZSBub3QgY3VycmVudGx5IGluc2VydGVkIChub3QgdHJhY2VhYmxlKTogJXMATm90ZTogbWV0aG9kIHdpdGggc2lnbmF0dXJlICVzIGNob3NlbiBmb3IgZnVuY3Rpb24gJXMsCiB0YXJnZXQgc2lnbmF0dXJlICVzLgogJXMgd291bGQgYWxzbyBiZSB2YWxpZABOb3RlOiBzb21lIHN1cGVyY2xhc3NlcyBvZiBjbGFzcyAlcyBpbiBwYWNrYWdlICVzIGhhdmUgZHVwbGljYXRlIGRlZmluaXRpb25zLiAgVGhpcyBkZWZpbml0aW9uIGlzIG5vdCBiZWluZyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gdGhhdCBmcm9tIHBhY2thZ2UgJXMATm90ZTogdGhlIHNwZWNpZmljYXRpb24gZm9yIFMzIGNsYXNzICVzIGluIHBhY2thZ2UgJXMgc2VlbXMgZXF1aXZhbGVudCB0byBvbmUgZnJvbSBwYWNrYWdlICVzOiBub3QgdHVybmluZyBvbiBkdXBsaWNhdGUgY2xhc3MgZGVmaW5pdGlvbnMgZm9yIHRoaXMgY2xhc3MuAE5vdGU6IHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjbGFzcyAlcyBpbiBwYWNrYWdlICVzIHNlZW1zIGVxdWl2YWxlbnQgdG8gb25lIGZyb20gcGFja2FnZSAlczogbm90IHR1cm5pbmcgb24gZHVwbGljYXRlIGNsYXNzIGRlZmluaXRpb25zIGZvciB0aGlzIGNsYXNzLgBOb3RlczogJXMuAE9PUFM6IHNvbWV0aGluZyB3cm9uZyB3aXRoICcuT2xkQ2xhc3Nlc1Byb3RvdHlwZXNbWyVkXV0nAFJlcG9ydGVkICVkIGFtYmlndW91cyBzZWxlY3Rpb24gb3V0IG9mICVkIGZvciBmdW5jdGlvbiAlcwoAUmVwb3J0ZWQgJWQgYW1iaWd1b3VzIHNlbGVjdGlvbnMgb3V0IG9mICVkIGZvciBmdW5jdGlvbiAlcwoAUmVzdG9yaW5nIGRlZmF1bHQgZnVuY3Rpb24gZGVmaW5pdGlvbiBvZiAlcwBTM1BhcnQoKSBpcyBvbmx5IGRlZmluZWQgZm9yIGNsYXNzZXMgc2V0IHVwIGJ5IHNldE9sZENMYXNzKCksIGJhc2ljIGNsYXNzZXMgb3Igc3ViY2xhc3NlcyBvZiB0aGVzZTogIG5vdCB0cnVlIG9mIGNsYXNzICVzAFNlbGVjdGluZyAlZCBtZXRob2Qgb2YgbWluaW11bSBkaXN0YW5jZQBTZWxlY3RpbmcgJWQgbWV0aG9kcyBvZiBtaW5pbXVtIGRpc3RhbmNlAFNlbGVjdGluZyAlZCBub24tZ3JvdXAgbWV0aG9kAFNlbGVjdGluZyAlZCBub24tZ3JvdXAgbWV0aG9kcwBTZWxlY3RpbmcgJWQgcGFydGlhbGx5IGV4YWN0LW1hdGNoaW5nIG1ldGhvZABTZWxlY3RpbmcgJWQgcGFydGlhbGx5IGV4YWN0LW1hdGNoaW5nIG1ldGhvZHMAU2tlbGV0b24gb2YgbWV0aG9kIHdyaXR0ZW4gdG8gJXMAYSAncmVwbGFjZScgbWV0aG9kIGRlZmluaXRpb24gaW4gJ3NldEFzJyBtdXN0IGJlIGEgZnVuY3Rpb24gb2YgdHdvIGFyZ3VtZW50cywgZ290ICVkAGEgY2FsbCB0byBjYWxsTmV4dE1ldGhvZCgpIGFwcGVhcnMgaW4gYSBjYWxsIHRvICVzLCBidXQgdGhlIGNhbGwgZG9lcyBub3Qgc2VlbSB0byBjb21lIGZyb20gZWl0aGVyIGEgZ2VuZXJpYyBmdW5jdGlvbiBvciBhbm90aGVyICdjYWxsTmV4dE1ldGhvZCcAYSBjYWxsIHRvIHN1cGVyQ2xhc3MoKSBpcyBpbiB0aGUgbWV0aG9kICVzIGJ1dCB0aGVyZSBpcyBubyBzdXBlcmNsYXNzIGRlZmluaXRpb24gb2YgdGhpcyBtZXRob2QgZm9yIGNsYXNzICVzAGEgZnVuY3Rpb24gZm9yIGFyZ3VtZW50ICdmJyBtdXN0IGJlIGEgZ2VuZXJpYyBmdW5jdGlvbgBhIHByb3RvdHlwZSBvYmplY3Qgd2FzIHN1cHBsaWVkIHdpdGggb2JqZWN0IHNsb3Qgb2YgY2xhc3MgJXMsIGJ1dCB0aGUgY2xhc3MgZGVmaW5pdGlvbiByZXF1aXJlcyBhbiBvYmplY3QgdGhhdCBpcyBjbGFzcyAlcwBhIHByb3RvdHlwZSB3YXMgc3VwcGxpZWQgb2YgY2xhc3MgJXMsIGJ1dCB0aGUgY2xhc3MgZGVmaW5pdGlvbiByZXF1aXJlcyBhbiBvYmplY3QgdGhhdCBpcyBjbGFzcyAlcwBhIHNpbmdsZSBjbGFzcyBuYW1lIGlzIG5lZWRlZCBmb3IgZmllbGQgJXMsIGdvdCBhIGNoYXJhY3RlciB2ZWN0b3Igb2YgbGVuZ3RoICVkAGEgdmFsaWRpdHkgbWV0aG9kIG11c3QgYmUgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQsIGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAYWJub3JtYWwgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVkIGFzIGEgc3VwZXJjbGFzcyBvZiBhIGNsYXNzIGRlZmluaXRpb24AYWN0aW9uIGZ1bmN0aW9uICVzIGhhcyBubyBhcmd1bWVudHMsIHNob3VsZCBoYXZlIGF0IGxlYXN0IDEAYW1iaWd1b3VzIG9iamVjdCAobGVuZ3RoICE9IDEpIHRvIGNvZXJjZSB0byAibmFtZSIAYXBwYXJlbnRseSBiYWQgbWV0aG9kIG9yIGNsYXNzIG1ldGFkYXRhIGluIHNhdmVkIGVudmlyb25tZW50OwBhcmd1bWVudCAlcyBpcyBub3QgUzQAYXJndW1lbnQgJXMgbXVzdCBiZSBhIGdlbmVyaWMgZnVuY3Rpb24gb3IgYSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZzsgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBhcmd1bWVudCAlcyBtdXN0IGJlIGEgbGlzdCBvciBhIGNoYXJhY3RlciB2ZWN0b3I7IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAYXJndW1lbnQgJ0NsYXNzZXMnIG11c3QgYmUgYSB2ZWN0b3Igb2YgdHdvIGNsYXNzZXM7IGdvdCBhbiBhcmd1bWVudCBvZiBsZW5ndGggJWQAYXJndW1lbnQgJ1M0Q2xhc3MnIG11c3QgYmUgYSBjbGFzcyBkZWZpbml0aW9uOiBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGFyZ3VtZW50ICdhYmJyZXZpYXRlJyBtdXN0IGJlIDAsIDEsIDIsIG9yIDMAYXJndW1lbnQgJ2NsYXNzRGVmJyBtdXN0IGJlIGEgY2xhc3MgZGVmaW5pdGlvbiBvciB0aGUgbmFtZSBvZiBhIGNsYXNzAGFyZ3VtZW50ICdjbGFzc0RlZicgbXVzdCBiZSBhIHN0cmluZyBvciBhIGNsYXNzIHJlcHJlc2VudGF0aW9uOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGFyZ3VtZW50ICdmJyBtdXN0IGJlIGEgZ2VuZXJpYyBmdW5jdGlvbiBvciAlcwBhcmd1bWVudCAnZicgbXVzdCBiZSBhIHN0cmluZywgZ2VuZXJpYyBmdW5jdGlvbiwgb3IgcHJpbWl0aXZlOiBnb3QgYW4gb3JkaW5hcnkgZnVuY3Rpb24AYXJndW1lbnQgJ2luY2x1ZGVTdWJjbGFzc2VzJyBtdXN0IGJlIGEgbG9naWNhbCwgZWl0aGVyIG9uZSB2YWx1ZSBvciBhIHZlY3RvciBvZiB0aGUgc2FtZSBsZW5ndGggYXMgYXJndW1lbnQgJ2NsYXNzZXMnAGFyZ3VtZW50ICdzaWduYXR1cmUnIGlzIG5vdCBtZWFuaW5nZnVsIGZvciB0cmFjaW5nIHJlZmVyZW5jZSBtZXRob2RzAGFyZ3VtZW50ICdzaWduYXR1cmUnIGlzIG5vdCBtZWFuaW5nZnVsIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYW5kIGlzIGlnbm9yZWQgCihleHRyYWN0IGEgc3Vic2V0IG9mIHRoZSBtZXRob2RzIGxpc3QgaW5zdGVhZCkAYXJndW1lbnQgJ3NpZ25hdHVyZXMnIG11c3QgYmUgYSBjaGFyYWN0ZXIgbWF0cml4IHdob3NlIHJvd3MgYXJlIG1ldGhvZCBzaWduYXR1cmVzAGFyZ3VtZW50ICd3aGF0JyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBmdW5jdGlvbgBhcmd1bWVudCBmIG11c3QgYmUgYSBnZW5lcmljIGZ1bmN0aW9uIHdpdGggc2lnbmF0dXJlICIuLi4iAGFyZ3VtZW50IG5hbWVzIGluICdyZXBsYWNlJyBjaGFuZ2VkIHRvIGFncmVlIHdpdGggJ2NvZXJjZTwtJyBnZW5lcmljOgolcwBhcmd1bWVudHMgJ25hbWVzJyBhbmQgJ3NpZ25hdHVyZScgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aABhcmd1bWVudHMgKCVzKSBhZnRlciAnLi4uJyBpbiB0aGUgZ2VuZXJpYyBtdXN0IGFwcGVhciBpbiB0aGUgbWV0aG9kLCBpbiB0aGUgc2FtZSBwbGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudCBsaXN0AGFyZ3VtZW50cyBtdXN0IGFsbCBiZSBjaGFyYWN0ZXIgc3RyaW5nIG5hbWVzIG9mIGZpZWxkcwBhcmd1bWVudHMgdG8gbWV0aG9kcygpIG11c3QgYmUgbmFtZWQsIG9yIG9uZSBuYW1lZCBsaXN0AGFzc2lnbmluZyBhcyAlcyBhIGNsYXNzIHJlcHJlc2VudGF0aW9uIHdpdGggaW50ZXJuYWwgbmFtZSAlcwBhc3NpZ25pbmcgb3ZlciB0aGUgYmluZGluZyBvZiBzeW1ib2wgJXMgaW4gZW52aXJvbm1lbnQvcGFja2FnZSAlcwBhc3NpZ25tZW50IG9mIGFuIG9iamVjdCBvZiBjbGFzcyAlcyBpcyBub3QgdmFsaWQgZm9yIEAlcyBpbiBhbiBvYmplY3Qgb2YgY2xhc3MgJXM7IGlzKHZhbHVlLCAiJXMiKSBpcyBub3QgVFJVRQBhc3NpZ25tZW50IG9mIGFuIG9iamVjdCBvZiBjbGFzcyAlcyBpcyBub3QgdmFsaWQgZm9yIHNsb3QgJXMgaW4gYW4gb2JqZWN0IG9mIGNsYXNzICVzOyBpcyh2YWx1ZSwgIiVzIikgaXMgbm90IFRSVUUAYmFkIGNsYXNzIHNwZWNpZmllZCBmb3IgZWxlbWVudCAlZCAoc2hvdWxkIGJlIGEgc2luZ2xlIGNoYXJhY3RlciBzdHJpbmcpAGJhZCBtZXRob2Qgb2JqZWN0IHN0b3JlZCBpbiBtZXRob2QgdGFibGUsIGNsYXNzICVzAGJhZCBvYmplY3QgZm91bmQgYXMgbWV0aG9kIChjbGFzcyAlcykAYm90aCBjbGFzc2VzIG11c3QgYmUgZGVmaW5lZABjYWxsIHRvICdjYWxsTmV4dE1ldGhvZCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluIGEgJ21ldGhvZCcgb3IgJ2NhbGxOZXh0TWV0aG9kJyBjb250ZXh0AGNhbGxHZW5lcmljKCkgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBtZXRob2QgYm9keQBjYW5ub3QgY3JlYXRlIGEgJ3NldElzJyByZWxhdGlvbiB3aGVuIG5laXRoZXIgb2YgdGhlIGNsYXNzZXMgKCVzIGFuZCAlcykgaXMgbG9jYWwgYW5kIG1vZGlmaWFibGUgaW4gdGhpcyBwYWNrYWdlAGNhbm5vdCBmaW5kIGFuIGVudmlyb25tZW50IGNvcnJlc3BvbmRpbmcgdG8gcGFja2FnZSBuYW1lICclcyIAY2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSB1bm5hbWVkIGFyZ3VtZW50IGFzIGVudmlyb25tZW50AGNhbm5vdCBpbnNlcnQgbWV0aG9kcyBmb3IgdGhlc2UgZnVuY3Rpb25zIChtZXRob2RzIHRhYmxlIG5vdCBmb3VuZCBpbiBzb3VyY2UpOiAlcwBjYW5ub3QgaW5zZXJ0IHRoZXNlIChub3QgZm91bmQgaW4gc291cmNlKTogJXMAY2Fubm90IHJlbW92ZSBtZXRob2RzIGZvciAlcyBpbiBsb2NrZWQgZW52aXJvbm1lbnQvcGFja2FnZSAlcwBjYW5ub3Qgc3BlY2lmeSBhcnJheSgpIGFyZ3VtZW50cyB3aGVuIHNwZWNpZnlpbmcgJy5EYXRhJwBjYW5ub3Qgc3BlY2lmeSBtYXRyaXgoKSBhcmd1bWVudHMgd2hlbiBzcGVjaWZ5aW5nICcuRGF0YScAY2Fubm90IHVudHJhY2UgbWV0aG9kIGZvciAlczsgbm8gbWV0aG9kIGRlZmluZWQgZm9yIHRoaXMgc2lnbmF0dXJlOiAlcwBjYW5ub3QgdXNlICdhdCcgYXJndW1lbnQgdW5sZXNzIHRoZSBmdW5jdGlvbiBib2R5IGhhcyB0aGUgZm9ybSAneyAuLi4gfScAY2Fubm90IHVzZSAnYXQnIGFyZ3VtZW50IHdpdGhvdXQgYSB0cmFjZSBleHByZXNzaW9uAGNhbm5vdCB1c2Ugb2JqZWN0IG9mIGNsYXNzICVzIGluIG5ldygpOiAgY2xhc3MgJXMgZG9lcyBub3QgZXh0ZW5kIHRoYXQgY2xhc3MAY2xhc3MgJXMgY2Fubm90IGV4dGVuZCBjbGFzcyAlcwBjbGFzcyAlcyBkb2VzIG5vdCBoYXZlIGEgZGF0YSBwYXJ0IChhIC5EYXRhIHNsb3QpIGRlZmluZWQAY2xhc3MgJXMgZG9lcyBub3QgaGF2ZSBhbiBTMyBkYXRhIHBhcnQsIGFuZCBzbyBpcyBvZiB0eXBlICJTNCI7IG5vIFMzIGVxdWl2YWxlbnQAY2xhc3MgJXMgZXh0ZW5kcyBhbiB1bmRlZmluZWQgY2xhc3MgKCVzKQBjbGFzcyAlcyBleHRlbmRzIGFuIHVuZGVmaW5lZCBjbGFzcywgJXMAY2xhc3MgJXMgZm9yIGZpZWxkICVzIGlzIG5vdCBkZWZpbmVkAGNsYXNzICVzIGhhcyBhIGxvY2tlZCBkZWZpbml0aW9uIGluIHBhY2thZ2UgJXMAY2xhc3MgJXMgaGFzIG11bHRpcGxlIGRlZmluaXRpb25zIHZpc2libGU7IG9ubHkgdGhlIGZpcnN0IHJlbW92ZWQAY2xhc3MgJXMgaGFzIG5vIHZpc2libGUgZGVmaW5pdGlvbiBmcm9tIHBhY2thZ2Ugb3IgZW52aXJvbm1lbnQgJXMAY2xhc3MgJXMgaXMgVklSVFVBTDsgbm90IG1lYW5pbmdmdWwgdG8gY3JlYXRlIGFuIFM0IG9iamVjdCBmcm9tIHRoaXMgY2xhc3MAY2xhc3MgJXMgaXMgYSBjbGFzcyB1bmlvbjogJ2NvZXJjZScgcmVsYXRpb25zIHRvIGEgY2xhc3MgdW5pb24gYXJlIG5vdCBtZWFuaW5nZnVsAGNsYXNzICVzIGlzIGRlZmluZWQgKHdpdGggcGFja2FnZSBzbG90ICVzKSBidXQgbm8gbWV0YWRhdGEgb2JqZWN0IGZvdW5kIHRvIHJldmlzZSAlcyBpbmZvcm1hdGlvbi0tLW5vdCBleHBvcnRlZD8gIE1ha2luZyBhIGNvcHkgaW4gcGFja2FnZSAlcwBjbGFzcyAlcyBpcyBkZWZpbmVkIGJ1dCBpcyBub3QgYSByZWZlcmVuY2UgY2xhc3MAY2xhc3MgJXMgaXMgZGVmaW5lZCwgd2l0aCBwYWNrYWdlICVzLCBidXQgbm8gY29ycmVzcG9uZGluZyBtZXRhZGF0YSBvYmplY3Qgd2FzIGZvdW5kIChub3QgZXhwb3J0ZWQ/KQBjbGFzcyAlcyBpcyBpbmhlcml0aW5nIGFuIGluY29uc2lzdGVudCBzdXBlcmNsYXNzIHN0cnVjdHVyZSBmcm9tIGNsYXNzICVzLCBpbmNvbnNpc3RlbnQgd2l0aCAlcwBjbGFzcyAlcyBpcyBtaXNzaW5nIHNsb3QgZnJvbSBjbGFzcyAlcyAoJXMpLCBhbmQgbm8gY29lcmNlIG1ldGhvZCB3YXMgc3VwcGxpZWQAY2xhc3MgJXMgaXMgbWlzc2luZyBzbG90cyBmcm9tIGNsYXNzICVzICglcyksIGFuZCBubyBjb2VyY2UgbWV0aG9kIHdhcyBzdXBwbGllZABjbGFzcyAlcyBpcyBub3QgZGVmaW5lZCBpbiB0aGlzIGVudmlyb25tZW50AGNsYXNzICVzIGlzIHNlYWxlZDsgJ3Jlc2V0Q2xhc3MnIHdpbGwgaGF2ZSBubyBlZmZlY3QAY2xhc3MgJXMgaXMgc2VhbGVkOyBuZXcgc3VwZXJjbGFzc2VzIGNhbiBub3QgYmUgZGVmaW5lZCwgZXhjZXB0IGJ5ICdzZXRDbGFzc1VuaW9uJwBjbGFzcyAlcyBub3QgZm91bmQgb24gJXM7ICdyZXNldENsYXNzJyB3aWxsIGhhdmUgbm8gZWZmZWN0AGNsYXNzIGNhbm5vdCBoYXZlIGJvdGggYW4gb3JkaW5hcnkgYW5kIGhpZGRlbiBkYXRhIHR5cGUAY2xhc3MgZGVmaW5pdGlvbiBjYW5ub3QgZXh0ZW5kIG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgZGF0YSB0eXBlczogJXMAY2xhc3MgZGVmaW5pdGlvbiBmb3IgJXMgbm90IGZvdW5kIChubyBhY3Rpb24gdGFrZW4pAGNsYXNzIGdlbmVyYXRvciBmdW5jdGlvbiBmb3IgY2xhc3MgJXMgZnJvbSBwYWNrYWdlICVzAGNsYXNzIG11c3QgYmUgYSByZWZlcmVuY2UgY2xhc3MgcmVwcmVzZW50YXRpb24gb3IgYSBjaGFyYWN0ZXIgc3RyaW5nOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGNvZGUgZm9yIG1ldGhvZHMgaW4gY2xhc3MgJXMgd2FzIG5vdCBjaGVja2VkIGZvciBzdXNwaWNpb3VzIGZpZWxkIGFzc2lnbm1lbnRzIChyZWNvbW1lbmRlZCBwYWNrYWdlICVzIG5vdCBhdmFpbGFibGU/KQBjb25mbGljdGluZyBkZWZpbml0aW9uIG9mIGRhdGEgcGFydDogLkRhdGEgPSAlcywgc3VwZXJjbGFzcyBpbXBsaWVzICVzAGRlZmF1bHQgbWV0aG9kIG11c3QgYmUgYSBtZXRob2QgZGVmaW5pdGlvbiwgYSBwcmltaXRpdmUgb3IgTlVMTDogZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBkaXJlY3QgY2FsbHMgdG8gY2FsbFN1cGVyKCkgYXJlIGludmFsaWQ6ICBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBhbm90aGVyIG1ldGhvZABkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbWV0aG9kIHRhYmxlIGZvciBnZW5lcmljICVzIGluIHRyYWNpbmcgZW52aXJvbm1lbnQAZHVwbGljYXRlIGNsYXNzIG5hbWVzIGFtb25nIHN1cGVyY2xhc3NlczogJXMAZHVwbGljYXRlIGVsZW1lbnQgbmFtZXMgaW4gJ01ldGhvZHNMaXN0JyBhdCBsZXZlbCAlZDogJXMAZHVwbGljYXRlZCBzbG90IG5hbWU6ICVzAGR1cGxpY2F0ZWQgc2xvdCBuYW1lczogJXMAZHVwbGljYXRlZCBzbG90IG5hbWVzOiAlcwBlbGVtZW50ICVkIGF0IGxldmVsICVkIChjbGFzcyAlcykgY2Fubm90IGJlIGludGVycHJldGVkIGFzIGEgZnVuY3Rpb24gb3IgbmFtZWQgbGlzdABlbGVtZW50ICVkIG9mIHRoZSByZXByZXNlbnRhdGlvbiB3YXMgbm90IGEgc2luZ2xlIGNoYXJhY3RlciBzdHJpbmcAZXJyb3IgaW4gY29udGFpbmVkIGNsYXNzZXMgKCVzKSBmb3IgY2xhc3MgJXMgYW5kIHVuYWJsZSB0byByZW1vdmUgZGVmaW5pdGlvbiBmcm9tICVzAGVycm9yIGluIGNvbnRhaW5lZCBjbGFzc2VzICglcykgZm9yIGNsYXNzICVzIGFuZCB1bmFibGUgdG8gcmVzdG9yZSBwcmV2aW91cyBkZWZpbml0aW9uIGZyb20gJXMAZXJyb3IgaW4gY29udGFpbmVkIGNsYXNzZXMgKCVzKSBmb3IgY2xhc3MgJXM7IGNsYXNzIGRlZmluaXRpb24gcmVtb3ZlZCBmcm9tICVzAGVycm9yIGluIGNvbnRhaW5lZCBjbGFzc2VzICglcykgZm9yIGNsYXNzICVzOyBwcmV2aW91cyBkZWZpbml0aW9uIHJlc3RvcmVkIHRvICVzAGVycm9yIGluIGxvYWQgYWN0aW9uICVzIGZvciBwYWNrYWdlICVzOiAlczogJXMAZXJyb3IgaW4gdXBkYXRpbmcgUzQgZ2VuZXJpYyBmdW5jdGlvbiAlczsgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgbm90IGFuIFM0IGdlbmVyaWMgZnVuY3Rpb24gKGNsYXNzICVzKQBleHBhbmRpbmcgdGhlIHNpZ25hdHVyZSB0byBpbmNsdWRlIG9taXR0ZWQgYXJndW1lbnRzIGluIGRlZmluaXRpb246ICVzAGV4cGVjdGVkIGEgbm9uLWVtcHR5IGNoYXJhY3RlciBzdHJpbmcgZm9yIGFyZ3VtZW50IG5hbWUAZXhwbGljaXQgY29lcmNpb24gb2Ygb2xkLXN0eWxlIGNsYXNzICglcykgaXMgbm90IGRlZmluZWQAZXhwbGljaXQgcmVwbGFjZW1lbnQgbm90IGRlZmluZWQgZm9yIGFzKHgsICIlcyIpIDwtIHZhbHVlIGZvciBvbGQtc3R5bGUgY2xhc3MgJXMAZmFpbGVkIHRvIGZpbmQgZXhwZWN0ZWQgZ3JvdXAgZ2VuZXJpYyBmdW5jdGlvbjoAZmllbGQgJXMgaXMgYWxyZWFkeSBsb2NrZWQAZmllbGQgJXMgb2YgY2xhc3MgJXMgaGFzIGEgbm9uLWRlZmF1bHQgYmluZGluZyBhbmQgY2Fubm90IGJlIGxvY2tlZABmaWVsZCAlcyB3YXMgc3VwcGxpZWQgYXMgYW4gb2JqZWN0IG9mIGNsYXNzICVzOyBtdXN0IGJlIGEgY2xhc3MgbmFtZSBvciBhIGJpbmRpbmcgZnVuY3Rpb24AZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lcyBvZiBvbmUgb2YgbW9yZSBnZW5lcmljIGZ1bmN0aW9ucyAoZ290IG9iamVjdCBvZiBjbGFzcyAlcykAZm9ybWFsIGFyZ3VtZW50cyAoJXMpIG9taXR0ZWQgaW4gdGhlIG1ldGhvZCBkZWZpbml0aW9uIGNhbm5vdCBiZSBpbiB0aGUgc2lnbmF0dXJlAGZvcm1hbCBhcmd1bWVudHMgZGlmZmVyIChpbiBkZWZhdWx0IHZhbHVlcz8pAGZvcm1hbCBhcmd1bWVudHMgZGlmZmVyOiAoJXMpLCAoJXMpAGZvcm1hbCBhcmd1bWVudHMgaW4gbWV0aG9kIGFuZCBnZW5lcmljIGRvIG5vdCBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIAZm91bmQgJWQgZXF1YWxseSBnb29kIG5leHQgbWV0aG9kAGZvdW5kICVkIGVxdWFsbHkgZ29vZCBuZXh0IG1ldGhvZHMAZnVuY3Rpb24gJXMgYXBwZWFycyB0byBiZSBhIGdlbmVyaWMgZnVuY3Rpb24sIGJ1dCB3aXRoIGdlbmVyaWMgbmFtZSAlcwBmdW5jdGlvbiBzdXBwbGllZCBhcyBhcmd1bWVudCAnZicgbXVzdCBiZSBhIGdlbmVyaWMAZ2VuZXJpYyBmdW5jdGlvbiAlcyBub3QgZm91bmQgZm9yIHJlbW92YWwAZ2VuZXJpYyBmdW5jdGlvbiBzdXBwbGllZCB3YXMgbm90IGNyZWF0ZWQgZm9yICVzAGdlbmVyaWMgbmFtZXMgZGlmZmVyOiAlcywgJXMAZ290IGEgbmVnYXRpdmUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHRvIGxvb2sgYXQAZ3JvdXBzIGRpZmZlcjogJXMsICVzAGlmIHRoZSAnZGVmJyBhcmd1bWVudCBpcyBzdXBwbGllZCwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgc3RhbmRhcmRHZW5lcmljKCIlcyIpIG9yIGlzIHRoZSBkZWZhdWx0AGluICVzOiB1c2Ugb2YgIk1ldGhvZHNMaXN0IiBtZXRhZGF0YSBvYmplY3RzIGlzIGRlZnVuY3QuAGluICVzOiB1c2Ugb2YgIk1ldGhvZHNMaXN0IiBtZXRhZGF0YSBvYmplY3RzIGlzIGRlcHJlY2F0ZWQuAGluIGNoYW5naW5nIGZvcm1hbCBhcmd1bWVudHMgaW4gJXMsIHNvbWUgb2YgdGhlIG9sZCBuYW1lcyBhcmUgbm90IGluIGZhY3QgYXJndW1lbnRzOiAlcwBpbiBjb25zdHJ1Y3RpbmcgdGhlIHByb3RvdHlwZSBmb3IgY2xhc3MgJXMsIHNsb3RzIGluIHByb3RvdHlwZSBhbmQgbm90IGluIGNsYXNzOiAlcwBpbiBjb25zdHJ1Y3RpbmcgdGhlIHByb3RvdHlwZSBmb3IgY2xhc3MgJXM6IHByb3RvdHlwZSBoYXMgY2xhc3MgJXMsIGJ1dCB0aGUgZGF0YSBwYXJ0IHNwZWNpZmllcyBjbGFzcyAlcwBpbiBkZWZpbmluZyBjbGFzcyAlcywgdGhlIHN1cHBsaWVkIGRhdGEgcGFydCBjbGFzcywgJXMgaXMgbm90IHZhbGlkIChtdXN0IGJlIGEgYmFzaWMgY2xhc3Mgb3IgYSB2aXJ0dWFsIGNsYXNzIGNvbWJpbmluZyBiYXNpYyBjbGFzc2VzKQBpbiBkZWZpbml0aW9uIG9mIGNsYXNzICVzLCBpbmZvcm1hdGlvbiBmb3Igc3VwZXJjbGFzcyAlcyBpcyBvZiBjbGFzcyAlcyAoZXhwZWN0ZWQgIlNDbGFzc0V4dGVuc2lvbiIpAGluIG1ha2luZyB0aGUgcHJvdG90eXBlIGZvciBjbGFzcyAlcyBlbGVtZW50cyBvZiB0aGUgcHJvdG90eXBlIGZhaWxlZCB0byBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBzbG90IGNsYXNzOiAlcwBpbiBtZXRob2QgZm9yICVzIHdpdGggc2lnbmF0dXJlICVzOgBpbiB0aGUgbWV0aG9kIHNpZ25hdHVyZSBmb3IgZnVuY3Rpb24gJXMgaW52YWxpZCBhcmd1bWVudCBuYW1lIGluIHRoZSBzaWduYXR1cmU6ICVzAGluIHRoZSBtZXRob2Qgc2lnbmF0dXJlIGZvciBmdW5jdGlvbiAlcyBpbnZhbGlkIGFyZ3VtZW50IG5hbWVzIGluIHRoZSBzaWduYXR1cmU6ICVzAGluY29uc2lzdGVudCBvbGQtc3R5bGUgY2xhc3MgaW5mb3JtYXRpb24gZm9yICVzIChtYXliZSBtaXhpbmcgb2xkIGFuZCBuZXcgY2xhc3Nlcz8pAGluY29uc2lzdGVudCBvbGQtc3R5bGUgY2xhc3MgaW5mb3JtYXRpb24gZm9yICVzOyB0aGUgY2xhc3MgaXMgZGVmaW5lZCBidXQgZG9lcyBub3QgZXh0ZW5kICVzIGFuZCBpcyBub3QgdmFsaWQgYXMgdGhlIGRhdGEgcGFydABpbml0aWFsaXppbmcgb2JqZWN0cyBmcm9tIGNsYXNzICVzIHdpdGggdGhlc2UgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQAaW5zZXJ0aW5nIG1ldGhvZCBjb3JyZXNwb25kaW5nIHRvIGVtcHR5IHNpZ25hdHVyZQBpbnNlcnRpbmcgbWV0aG9kIGludG8gbm9uLW1ldGhvZHMtbGlzdCBvYmplY3QgKGNsYXNzICVzKQBpbnNlcnRpbmcgbWV0aG9kIHdpdGggaW52YWxpZCBzaWduYXR1cmUgbWF0Y2hpbmcgYXJndW1lbnQgJy4uLicgdG8gY2xhc3MgJXMAaW52YWxpZCAnQ2xhc3MnIGFyZ3VtZW50OiAgc2hvdWxkIGJlIGEgc2luZ2xlIHN0cmluZwBpbnZhbGlkICdpZ25vcmUnIGFyZ3VtZW50OyBzaG91bGQgYmUgYSBjbGFzcyBkZWZpbml0aW9uIG9yIGEgY2hhcmFjdGVyIHZlY3RvciwgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBpbnZhbGlkICdwYWNrYWdlJyBzbG90IG9yIGF0dHJpYnV0ZSwgd3JvbmcgbGVuZ3RoAGludmFsaWQgJ3NvdXJjZScgYXJndW1lbnQ6IGV4cGVjdGVkIGZpbGUgbmFtZXMgb3IgYSBjb25uZWN0aW9uIGJ1dCBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGludmFsaWQgUzQgY2xhc3MgY29ycmVzcG9uZGluZyB0byBTMyBjbGFzczogc2xvdHMgaW4gIFM0IHZlcnNpb24gbXVzdCBleHRlbmQgY29ycmVzcG9uZGluZyBzbG90cyBpbiBTMyB2ZXJzaW9uOiBmYWlscyBmb3IgJXMAaW52YWxpZCBhcmd1bWVudCAnbmFtZSc6ICVzAGludmFsaWQgYXNzaWdubWVudCBmb3IgcmVmZXJlbmNlIGNsYXNzIGZpZWxkICVzLCBzaG91bGQgYmUgZnJvbSBjbGFzcyAlcyBvciBhIHN1YmNsYXNzICh3YXMgY2xhc3MgJXMpAGludmFsaWQgY2FsbCBpbiBtZXRob2QgZGlzcGF0Y2ggdG8gJyVzJyAobm8gZGVmYXVsdCBtZXRob2QpAGludmFsaWQgY2FsbCB0byAnY2xhc3NMYWJlbCc6IGV4cGVjdGVkIGEgbmFtZSBvciBhIGNsYXNzIGRlZmluaXRpb24sIGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAaW52YWxpZCBjbGFzcyAlcyBvYmplY3QAaW52YWxpZCBlbGVtZW50IGluIGEgbGlzdCBmb3IgInNpZ25hdHVyZSIgYXJndW1lbnQ7IGVsZW1lbnQgJWQgaXMgbmVpdGhlciBhIGNsYXNzIGRlZmluaXRpb24gbm9yIGEgY2xhc3MgbmFtZQBpbnZhbGlkIGVsZW1lbnQgaW4gdGhlICJncm91cE1lbWJlcnMiIHNsb3QgKGNsYXNzICVzKQBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50OiBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBkaXNwYXRjaABpbnZhbGlkIGdyb3VwIGdlbmVyaWMgZnVuY3Rpb24gaW4gc2VhcmNoIGZvciBpbmhlcml0ZWQgbWV0aG9kIChjbGFzcyAlcykAaW52YWxpZCBpbmRleCBmb3IgZnVuY3Rpb24gYXJndW1lbnQAaW52YWxpZCBtZXRob2QgZGVmaW5pdGlvbjogZXhwZWN0ZWQgYSBmdW5jdGlvbiwgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBpbnZhbGlkIG1ldGhvZCBzdWJsaXN0AGludmFsaWQgbWV0aG9kcyB0YWJsZSByZXF1ZXN0AGludmFsaWQgbWxpc3QgZWxlbWVudCBmb3Igc2lnbmF0dXJlICVzIGF0IGxldmVsICVkIChzaG91bGQgYmUgTWV0aG9kRGVmaW5pdGlvbiBvciAuUHJpbWl0aXZlLCBoYWQgY2xhc3MgJXMpAGludmFsaWQgbmFtZSBmb3Igc2xvdCBvZiBjbGFzcyAlczogJXMAaW52YWxpZCBuYW1lcyBmb3Igc2xvdHMgb2YgY2xhc3MgJXM6ICVzAGludmFsaWQgb2JqZWN0IGZvciBmb3JtYWwgbWV0aG9kIGRlZmluaXRpb246IHR5cGUgJXMAaW52YWxpZCBvYmplY3QgaW4gbWV0YSB0YWJsZSBvZiBtZXRob2RzIGZvciAlcywgbGFiZWwgJXMsIGhhZCBjbGFzcyAlcwBpbnZhbGlkIG9iamVjdCBpbiBtZXRob2RzIHRhYmxlICglcyksIGV4cGVjdGVkIGEgbWV0aG9kLCBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGludmFsaWQgb3IgdW5zZXQgbWV0aG9kcyB0YWJsZSBpbiBnZW5lcmljIGZ1bmN0aW9uICVzAGludmFsaWQgcmVwbGFjZW1lbnQ6IHJlZmVyZW5jZSBjbGFzcyBmaWVsZCAlcyBpcyByZWFkLW9ubHkAaW52YWxpZCB2YWx1ZSBmcm9tIGdlbmVyaWMgZnVuY3Rpb24gJXMsIGNsYXNzICVzLCBleHBlY3RlZCAlcwBsb2NhbCBhc3NpZ25tZW50IHRvIGZpZWxkIG5hbWUgd2lsbCBub3QgY2hhbmdlIHRoZSBmaWVsZDoKICAgICVzCiBEaWQgeW91IG1lYW4gdG8gdXNlICI8PC0iPyAoIGluIG1ldGhvZCAlcyBmb3IgY2xhc3MgJXMpAG1ha2luZyBhIGdlbmVyaWMgZm9yIHNwZWNpYWwgZnVuY3Rpb24gJXMAbWFraW5nIGEgdHJhY2VkIHZlcnNpb24gb2YgYSBwcmltaXRpdmU7IGFyZ3VtZW50cyB3aWxsIGJlIHRyZWF0ZWQgYXMgJy4uLicAbWV0aG9kcyBjYW4gYWRkIGFyZ3VtZW50cyB0byB0aGUgZ2VuZXJpYyAlcyBvbmx5IGlmICcuLi4nIGlzIGFuIGFyZ3VtZW50IHRvIHRoZSBnZW5lcmljAG1ldGhvZHMgY2Fubm90IGJlIGRlZmluZWQgZm9yIHRoZSBwcmltaXRpdmUgZnVuY3Rpb24gJXMAbWV0aG9kcyBjdXJyZW50bHkgZXhpc3QgZm9yIGNvZXJjaW5nIGZyb20gJXMgdG8gJXM7IHRoZXkgd2lsbCBiZSByZXBsYWNlZC4AbWV0aG9kcyBkZWNsYXJlZCBpbiB1c2luZ01ldGhvZHMoKSBidXQgbm90IGZvdW5kOiAlcwBtZXRob2RzIG1heSBub3QgYmUgZGVmaW5lZCBmb3IgcHJpbWl0aXZlIGZ1bmN0aW9uICVzIGluIHRoaXMgdmVyc2lvbiBvZiBSAG1pc3NpbmcgZnVuY3Rpb24gZm9yIGxvYWQgYWN0aW9uOiAlcwBtaXNzaW5nIHBhY2thZ2Ugc2xvdCAoJXMpIGluIG9iamVjdCBvZiBjbGFzcyAlcyAocGFja2FnZSBpbmZvIGFkZGVkKQBtb3JlIGVsZW1lbnRzIGluIHRoZSBtZXRob2Qgc2lnbmF0dXJlICglZCkgdGhhbiBpbiB0aGUgZ2VuZXJpYyBzaWduYXR1cmUgKCVkKSBmb3IgZnVuY3Rpb24gJXMAbW9yZSB0aGFuIG9uZSBwb3NzaWJsZSBjbGFzcyBmb3IgdGhlIGRhdGEgcGFydDogdXNpbmcgJXMgcmF0aGVyIHRoYW4gJXMAbW92ZSB0aGUgZmlsZSBvciByZW1vdmUgdGhlIGNsYXNzL21ldGhvZABtdWx0aXBsZSBjbGFzcyBkZWZpbml0aW9ucyBmb3IgJXMgZnJvbSBwYWNrYWdlczogJXM7IHBpY2tpbmcgdGhlIGZpcnN0AG11bHRpcGxlIGRlZmluaXRpb24gb2YgY2xhc3MgJXMgdmlzaWJsZSAoJXMpOyB1c2luZyB0aGUgZGVmaW5pdGlvbgogICBpbiBwYWNrYWdlICVzIGZvciAlcwBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBjbGFzcyAlcyB2aXNpYmxlICglcyk7IHVzaW5nIHRoZSBkZWZpbml0aW9uCiAgIGluIHBhY2thZ2UgJXMgZm9yICVzAG11bHRpcGxlIGRlZmluaXRpb25zIGV4aXN0IGZvciBjbGFzcyAlcywgYnV0IHRoZSBzdXBwbGllZCBwYWNrYWdlICglcykgaXMgbm90IG9uZSBvZiB0aGVtICglcykAbXVsdGlwbGUgZGVmaW5pdGlvbnMgZXhpc3QgZm9yIGNsYXNzICVzOyBzaG91bGQgc3BlY2lmeSBvbmUgb2YgdGhlbSAoJXMpLCBlLmcuIGJ5IGNsYXNzTmFtZSgpAG11bHRpcGxlIGRlZmluaXRpb25zIG9mICVzIGZvdW5kOyB1c2luZyB0aGUgb25lIG9uICVzAG11bHRpcGxlIGRpcmVjdCBtYXRjaGVzOiAlczsgdXNpbmcgdGhlIGZpcnN0IG9mIHRoZXNlAG11bHRpcGxlIGVxdWl2YWxlbnQgaW5oZXJpdGVkIG1hdGNoZXM6ICVzOyB1c2luZyB0aGUgZmlyc3Qgb2YgdGhlc2UAbXVsdGlwbGUgZ2VuZXJpY3MgbWF0Y2ggcGF0dGVybiwgdXNpbmcgdGFibGUgJXMAbXVzdCBwcm92aWRlIGFuIGVudmlyb25tZW50IHRhYmxlOyBnb3QgY2xhc3MgJXMAbXVzdCBzdXBwbHkgJ2dlbmVyaWMuZnVuY3Rpb24nIG9yICdjbGFzcycAbXVzdCBzdXBwbHkgYSBmdW5jdGlvbiBza2VsZXRvbiBmb3IgJXMsIGV4cGxpY2l0bHkgb3IgdmlhIGFuIGV4aXN0aW5nIGZ1bmN0aW9uAG11c3Qgc3VwcGx5IGVpdGhlciBhIGdlbmVyaWMgZnVuY3Rpb24gb3IgYSBmdW5jdGlvbiBhcyBkZWZhdWx0IGZvciAlcwBuYW1lZCBlbGVtZW50cyBvZiBwcm90b3R5cGUgZG8gbm90IGNvcnJlc3BvbmQgdG8gc2xvdCBuYW1lOiAlcwBuYW1lZCBlbGVtZW50cyBvZiBwcm90b3R5cGUgZG8gbm90IGNvcnJlc3BvbmQgdG8gc2xvdCBuYW1lczogJXMAbmVlZCBhIGRlZmluaXRpb24gZm9yIHRoZSBtZXRob2QgaGVyZQBuZWVkZWQgdGhlIHN1cHBsaWVkIGxhYmVscyB2ZWN0b3Igb2YgbGVuZ3RoICVkLCBnb3QgJWQAbm8gJy5EYXRhJyBzbG90IGRlZmluZWQgZm9yIGNsYXNzICVzAG5vICdyZXBsYWNlJyBtZXRob2Qgd2FzIGRlZmluZWQgZm9yICdhcyh4LCAiJXMiKSA8LSB2YWx1ZScgZm9yIGNsYXNzICVzAG5vIGRlZmluaXRpb24gZm9yIGNsYXNzICVzAG5vIGRlZmluaXRpb24gZm9yIGNsYXNzZXMgJXMAbm8gZGVmaW5pdGlvbiBmb3Igb2JqZWN0ICVzIGZvdW5kIGluIHRyYWNpbmcgZW52aXJvbm1lbnQAbm8gZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzIG9mICVzIChjbGFzcyAlcykgZm91bmQAbm8gZGVmaW5pdGlvbiBmb3VuZCBmb3IgY2xhc3MgJXMAbm8gZGVmaW5pdGlvbiBmb3VuZCBmb3IgaW5oZXJpdGVkIGNsYXNzOiAlcwBubyBkZWZpbml0aW9uIG9mICVzIHRvIHVzZSBmb3IgJXMAbm8gZGVmaW5pdGlvbiBvZiBjbGFzcyAlcyBmb3VuZABubyBkZWZpbml0aW9uIG9mIGNsYXNzICVzIGluIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24sICVzLCBkZWZpbml0aW9uIG9uIDogJXMAbm8gZGVmaW5pdGlvbiBvZiBjbGFzcyAlcyBpbiB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLCAlcywgZGVmaW5pdGlvbnMgb24gOiAlcwBubyBkZWZpbml0aW9uIG9mIGluaGVyaXRhbmNlIGZyb20gJXMgdG8gJXMsIHRob3VnaCB0aGUgcmVsYXRpb24gd2FzIGltcGxpZWQgYnkgdGhlIHNldElzKCkgZnJvbSAlcwBubyBkZWZpbml0aW9uIHdhcyBmb3VuZCBmb3Igc3VwZXJjbGFzcyAlcyBpbiB0aGUgc3BlY2lmaWNhdGlvbiBvZiBjbGFzcyAlcwBubyBlbnZpcm9ubWVudCBvciBwYWNrYWdlIGNvcnJlc3BvbmRpbmcgdG8gYXJndW1lbnQgd2hlcmU9JXMAbm8gZXhpc3RpbmcgZGVmaW5pdGlvbiBmb3IgZnVuY3Rpb24gJXMAbm8gZnVuY3Rpb24gJXMgZm91bmQAbm8gZnVuY3Rpb24gZGVmaW5pdGlvbiBmb3IgJXMgZm91bmQAbm8gZnVuY3Rpb24gZGVmaW5pdGlvbiBmb3VuZCBmb3IgJXMAbm8gZ2VuZXJpYyBmdW5jdGlvbiAlcyBmb3VuZABubyBnZW5lcmljIGZ1bmN0aW9uIGZvdW5kIGNvcnJlc3BvbmRpbmcgdG8gJXMAbm8gZ2VuZXJpYyBmdW5jdGlvbiBmb3VuZCBmb3IgJXMAbm8gZ2VuZXJpYyBmdW5jdGlvbiBmb3VuZCBmb3IgJyVzJwBubyBnZW5lcmljIHZlcnNpb24gb2YgJXMgb24gcGFja2FnZSAlcyBpcyBhbGxvd2VkOwogICBhIG5ldyBnZW5lcmljIHdpbGwgYmUgYXNzaWduZWQgZm9yICVzAG5vIG1ldGhvZCBmb3IgJXMgbWF0Y2hlcyBjbGFzcyAlcwBubyBtZXRob2QgZm91bmQgZm9yIGZ1bmN0aW9uICVzIGFuZCBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIGZvdW5kIGZvciBmdW5jdGlvbiAnJXMnIGFuZCBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIGZvdW5kIGZvciBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIGluIG1ldGhvZHMgdGFibGUgZm9yICVzIGZvciBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIG9yIGRlZmF1bHQgZm9yIGFzKCkgcmVwbGFjZW1lbnQgb2YgJXMgd2l0aCBDbGFzcz0iJXMiAG5vIG1ldGhvZCBvciBkZWZhdWx0IGZvciBjb2VyY2luZyAlcyB0byAlcwBubyBtZXRob2Qgb3IgZGVmYXVsdCBtYXRjaGluZyB0aGUgIi4uLiIgYXJndW1lbnRzIGluICVzAG5vIG1ldGhvZHMgZm91bmQgZm9yICVzOyBjYWNoZUdlbmVyaWNzTWV0YURhdGEoKSB3aWxsIGhhdmUgbm8gZWZmZWN0AG5vIG1ldGhvZHMgdGFibGUgZm9yIGdlbmVyaWMgJXMgZnJvbSBwYWNrYWdlICVzIGluIHBhY2thZ2UgJXMAbm8gbm9uLWdlbmVyaWMgZnVuY3Rpb24gJXMgZm91bmQAbm8gcGFja2FnZSBuYW1lIHN1cHBsaWVkIGFuZCBubyBjbGFzcyBkZWZpbml0aW9uIGZvdW5kIGZvciAlcwBubyBzdWl0YWJsZSBhcmd1bWVudHMgdG8gZGlzcGF0Y2ggbWV0aG9kcyBpbiB0aGlzIGZ1bmN0aW9uAG5vbi1hcmd1bWVudCBmb3VuZCBpbiB0aGUgc2lnbmF0dXJlOiAlcwBub24tYXJndW1lbnRzIGZvdW5kIGluIHRoZSBzaWduYXR1cmU6ICVzAG5vbi1mdW5jdGlvbiBhY3Rpb246ICVzAG5vbi1nZW5lcmljIGZ1bmN0aW9uICclcycgZ2l2ZW4gdG8gZmluZE1ldGhvZHMoKQBub24tbG9jYWwgYXNzaWdubWVudCB0byBtZXRob2QgbmFtZXMgaXMgbm90IGFsbG93ZWQKICAgICVzCiggaW4gbWV0aG9kICVzIGZvciBjbGFzcyAlcykAbm9uLWxvY2FsIGFzc2lnbm1lbnQgdG8gbm9uLWZpZWxkIG5hbWVzIChwb3NzaWJseSBtaXNzcGVsbGVkPykKICAgICVzCiggaW4gbWV0aG9kICVzIGZvciBjbGFzcyAlcykAbm9uZSBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc291cmNlIGNvZGUgY291bGQgYmUgZm91bmQ6ICBuZWVkIHRvIGF0dGFjaCBvciBzcGVjaWZ5IHRoZSBwYWNrYWdlAG5vdCBhIHJlZmVyZW5jZSBjbGFzczogJXMAbm90IGFsbG93ZWQgdG8gaGF2ZSB0ZXN0PT1UUlVFIGFuZCBhbiBTNENsYXNzIGRlZmluaXRpb24Abm90IGJvdGggZnVuY3Rpb25zIQBvYmplY3QgJXMgbm90IGNoYW5nZWQgKGl0IGRvZXMgbm90IGFwcGVhciB0byBiZSBmcm9tIGEgdmVyc2lvbiBvZiBSIGVhcmxpZXIgdGhhbiAxLjguMCkAb2JqZWN0ICVzIG5vdCBjaGFuZ2VkIChpdCBpcyBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBjdXJyZW50IGRlZmluaXRpb24gb2YgY2xhc3MgJXMgZnJvbSAlcykAb2JqZWN0ICVzIG5vdCBmb3VuZABvYmplY3QgbXVzdCBiZSBhIHZhbGlkIGRhdGEgcGFydCBmb3IgY2xhc3MgJXM7IG5vdCB0cnVlIG9mIHR5cGUgJXMAb2JqZWN0IHRvIHVzZSBhcyBhIG1ldGhvZCBzaWduYXR1cmUgZm9yIGZ1bmN0aW9uICVzIGRvZXMgbm90IGxvb2sgbGlrZSBhIGxlZ2l0aW1hdGUgc2lnbmF0dXJlIChhIHZlY3RvciBvZiBzaW5nbGUgY2xhc3MgbmFtZXMpOiB0aGVyZSB3ZXJlICVkIGNsYXNzIG5hbWVzLCBidXQgJWQgZWxlbWVudHMgaW4gdGhlIHNpZ25hdHVyZSBvYmplY3QAb2JqZWN0cyBmb3VuZCBpbiBtdWx0aXBsZSBwYWNrYWdlczogdXNpbmcgJXMgYW5kIGlnbm9yaW5nICVzAG9ubHkgRkFMU0UgaXMgbWVhbmluZ2Z1bCBmb3IgJ2luaGVyaXRlZCcsIHdoZW4gJ3doZXJlJyBpcyBzdXBwbGllZCAoZ290ICVzKQBvbmx5IGFyZ3VtZW50cyAnQ2xhc3MnIGFuZCAnd2hlcmUnIGNhbiBiZSBzdXBwbGllZCB3aGVuIGFyZ3VtZW50ICdyZXByZXNlbnRhdGlvbicgaXMgYSAnY2xhc3NSZXByZXNlbnRhdGlvbicgb2JqZWN0AG9ubHkgb25lIGRhdGEgb2JqZWN0ICh1bm5hbWVkIGFyZ3VtZW50IHRvIHByb3RvdHlwZSkgYWxsb3dlZABvcmlnaW5hbCBmdW5jdGlvbiBpcyBwcm9oaWJpdGVkIGFzIGEgZ2VuZXJpYyBmdW5jdGlvbgBwYWNrYWdlICVzIGlzIG5vdCBhdHRhY2hlZCBhbmQgbm8gbmFtZXNwYWNlIGZvdW5kIGZvciBpdABwYWNrYWdlICVzIHNlZW1zIHRvIGhhdmUgb3V0LW9mLWRhdGUgbWV0aG9kczsgbmVlZCB0byByZWluc3RhbGwgZnJvbSBzb3VyY2UAcGFja2FnZSBzbG90cyAgZGlmZmVyOiAlcywgJXMAcG90ZW50aWFsIGN5Y2xlIGluIGNsYXNzIGluaGVyaXRhbmNlOiAlcyBoYXMgZHVwbGljYXRlcyBpbiBzdXBlcmNsYXNzZXMgYW5kIHN1YmNsYXNzZXMgKCVzKQBwcmltaXRpdmUgZnVuY3Rpb25zIGNhbm5vdCBiZSBtZXRob2RzOyB0aGV5IG11c3QgYmUgZW5jbG9zZWQgaW4gYSByZWd1bGFyIGZ1bmN0aW9uAHByb3RvdHlwZSBpcyBhIGxpc3Qgd2l0aCBuYW1lZCBlbGVtZW50cyAoY291bGQgYmUgYW1iaWd1b3VzKTogIGJldHRlciB0byB1c2UgZnVuY3Rpb24gcHJvdG90eXBlKCkgdG8gYXZvaWQgdHJvdWJsZS4AcmVwbGFjZW1lbnQgdmFsdWUgbXVzdCBiZSBvZiBjbGFzcyAlcywgZ290IG9uZSBvZiBjbGFzcyAlcwByZXBsYWNlbWVudCB2YWx1ZSBtdXN0IGV4dGVuZCBjbGFzcyAlcywgZ290ICVzAHJlc3RvcmluZyBkZWZpbml0aW9uIG9mIGNsYXNzICVzAHNldHRpbmcgYSBtZXRob2Qgb3ZlciB0aGUgYmluZGluZyBvZiBzeW1ib2wgJXMgaW4gZW52aXJvbm1lbnQvcGFja2FnZSAlcwBzaWduYXR1cmVzIGRpZmZlcjogICglcyksICglcykAc2luZ2xlIHN0cmluZzsgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBza2lwcGluZyBtZXRob2RzIGxpc3QgZWxlbWVudCAlcyBvZiB1bmV4cGVjdGVkIGNsYXNzICVzAHNsb3QgJXMgaW4gY2xhc3MgJXMgY3VycmVudGx5IGRlZmluZWQgKG9yIGluaGVyaXRlZCkgYXMgIiVzIiwgY29uZmxpY3RzIHdpdGggYW4gaW5oZXJpdGVkIGRlZmluaXRpb24gaW4gY2xhc3MgJXMAc2xvdCAlczogY2xhc3MgJXMgc2hvdWxkIGV4dGVuZCBjbGFzcyAlcwBzbG90IGluIGNsYXNzICVzIG11c3QgZXh0ZW5kIGNvcnJlc3BvbmRpbmcgc2xvdCBpbiBjbGFzcyAlczogZmFpbHMgZm9yICVzAHNsb3RzIGluIGNsYXNzICVzIG11c3QgZXh0ZW5kIGNvcnJlc3BvbmRpbmcgc2xvdHMgaW4gY2xhc3MgJXM6IGZhaWxzIGZvciAlcwBzb21lIGFjdGlvbnMgYXJlIG1pc3Npbmc6ICVzAHN1YmNsYXNzICVzIG9mIGNsYXNzICVzIGlzIG5vdCBsb2NhbCBhbmQgY2Fubm90IGJlIHVwZGF0ZWQgZm9yIG5ldyBpbmhlcml0YW5jZSBpbmZvcm1hdGlvbjsgY29uc2lkZXIgc2V0Q2xhc3NVbmlvbigpAHN1cHBsaWVkIHBhY2thZ2UsICVzLCBkaWZmZXJzIGZyb20gcGFja2FnZSBpbmZlcnJlZCBmcm9tIHNvdXJjZSwgJXMAdGhlICJhbWJpZ3VvdXNNZXRob2RTZWxlY3Rpb24iIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYXMgdGhlIGNvbmRpdGlvbiBhY3Rpb247IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAdGhlICVzIGFyZ3VtZW50IG11c3QgYmUgTlVMTCBvciBhIGdlbmVyaWMgZnVuY3Rpb24gb2JqZWN0OyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHRoZSAnJXMnIGxpc3QgZm9yIGNsYXNzICVzLCBpbmNsdWRlcyBhbiB1bmRlZmluZWQgY2xhc3MgJXMAdGhlICdTM0NsYXNzJyBhcmd1bWVudCBtdXN0IGJlIGEgc3VwZXJjbGFzcyBvZiAlczogIG5vdCB0cnVlIG9mIGNsYXNzICVzAHRoZSAnY29lcmNlJyBhcmd1bWVudCB0byAnc2V0SXMnIHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCwgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwB0aGUgJ2NvbnRhaW5zJyBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWVzIG9mIHN1cGVyY2xhc3NlczogIGdvdCBhbiBlbGVtZW50IG9mIGNsYXNzICVzAHRoZSAncmVwbGFjZScgYXJndW1lbnQgdG8gc2V0SXMoKSBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiAyIG9yIDMgYXJndW1lbnRzLCBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHRoZSAnd2hlcmUnIGVudmlyb25tZW50ICglcykgaXMgYSBsb2NrZWQgbmFtZXNwYWNlOyBjYW5ub3QgYXNzaWduIG1ldGhvZHMgdGhlcmUAdGhlIFMzIGNsYXNzIG9mIHRoZSBwcm90b3R5cGUsICIlcyIsIGlzIHVuZGVmaW5lZDsgb25seSBhbGxvd2VkIHdoZW4gdGhpcyBpcyB0aGUgUzMgY2xhc3MgYmVpbmcgcmVnaXN0ZXJlZCAoIiVzIikAdGhlIGJvZHkgb2YgdGhlIGdlbmVyaWMgZnVuY3Rpb24gZm9yICVzIGNhbGxzICdzdGFuZGFyZEdlbmVyaWMnIHRvIGRpc3BhdGNoIG9uIGEgZGlmZmVyZW50IG5hbWUgKCIlcyIpIQB0aGUgY2xhc3Mgb2YgZmllbGQgJXMgaW4gdGhlIG9iamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXNpcmVkIGNsYXNzICVzIGluIHRoZSB0YXJnZXQAdGhlIGNvbXB1dGF0aW9uOiAnYXMob2JqZWN0LCIlcyIpIDwtIHZhbHVlJyBpcyB2YWxpZCB3aGVuIG9iamVjdCBoYXMgY2xhc3MgJXMgb25seSBpZiAnaXModmFsdWUsICIlcyIpJyBpcyBUUlVFICgnY2xhc3ModmFsdWUpJyB3YXMgJXMpAHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzICVzIGluIHBhY2thZ2UgJXMgaXMgbG9ja2VkIHNvIGZpZWxkcyBtYXkgbm90IGJlIG1vZGlmaWVkAHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzICVzIGluIHBhY2thZ2UgJXMgaXMgbG9ja2VkLCBtZXRob2RzIG1heSBub3QgYmUgcmVkZWZpbmVkAHRoZSBlZGl0aW5nIGluIHRyYWNlKCkgY2FuIG9ubHkgY2hhbmdlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgbm90IHRoZSBhcmd1bWVudHMgb3IgZGVmYXVsdHMAdGhlIGVkaXRpbmcgaW4gdHJhY2UoKSBjYW4gb25seSBjaGFuZ2UgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHRoZSBlbnZpcm9ubWVudCAlcyBpcyBsb2NrZWQ7IGNhbm5vdCBhc3NpZ24gbWV0aG9kcyBmb3IgZnVuY3Rpb24gJXMAdGhlIGZvcm1hbCBhcmd1bWVudCBvZiB0aGUgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgKCVzKSBkaWZmZXJzIGZyb20gdGhhdCBvZiB0aGUgbm9uLWdlbmVyaWMgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCAoJXMpAHRoZSBmb3JtYWwgYXJndW1lbnRzIG9mIHRoZSBnZW5lcmljIGZ1bmN0aW9uIGZvciAlcyAoJXMpIGRpZmZlciBmcm9tIHRob3NlIG9mIHRoZSBub24tZ2VuZXJpYyB0byBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0ICglcykAdGhlIGZ1bmN0aW9uIGJlaW5nIHVzZWQgYXMgJXMgaW4gbWFraW5nIGEgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgaXMgY3VycmVudGx5IHRyYWNlZDsgdGhlIGZ1bmN0aW9uIHVzZWQgd2lsbCBoYXZlIHRyYWNpbmcgcmVtb3ZlZAB0aGUgbWVtYmVyIGNsYXNzZXMgbXVzdCBiZSBkZWZpbmVkOiBub3QgdHJ1ZSBvZiAlcwB0aGUgbWV0aG9kIGZvciAlcyBmb3IgdGhpcyBzaWduYXR1cmUgd2FzIG5vdCBiZWluZyB0cmFjZWQAdGhlIG1ldGhvZCBmb3IgZnVuY3Rpb24gJXMgYW5kIHNpZ25hdHVyZSAlcyBpcyBzZWFsZWQgYW5kIGNhbm5vdCBiZSByZS1kZWZpbmVkAHRoZSBuYW1lcyBpbiBzaWduYXR1cmUgZm9yIG1ldGhvZCAoJXMpIGRvIG5vdCBtYXRjaCAlcydzIGFyZ3VtZW50cyAoJXMpAHRoZSBuYW1lcyBpbiBzaWduYXR1cmUgZm9yIG1ldGhvZCAoJXMpIGRvIG5vdCBtYXRjaCBmdW5jdGlvbidzIGFyZ3VtZW50cyAoJXMpAHRoZSBvdmVycmlkaW5nIGNsYXNzICgiJXMiKSBvZiBmaWVsZCAlcyBpcyBub3QgYSBzdWJjbGFzcyBvZiB0aGUgZXhpc3RpbmcgZmllbGQgZGVmaW5pdGlvbiAoIiVzIikAdGhlcmUgaXMgbm8gYXV0b21hdGljIGRlZmluaXRpb24gZm9yICdhcyhvYmplY3QsICIlcyIpIDwtIHZhbHVlJyB3aGVuIG9iamVjdCBoYXMgY2xhc3MgJXMgYW5kIG5vICdyZXBsYWNlJyBhcmd1bWVudCB3YXMgc3VwcGxpZWQ7IHJlcGxhY2VtZW50IHdpbGwgYmUgYW4gZXJyb3IAdG9waWMgJXMgaXMgbm90IGEgbWV0aG9kIG5hbWUgaW4gY2xhc3MgJXMKVGhlIGNsYXNzIGRlZmluaXRpb24gZm9sbG93cwB0cmFjaW5nIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiAlcyBpcyBub3QgYWxsb3dlZAB0cnlpbmcgdG8gYXNzaWduIGFuIG9iamVjdCBvZiBjbGFzcyAlcyBhcyB0aGUgZGVmaW5pdGlvbiBvZiBjbGFzcyAlczogbXVzdCBzdXBwbHkgYSAiY2xhc3NSZXByZXNlbnRhdGlvbiIgb2JqZWN0AHRyeWluZyB0byBjaGFuZ2UgdGhlIGZvcm1hbCBhcmd1bWVudHMgaW4gJXMgaW4gYW4gb2JqZWN0IG9mIGNsYXNzICVzOyBleHBlY3RlZCBhIGZ1bmN0aW9uIGRlZmluaXRpb24AdHJ5aW5nIHRvIGNoYW5nZSB0aGUgZm9ybWFsIGFyZ3VtZW50cyBpbiAlcywgYnV0IGdldHRpbmcgdGhlIG5ldyBmb3JtYWxzIGZyb20gYW4gb2JqZWN0IG9mIGNsYXNzICVzOyBleHBlY3RlZCBhIGZ1bmN0aW9uIGRlZmluaXRpb24AdHJ5aW5nIHRvIGNoYW5nZSB0aGUgZm9ybWFsIGFyZ3VtZW50cyBpbiAlcywgYnV0IHRoZSBudW1iZXIgb2YgZXhpc3RpbmcgYXJndW1lbnRzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIG5ldyBhcmd1bWVudHMgKHRoZSBleHRyYSBhcmd1bWVudHMgd29uJ3QgYmUgdXNlZCk6ICglcykgdnMgKCVzKQB0cnlpbmcgdG8gY2hhbmdlIHRoZSBmb3JtYWwgYXJndW1lbnRzIGluICVzLCBidXQgdGhlIG51bWJlciBvZiBleGlzdGluZyBhcmd1bWVudHMgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgbmV3IGFyZ3VtZW50czogKCVzKSB2cyAoJXMpAHRyeWluZyB0byBjaGVjayBzaWduYXR1cmUgbGVuZ3RoIG9mIGdlbmVyaWMgJyVzJywgYnV0IGl0IGlzIG5vdCBhIGdlbmVyaWMgZnVuY3Rpb246IGkgPSAlZCwgZnVucyA9ICVzLCBnbmFtZXMgPSAlcwB0cnlpbmcgdG8gY2hlY2sgc2lnbmF0dXJlIGxlbmd0aCBvZiBncm91cCBnZW5lcmljICclcycsIGJ1dCBpdCBpcyBub3QgYSBncm91cCBnZW5lcmljAHRyeWluZyB0byBleGVjdXRlIGxvYWQgYWN0aW9ucyB3aXRob3V0ICdtZXRob2RzJyBwYWNrYWdlAHRyeWluZyB0byBmaW5kIGEgbWV0aG9kcyB0YWJsZSBpbiBhIG5vbi1nZW5lcmljIGZ1bmN0aW9uAHRyeWluZyB0byBtYXRjaCBhIG1ldGhvZCBzaWduYXR1cmUgb2YgY2xhc3MgJXM7IGV4cGVjdHMgYSBsaXN0IG9yIGEgY2hhcmFjdGVyIHZlY3RvcgB0cnlpbmcgdG8gbWF0Y2ggYSBtZXRob2Qgc2lnbmF0dXJlIHRvIGFuIG9iamVjdCAob2YgY2xhc3MgJXMpIHRoYXQgaXMgbm90IGEgZ2VuZXJpYyBmdW5jdGlvbgB0cnlpbmcgdG8gc2V0IGFuICdhcycgcmVsYXRpb24gZnJvbSAlcyB0byBpdHNlbGYAdW5hYmxlIHRvIGNyZWF0ZSB1bmlvbiBjbGFzczogIGNvdWxkIG5vdCBzZXQgbWVtYmVycyAlcwB1bmFibGUgdG8gZmluZCBhIGNvbnNpc3RlbnQgb3JkZXJpbmcgb2Ygc3VwZXJjbGFzc2VzIGZvciBjbGFzcyAlczogb3JkZXIgY2hvc2VuIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBzdXBlcmNsYXNzZXMgb2YgJXMAdW5hYmxlIHRvIGZpbmQgYW4gZW52aXJvbm1lbnQgY29udGFpbmluZyBjbGFzcyAlcwB1bmFibGUgdG8gZmluZCBhbiBpbmhlcml0ZWQgbWV0aG9kIGZvciBmdW5jdGlvbiAlcyBmb3Igc2lnbmF0dXJlICVzAHVuYWJsZSB0byBmaW5kIHJlcXVpcmVkIHBhY2thZ2UgJXMAdW5kZWZpbmVkICdjb2VyY2UnIG1ldGhvZAB1bmRlZmluZWQgY2xhc3NlcyAoJXMpIHdpbGwgYmUgaWdub3JlZCBmb3IgYXJndW1lbnQgJyVzJwB1bmRlZmluZWQgc2xvdCBjbGFzc2VzIGluIGRlZmluaXRpb24gb2YgJXM6ICVzAHVuZGVmaW5lZCBzdWJjbGFzcyAlcyBvZiBjbGFzcyAlczsgZGVmaW5pdGlvbiBub3QgdXBkYXRlZAB1bmxvYWRpbmcgJ21ldGhvZHMnIHBhY2thZ2UgLi4uAHVubmFtZWQgYXJndW1lbnQgbXVzdCBleHRlbmQgZWl0aGVyIHRoZSBTMyBjbGFzcyBvciB0aGUgY2xhc3Mgb2YgdGhlIGRhdGEgcGFydDsgbm90IHRydWUgb2YgY2xhc3MgJXMAdW5uYW1lZCBhcmd1bWVudCB0byBpbml0aWFsaXplKCkgZm9yIFMzIGNsYXNzIG11c3QgaGF2ZSBhIGNsYXNzIGRlZmluaXRpb247ICVzIGRvZXMgbm90AHVubmFtZWQgYXJndW1lbnQgdG8gbmV3KCkgbXVzdCBiZSBhbiBlbnZpcm9ubWVudCBmb3IgdGhlIG5ldyBvYmplY3QAdW5uYW1lZCBhcmd1bWVudHMgdG8gJG5ldygpIG11c3QgYmUgb2JqZWN0cyBmcm9tIGEgcmVmZXJlbmNlIGNsYXNzOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHVzZSAlcyBpbnN0ZWFkLgB2YWxpZGl0eSBtZXRob2QgbXVzdCBiZSBOVUxMIG9yIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50AHZhbHVlIGNsYXNzZXMgZGlmZmVyOiAlcywgJXMAUHJvamVjdC1JZC1WZXJzaW9uOiBSIDMuMy4wClJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWdzLnItcHJvamVjdC5vcmcKUE9ULUNyZWF0aW9uLURhdGU6IDIwMTUtMDYtMDYgMTM6NTEKUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0wNi0wNiAxMzo1MQpMYXN0LVRyYW5zbGF0b3I6IEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCkxhbmd1YWdlLVRlYW06IG5vbmUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKTGFuZ3VhZ2U6IGVuClBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpOwoAIk1ldGhvZHNMaXN0IiBpcyBkZWZ1bmN0OyBhbGxNZXRob2RzIG5vdyBhcmUgZW1wdHkAImNsYXNzIiBpcyBhIHJlc2VydmVkIHNsb3QgbmFtZSBhbmQgY2Fubm90IGJlIHJlZGVmaW5lZAAlZDogdGFyZ2V0ICIlcyI6IGNob3NlICIlcyIgKG90aGVyczogJXMpACVmIGlzIG5vdCBhIHZhbGlkIGdlbmVyaWMgZnVuY3Rpb246IG1ldGhvZHMgbGlzdCB3YXMgYW4gb2JqZWN0IG9mIGNsYXNzICVzACVzIGhhcyBhIHNlYWxlZCBjbGFzcyBkZWZpbml0aW9uIGFuZCBjYW5ub3QgYmUgcmVkZWZpbmVkACVzIGhhcyBubyBtZXRob2RzIGRlZmluZWQAJXMgaXMgYSBwcmltaXRpdmUgZnVuY3Rpb247ICBtZXRob2RzIGNhbiBiZSBkZWZpbmVkLCBidXQgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaXMgaW1wbGljaXQsIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC4AJXMgaXMgYSBwcmltaXRpdmUgZnVuY3Rpb247IGl0cyBnZW5lcmljIGZvcm0gY2Fubm90IGJlIHJlZGVmaW5lZAAlcyBpcyBub3QgYSBkZWZpbmVkIGNsYXNzACVzIGlzIG5vdCBhIGRlZmluZWQgY2xhc3MgaW4gdGhpcyBlbnZpcm9ubWVudAAlcyBpcyBub3QgYSBmaWVsZCBpbiBjbGFzcyAlcwAlcyBpcyBub3QgYSBmaWVsZCBpbiB0aGlzIGNsYXNzACVzIGlzIG5vdCBhIGdlbmVyaWMgZnVuY3Rpb24gKG9yIG5vdCB2aXNpYmxlIGhlcmUpACVzIGlzIG5vdCBhIG1ldGhvZCBmb3IgcmVmZXJlbmNlIGNsYXNzICVzACVzIGlzIG5vdCBhIHJlZmVyZW5jZSBjbGFzcwAlcyBpcyBub3QgYSBzbG90IGluIGNsYXNzICVzACVzIGlzIG5vdCBhIHZhbGlkIGZpZWxkIG9yIG1ldGhvZCBuYW1lIGZvciByZWZlcmVuY2UgY2xhc3MgJXMAJXMgaXMgbm90IGEgdmFsaWQgZmllbGQgb3IgbWV0aG9kIG5hbWUgZm9yIHRoaXMgY2xhc3MAJXMgaXMgbm90IGFuIFM0IGdlbmVyaWMgZnVuY3Rpb24gaW4gJXM7IG1ldGhvZHMgbm90IHJlbW92ZWQAJXMgaXMgbm90IGN1cnJlbnRseSBhIGdlbmVyaWM6ICBkZWZpbmUgaXQgZmlyc3QgdG8gY3JlYXRlIGEgbm9uLWRlZmF1bHQgaW1wbGljaXQgZm9ybQAlcyBpcyBub3QgZWxpZ2libGUgdG8gYmUgdGhlIGRhdGEgcGFydCBvZiBhbm90aGVyIGNsYXNzIChtdXN0IGJlIGEgYmFzaWMgY2xhc3Mgb3IgYSB2aXJ0dWFsIGNsYXNzIHdpdGggbm8gc2xvdHMpACVzIGlzIG5vdCBvbmUgb2YgdGhlIGVsZW1lbnQgbmFtZXMAJXMgaXMgbm90IG9uZSBvZiB0aGUgcmVmZXJlbmNlIHN1cGVyIGNsYXNzZXMgZm9yIHRoaXMgb2JqZWN0ACVzIG11c3QgYmUgVFJVRSwgRkFMU0UsIG9yIGEgbmFtZWQgbG9naWNhbCB2ZWN0b3Igb2YgdGhvc2UgdmFsdWVzOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzACVzKCkgaXMgbm90IGEgZ2VuZXJpYyBmdW5jdGlvbiBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50IC0tIG1ldGhvZHMgd2lsbCBub3QgYmUgaW5zZXJ0ZWQAJXMsIGFsb25nIHdpdGggb3RoZXIgdXNlIG9mIHRoZSAiTWV0aG9kc0xpc3QiIG1ldGFkYXRhIG9iamVjdHMsIGlzIGRlZnVuY3QuACVzLCBhbG9uZyB3aXRoIG90aGVyIHVzZSBvZiB0aGUgIk1ldGhvZHNMaXN0IiBtZXRhZGF0YSBvYmplY3RzLCBpcyBkZXByZWNhdGVkLgDigJglc+KAmSBpcyBub3QgYSBrbm93biBnZW5lcmljIGZ1bmN0aW9uIHthbmQg4oCYcGFja2FnZeKAmSBub3Qgc3BlY2lmaWVkfQDigJhDbGFzc+KAmSBtdXN0IGJlIGEgdmFsaWQgY2xhc3MgZGVmaW5pdGlvbiBvciBjbGFzcwDigJhTM0NsYXNz4oCZIGNhbiBvbmx5IGFzc2lnbiB0byBTNCBvYmplY3RzIHRoYXQgZXh0ZW5kICJvbGRDbGFzcyI7IG5vdCB0cnVlIG9mIGNsYXNzICVzAOKAmFMzQ2xhc3PigJkgb25seSBkZWZpbmVkIGZvciBleHRlbnNpb25zIG9mICVzIG9yIGNsYXNzZXMgd2l0aCBhIGRhdGEgcGFydDogIG5vdCB0cnVlIG9mIGNsYXNzICVzAOKAmGFz4oCZIG1ldGhvZCBzaG91bGQgaGF2ZSBvbmUgYXJndW1lbnQsIG9yIG1hdGNoIHRoZSBhcmd1bWVudHMgb2YgY29lcmNlKCk6IGdvdCAgKCVzKQDigJhjbGFzczHigJkgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIGNsYXNzIG9yIGEgY2xhc3MgZGVmaW5pdGlvbgDigJhjbGFzczLigJkgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIGNsYXNzIG9yIGEgY2xhc3MgZGVmaW5pdGlvbgDigJhleHRlcm5hbHB0cuKAmSBvYmplY3RzIGNhbm5vdCBiZSBpbml0aWFsaXplZCBmcm9tIG5ldygpAOKAmGZpbGXigJkgbXVzdCBiZSBhIGNoYXJhY3RlciBzdHJpbmcgb3IgYSBjb25uZWN0aW9uAOKAmGluaXRpYWxpemXigJkgbWV0aG9kIHJldHVybmVkIGFuIG9iamVjdCBvZiBjbGFzcyAlcyBpbnN0ZWFkIG9mIHRoZSByZXF1aXJlZCBjbGFzcyAlcwAoY2xhc3MgJXMpAEFsbCAlcyBuYW1lcyBtdXN0IGJlIGRpc3RpbmN0IGluOgooJXMpAEFsbCAlcyBuYW1lcyBtdXN0IGJlIG5vbmVtcHR5IGluOgooJXMpAEFuIG9iamVjdCBvZiBjbGFzcyAlcwBBcmd1bWVudCAicmVwcmVzZW50YXRpb24iIGNhbm5vdCBiZSB1c2VkIGlmIGFyZ3VtZW50ICJzbG90cyIgaXMgc3VwcGxpZWQAQ2hvb3NpbmcgbWV0aG9kICVzIGZyb20gJWQgYW1iaWd1b3VzIHBvc3NpYmlsaXR5AENob29zaW5nIG1ldGhvZCAlcyBmcm9tICVkIGFtYmlndW91cyBwb3NzaWJpbGl0aWVzAENsYXNzICVzIGlzIG5vdCBhIHN1YmNsYXNzIG9mICVzOyBmdW5jdGlvbmFsIHNlbWFudGljcyBub3QgZGVmaW5lZCBmb3IgdGhpcyBjbGFzcwBDb3B5aW5nIHRoZSBnZW5lcmljIGZ1bmN0aW9uICVzIHRvIGVudmlyb25tZW50ICVzLCBiZWNhdXNlIHRoZSBwcmV2aW91cyB2ZXJzaW9uIHdhcyBpbiBhIHNlYWxlZCBuYW1lc3BhY2UgKCVzKQBDb3VsZCBub3QgZmluZCBsb2NhbCBvYmplY3QgaW4gc3VwcGxpZWQgZW52aXJvbm1lbnQAQ3JlYXRlZCBhIHBhY2thZ2UgbmFtZSwgJXMsIHdoZW4gbm9uZSBmb3VuZABDcmVhdGluZyBhIGdlbmVyaWMgZnVuY3Rpb24gZm9yICVzIGZyb20gJXMgaW4gJXMKICAgIChmcm9tIHRoZSBzYXZlZCBpbXBsaWNpdCBkZWZpbml0aW9uKQBDcmVhdGluZyBhIGdlbmVyaWMgZnVuY3Rpb24gZm9yICVzIGZyb20gcGFja2FnZSAlcyBpbiAlcwBDcmVhdGluZyBhIGdlbmVyaWMgZnVuY3Rpb24gZnJvbSBmdW5jdGlvbiAlcyBpbiAlcwBDcmVhdGluZyBhIG5ldyBnZW5lcmljIGZ1bmN0aW9uIGZvciAlcyBpbiAlcwBEYXRhIHBhcnQgaXMgdW5kZWZpbmVkIGZvciBnZW5lcmFsIFM0IG9iamVjdABFbXB0eSBmdW5jdGlvbiBuYW1lIGluIC5nZXRHZW5lcmljAEVudmlyb25tZW50IG9mIGNsYXNzICVzIGlzIGxvY2tlZDsgdXNpbmcgZ2xvYmFsIGVudmlyb25tZW50IGZvciBuZXcgY2xhc3MARm9yIGZ1bmN0aW9uICVzLCBzaWduYXR1cmUgJXM6IGFyZ3VtZW50IGluIG1ldGhvZCBkZWZpbml0aW9uIGNoYW5nZWQgZnJvbSAoJXMpIHRvICglcykARnVuY3Rpb24gJXMgaXMgYSBncm91cCBnZW5lcmljOyBkbyBub3QgY2FsbCBpdCBkaXJlY3RseQBGdW5jdGlvbiAlcyBpcyBhbHJlYWR5IGEgZ3JvdXAgZ2VuZXJpYzsgbm8gY2hhbmdlAE1ldGhvZHMgaW5zZXJ0ZWQgZm9yIGZ1bmN0aW9uICVzKCk6ICVzAE1vZGlmaWVkIGZ1bmN0aW9ucyBpbnNlcnRlZCB0aHJvdWdoIHRyYWNlKCk6ICVzAE5ldyBmdW5jdGlvbnMgYXJlIG5vdCBjdXJyZW50bHkgaW5zZXJ0ZWQgKG5vdCB1bnRyYWNlYWJsZSk6ICVzAE5vICVzIG5hbWVzIHN1cHBsaWVkAE5vIG5leHQgbWV0aG9kIGF2YWlsYWJsZQBObyBzaW1wbHkgaW5oZXJpdGVkIG1ldGhvZHMgZm91bmQgZm9yIGZ1bmN0aW9uICVzOyB1c2luZyBub24tc2ltcGxlIG1ldGhvZABOb24tZnVuY3Rpb24gb2JqZWN0cyBhcmUgbm90IGN1cnJlbnRseSBpbnNlcnRlZCAobm90IHRyYWNlYWJsZSk6ICVzAE5vdGU6IG1ldGhvZCB3aXRoIHNpZ25hdHVyZSAlcyBjaG9zZW4gZm9yIGZ1bmN0aW9uICVzLAogdGFyZ2V0IHNpZ25hdHVyZSAlcy4KICVzIHdvdWxkIGFsc28gYmUgdmFsaWQATm90ZTogc29tZSBzdXBlcmNsYXNzZXMgb2YgY2xhc3MgJXMgaW4gcGFja2FnZSAlcyBoYXZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucy4gIFRoaXMgZGVmaW5pdGlvbiBpcyBub3QgYmVpbmcgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIHRoYXQgZnJvbSBwYWNrYWdlICVzAE5vdGU6IHRoZSBzcGVjaWZpY2F0aW9uIGZvciBTMyBjbGFzcyAlcyBpbiBwYWNrYWdlICVzIHNlZW1zIGVxdWl2YWxlbnQgdG8gb25lIGZyb20gcGFja2FnZSAlczogbm90IHR1cm5pbmcgb24gZHVwbGljYXRlIGNsYXNzIGRlZmluaXRpb25zIGZvciB0aGlzIGNsYXNzLgBOb3RlOiB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY2xhc3MgJXMgaW4gcGFja2FnZSAlcyBzZWVtcyBlcXVpdmFsZW50IHRvIG9uZSBmcm9tIHBhY2thZ2UgJXM6IG5vdCB0dXJuaW5nIG9uIGR1cGxpY2F0ZSBjbGFzcyBkZWZpbml0aW9ucyBmb3IgdGhpcyBjbGFzcy4ATm90ZXM6ICVzLgBPT1BTOiBzb21ldGhpbmcgd3Jvbmcgd2l0aCDigJguT2xkQ2xhc3Nlc1Byb3RvdHlwZXNbWyVkXV3igJkAUmVwb3J0ZWQgJWQgYW1iaWd1b3VzIHNlbGVjdGlvbiBvdXQgb2YgJWQgZm9yIGZ1bmN0aW9uICVzCgBSZXBvcnRlZCAlZCBhbWJpZ3VvdXMgc2VsZWN0aW9ucyBvdXQgb2YgJWQgZm9yIGZ1bmN0aW9uICVzCgBSZXN0b3JpbmcgZGVmYXVsdCBmdW5jdGlvbiBkZWZpbml0aW9uIG9mICVzAFMzUGFydCgpIGlzIG9ubHkgZGVmaW5lZCBmb3IgY2xhc3NlcyBzZXQgdXAgYnkgc2V0T2xkQ0xhc3MoKSwgYmFzaWMgY2xhc3NlcyBvciBzdWJjbGFzc2VzIG9mIHRoZXNlOiAgbm90IHRydWUgb2YgY2xhc3MgJXMAU2VsZWN0aW5nICVkIG1ldGhvZCBvZiBtaW5pbXVtIGRpc3RhbmNlAFNlbGVjdGluZyAlZCBtZXRob2RzIG9mIG1pbmltdW0gZGlzdGFuY2UAU2VsZWN0aW5nICVkIG5vbi1ncm91cCBtZXRob2QAU2VsZWN0aW5nICVkIG5vbi1ncm91cCBtZXRob2RzAFNlbGVjdGluZyAlZCBwYXJ0aWFsbHkgZXhhY3QtbWF0Y2hpbmcgbWV0aG9kAFNlbGVjdGluZyAlZCBwYXJ0aWFsbHkgZXhhY3QtbWF0Y2hpbmcgbWV0aG9kcwBTa2VsZXRvbiBvZiBtZXRob2Qgd3JpdHRlbiB0byAlcwBhIOKAmHJlcGxhY2XigJkgbWV0aG9kIGRlZmluaXRpb24gaW4g4oCYc2V0QXPigJkgbXVzdCBiZSBhIGZ1bmN0aW9uIG9mIHR3byBhcmd1bWVudHMsIGdvdCAlZABhIGNhbGwgdG8gY2FsbE5leHRNZXRob2QoKSBhcHBlYXJzIGluIGEgY2FsbCB0byAlcywgYnV0IHRoZSBjYWxsIGRvZXMgbm90IHNlZW0gdG8gY29tZSBmcm9tIGVpdGhlciBhIGdlbmVyaWMgZnVuY3Rpb24gb3IgYW5vdGhlciDigJhjYWxsTmV4dE1ldGhvZOKAmQBhIGNhbGwgdG8gc3VwZXJDbGFzcygpIGlzIGluIHRoZSBtZXRob2QgJXMgYnV0IHRoZXJlIGlzIG5vIHN1cGVyY2xhc3MgZGVmaW5pdGlvbiBvZiB0aGlzIG1ldGhvZCBmb3IgY2xhc3MgJXMAYSBmdW5jdGlvbiBmb3IgYXJndW1lbnQg4oCYZuKAmSBtdXN0IGJlIGEgZ2VuZXJpYyBmdW5jdGlvbgBhIHByb3RvdHlwZSBvYmplY3Qgd2FzIHN1cHBsaWVkIHdpdGggb2JqZWN0IHNsb3Qgb2YgY2xhc3MgJXMsIGJ1dCB0aGUgY2xhc3MgZGVmaW5pdGlvbiByZXF1aXJlcyBhbiBvYmplY3QgdGhhdCBpcyBjbGFzcyAlcwBhIHByb3RvdHlwZSB3YXMgc3VwcGxpZWQgb2YgY2xhc3MgJXMsIGJ1dCB0aGUgY2xhc3MgZGVmaW5pdGlvbiByZXF1aXJlcyBhbiBvYmplY3QgdGhhdCBpcyBjbGFzcyAlcwBhIHNpbmdsZSBjbGFzcyBuYW1lIGlzIG5lZWRlZCBmb3IgZmllbGQgJXMsIGdvdCBhIGNoYXJhY3RlciB2ZWN0b3Igb2YgbGVuZ3RoICVkAGEgdmFsaWRpdHkgbWV0aG9kIG11c3QgYmUgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQsIGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAYWJub3JtYWwgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVkIGFzIGEgc3VwZXJjbGFzcyBvZiBhIGNsYXNzIGRlZmluaXRpb24AYWN0aW9uIGZ1bmN0aW9uICVzIGhhcyBubyBhcmd1bWVudHMsIHNob3VsZCBoYXZlIGF0IGxlYXN0IDEAYW1iaWd1b3VzIG9iamVjdCAobGVuZ3RoICE9IDEpIHRvIGNvZXJjZSB0byAibmFtZSIAYXBwYXJlbnRseSBiYWQgbWV0aG9kIG9yIGNsYXNzIG1ldGFkYXRhIGluIHNhdmVkIGVudmlyb25tZW50OwBhcmd1bWVudCAlcyBpcyBub3QgUzQAYXJndW1lbnQgJXMgbXVzdCBiZSBhIGdlbmVyaWMgZnVuY3Rpb24gb3IgYSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZzsgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBhcmd1bWVudCAlcyBtdXN0IGJlIGEgbGlzdCBvciBhIGNoYXJhY3RlciB2ZWN0b3I7IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAYXJndW1lbnQg4oCYQ2xhc3Nlc+KAmSBtdXN0IGJlIGEgdmVjdG9yIG9mIHR3byBjbGFzc2VzOyBnb3QgYW4gYXJndW1lbnQgb2YgbGVuZ3RoICVkAGFyZ3VtZW50IOKAmFM0Q2xhc3PigJkgbXVzdCBiZSBhIGNsYXNzIGRlZmluaXRpb246IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAYXJndW1lbnQg4oCYYWJicmV2aWF0ZeKAmSBtdXN0IGJlIDAsIDEsIDIsIG9yIDMAYXJndW1lbnQg4oCYY2xhc3NEZWbigJkgbXVzdCBiZSBhIGNsYXNzIGRlZmluaXRpb24gb3IgdGhlIG5hbWUgb2YgYSBjbGFzcwBhcmd1bWVudCDigJhjbGFzc0RlZuKAmSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgY2xhc3MgcmVwcmVzZW50YXRpb247IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAYXJndW1lbnQg4oCYZuKAmSBtdXN0IGJlIGEgZ2VuZXJpYyBmdW5jdGlvbiBvciAlcwBhcmd1bWVudCDigJhm4oCZIG11c3QgYmUgYSBzdHJpbmcsIGdlbmVyaWMgZnVuY3Rpb24sIG9yIHByaW1pdGl2ZTogZ290IGFuIG9yZGluYXJ5IGZ1bmN0aW9uAGFyZ3VtZW50IOKAmGluY2x1ZGVTdWJjbGFzc2Vz4oCZIG11c3QgYmUgYSBsb2dpY2FsLCBlaXRoZXIgb25lIHZhbHVlIG9yIGEgdmVjdG9yIG9mIHRoZSBzYW1lIGxlbmd0aCBhcyBhcmd1bWVudCDigJhjbGFzc2Vz4oCZAGFyZ3VtZW50IOKAmHNpZ25hdHVyZeKAmSBpcyBub3QgbWVhbmluZ2Z1bCBmb3IgdHJhY2luZyByZWZlcmVuY2UgbWV0aG9kcwBhcmd1bWVudCDigJhzaWduYXR1cmXigJkgaXMgbm90IG1lYW5pbmdmdWwgd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBhbmQgaXMgaWdub3JlZCAKKGV4dHJhY3QgYSBzdWJzZXQgb2YgdGhlIG1ldGhvZHMgbGlzdCBpbnN0ZWFkKQBhcmd1bWVudCDigJhzaWduYXR1cmVz4oCZIG11c3QgYmUgYSBjaGFyYWN0ZXIgbWF0cml4IHdob3NlIHJvd3MgYXJlIG1ldGhvZCBzaWduYXR1cmVzAGFyZ3VtZW50IOKAmHdoYXTigJkgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb24AYXJndW1lbnQgZiBtdXN0IGJlIGEgZ2VuZXJpYyBmdW5jdGlvbiB3aXRoIHNpZ25hdHVyZSAiLi4uIgBhcmd1bWVudCBuYW1lcyBpbiDigJhyZXBsYWNl4oCZIGNoYW5nZWQgdG8gYWdyZWUgd2l0aCDigJhjb2VyY2U8LeKAmSBnZW5lcmljOgolcwBhcmd1bWVudHMg4oCYbmFtZXPigJkgYW5kIOKAmHNpZ25hdHVyZeKAmSBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoAGFyZ3VtZW50cyAoJXMpIGFmdGVyIOKAmC4uLuKAmSBpbiB0aGUgZ2VuZXJpYyBtdXN0IGFwcGVhciBpbiB0aGUgbWV0aG9kLCBpbiB0aGUgc2FtZSBwbGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudCBsaXN0AGFyZ3VtZW50cyBtdXN0IGFsbCBiZSBjaGFyYWN0ZXIgc3RyaW5nIG5hbWVzIG9mIGZpZWxkcwBhcmd1bWVudHMgdG8gbWV0aG9kcygpIG11c3QgYmUgbmFtZWQsIG9yIG9uZSBuYW1lZCBsaXN0AGFzc2lnbmluZyBhcyAlcyBhIGNsYXNzIHJlcHJlc2VudGF0aW9uIHdpdGggaW50ZXJuYWwgbmFtZSAlcwBhc3NpZ25pbmcgb3ZlciB0aGUgYmluZGluZyBvZiBzeW1ib2wgJXMgaW4gZW52aXJvbm1lbnQvcGFja2FnZSAlcwBhc3NpZ25tZW50IG9mIGFuIG9iamVjdCBvZiBjbGFzcyAlcyBpcyBub3QgdmFsaWQgZm9yIEAlcyBpbiBhbiBvYmplY3Qgb2YgY2xhc3MgJXM7IGlzKHZhbHVlLCAiJXMiKSBpcyBub3QgVFJVRQBhc3NpZ25tZW50IG9mIGFuIG9iamVjdCBvZiBjbGFzcyAlcyBpcyBub3QgdmFsaWQgZm9yIHNsb3QgJXMgaW4gYW4gb2JqZWN0IG9mIGNsYXNzICVzOyBpcyh2YWx1ZSwgIiVzIikgaXMgbm90IFRSVUUAYmFkIGNsYXNzIHNwZWNpZmllZCBmb3IgZWxlbWVudCAlZCAoc2hvdWxkIGJlIGEgc2luZ2xlIGNoYXJhY3RlciBzdHJpbmcpAGJhZCBtZXRob2Qgb2JqZWN0IHN0b3JlZCBpbiBtZXRob2QgdGFibGUsIGNsYXNzICVzAGJhZCBvYmplY3QgZm91bmQgYXMgbWV0aG9kIChjbGFzcyAlcykAYm90aCBjbGFzc2VzIG11c3QgYmUgZGVmaW5lZABjYWxsIHRvIOKAmGNhbGxOZXh0TWV0aG9k4oCZIGRvZXMgbm90IGFwcGVhciB0byBiZSBpbiBhIOKAmG1ldGhvZOKAmSBvciDigJhjYWxsTmV4dE1ldGhvZOKAmSBjb250ZXh0AGNhbGxHZW5lcmljKCkgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBtZXRob2QgYm9keQBjYW5ub3QgY3JlYXRlIGEg4oCYc2V0SXPigJkgcmVsYXRpb24gd2hlbiBuZWl0aGVyIG9mIHRoZSBjbGFzc2VzICglcyBhbmQgJXMpIGlzIGxvY2FsIGFuZCBtb2RpZmlhYmxlIGluIHRoaXMgcGFja2FnZQBjYW5ub3QgZmluZCBhbiBlbnZpcm9ubWVudCBjb3JyZXNwb25kaW5nIHRvIHBhY2thZ2UgbmFtZSAnJXMiAGNhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgdW5uYW1lZCBhcmd1bWVudCBhcyBlbnZpcm9ubWVudABjYW5ub3QgaW5zZXJ0IG1ldGhvZHMgZm9yIHRoZXNlIGZ1bmN0aW9ucyAobWV0aG9kcyB0YWJsZSBub3QgZm91bmQgaW4gc291cmNlKTogJXMAY2Fubm90IGluc2VydCB0aGVzZSAobm90IGZvdW5kIGluIHNvdXJjZSk6ICVzAGNhbm5vdCByZW1vdmUgbWV0aG9kcyBmb3IgJXMgaW4gbG9ja2VkIGVudmlyb25tZW50L3BhY2thZ2UgJXMAY2Fubm90IHNwZWNpZnkgYXJyYXkoKSBhcmd1bWVudHMgd2hlbiBzcGVjaWZ5aW5nIOKAmC5EYXRh4oCZAGNhbm5vdCBzcGVjaWZ5IG1hdHJpeCgpIGFyZ3VtZW50cyB3aGVuIHNwZWNpZnlpbmcg4oCYLkRhdGHigJkAY2Fubm90IHVudHJhY2UgbWV0aG9kIGZvciAlczsgbm8gbWV0aG9kIGRlZmluZWQgZm9yIHRoaXMgc2lnbmF0dXJlOiAlcwBjYW5ub3QgdXNlIOKAmGF04oCZIGFyZ3VtZW50IHVubGVzcyB0aGUgZnVuY3Rpb24gYm9keSBoYXMgdGhlIGZvcm0g4oCYeyAuLi4gfeKAmQBjYW5ub3QgdXNlIOKAmGF04oCZIGFyZ3VtZW50IHdpdGhvdXQgYSB0cmFjZSBleHByZXNzaW9uAGNhbm5vdCB1c2Ugb2JqZWN0IG9mIGNsYXNzICVzIGluIG5ldygpOiAgY2xhc3MgJXMgZG9lcyBub3QgZXh0ZW5kIHRoYXQgY2xhc3MAY2xhc3MgJXMgY2Fubm90IGV4dGVuZCBjbGFzcyAlcwBjbGFzcyAlcyBkb2VzIG5vdCBoYXZlIGEgZGF0YSBwYXJ0IChhIC5EYXRhIHNsb3QpIGRlZmluZWQAY2xhc3MgJXMgZG9lcyBub3QgaGF2ZSBhbiBTMyBkYXRhIHBhcnQsIGFuZCBzbyBpcyBvZiB0eXBlICJTNCI7IG5vIFMzIGVxdWl2YWxlbnQAY2xhc3MgJXMgZXh0ZW5kcyBhbiB1bmRlZmluZWQgY2xhc3MgKCVzKQBjbGFzcyAlcyBleHRlbmRzIGFuIHVuZGVmaW5lZCBjbGFzcywgJXMAY2xhc3MgJXMgZm9yIGZpZWxkICVzIGlzIG5vdCBkZWZpbmVkAGNsYXNzICVzIGhhcyBhIGxvY2tlZCBkZWZpbml0aW9uIGluIHBhY2thZ2UgJXMAY2xhc3MgJXMgaGFzIG11bHRpcGxlIGRlZmluaXRpb25zIHZpc2libGU7IG9ubHkgdGhlIGZpcnN0IHJlbW92ZWQAY2xhc3MgJXMgaGFzIG5vIHZpc2libGUgZGVmaW5pdGlvbiBmcm9tIHBhY2thZ2Ugb3IgZW52aXJvbm1lbnQgJXMAY2xhc3MgJXMgaXMgVklSVFVBTDsgbm90IG1lYW5pbmdmdWwgdG8gY3JlYXRlIGFuIFM0IG9iamVjdCBmcm9tIHRoaXMgY2xhc3MAY2xhc3MgJXMgaXMgYSBjbGFzcyB1bmlvbjog4oCYY29lcmNl4oCZIHJlbGF0aW9ucyB0byBhIGNsYXNzIHVuaW9uIGFyZSBub3QgbWVhbmluZ2Z1bABjbGFzcyAlcyBpcyBkZWZpbmVkICh3aXRoIHBhY2thZ2Ugc2xvdCAlcykgYnV0IG5vIG1ldGFkYXRhIG9iamVjdCBmb3VuZCB0byByZXZpc2UgJXMgaW5mb3JtYXRpb24tLS1ub3QgZXhwb3J0ZWQ/ICBNYWtpbmcgYSBjb3B5IGluIHBhY2thZ2UgJXMAY2xhc3MgJXMgaXMgZGVmaW5lZCBidXQgaXMgbm90IGEgcmVmZXJlbmNlIGNsYXNzAGNsYXNzICVzIGlzIGRlZmluZWQsIHdpdGggcGFja2FnZSAlcywgYnV0IG5vIGNvcnJlc3BvbmRpbmcgbWV0YWRhdGEgb2JqZWN0IHdhcyBmb3VuZCAobm90IGV4cG9ydGVkPykAY2xhc3MgJXMgaXMgaW5oZXJpdGluZyBhbiBpbmNvbnNpc3RlbnQgc3VwZXJjbGFzcyBzdHJ1Y3R1cmUgZnJvbSBjbGFzcyAlcywgaW5jb25zaXN0ZW50IHdpdGggJXMAY2xhc3MgJXMgaXMgbWlzc2luZyBzbG90IGZyb20gY2xhc3MgJXMgKCVzKSwgYW5kIG5vIGNvZXJjZSBtZXRob2Qgd2FzIHN1cHBsaWVkAGNsYXNzICVzIGlzIG1pc3Npbmcgc2xvdHMgZnJvbSBjbGFzcyAlcyAoJXMpLCBhbmQgbm8gY29lcmNlIG1ldGhvZCB3YXMgc3VwcGxpZWQAY2xhc3MgJXMgaXMgbm90IGRlZmluZWQgaW4gdGhpcyBlbnZpcm9ubWVudABjbGFzcyAlcyBpcyBzZWFsZWQ7IOKAmHJlc2V0Q2xhc3PigJkgd2lsbCBoYXZlIG5vIGVmZmVjdABjbGFzcyAlcyBpcyBzZWFsZWQ7IG5ldyBzdXBlcmNsYXNzZXMgY2FuIG5vdCBiZSBkZWZpbmVkLCBleGNlcHQgYnkg4oCYc2V0Q2xhc3NVbmlvbuKAmQBjbGFzcyAlcyBub3QgZm91bmQgb24gJXM7IOKAmHJlc2V0Q2xhc3PigJkgd2lsbCBoYXZlIG5vIGVmZmVjdABjbGFzcyBjYW5ub3QgaGF2ZSBib3RoIGFuIG9yZGluYXJ5IGFuZCBoaWRkZW4gZGF0YSB0eXBlAGNsYXNzIGRlZmluaXRpb24gY2Fubm90IGV4dGVuZCBtb3JlIHRoYW4gb25lIG9mIHRoZXNlIGRhdGEgdHlwZXM6ICVzAGNsYXNzIGRlZmluaXRpb24gZm9yICVzIG5vdCBmb3VuZCAobm8gYWN0aW9uIHRha2VuKQBjbGFzcyBnZW5lcmF0b3IgZnVuY3Rpb24gZm9yIGNsYXNzICVzIGZyb20gcGFja2FnZSAlcwBjbGFzcyBtdXN0IGJlIGEgcmVmZXJlbmNlIGNsYXNzIHJlcHJlc2VudGF0aW9uIG9yIGEgY2hhcmFjdGVyIHN0cmluZzsgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBjb2RlIGZvciBtZXRob2RzIGluIGNsYXNzICVzIHdhcyBub3QgY2hlY2tlZCBmb3Igc3VzcGljaW91cyBmaWVsZCBhc3NpZ25tZW50cyAocmVjb21tZW5kZWQgcGFja2FnZSAlcyBub3QgYXZhaWxhYmxlPykAY29uZmxpY3RpbmcgZGVmaW5pdGlvbiBvZiBkYXRhIHBhcnQ6IC5EYXRhID0gJXMsIHN1cGVyY2xhc3MgaW1wbGllcyAlcwBkZWZhdWx0IG1ldGhvZCBtdXN0IGJlIGEgbWV0aG9kIGRlZmluaXRpb24sIGEgcHJpbWl0aXZlIG9yIE5VTEw6IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAZGlyZWN0IGNhbGxzIHRvIGNhbGxTdXBlcigpIGFyZSBpbnZhbGlkOiAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gYW5vdGhlciBtZXRob2QAZG9lcyBub3Qgc2VlbSB0byBiZSBhIG1ldGhvZCB0YWJsZSBmb3IgZ2VuZXJpYyAlcyBpbiB0cmFjaW5nIGVudmlyb25tZW50AGR1cGxpY2F0ZSBjbGFzcyBuYW1lcyBhbW9uZyBzdXBlcmNsYXNzZXM6ICVzAGR1cGxpY2F0ZSBlbGVtZW50IG5hbWVzIGluIOKAmE1ldGhvZHNMaXN04oCZIGF0IGxldmVsICVkOiAlcwBkdXBsaWNhdGVkIHNsb3QgbmFtZTogJXMAZHVwbGljYXRlZCBzbG90IG5hbWVzOiAlcwBkdXBsaWNhdGVkIHNsb3QgbmFtZXM6ICVzAGVsZW1lbnQgJWQgYXQgbGV2ZWwgJWQgKGNsYXNzICVzKSBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQgYXMgYSBmdW5jdGlvbiBvciBuYW1lZCBsaXN0AGVsZW1lbnQgJWQgb2YgdGhlIHJlcHJlc2VudGF0aW9uIHdhcyBub3QgYSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZwBlcnJvciBpbiBjb250YWluZWQgY2xhc3NlcyAoJXMpIGZvciBjbGFzcyAlcyBhbmQgdW5hYmxlIHRvIHJlbW92ZSBkZWZpbml0aW9uIGZyb20gJXMAZXJyb3IgaW4gY29udGFpbmVkIGNsYXNzZXMgKCVzKSBmb3IgY2xhc3MgJXMgYW5kIHVuYWJsZSB0byByZXN0b3JlIHByZXZpb3VzIGRlZmluaXRpb24gZnJvbSAlcwBlcnJvciBpbiBjb250YWluZWQgY2xhc3NlcyAoJXMpIGZvciBjbGFzcyAlczsgY2xhc3MgZGVmaW5pdGlvbiByZW1vdmVkIGZyb20gJXMAZXJyb3IgaW4gY29udGFpbmVkIGNsYXNzZXMgKCVzKSBmb3IgY2xhc3MgJXM7IHByZXZpb3VzIGRlZmluaXRpb24gcmVzdG9yZWQgdG8gJXMAZXJyb3IgaW4gbG9hZCBhY3Rpb24gJXMgZm9yIHBhY2thZ2UgJXM6ICVzOiAlcwBlcnJvciBpbiB1cGRhdGluZyBTNCBnZW5lcmljIGZ1bmN0aW9uICVzOyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBub3QgYW4gUzQgZ2VuZXJpYyBmdW5jdGlvbiAoY2xhc3MgJXMpAGV4cGFuZGluZyB0aGUgc2lnbmF0dXJlIHRvIGluY2x1ZGUgb21pdHRlZCBhcmd1bWVudHMgaW4gZGVmaW5pdGlvbjogJXMAZXhwZWN0ZWQgYSBub24tZW1wdHkgY2hhcmFjdGVyIHN0cmluZyBmb3IgYXJndW1lbnQgbmFtZQBleHBsaWNpdCBjb2VyY2lvbiBvZiBvbGQtc3R5bGUgY2xhc3MgKCVzKSBpcyBub3QgZGVmaW5lZABleHBsaWNpdCByZXBsYWNlbWVudCBub3QgZGVmaW5lZCBmb3IgYXMoeCwgIiVzIikgPC0gdmFsdWUgZm9yIG9sZC1zdHlsZSBjbGFzcyAlcwBmYWlsZWQgdG8gZmluZCBleHBlY3RlZCBncm91cCBnZW5lcmljIGZ1bmN0aW9uOgBmaWVsZCAlcyBpcyBhbHJlYWR5IGxvY2tlZABmaWVsZCAlcyBvZiBjbGFzcyAlcyBoYXMgYSBub24tZGVmYXVsdCBiaW5kaW5nIGFuZCBjYW5ub3QgYmUgbG9ja2VkAGZpZWxkICVzIHdhcyBzdXBwbGllZCBhcyBhbiBvYmplY3Qgb2YgY2xhc3MgJXM7IG11c3QgYmUgYSBjbGFzcyBuYW1lIG9yIGEgYmluZGluZyBmdW5jdGlvbgBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWVzIG9mIG9uZSBvZiBtb3JlIGdlbmVyaWMgZnVuY3Rpb25zIChnb3Qgb2JqZWN0IG9mIGNsYXNzICVzKQBmb3JtYWwgYXJndW1lbnRzICglcykgb21pdHRlZCBpbiB0aGUgbWV0aG9kIGRlZmluaXRpb24gY2Fubm90IGJlIGluIHRoZSBzaWduYXR1cmUAZm9ybWFsIGFyZ3VtZW50cyBkaWZmZXIgKGluIGRlZmF1bHQgdmFsdWVzPykAZm9ybWFsIGFyZ3VtZW50cyBkaWZmZXI6ICglcyksICglcykAZm9ybWFsIGFyZ3VtZW50cyBpbiBtZXRob2QgYW5kIGdlbmVyaWMgZG8gbm90IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlcgBmb3VuZCAlZCBlcXVhbGx5IGdvb2QgbmV4dCBtZXRob2QAZm91bmQgJWQgZXF1YWxseSBnb29kIG5leHQgbWV0aG9kcwBmdW5jdGlvbiAlcyBhcHBlYXJzIHRvIGJlIGEgZ2VuZXJpYyBmdW5jdGlvbiwgYnV0IHdpdGggZ2VuZXJpYyBuYW1lICVzAGZ1bmN0aW9uIHN1cHBsaWVkIGFzIGFyZ3VtZW50IOKAmGbigJkgbXVzdCBiZSBhIGdlbmVyaWMAZ2VuZXJpYyBmdW5jdGlvbiAlcyBub3QgZm91bmQgZm9yIHJlbW92YWwAZ2VuZXJpYyBmdW5jdGlvbiBzdXBwbGllZCB3YXMgbm90IGNyZWF0ZWQgZm9yICVzAGdlbmVyaWMgbmFtZXMgZGlmZmVyOiAlcywgJXMAZ290IGEgbmVnYXRpdmUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHRvIGxvb2sgYXQAZ3JvdXBzIGRpZmZlcjogJXMsICVzAGlmIHRoZSDigJhkZWbigJkgYXJndW1lbnQgaXMgc3VwcGxpZWQsIGl0IG11c3QgYmUgYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHN0YW5kYXJkR2VuZXJpYygiJXMiKSBvciBpcyB0aGUgZGVmYXVsdABpbiAlczogdXNlIG9mICJNZXRob2RzTGlzdCIgbWV0YWRhdGEgb2JqZWN0cyBpcyBkZWZ1bmN0LgBpbiAlczogdXNlIG9mICJNZXRob2RzTGlzdCIgbWV0YWRhdGEgb2JqZWN0cyBpcyBkZXByZWNhdGVkLgBpbiBjaGFuZ2luZyBmb3JtYWwgYXJndW1lbnRzIGluICVzLCBzb21lIG9mIHRoZSBvbGQgbmFtZXMgYXJlIG5vdCBpbiBmYWN0IGFyZ3VtZW50czogJXMAaW4gY29uc3RydWN0aW5nIHRoZSBwcm90b3R5cGUgZm9yIGNsYXNzICVzLCBzbG90cyBpbiBwcm90b3R5cGUgYW5kIG5vdCBpbiBjbGFzczogJXMAaW4gY29uc3RydWN0aW5nIHRoZSBwcm90b3R5cGUgZm9yIGNsYXNzICVzOiBwcm90b3R5cGUgaGFzIGNsYXNzICVzLCBidXQgdGhlIGRhdGEgcGFydCBzcGVjaWZpZXMgY2xhc3MgJXMAaW4gZGVmaW5pbmcgY2xhc3MgJXMsIHRoZSBzdXBwbGllZCBkYXRhIHBhcnQgY2xhc3MsICVzIGlzIG5vdCB2YWxpZCAobXVzdCBiZSBhIGJhc2ljIGNsYXNzIG9yIGEgdmlydHVhbCBjbGFzcyBjb21iaW5pbmcgYmFzaWMgY2xhc3NlcykAaW4gZGVmaW5pdGlvbiBvZiBjbGFzcyAlcywgaW5mb3JtYXRpb24gZm9yIHN1cGVyY2xhc3MgJXMgaXMgb2YgY2xhc3MgJXMgKGV4cGVjdGVkICJTQ2xhc3NFeHRlbnNpb24iKQBpbiBtYWtpbmcgdGhlIHByb3RvdHlwZSBmb3IgY2xhc3MgJXMgZWxlbWVudHMgb2YgdGhlIHByb3RvdHlwZSBmYWlsZWQgdG8gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgc2xvdCBjbGFzczogJXMAaW4gbWV0aG9kIGZvciAlcyB3aXRoIHNpZ25hdHVyZSAlczoAaW4gdGhlIG1ldGhvZCBzaWduYXR1cmUgZm9yIGZ1bmN0aW9uICVzIGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiB0aGUgc2lnbmF0dXJlOiAlcwBpbiB0aGUgbWV0aG9kIHNpZ25hdHVyZSBmb3IgZnVuY3Rpb24gJXMgaW52YWxpZCBhcmd1bWVudCBuYW1lcyBpbiB0aGUgc2lnbmF0dXJlOiAlcwBpbmNvbnNpc3RlbnQgb2xkLXN0eWxlIGNsYXNzIGluZm9ybWF0aW9uIGZvciAlcyAobWF5YmUgbWl4aW5nIG9sZCBhbmQgbmV3IGNsYXNzZXM/KQBpbmNvbnNpc3RlbnQgb2xkLXN0eWxlIGNsYXNzIGluZm9ybWF0aW9uIGZvciAlczsgdGhlIGNsYXNzIGlzIGRlZmluZWQgYnV0IGRvZXMgbm90IGV4dGVuZCAlcyBhbmQgaXMgbm90IHZhbGlkIGFzIHRoZSBkYXRhIHBhcnQAaW5pdGlhbGl6aW5nIG9iamVjdHMgZnJvbSBjbGFzcyAlcyB3aXRoIHRoZXNlIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkAGluc2VydGluZyBtZXRob2QgY29ycmVzcG9uZGluZyB0byBlbXB0eSBzaWduYXR1cmUAaW5zZXJ0aW5nIG1ldGhvZCBpbnRvIG5vbi1tZXRob2RzLWxpc3Qgb2JqZWN0IChjbGFzcyAlcykAaW5zZXJ0aW5nIG1ldGhvZCB3aXRoIGludmFsaWQgc2lnbmF0dXJlIG1hdGNoaW5nIGFyZ3VtZW50IOKAmC4uLuKAmSB0byBjbGFzcyAlcwBpbnZhbGlkIOKAmENsYXNz4oCZIGFyZ3VtZW50OiAgc2hvdWxkIGJlIGEgc2luZ2xlIHN0cmluZwBpbnZhbGlkIOKAmGlnbm9yZeKAmSBhcmd1bWVudDsgc2hvdWxkIGJlIGEgY2xhc3MgZGVmaW5pdGlvbiBvciBhIGNoYXJhY3RlciB2ZWN0b3IsIGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAaW52YWxpZCDigJhwYWNrYWdl4oCZIHNsb3Qgb3IgYXR0cmlidXRlLCB3cm9uZyBsZW5ndGgAaW52YWxpZCDigJhzb3VyY2XigJkgYXJndW1lbnQ6IGV4cGVjdGVkIGZpbGUgbmFtZXMgb3IgYSBjb25uZWN0aW9uIGJ1dCBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGludmFsaWQgUzQgY2xhc3MgY29ycmVzcG9uZGluZyB0byBTMyBjbGFzczogc2xvdHMgaW4gIFM0IHZlcnNpb24gbXVzdCBleHRlbmQgY29ycmVzcG9uZGluZyBzbG90cyBpbiBTMyB2ZXJzaW9uOiBmYWlscyBmb3IgJXMAaW52YWxpZCBhcmd1bWVudCDigJhuYW1l4oCZOiAlcwBpbnZhbGlkIGFzc2lnbm1lbnQgZm9yIHJlZmVyZW5jZSBjbGFzcyBmaWVsZCAlcywgc2hvdWxkIGJlIGZyb20gY2xhc3MgJXMgb3IgYSBzdWJjbGFzcyAod2FzIGNsYXNzICVzKQBpbnZhbGlkIGNhbGwgaW4gbWV0aG9kIGRpc3BhdGNoIHRvIOKAmCVz4oCZIChubyBkZWZhdWx0IG1ldGhvZCkAaW52YWxpZCBjYWxsIHRvIOKAmGNsYXNzTGFiZWzigJk6IGV4cGVjdGVkIGEgbmFtZSBvciBhIGNsYXNzIGRlZmluaXRpb24sIGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAaW52YWxpZCBjbGFzcyAlcyBvYmplY3QAaW52YWxpZCBlbGVtZW50IGluIGEgbGlzdCBmb3IgInNpZ25hdHVyZSIgYXJndW1lbnQ7IGVsZW1lbnQgJWQgaXMgbmVpdGhlciBhIGNsYXNzIGRlZmluaXRpb24gbm9yIGEgY2xhc3MgbmFtZQBpbnZhbGlkIGVsZW1lbnQgaW4gdGhlICJncm91cE1lbWJlcnMiIHNsb3QgKGNsYXNzICVzKQBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50OiBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBkaXNwYXRjaABpbnZhbGlkIGdyb3VwIGdlbmVyaWMgZnVuY3Rpb24gaW4gc2VhcmNoIGZvciBpbmhlcml0ZWQgbWV0aG9kIChjbGFzcyAlcykAaW52YWxpZCBpbmRleCBmb3IgZnVuY3Rpb24gYXJndW1lbnQAaW52YWxpZCBtZXRob2QgZGVmaW5pdGlvbjogZXhwZWN0ZWQgYSBmdW5jdGlvbiwgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwBpbnZhbGlkIG1ldGhvZCBzdWJsaXN0AGludmFsaWQgbWV0aG9kcyB0YWJsZSByZXF1ZXN0AGludmFsaWQgbWxpc3QgZWxlbWVudCBmb3Igc2lnbmF0dXJlICVzIGF0IGxldmVsICVkIChzaG91bGQgYmUgTWV0aG9kRGVmaW5pdGlvbiBvciAuUHJpbWl0aXZlLCBoYWQgY2xhc3MgJXMpAGludmFsaWQgbmFtZSBmb3Igc2xvdCBvZiBjbGFzcyAlczogJXMAaW52YWxpZCBuYW1lcyBmb3Igc2xvdHMgb2YgY2xhc3MgJXM6ICVzAGludmFsaWQgb2JqZWN0IGZvciBmb3JtYWwgbWV0aG9kIGRlZmluaXRpb246IHR5cGUgJXMAaW52YWxpZCBvYmplY3QgaW4gbWV0YSB0YWJsZSBvZiBtZXRob2RzIGZvciAlcywgbGFiZWwgJXMsIGhhZCBjbGFzcyAlcwBpbnZhbGlkIG9iamVjdCBpbiBtZXRob2RzIHRhYmxlICglcyksIGV4cGVjdGVkIGEgbWV0aG9kLCBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAGludmFsaWQgb3IgdW5zZXQgbWV0aG9kcyB0YWJsZSBpbiBnZW5lcmljIGZ1bmN0aW9uICVzAGludmFsaWQgcmVwbGFjZW1lbnQ6IHJlZmVyZW5jZSBjbGFzcyBmaWVsZCAlcyBpcyByZWFkLW9ubHkAaW52YWxpZCB2YWx1ZSBmcm9tIGdlbmVyaWMgZnVuY3Rpb24gJXMsIGNsYXNzICVzLCBleHBlY3RlZCAlcwBsb2NhbCBhc3NpZ25tZW50IHRvIGZpZWxkIG5hbWUgd2lsbCBub3QgY2hhbmdlIHRoZSBmaWVsZDoKICAgICVzCiBEaWQgeW91IG1lYW4gdG8gdXNlICI8PC0iPyAoIGluIG1ldGhvZCAlcyBmb3IgY2xhc3MgJXMpAG1ha2luZyBhIGdlbmVyaWMgZm9yIHNwZWNpYWwgZnVuY3Rpb24gJXMAbWFraW5nIGEgdHJhY2VkIHZlcnNpb24gb2YgYSBwcmltaXRpdmU7IGFyZ3VtZW50cyB3aWxsIGJlIHRyZWF0ZWQgYXMg4oCYLi4u4oCZAG1ldGhvZHMgY2FuIGFkZCBhcmd1bWVudHMgdG8gdGhlIGdlbmVyaWMgJXMgb25seSBpZiDigJguLi7igJkgaXMgYW4gYXJndW1lbnQgdG8gdGhlIGdlbmVyaWMAbWV0aG9kcyBjYW5ub3QgYmUgZGVmaW5lZCBmb3IgdGhlIHByaW1pdGl2ZSBmdW5jdGlvbiAlcwBtZXRob2RzIGN1cnJlbnRseSBleGlzdCBmb3IgY29lcmNpbmcgZnJvbSAlcyB0byAlczsgdGhleSB3aWxsIGJlIHJlcGxhY2VkLgBtZXRob2RzIGRlY2xhcmVkIGluIHVzaW5nTWV0aG9kcygpIGJ1dCBub3QgZm91bmQ6ICVzAG1ldGhvZHMgbWF5IG5vdCBiZSBkZWZpbmVkIGZvciBwcmltaXRpdmUgZnVuY3Rpb24gJXMgaW4gdGhpcyB2ZXJzaW9uIG9mIFIAbWlzc2luZyBmdW5jdGlvbiBmb3IgbG9hZCBhY3Rpb246ICVzAG1pc3NpbmcgcGFja2FnZSBzbG90ICglcykgaW4gb2JqZWN0IG9mIGNsYXNzICVzIChwYWNrYWdlIGluZm8gYWRkZWQpAG1vcmUgZWxlbWVudHMgaW4gdGhlIG1ldGhvZCBzaWduYXR1cmUgKCVkKSB0aGFuIGluIHRoZSBnZW5lcmljIHNpZ25hdHVyZSAoJWQpIGZvciBmdW5jdGlvbiAlcwBtb3JlIHRoYW4gb25lIHBvc3NpYmxlIGNsYXNzIGZvciB0aGUgZGF0YSBwYXJ0OiB1c2luZyAlcyByYXRoZXIgdGhhbiAlcwBtb3ZlIHRoZSBmaWxlIG9yIHJlbW92ZSB0aGUgY2xhc3MvbWV0aG9kAG11bHRpcGxlIGNsYXNzIGRlZmluaXRpb25zIGZvciAlcyBmcm9tIHBhY2thZ2VzOiAlczsgcGlja2luZyB0aGUgZmlyc3QAbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBjbGFzcyAlcyB2aXNpYmxlICglcyk7IHVzaW5nIHRoZSBkZWZpbml0aW9uCiAgIGluIHBhY2thZ2UgJXMgZm9yICVzAG11bHRpcGxlIGRlZmluaXRpb25zIG9mIGNsYXNzICVzIHZpc2libGUgKCVzKTsgdXNpbmcgdGhlIGRlZmluaXRpb24KICAgaW4gcGFja2FnZSAlcyBmb3IgJXMAbXVsdGlwbGUgZGVmaW5pdGlvbnMgZXhpc3QgZm9yIGNsYXNzICVzLCBidXQgdGhlIHN1cHBsaWVkIHBhY2thZ2UgKCVzKSBpcyBub3Qgb25lIG9mIHRoZW0gKCVzKQBtdWx0aXBsZSBkZWZpbml0aW9ucyBleGlzdCBmb3IgY2xhc3MgJXM7IHNob3VsZCBzcGVjaWZ5IG9uZSBvZiB0aGVtICglcyksIGUuZy4gYnkgY2xhc3NOYW1lKCkAbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgJXMgZm91bmQ7IHVzaW5nIHRoZSBvbmUgb24gJXMAbXVsdGlwbGUgZGlyZWN0IG1hdGNoZXM6ICVzOyB1c2luZyB0aGUgZmlyc3Qgb2YgdGhlc2UAbXVsdGlwbGUgZXF1aXZhbGVudCBpbmhlcml0ZWQgbWF0Y2hlczogJXM7IHVzaW5nIHRoZSBmaXJzdCBvZiB0aGVzZQBtdWx0aXBsZSBnZW5lcmljcyBtYXRjaCBwYXR0ZXJuLCB1c2luZyB0YWJsZSAlcwBtdXN0IHByb3ZpZGUgYW4gZW52aXJvbm1lbnQgdGFibGU7IGdvdCBjbGFzcyAlcwBtdXN0IHN1cHBseSDigJhnZW5lcmljLmZ1bmN0aW9u4oCZIG9yIOKAmGNsYXNz4oCZAG11c3Qgc3VwcGx5IGEgZnVuY3Rpb24gc2tlbGV0b24gZm9yICVzLCBleHBsaWNpdGx5IG9yIHZpYSBhbiBleGlzdGluZyBmdW5jdGlvbgBtdXN0IHN1cHBseSBlaXRoZXIgYSBnZW5lcmljIGZ1bmN0aW9uIG9yIGEgZnVuY3Rpb24gYXMgZGVmYXVsdCBmb3IgJXMAbmFtZWQgZWxlbWVudHMgb2YgcHJvdG90eXBlIGRvIG5vdCBjb3JyZXNwb25kIHRvIHNsb3QgbmFtZTogJXMAbmFtZWQgZWxlbWVudHMgb2YgcHJvdG90eXBlIGRvIG5vdCBjb3JyZXNwb25kIHRvIHNsb3QgbmFtZXM6ICVzAG5lZWQgYSBkZWZpbml0aW9uIGZvciB0aGUgbWV0aG9kIGhlcmUAbmVlZGVkIHRoZSBzdXBwbGllZCBsYWJlbHMgdmVjdG9yIG9mIGxlbmd0aCAlZCwgZ290ICVkAG5vIOKAmC5EYXRh4oCZIHNsb3QgZGVmaW5lZCBmb3IgY2xhc3MgJXMAbm8g4oCYcmVwbGFjZeKAmSBtZXRob2Qgd2FzIGRlZmluZWQgZm9yIOKAmGFzKHgsICIlcyIpIDwtIHZhbHVl4oCZIGZvciBjbGFzcyAlcwBubyBkZWZpbml0aW9uIGZvciBjbGFzcyAlcwBubyBkZWZpbml0aW9uIGZvciBjbGFzc2VzICVzAG5vIGRlZmluaXRpb24gZm9yIG9iamVjdCAlcyBmb3VuZCBpbiB0cmFjaW5nIGVudmlyb25tZW50AG5vIGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcyBvZiAlcyAoY2xhc3MgJXMpIGZvdW5kAG5vIGRlZmluaXRpb24gZm91bmQgZm9yIGNsYXNzICVzAG5vIGRlZmluaXRpb24gZm91bmQgZm9yIGluaGVyaXRlZCBjbGFzczogJXMAbm8gZGVmaW5pdGlvbiBvZiAlcyB0byB1c2UgZm9yICVzAG5vIGRlZmluaXRpb24gb2YgY2xhc3MgJXMgZm91bmQAbm8gZGVmaW5pdGlvbiBvZiBjbGFzcyAlcyBpbiB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLCAlcywgZGVmaW5pdGlvbiBvbiA6ICVzAG5vIGRlZmluaXRpb24gb2YgY2xhc3MgJXMgaW4gdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgJXMsIGRlZmluaXRpb25zIG9uIDogJXMAbm8gZGVmaW5pdGlvbiBvZiBpbmhlcml0YW5jZSBmcm9tICVzIHRvICVzLCB0aG91Z2ggdGhlIHJlbGF0aW9uIHdhcyBpbXBsaWVkIGJ5IHRoZSBzZXRJcygpIGZyb20gJXMAbm8gZGVmaW5pdGlvbiB3YXMgZm91bmQgZm9yIHN1cGVyY2xhc3MgJXMgaW4gdGhlIHNwZWNpZmljYXRpb24gb2YgY2xhc3MgJXMAbm8gZW52aXJvbm1lbnQgb3IgcGFja2FnZSBjb3JyZXNwb25kaW5nIHRvIGFyZ3VtZW50IHdoZXJlPSVzAG5vIGV4aXN0aW5nIGRlZmluaXRpb24gZm9yIGZ1bmN0aW9uICVzAG5vIGZ1bmN0aW9uICVzIGZvdW5kAG5vIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yICVzIGZvdW5kAG5vIGZ1bmN0aW9uIGRlZmluaXRpb24gZm91bmQgZm9yICVzAG5vIGdlbmVyaWMgZnVuY3Rpb24gJXMgZm91bmQAbm8gZ2VuZXJpYyBmdW5jdGlvbiBmb3VuZCBjb3JyZXNwb25kaW5nIHRvICVzAG5vIGdlbmVyaWMgZnVuY3Rpb24gZm91bmQgZm9yICVzAG5vIGdlbmVyaWMgZnVuY3Rpb24gZm91bmQgZm9yIOKAmCVz4oCZAG5vIGdlbmVyaWMgdmVyc2lvbiBvZiAlcyBvbiBwYWNrYWdlICVzIGlzIGFsbG93ZWQ7CiAgIGEgbmV3IGdlbmVyaWMgd2lsbCBiZSBhc3NpZ25lZCBmb3IgJXMAbm8gbWV0aG9kIGZvciAlcyBtYXRjaGVzIGNsYXNzICVzAG5vIG1ldGhvZCBmb3VuZCBmb3IgZnVuY3Rpb24gJXMgYW5kIHNpZ25hdHVyZSAlcwBubyBtZXRob2QgZm91bmQgZm9yIGZ1bmN0aW9uIOKAmCVz4oCZIGFuZCBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIGZvdW5kIGZvciBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIGluIG1ldGhvZHMgdGFibGUgZm9yICVzIGZvciBzaWduYXR1cmUgJXMAbm8gbWV0aG9kIG9yIGRlZmF1bHQgZm9yIGFzKCkgcmVwbGFjZW1lbnQgb2YgJXMgd2l0aCBDbGFzcz0iJXMiAG5vIG1ldGhvZCBvciBkZWZhdWx0IGZvciBjb2VyY2luZyAlcyB0byAlcwBubyBtZXRob2Qgb3IgZGVmYXVsdCBtYXRjaGluZyB0aGUgIi4uLiIgYXJndW1lbnRzIGluICVzAG5vIG1ldGhvZHMgZm91bmQgZm9yICVzOyBjYWNoZUdlbmVyaWNzTWV0YURhdGEoKSB3aWxsIGhhdmUgbm8gZWZmZWN0AG5vIG1ldGhvZHMgdGFibGUgZm9yIGdlbmVyaWMgJXMgZnJvbSBwYWNrYWdlICVzIGluIHBhY2thZ2UgJXMAbm8gbm9uLWdlbmVyaWMgZnVuY3Rpb24gJXMgZm91bmQAbm8gcGFja2FnZSBuYW1lIHN1cHBsaWVkIGFuZCBubyBjbGFzcyBkZWZpbml0aW9uIGZvdW5kIGZvciAlcwBubyBzdWl0YWJsZSBhcmd1bWVudHMgdG8gZGlzcGF0Y2ggbWV0aG9kcyBpbiB0aGlzIGZ1bmN0aW9uAG5vbi1hcmd1bWVudCBmb3VuZCBpbiB0aGUgc2lnbmF0dXJlOiAlcwBub24tYXJndW1lbnRzIGZvdW5kIGluIHRoZSBzaWduYXR1cmU6ICVzAG5vbi1mdW5jdGlvbiBhY3Rpb246ICVzAG5vbi1nZW5lcmljIGZ1bmN0aW9uIOKAmCVz4oCZIGdpdmVuIHRvIGZpbmRNZXRob2RzKCkAbm9uLWxvY2FsIGFzc2lnbm1lbnQgdG8gbWV0aG9kIG5hbWVzIGlzIG5vdCBhbGxvd2VkCiAgICAlcwooIGluIG1ldGhvZCAlcyBmb3IgY2xhc3MgJXMpAG5vbi1sb2NhbCBhc3NpZ25tZW50IHRvIG5vbi1maWVsZCBuYW1lcyAocG9zc2libHkgbWlzc3BlbGxlZD8pCiAgICAlcwooIGluIG1ldGhvZCAlcyBmb3IgY2xhc3MgJXMpAG5vbmUgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHNvdXJjZSBjb2RlIGNvdWxkIGJlIGZvdW5kOiAgbmVlZCB0byBhdHRhY2ggb3Igc3BlY2lmeSB0aGUgcGFja2FnZQBub3QgYSByZWZlcmVuY2UgY2xhc3M6ICVzAG5vdCBhbGxvd2VkIHRvIGhhdmUgdGVzdD09VFJVRSBhbmQgYW4gUzRDbGFzcyBkZWZpbml0aW9uAG5vdCBib3RoIGZ1bmN0aW9ucyEAb2JqZWN0ICVzIG5vdCBjaGFuZ2VkIChpdCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgZnJvbSBhIHZlcnNpb24gb2YgUiBlYXJsaWVyIHRoYW4gMS44LjApAG9iamVjdCAlcyBub3QgY2hhbmdlZCAoaXQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgY3VycmVudCBkZWZpbml0aW9uIG9mIGNsYXNzICVzIGZyb20gJXMpAG9iamVjdCAlcyBub3QgZm91bmQAb2JqZWN0IG11c3QgYmUgYSB2YWxpZCBkYXRhIHBhcnQgZm9yIGNsYXNzICVzOyBub3QgdHJ1ZSBvZiB0eXBlICVzAG9iamVjdCB0byB1c2UgYXMgYSBtZXRob2Qgc2lnbmF0dXJlIGZvciBmdW5jdGlvbiAlcyBkb2VzIG5vdCBsb29rIGxpa2UgYSBsZWdpdGltYXRlIHNpZ25hdHVyZSAoYSB2ZWN0b3Igb2Ygc2luZ2xlIGNsYXNzIG5hbWVzKTogdGhlcmUgd2VyZSAlZCBjbGFzcyBuYW1lcywgYnV0ICVkIGVsZW1lbnRzIGluIHRoZSBzaWduYXR1cmUgb2JqZWN0AG9iamVjdHMgZm91bmQgaW4gbXVsdGlwbGUgcGFja2FnZXM6IHVzaW5nICVzIGFuZCBpZ25vcmluZyAlcwBvbmx5IEZBTFNFIGlzIG1lYW5pbmdmdWwgZm9yIOKAmGluaGVyaXRlZOKAmSwgd2hlbiDigJh3aGVyZeKAmSBpcyBzdXBwbGllZCAoZ290ICVzKQBvbmx5IGFyZ3VtZW50cyDigJhDbGFzc+KAmSBhbmQg4oCYd2hlcmXigJkgY2FuIGJlIHN1cHBsaWVkIHdoZW4gYXJndW1lbnQg4oCYcmVwcmVzZW50YXRpb27igJkgaXMgYSDigJhjbGFzc1JlcHJlc2VudGF0aW9u4oCZIG9iamVjdABvbmx5IG9uZSBkYXRhIG9iamVjdCAodW5uYW1lZCBhcmd1bWVudCB0byBwcm90b3R5cGUpIGFsbG93ZWQAb3JpZ2luYWwgZnVuY3Rpb24gaXMgcHJvaGliaXRlZCBhcyBhIGdlbmVyaWMgZnVuY3Rpb24AcGFja2FnZSAlcyBpcyBub3QgYXR0YWNoZWQgYW5kIG5vIG5hbWVzcGFjZSBmb3VuZCBmb3IgaXQAcGFja2FnZSAlcyBzZWVtcyB0byBoYXZlIG91dC1vZi1kYXRlIG1ldGhvZHM7IG5lZWQgdG8gcmVpbnN0YWxsIGZyb20gc291cmNlAHBhY2thZ2Ugc2xvdHMgIGRpZmZlcjogJXMsICVzAHBvdGVudGlhbCBjeWNsZSBpbiBjbGFzcyBpbmhlcml0YW5jZTogJXMgaGFzIGR1cGxpY2F0ZXMgaW4gc3VwZXJjbGFzc2VzIGFuZCBzdWJjbGFzc2VzICglcykAcHJpbWl0aXZlIGZ1bmN0aW9ucyBjYW5ub3QgYmUgbWV0aG9kczsgdGhleSBtdXN0IGJlIGVuY2xvc2VkIGluIGEgcmVndWxhciBmdW5jdGlvbgBwcm90b3R5cGUgaXMgYSBsaXN0IHdpdGggbmFtZWQgZWxlbWVudHMgKGNvdWxkIGJlIGFtYmlndW91cyk6ICBiZXR0ZXIgdG8gdXNlIGZ1bmN0aW9uIHByb3RvdHlwZSgpIHRvIGF2b2lkIHRyb3VibGUuAHJlcGxhY2VtZW50IHZhbHVlIG11c3QgYmUgb2YgY2xhc3MgJXMsIGdvdCBvbmUgb2YgY2xhc3MgJXMAcmVwbGFjZW1lbnQgdmFsdWUgbXVzdCBleHRlbmQgY2xhc3MgJXMsIGdvdCAlcwByZXN0b3JpbmcgZGVmaW5pdGlvbiBvZiBjbGFzcyAlcwBzZXR0aW5nIGEgbWV0aG9kIG92ZXIgdGhlIGJpbmRpbmcgb2Ygc3ltYm9sICVzIGluIGVudmlyb25tZW50L3BhY2thZ2UgJXMAc2lnbmF0dXJlcyBkaWZmZXI6ICAoJXMpLCAoJXMpAHNpbmdsZSBzdHJpbmc7IGdvdCBhbiBvYmplY3Qgb2YgY2xhc3MgJXMAc2tpcHBpbmcgbWV0aG9kcyBsaXN0IGVsZW1lbnQgJXMgb2YgdW5leHBlY3RlZCBjbGFzcyAlcwBzbG90ICVzIGluIGNsYXNzICVzIGN1cnJlbnRseSBkZWZpbmVkIChvciBpbmhlcml0ZWQpIGFzICIlcyIsIGNvbmZsaWN0cyB3aXRoIGFuIGluaGVyaXRlZCBkZWZpbml0aW9uIGluIGNsYXNzICVzAHNsb3QgJXM6IGNsYXNzICVzIHNob3VsZCBleHRlbmQgY2xhc3MgJXMAc2xvdCBpbiBjbGFzcyAlcyBtdXN0IGV4dGVuZCBjb3JyZXNwb25kaW5nIHNsb3QgaW4gY2xhc3MgJXM6IGZhaWxzIGZvciAlcwBzbG90cyBpbiBjbGFzcyAlcyBtdXN0IGV4dGVuZCBjb3JyZXNwb25kaW5nIHNsb3RzIGluIGNsYXNzICVzOiBmYWlscyBmb3IgJXMAc29tZSBhY3Rpb25zIGFyZSBtaXNzaW5nOiAlcwBzdWJjbGFzcyAlcyBvZiBjbGFzcyAlcyBpcyBub3QgbG9jYWwgYW5kIGNhbm5vdCBiZSB1cGRhdGVkIGZvciBuZXcgaW5oZXJpdGFuY2UgaW5mb3JtYXRpb247IGNvbnNpZGVyIHNldENsYXNzVW5pb24oKQBzdXBwbGllZCBwYWNrYWdlLCAlcywgZGlmZmVycyBmcm9tIHBhY2thZ2UgaW5mZXJyZWQgZnJvbSBzb3VyY2UsICVzAHRoZSAiYW1iaWd1b3VzTWV0aG9kU2VsZWN0aW9uIiBvcHRpb24gc2hvdWxkIGJlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFzIHRoZSBjb25kaXRpb24gYWN0aW9uOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHRoZSAlcyBhcmd1bWVudCBtdXN0IGJlIE5VTEwgb3IgYSBnZW5lcmljIGZ1bmN0aW9uIG9iamVjdDsgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwB0aGUg4oCYJXPigJkgbGlzdCBmb3IgY2xhc3MgJXMsIGluY2x1ZGVzIGFuIHVuZGVmaW5lZCBjbGFzcyAlcwB0aGUg4oCYUzNDbGFzc+KAmSBhcmd1bWVudCBtdXN0IGJlIGEgc3VwZXJjbGFzcyBvZiAlczogIG5vdCB0cnVlIG9mIGNsYXNzICVzAHRoZSDigJhjb2VyY2XigJkgYXJndW1lbnQgdG8g4oCYc2V0SXPigJkgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50LCBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHRoZSDigJhjb250YWluc+KAmSBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWVzIG9mIHN1cGVyY2xhc3NlczogIGdvdCBhbiBlbGVtZW50IG9mIGNsYXNzICVzAHRoZSDigJhyZXBsYWNl4oCZIGFyZ3VtZW50IHRvIHNldElzKCkgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgMiBvciAzIGFyZ3VtZW50cywgZ290IGFuIG9iamVjdCBvZiBjbGFzcyAlcwB0aGUg4oCYd2hlcmXigJkgZW52aXJvbm1lbnQgKCVzKSBpcyBhIGxvY2tlZCBuYW1lc3BhY2U7IGNhbm5vdCBhc3NpZ24gbWV0aG9kcyB0aGVyZQB0aGUgUzMgY2xhc3Mgb2YgdGhlIHByb3RvdHlwZSwgIiVzIiwgaXMgdW5kZWZpbmVkOyBvbmx5IGFsbG93ZWQgd2hlbiB0aGlzIGlzIHRoZSBTMyBjbGFzcyBiZWluZyByZWdpc3RlcmVkICgiJXMiKQB0aGUgYm9keSBvZiB0aGUgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgY2FsbHMg4oCYc3RhbmRhcmRHZW5lcmlj4oCZIHRvIGRpc3BhdGNoIG9uIGEgZGlmZmVyZW50IG5hbWUgKCIlcyIpIQB0aGUgY2xhc3Mgb2YgZmllbGQgJXMgaW4gdGhlIG9iamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXNpcmVkIGNsYXNzICVzIGluIHRoZSB0YXJnZXQAdGhlIGNvbXB1dGF0aW9uOiDigJhhcyhvYmplY3QsIiVzIikgPC0gdmFsdWXigJkgaXMgdmFsaWQgd2hlbiBvYmplY3QgaGFzIGNsYXNzICVzIG9ubHkgaWYg4oCYaXModmFsdWUsICIlcyIp4oCZIGlzIFRSVUUgKOKAmGNsYXNzKHZhbHVlKeKAmSB3YXMgJXMpAHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzICVzIGluIHBhY2thZ2UgJXMgaXMgbG9ja2VkIHNvIGZpZWxkcyBtYXkgbm90IGJlIG1vZGlmaWVkAHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzICVzIGluIHBhY2thZ2UgJXMgaXMgbG9ja2VkLCBtZXRob2RzIG1heSBub3QgYmUgcmVkZWZpbmVkAHRoZSBlZGl0aW5nIGluIHRyYWNlKCkgY2FuIG9ubHkgY2hhbmdlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgbm90IHRoZSBhcmd1bWVudHMgb3IgZGVmYXVsdHMAdGhlIGVkaXRpbmcgaW4gdHJhY2UoKSBjYW4gb25seSBjaGFuZ2UgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHRoZSBlbnZpcm9ubWVudCAlcyBpcyBsb2NrZWQ7IGNhbm5vdCBhc3NpZ24gbWV0aG9kcyBmb3IgZnVuY3Rpb24gJXMAdGhlIGZvcm1hbCBhcmd1bWVudCBvZiB0aGUgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgKCVzKSBkaWZmZXJzIGZyb20gdGhhdCBvZiB0aGUgbm9uLWdlbmVyaWMgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCAoJXMpAHRoZSBmb3JtYWwgYXJndW1lbnRzIG9mIHRoZSBnZW5lcmljIGZ1bmN0aW9uIGZvciAlcyAoJXMpIGRpZmZlciBmcm9tIHRob3NlIG9mIHRoZSBub24tZ2VuZXJpYyB0byBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0ICglcykAdGhlIGZ1bmN0aW9uIGJlaW5nIHVzZWQgYXMgJXMgaW4gbWFraW5nIGEgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgJXMgaXMgY3VycmVudGx5IHRyYWNlZDsgdGhlIGZ1bmN0aW9uIHVzZWQgd2lsbCBoYXZlIHRyYWNpbmcgcmVtb3ZlZAB0aGUgbWVtYmVyIGNsYXNzZXMgbXVzdCBiZSBkZWZpbmVkOiBub3QgdHJ1ZSBvZiAlcwB0aGUgbWV0aG9kIGZvciAlcyBmb3IgdGhpcyBzaWduYXR1cmUgd2FzIG5vdCBiZWluZyB0cmFjZWQAdGhlIG1ldGhvZCBmb3IgZnVuY3Rpb24gJXMgYW5kIHNpZ25hdHVyZSAlcyBpcyBzZWFsZWQgYW5kIGNhbm5vdCBiZSByZS1kZWZpbmVkAHRoZSBuYW1lcyBpbiBzaWduYXR1cmUgZm9yIG1ldGhvZCAoJXMpIGRvIG5vdCBtYXRjaCAlcydzIGFyZ3VtZW50cyAoJXMpAHRoZSBuYW1lcyBpbiBzaWduYXR1cmUgZm9yIG1ldGhvZCAoJXMpIGRvIG5vdCBtYXRjaCBmdW5jdGlvbidzIGFyZ3VtZW50cyAoJXMpAHRoZSBvdmVycmlkaW5nIGNsYXNzICgiJXMiKSBvZiBmaWVsZCAlcyBpcyBub3QgYSBzdWJjbGFzcyBvZiB0aGUgZXhpc3RpbmcgZmllbGQgZGVmaW5pdGlvbiAoIiVzIikAdGhlcmUgaXMgbm8gYXV0b21hdGljIGRlZmluaXRpb24gZm9yIOKAmGFzKG9iamVjdCwgIiVzIikgPC0gdmFsdWXigJkgd2hlbiBvYmplY3QgaGFzIGNsYXNzICVzIGFuZCBubyDigJhyZXBsYWNl4oCZIGFyZ3VtZW50IHdhcyBzdXBwbGllZDsgcmVwbGFjZW1lbnQgd2lsbCBiZSBhbiBlcnJvcgB0b3BpYyAlcyBpcyBub3QgYSBtZXRob2QgbmFtZSBpbiBjbGFzcyAlcwpUaGUgY2xhc3MgZGVmaW5pdGlvbiBmb2xsb3dzAHRyYWNpbmcgdGhlIGludGVybmFsIGZ1bmN0aW9uICVzIGlzIG5vdCBhbGxvd2VkAHRyeWluZyB0byBhc3NpZ24gYW4gb2JqZWN0IG9mIGNsYXNzICVzIGFzIHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzICVzOiBtdXN0IHN1cHBseSBhICJjbGFzc1JlcHJlc2VudGF0aW9uIiBvYmplY3QAdHJ5aW5nIHRvIGNoYW5nZSB0aGUgZm9ybWFsIGFyZ3VtZW50cyBpbiAlcyBpbiBhbiBvYmplY3Qgb2YgY2xhc3MgJXM7IGV4cGVjdGVkIGEgZnVuY3Rpb24gZGVmaW5pdGlvbgB0cnlpbmcgdG8gY2hhbmdlIHRoZSBmb3JtYWwgYXJndW1lbnRzIGluICVzLCBidXQgZ2V0dGluZyB0aGUgbmV3IGZvcm1hbHMgZnJvbSBhbiBvYmplY3Qgb2YgY2xhc3MgJXM7IGV4cGVjdGVkIGEgZnVuY3Rpb24gZGVmaW5pdGlvbgB0cnlpbmcgdG8gY2hhbmdlIHRoZSBmb3JtYWwgYXJndW1lbnRzIGluICVzLCBidXQgdGhlIG51bWJlciBvZiBleGlzdGluZyBhcmd1bWVudHMgaXMgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgbmV3IGFyZ3VtZW50cyAodGhlIGV4dHJhIGFyZ3VtZW50cyB3b24ndCBiZSB1c2VkKTogKCVzKSB2cyAoJXMpAHRyeWluZyB0byBjaGFuZ2UgdGhlIGZvcm1hbCBhcmd1bWVudHMgaW4gJXMsIGJ1dCB0aGUgbnVtYmVyIG9mIGV4aXN0aW5nIGFyZ3VtZW50cyBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBuZXcgYXJndW1lbnRzOiAoJXMpIHZzICglcykAdHJ5aW5nIHRvIGNoZWNrIHNpZ25hdHVyZSBsZW5ndGggb2YgZ2VuZXJpYyDigJglc+KAmSwgYnV0IGl0IGlzIG5vdCBhIGdlbmVyaWMgZnVuY3Rpb246IGkgPSAlZCwgZnVucyA9ICVzLCBnbmFtZXMgPSAlcwB0cnlpbmcgdG8gY2hlY2sgc2lnbmF0dXJlIGxlbmd0aCBvZiBncm91cCBnZW5lcmljIOKAmCVz4oCZLCBidXQgaXQgaXMgbm90IGEgZ3JvdXAgZ2VuZXJpYwB0cnlpbmcgdG8gZXhlY3V0ZSBsb2FkIGFjdGlvbnMgd2l0aG91dCDigJhtZXRob2Rz4oCZIHBhY2thZ2UAdHJ5aW5nIHRvIGZpbmQgYSBtZXRob2RzIHRhYmxlIGluIGEgbm9uLWdlbmVyaWMgZnVuY3Rpb24AdHJ5aW5nIHRvIG1hdGNoIGEgbWV0aG9kIHNpZ25hdHVyZSBvZiBjbGFzcyAlczsgZXhwZWN0cyBhIGxpc3Qgb3IgYSBjaGFyYWN0ZXIgdmVjdG9yAHRyeWluZyB0byBtYXRjaCBhIG1ldGhvZCBzaWduYXR1cmUgdG8gYW4gb2JqZWN0IChvZiBjbGFzcyAlcykgdGhhdCBpcyBub3QgYSBnZW5lcmljIGZ1bmN0aW9uAHRyeWluZyB0byBzZXQgYW4g4oCYYXPigJkgcmVsYXRpb24gZnJvbSAlcyB0byBpdHNlbGYAdW5hYmxlIHRvIGNyZWF0ZSB1bmlvbiBjbGFzczogIGNvdWxkIG5vdCBzZXQgbWVtYmVycyAlcwB1bmFibGUgdG8gZmluZCBhIGNvbnNpc3RlbnQgb3JkZXJpbmcgb2Ygc3VwZXJjbGFzc2VzIGZvciBjbGFzcyAlczogb3JkZXIgY2hvc2VuIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBzdXBlcmNsYXNzZXMgb2YgJXMAdW5hYmxlIHRvIGZpbmQgYW4gZW52aXJvbm1lbnQgY29udGFpbmluZyBjbGFzcyAlcwB1bmFibGUgdG8gZmluZCBhbiBpbmhlcml0ZWQgbWV0aG9kIGZvciBmdW5jdGlvbiAlcyBmb3Igc2lnbmF0dXJlICVzAHVuYWJsZSB0byBmaW5kIHJlcXVpcmVkIHBhY2thZ2UgJXMAdW5kZWZpbmVkIOKAmGNvZXJjZeKAmSBtZXRob2QAdW5kZWZpbmVkIGNsYXNzZXMgKCVzKSB3aWxsIGJlIGlnbm9yZWQgZm9yIGFyZ3VtZW50IOKAmCVz4oCZAHVuZGVmaW5lZCBzbG90IGNsYXNzZXMgaW4gZGVmaW5pdGlvbiBvZiAlczogJXMAdW5kZWZpbmVkIHN1YmNsYXNzICVzIG9mIGNsYXNzICVzOyBkZWZpbml0aW9uIG5vdCB1cGRhdGVkAHVubG9hZGluZyDigJhtZXRob2Rz4oCZIHBhY2thZ2UgLi4uAHVubmFtZWQgYXJndW1lbnQgbXVzdCBleHRlbmQgZWl0aGVyIHRoZSBTMyBjbGFzcyBvciB0aGUgY2xhc3Mgb2YgdGhlIGRhdGEgcGFydDsgbm90IHRydWUgb2YgY2xhc3MgJXMAdW5uYW1lZCBhcmd1bWVudCB0byBpbml0aWFsaXplKCkgZm9yIFMzIGNsYXNzIG11c3QgaGF2ZSBhIGNsYXNzIGRlZmluaXRpb247ICVzIGRvZXMgbm90AHVubmFtZWQgYXJndW1lbnQgdG8gbmV3KCkgbXVzdCBiZSBhbiBlbnZpcm9ubWVudCBmb3IgdGhlIG5ldyBvYmplY3QAdW5uYW1lZCBhcmd1bWVudHMgdG8gJG5ldygpIG11c3QgYmUgb2JqZWN0cyBmcm9tIGEgcmVmZXJlbmNlIGNsYXNzOyBnb3QgYW4gb2JqZWN0IG9mIGNsYXNzICVzAHVzZSAlcyBpbnN0ZWFkLgB2YWxpZGl0eSBtZXRob2QgbXVzdCBiZSBOVUxMIG9yIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50AHZhbHVlIGNsYXNzZXMgZGlmZmVyOiAlcywgJXMA