ZGlmZiAtLWdpdCBhLy5jbGFzc3BhdGggYi8uY2xhc3NwYXRoCmluZGV4IDM2NWI2ZDQuLjNjZWU3ODggMTAwNjQ0Ci0tLSBhLy5jbGFzc3BhdGgKKysrIGIvLmNsYXNzcGF0aApAQCAtMSw1NSArMSw1OSBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InJlc291cmNlcyIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJ0ZXN0cyIgb3V0cHV0PSJiaW4vdGVzdC1jbGFzc2VzIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9qY29tbWFuZGVyLTEuMTcuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2pjb21tYW5kZXItMS4xNy1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvbG9nNGotMS4yLjE3LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9sb2c0ai0xLjIuMTctc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NsZjRqLWFwaS0xLjYuNi5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvc2xmNGotYXBpLTEuNi42LXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zbGY0ai1sb2c0ajEyLTEuNi42LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9zbGY0ai1sb2c0ajEyLTEuNi42LXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9tYWlsLTEuNC4zLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9tYWlsLTEuNC4zLXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9qYXZheC5zZXJ2bGV0LWFwaS0zLjAuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvamF2YXguc2VydmxldC1hcGktMy4wLjEtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2pldHR5LXdlYmFwcC03LjYuOC52MjAxMjExMDYuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2pldHR5LXdlYmFwcC03LjYuOC52MjAxMjExMDYtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2pldHR5LWFqcC03LjYuOC52MjAxMjExMDYuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2pldHR5LWFqcC03LjYuOC52MjAxMjExMDYtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3dpY2tldC0xLjQuMjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL3dpY2tldC0xLjQuMjEtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3dpY2tldC1hdXRoLXJvbGVzLTEuNC4yMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvd2lja2V0LWF1dGgtcm9sZXMtMS40LjIxLXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC93aWNrZXQtZXh0ZW5zaW9ucy0xLjQuMjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL3dpY2tldC1leHRlbnNpb25zLTEuNC4yMS1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvZ29vZ2xlY2hhcnRzLTEuNC4yMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvZ29vZ2xlY2hhcnRzLTEuNC4yMS1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvbHVjZW5lLWNvcmUtMy42LjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2x1Y2VuZS1jb3JlLTMuNi4xLXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9sdWNlbmUtaGlnaGxpZ2h0ZXItMy42LjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2x1Y2VuZS1oaWdobGlnaHRlci0zLjYuMS1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvbHVjZW5lLW1lbW9yeS0zLjYuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvbHVjZW5lLW1lbW9yeS0zLjYuMS1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvbHVjZW5lLXF1ZXJpZXMtMy42LjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2x1Y2VuZS1xdWVyaWVzLTMuNi4xLXNvdXJjZXMuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy9tYWluL2phdmEiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjL3Rlc3QvamF2YSIgb3V0cHV0PSJiaW4vdGVzdC1jbGFzc2VzIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYy9tYWluL3Jlc291cmNlcyIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvamNvbW1hbmRlci0xLjE3LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9qY29tbWFuZGVyLTEuMTcuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9sb2c0ai0xLjIuMTcuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2xvZzRqLTEuMi4xNy5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NsZjRqLWFwaS0xLjYuNi5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvc2xmNGotYXBpLTEuNi42LmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvc2xmNGotbG9nNGoxMi0xLjYuNi5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvc2xmNGotbG9nNGoxMi0xLjYuNi5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L21haWwtMS40LjMuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL21haWwtMS40LjMuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9qYXZheC5zZXJ2bGV0LWFwaS0zLjAuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvamF2YXguc2VydmxldC1hcGktMy4wLjEuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9qZXR0eS13ZWJhcHAtNy42LjgudjIwMTIxMTA2LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9qZXR0eS13ZWJhcHAtNy42LjgudjIwMTIxMTA2LmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvamV0dHktYWpwLTcuNi44LnYyMDEyMTEwNi5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvamV0dHktYWpwLTcuNi44LnYyMDEyMTEwNi5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3dpY2tldC0xLjQuMjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL3dpY2tldC0xLjQuMjEuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC93aWNrZXQtYXV0aC1yb2xlcy0xLjQuMjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL3dpY2tldC1hdXRoLXJvbGVzLTEuNC4yMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3dpY2tldC1leHRlbnNpb25zLTEuNC4yMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvd2lja2V0LWV4dGVuc2lvbnMtMS40LjIxLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvZ29vZ2xlY2hhcnRzLTEuNC4yMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvZ29vZ2xlY2hhcnRzLTEuNC4yMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2x1Y2VuZS1jb3JlLTMuNi4xLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9sdWNlbmUtY29yZS0zLjYuMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2x1Y2VuZS1oaWdobGlnaHRlci0zLjYuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvbHVjZW5lLWhpZ2hsaWdodGVyLTMuNi4xLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvbHVjZW5lLW1lbW9yeS0zLjYuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvbHVjZW5lLW1lbW9yeS0zLjYuMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2x1Y2VuZS1xdWVyaWVzLTMuNi4xLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9sdWNlbmUtcXVlcmllcy0zLjYuMS5qYXIiIC8+CiAJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2pha2FydGEtcmVnZXhwLTEuNC5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L21hcmtkb3ducGFwZXJzLWNvcmUtMS4zLjIuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL21hcmtkb3ducGFwZXJzLWNvcmUtMS4zLjItc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L29yZy5lY2xpcHNlLmpnaXQtMi4yLjAuMjAxMjEyMTkxODUwLXIuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL29yZy5lY2xpcHNlLmpnaXQtMi4yLjAuMjAxMjEyMTkxODUwLXItc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2pzY2gtMC4xLjQ0LTEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2pzY2gtMC4xLjQ0LTEtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L29yZy5lY2xpcHNlLmpnaXQuaHR0cC5zZXJ2ZXItMi4yLjAuMjAxMjEyMTkxODUwLXIuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL29yZy5lY2xpcHNlLmpnaXQuaHR0cC5zZXJ2ZXItMi4yLjAuMjAxMjEyMTkxODUwLXItc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2JjcHJvdi1qZGsxNW9uLTEuNDcuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2JjcHJvdi1qZGsxNW9uLTEuNDctc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2JjbWFpbC1qZGsxNW9uLTEuNDcuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2JjbWFpbC1qZGsxNW9uLTEuNDctc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2JjcGtpeC1qZGsxNW9uLTEuNDcuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2JjcGtpeC1qZGsxNW9uLTEuNDctc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3JvbWUtMC45LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9yb21lLTAuOS1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvamRvbS0xLjAuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2pkb20tMS4wLXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9nc29uLTEuNy4yLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9nc29uLTEuNy4yLXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9ncm9vdnktYWxsLTEuOC44LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9ncm9vdnktYWxsLTEuOC44LXNvdXJjZXMuamFyIiAvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC91bmJvdW5kaWQtbGRhcHNkay0yLjMuMC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvdW5ib3VuZGlkLWxkYXBzZGstMi4zLjAtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2l2eS0yLjIuMC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvaXZ5LTIuMi4wLXNvdXJjZXMuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9tYXJrZG93bnBhcGVycy1jb3JlLTEuMy4yLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9tYXJrZG93bnBhcGVycy1jb3JlLTEuMy4yLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvb3JnLmVjbGlwc2UuamdpdC0yLjMuMS4yMDEzMDIyMDE4Mzgtci5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvb3JnLmVjbGlwc2UuamdpdC0yLjMuMS4yMDEzMDIyMDE4Mzgtci5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2pzY2gtMC4xLjQ2LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9qc2NoLTAuMS40Ni5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L29yZy5lY2xpcHNlLmpnaXQuaHR0cC5zZXJ2ZXItMi4zLjEuMjAxMzAyMjAxODM4LXIuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL29yZy5lY2xpcHNlLmpnaXQuaHR0cC5zZXJ2ZXItMi4zLjEuMjAxMzAyMjAxODM4LXIuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9iY3Byb3YtamRrMTVvbi0xLjQ3LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9iY3Byb3YtamRrMTVvbi0xLjQ3LmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvYmNtYWlsLWpkazE1b24tMS40Ny5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvYmNtYWlsLWpkazE1b24tMS40Ny5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2JjcGtpeC1qZGsxNW9uLTEuNDcuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2JjcGtpeC1qZGsxNW9uLTEuNDcuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9yb21lLTAuOS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvcm9tZS0wLjkuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9qZG9tLTEuMC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvamRvbS0xLjAuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9nc29uLTEuNy4yLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9nc29uLTEuNy4yLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvZ3Jvb3Z5LWFsbC0xLjguOC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvZ3Jvb3Z5LWFsbC0xLjguOC5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3VuYm91bmRpZC1sZGFwc2RrLTIuMy4wLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy91bmJvdW5kaWQtbGRhcHNkay0yLjMuMC5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2l2eS0yLjIuMC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvaXZ5LTIuMi4wLmphciIgLz4KIAk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvamNhbGVuZGFyLTEuMy4yLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvY29tbW9ucy1jb21wcmVzcy0xLjQuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvY29tbW9ucy1jb21wcmVzcy0xLjQuMS1zb3VyY2VzLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQveHotMS4wLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy94ei0xLjAtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2p1bml0LTQuMTAuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2p1bml0LTQuMTAtc291cmNlcy5qYXIiIC8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2hhbWNyZXN0LWNvcmUtMS4xLmphciIgLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvc2VsZW5pdW1ocS9zZWxlbml1bS1qYXZhLTIuMjguMC5qYXIiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvc2VsZW5pdW1ocS9zZWxlbml1bS1hcGktMi4yOC4wLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL3NlbGVuaXVtLXJlbW90ZS1kcml2ZXItMi4yOC4wLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL3NlbGVuaXVtLXN1cHBvcnQtMi4yOC4wLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL2d1YXZhLTEyLjAuamFyIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NlbGVuaXVtaHEvanNvbi0yMDA4MDcwMS5qYXIiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvc2VsZW5pdW1ocS9jb21tb25zLWV4ZWMtMS4xLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL2h0dHBjb3JlLTQuMi4xLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL2h0dHBtaW1lLTQuMi4xLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL2h0dHBjbGllbnQtNC4yLjEuamFyIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NlbGVuaXVtaHEvY29tbW9ucy1sb2dnaW5nLTEuMS4xLmphciIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9zZWxlbml1bWhxL3NlbGVuaXVtLWZpcmVmb3gtZHJpdmVyLTIuMjguMC5qYXIiLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvY29tbW9ucy1jb21wcmVzcy0xLjQuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvY29tbW9ucy1jb21wcmVzcy0xLjQuMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3h6LTEuMC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMveHotMS4wLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvanVuaXQtNC4xMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvanVuaXQtNC4xMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2hhbWNyZXN0LWNvcmUtMS4zLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9oYW1jcmVzdC1jb3JlLTEuMy5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NlbGVuaXVtLWphdmEtMi4yOC4wLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9zZWxlbml1bS1qYXZhLTIuMjguMC5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NlbGVuaXVtLXN1cHBvcnQtMi4yOC4wLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9zZWxlbml1bS1zdXBwb3J0LTIuMjguMC5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NlbGVuaXVtLWZpcmVmb3gtZHJpdmVyLTIuMjguMC5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvc2VsZW5pdW0tZmlyZWZveC1kcml2ZXItMi4yOC4wLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvc2VsZW5pdW0tcmVtb3RlLWRyaXZlci0yLjI4LjAuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL3NlbGVuaXVtLXJlbW90ZS1kcml2ZXItMi4yOC4wLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvY2dsaWItbm9kZXAtMi4xXzMuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2NnbGliLW5vZGVwLTIuMV8zLmphciIgLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ibGliIiBwYXRoPSJleHQvanNvbi0yMDA4MDcwMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvanNvbi0yMDA4MDcwMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3NlbGVuaXVtLWFwaS0yLjI4LjAuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL3NlbGVuaXVtLWFwaS0yLjI4LjAuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9ndWF2YS0xMy4wLjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2d1YXZhLTEzLjAuMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2h0dHBjbGllbnQtNC4yLjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2h0dHBjbGllbnQtNC4yLjEuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9odHRwY29yZS00LjIuMS5qYXIiIHNvdXJjZXBhdGg9ImV4dC9zcmMvaHR0cGNvcmUtNC4yLjEuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9jb21tb25zLWxvZ2dpbmctMS4xLjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2NvbW1vbnMtbG9nZ2luZy0xLjEuMS5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2NvbW1vbnMtY29kZWMtMS42LmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9jb21tb25zLWNvZGVjLTEuNi5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2NvbW1vbnMtZXhlYy0xLjEuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2NvbW1vbnMtZXhlYy0xLjEuamFyIiAvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImV4dC9qbmEtMy40LjAuamFyIiBzb3VyY2VwYXRoPSJleHQvc3JjL2puYS0zLjQuMC5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L3BsYXRmb3JtLTMuNC4wLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9wbGF0Zm9ybS0zLjQuMC5qYXIiIC8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iZXh0L2NvbW1vbnMtaW8tMi4yLmphciIgc291cmNlcGF0aD0iZXh0L3NyYy9jb21tb25zLWlvLTIuMi5qYXIiIC8+CiAJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluL2NsYXNzZXMiIC8+CiAJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSIiAvPgogPC9jbGFzc3BhdGg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNjViNzRhYi4uMDU3ZjZkNyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0yLDM0ICsyLDE3IEBACiAvbGliDQogL2V4dA0KIC9idWlsZA0KLS9rZXlzdG9yZQ0KLS8qLnppcA0KLS9naXRibGl0LnByb3BlcnRpZXMNCi0vdXNlcnMucHJvcGVydGllcw0KIC9zaXRlDQogL2dpdA0KLS90YXJnZXQNCiAvYnVpbGQucHJvcGVydGllcw0KLS93YXINCi0vKi53YXINCi0vcHJvcG9zYWxzDQotLyouamFyDQogL2ZlZGVyYXRpb24ucHJvcGVydGllcw0KIC9tYWlsdGVzdC5wcm9wZXJ0aWVzDQotLy5zZXR0aW5ncy8qLnByZWZzDQotL3NyYy9XRUItSU5GL3JlZmVyZW5jZS5wcm9wZXJ0aWVzDQotL2Jpbi8NCiAvLnNldHRpbmdzLw0KLS9qYXZhZG9jDQotL2V4cHJlc3MNCisvc3JjL21haW4vamF2YS9XRUItSU5GL3JlZmVyZW5jZS5wcm9wZXJ0aWVzDQorL2Jpbi8NCiAvYnVpbGQtZGVtby54bWwNCi0vdXNlcnMuY29uZg0KICouZGlyZWN0b3J5DQogLy5ncmFkbGUNCi0vcHJvamVjdHMuY29uZg0KIC9wb20ueG1sDQotL2RlcGxveQ0KLS8qLmprcw0KIC94NTA5dGVzdA0KLS9jZXJ0cwogL2RhdGEKZGlmZiAtLWdpdCBhL2J1aWxkLm1veGllIGIvYnVpbGQubW94aWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU5MzhhMwotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkLm1veGllCkBAIC0wLDAgKzEsMTU4IEBACisjCisjIEdpdGJsaXQgcHJvamVjdCBkZXNjcmlwdG9yCisjCisKKyMgU3BlY2lmeSBtaW5pbXVtIE1veGllIHZlcnNpb24gcmVxdWlyZWQgdG8gYnVpbGQKK3JlcXVpcmVzOiAwLjcuMQorCisjIFByb2plY3QgTWV0YWRhdGEKK25hbWU6IEdpdGJsaXQKK2Rlc2NyaXB0aW9uOiBwdXJlIEphdmEgR2l0IHNvbHV0aW9uCitncm91cElkOiBjb20uZ2l0YmxpdAorYXJ0aWZhY3RJZDogZ2l0YmxpdAordmVyc2lvbjogMS4zLjAtU05BUFNIT1QKK2luY2VwdGlvblllYXI6IDIwMTEKKworIyBDdXJyZW50IHN0YWJsZSByZWxlYXNlCityZWxlYXNlVmVyc2lvbjogMS4yLjEKK3JlbGVhc2VEYXRlOiAnMjAxMy0wMS0xNScKKworIyBQcm9qZWN0IHVybHMKK3VybDogJ2h0dHA6Ly9naXRibGl0LmNvbScKK2lzc3Vlc1VybDogJ2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRibGl0L2lzc3Vlcy9saXN0Jworc29jaWFsTmV0d29ya1VybDogJ2h0dHBzOi8vcGx1cy5nb29nbGUuY29tLzExNDQ2NDY3ODM5MjU5MzQyMTY4NCcKK2ZvcnVtVXJsOiAnaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dpdGJsaXQnCisKKyMgTGljZW5zZXMgc2VjdGlvbiBpbmNsdWRlZCBmb3IgUE9NIGdlbmVyYXRpb24KK2xpY2Vuc2VzOgorLSB7CisgICAgbmFtZTogQXBhY2hlIEFTTCB2Mi4wCisgICAgdXJsOiAnaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwnCisgIH0KKworIyBEZXZlbG9wZXJzIHNlY3Rpb24gaW5jbHVkZWQgZm9yIFBPTSBnZW5lcmF0aW9uCitkZXZlbG9wZXJzOgorLSB7CisgIGlkOiBqYW1lcworICBuYW1lOiBKYW1lcyBNb2dlcgorICB1cmw6ICdodHRwczovL3BsdXMuZ29vZ2xlLmNvbS91LzAvMTE2NDI4Nzc2NDUyMDI3OTU2OTIwJworICBvcmdhbml6YXRpb246IFZBUworICBvcmdhbml6YXRpb25Vcmw6ICdodHRwOi8vd3d3LnZhcy5jb20nCisgIHJvbGVzOiBkZXZlbG9wZXIKKyAgfQorCisjIFNDTSBzZWN0aW9uIGluY2x1ZGVkIGZvciBQT00gZ2VuZXJhdGlvbgorc2NtOiB7CisgIGNvbm5lY3Rpb246ICdzY206Z2l0OmdpdDovL2dpdGh1Yi5jb20vZ2l0YmxpdC9naXRibGl0LmdpdCcKKyAgZGV2ZWxvcGVyQ29ubmVjdGlvbjogJ3NjbTpnaXQ6aHR0cHM6Ly9naXRodWIuY29tL2dpdGJsaXQvZ2l0YmxpdC5naXQnCisgIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9naXRibGl0L2dpdGJsaXQnCisgIHRhZzogSEVBRAorICB9CisKKyMgTWFpbmNsYXNzIGlzIHVzZWQgZm9yIHNldHRpbmcgamFyIG1hbmlmZXN0cyBhbmQgdXNpbmcgdGhlIG14OnJ1biB0YXJnZXQKK21haW5jbGFzczogY29tLmdpdGJsaXQuR2l0QmxpdFNlcnZlcgorCisjIE1veGllIHN1cHBvcnRzIG11bHRpcGxlIHNvdXJjZSBkaXJlY3RvcmllcyBhbmQgYWxsb3dzIHlvdSB0byBhc3NpZ24KKyMgYSBzY29wZSB0byBlYWNoIGRpcmVjdG9yeS4KK3NvdXJjZURpcmVjdG9yaWVzOgorLSBjb21waWxlICdzcmMvbWFpbi9qYXZhJworLSB0ZXN0ICdzcmMvdGVzdC9qYXZhJworIyBNb3hpZSBzdXBwb3J0cyBvbmUgc2l0ZS1zY29wZWQgZGlyZWN0b3J5IGZvciBteDpkb2MKKy0gc2l0ZSAnc3JjL3NpdGUnCisKK3Jlc291cmNlRGlyZWN0b3JpZXM6CistIGNvbXBpbGUgJ3NyYy9tYWluL3Jlc291cmNlcycKKy0gc2l0ZSAnc3JjL3NpdGUvcmVzb3VyY2VzJworCisjIGNvbXBpbGUgZm9yIEphdmEgNiBjbGFzcyBmb3JtYXQKK3Rhc2tzOiB7CisJJ214OmphdmFjJyA6IHsKKyAgICAgICAgc291cmNlOiAxLjYKKyAgICAgICAgdGFyZ2V0OiAxLjYKKyAgICAgICAgY29tcGlsZXI6IGphdmFjMS42CisgICAgICAgIGVuY29kaW5nOiBVVEYtOAorICAgICAgICAjIHN0b3AgY29tcGxhaW50cyBhYm91dCBib290c3RyYXAgY2xhc3NwYXRoIHdoZW4gY29tcGlsaW5nIHdpdGggSmF2YSA3CisgICAgICAgIGNvbXBpbGVyQXJnczogJy1YbGludDotb3B0aW9ucycKKyAgICB9Cit9CisKKyMgR2VuZXJhdGUgRWNsaXBzZSBwcm9qZWN0IGZpbGVzLgorIyBHZW5lcmF0ZSBJbnRlbGxpSiBJREVBIG1vZHVsZSBmaWxlcy4KKyMgR2VuZXJhdGUgYSBkaXN0cmlidXRpb24gTWF2ZW4gUE9NIChub3Qgc3VpdGFibGUgZm9yIGJ1aWxkaW5nIHdpdGggTWF2ZW4pLgorYXBwbHk6IGVjbGlwc2UsIGludGVsbGlqLCBwb20KKworIyBDb3B5IGFsbCByZXRyaWV2ZWQgZGVwZW5kZW5jaWVzIHRvIHRoZSAiZXh0IiBkaXJlY3RvcnkuCisjIEdlbmVyYXRlZCBJREUgc2V0dGluZ3MgKC5jbGFzc3BhdGgsIGV0Yykgd2lsbCB1c2UgdGhlIGFydGlmYWN0cworIyBmcm9tIHRoaXMgcHJvamVjdC1yZWxhdGl2ZSBkaXJlY3RvcnkuIFRoaXMgYWxsb3dzIHRoZSBJREUgc2V0dGluZ3MKKyMgdG8gYmUgdmVyc2lvbi1jb250cm9sbGVkIGFuZCBzaGFyZWQuCitkZXBlbmRlbmN5RGlyZWN0b3J5OiBleHQKKworIyBSZWdpc3RlciB0aGUgRWNsaXBzZSBKR2l0IE1hdmVuIHJlcG9zaXRvcmllcworcmVnaXN0ZXJlZFJlcG9zaXRvcmllczoKKy0geyBpZDogamdpdCwgdXJsOiAnaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL2pnaXQvbWF2ZW4nIH0KKy0geyBpZDogamdpdC1zbmFwc2hvdHMsIHVybDogJ2h0dHBzOi8vcmVwby5lY2xpcHNlLm9yZy9jb250ZW50L2dyb3Vwcy9zbmFwc2hvdHMnIH0KKworIyBTb3VyY2UgYWxsIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBmb2xsb3dpbmcgcmVwb3NpdG9yaWVzIGluIHRoZSBzcGVjaWZpZWQgb3JkZXIKK3JlcG9zaXRvcmllczogY2VudHJhbCwgamdpdC1zbmFwc2hvdHMsIGpnaXQKKworIyBDb252ZW5pZW5jZSBwcm9wZXJ0aWVzIGZvciBkZXBlbmRlbmNpZXMKK3Byb3BlcnRpZXM6IHsKKyAgamV0dHkudmVyc2lvbiAgOiA3LjYuOC52MjAxMjExMDYKKyAgd2lja2V0LnZlcnNpb24gOiAxLjQuMjEKKyAgbHVjZW5lLnZlcnNpb24gOiAzLjYuMQorICBqZ2l0LnZlcnNpb24gICA6IDIuMy4xLjIwMTMwMjIwMTgzOC1yCisgIGdyb292eS52ZXJzaW9uIDogMS44LjgKKyAgYm91bmN5Y2FzdGxlLnZlcnNpb24gOiAxLjQ3CisgIHNlbGVuaXVtLnZlcnNpb24gOiAyLjI4LjAKKyAgfQorCisjIERlcGVuZGVuY2llcworIworIyAgIE1heSBiZSB0YWdnZWQgd2l0aCAiOmxhYmVsIiBub3RhdGlvbiB0byBncm91cCBkZXBlbmRlbmNpZXMuCisjCisjICAgIkBleHRlbnNpb24iIGZldGNoZXMgdGhlIGFydGlmYWN0IHdpdGggdGhlIHNwZWNpZmllZCBleHRlbnNpb24KKyMgICBhbmQgaWdub3JlcyBhbGwgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMuCisjCisjICAgIiFncm91cElkIiBvciAiIWdyb3VwSWQ6YXJ0aWZhY3RJZCIgZXhjbHVkZXMgYWxsIG1hdGNoaW5nIHRyYW5zaXRpdmUKKyMgICBkZXBlbmRlbmNpZXMgaW4gdGhhdCBkZXBlbmRlbmN5J3MgZGVwZW5kZW5jeSBncmFwaC4KKyMKKworZGVwZW5kZW5jaWVzOgorIyBTdGFuZGFyZCBkZXBlbmRlbmNpZXMKKy0gY29tcGlsZSAnY29tLmJldXN0Ompjb21tYW5kZXI6MS4xNycgOmZlZGNsaWVudCA6YXV0aG9yaXR5CistIGNvbXBpbGUgJ2xvZzRqOmxvZzRqOjEuMi4xNycgOndhciA6ZmVkY2xpZW50IDphdXRob3JpdHkKKy0gY29tcGlsZSAnb3JnLnNsZjRqOnNsZjRqLWFwaToxLjYuNicgOndhciA6ZmVkY2xpZW50IDphdXRob3JpdHkKKy0gY29tcGlsZSAnb3JnLnNsZjRqOnNsZjRqLWxvZzRqMTI6MS42LjYnIDp3YXIgOmZlZGNsaWVudCA6YXV0aG9yaXR5CistIGNvbXBpbGUgJ2phdmF4Lm1haWw6bWFpbDoxLjQuMycgOndhciA6ZmVkY2xpZW50IDphdXRob3JpdHkKKy0gY29tcGlsZSAnamF2YXguc2VydmxldDpqYXZheC5zZXJ2bGV0LWFwaTozLjAuMScgOmZlZGNsaWVudAorLSBjb21waWxlICdvcmcuZWNsaXBzZS5qZXR0eS5hZ2dyZWdhdGU6amV0dHktd2ViYXBwOiR7amV0dHkudmVyc2lvbn0nIEBqYXIKKy0gY29tcGlsZSAnb3JnLmVjbGlwc2UuamV0dHk6amV0dHktYWpwOiR7amV0dHkudmVyc2lvbn0nIEBqYXIKKy0gY29tcGlsZSAnb3JnLmFwYWNoZS53aWNrZXQ6d2lja2V0OiR7d2lja2V0LnZlcnNpb259JyA6d2FyICFvcmcubW9ja2l0bworLSBjb21waWxlICdvcmcuYXBhY2hlLndpY2tldDp3aWNrZXQtYXV0aC1yb2xlczoke3dpY2tldC52ZXJzaW9ufScgOndhciAhb3JnLm1vY2tpdG8KKy0gY29tcGlsZSAnb3JnLmFwYWNoZS53aWNrZXQ6d2lja2V0LWV4dGVuc2lvbnM6JHt3aWNrZXQudmVyc2lvbn0nIDp3YXIgIW9yZy5tb2NraXRvCistIGNvbXBpbGUgJ29yZy53aWNrZXRzdHVmZjpnb29nbGVjaGFydHM6JHt3aWNrZXQudmVyc2lvbn0nIDp3YXIKKy0gY29tcGlsZSAnb3JnLmFwYWNoZS5sdWNlbmU6bHVjZW5lLWNvcmU6JHtsdWNlbmUudmVyc2lvbn0nIDp3YXIgOmZlZGNsaWVudAorLSBjb21waWxlICdvcmcuYXBhY2hlLmx1Y2VuZTpsdWNlbmUtaGlnaGxpZ2h0ZXI6JHtsdWNlbmUudmVyc2lvbn0nIDp3YXIgOmZlZGNsaWVudAorLSBjb21waWxlICdvcmcuYXBhY2hlLmx1Y2VuZTpsdWNlbmUtbWVtb3J5OiR7bHVjZW5lLnZlcnNpb259JyA6d2FyIDpmZWRjbGllbnQKKy0gY29tcGlsZSAnb3JnLnRhdXR1YS5tYXJrZG93bnBhcGVyczptYXJrZG93bnBhcGVycy1jb3JlOjEuMy4yJyA6d2FyCistIGNvbXBpbGUgJ29yZy5lY2xpcHNlLmpnaXQ6b3JnLmVjbGlwc2UuamdpdDoke2pnaXQudmVyc2lvbn0nIDp3YXIgOmZlZGNsaWVudCA6bWFuYWdlciA6YXV0aG9yaXR5CistIGNvbXBpbGUgJ29yZy5lY2xpcHNlLmpnaXQ6b3JnLmVjbGlwc2UuamdpdC5odHRwLnNlcnZlcjoke2pnaXQudmVyc2lvbn0nIDp3YXIgOmZlZGNsaWVudCA6bWFuYWdlciA6YXV0aG9yaXR5CistIGNvbXBpbGUgJ29yZy5ib3VuY3ljYXN0bGU6YmNwcm92LWpkazE1b246JHtib3VuY3ljYXN0bGUudmVyc2lvbn0nIDp3YXIgOmF1dGhvcml0eQorLSBjb21waWxlICdvcmcuYm91bmN5Y2FzdGxlOmJjbWFpbC1qZGsxNW9uOiR7Ym91bmN5Y2FzdGxlLnZlcnNpb259JyA6d2FyIDphdXRob3JpdHkKKy0gY29tcGlsZSAnb3JnLmJvdW5jeWNhc3RsZTpiY3BraXgtamRrMTVvbjoke2JvdW5jeWNhc3RsZS52ZXJzaW9ufScgOndhciA6YXV0aG9yaXR5CistIGNvbXBpbGUgJ3JvbWU6cm9tZTowLjknIDp3YXIgOm1hbmFnZXIgOmFwaQorLSBjb21waWxlICdjb20uZ29vZ2xlLmNvZGUuZ3Nvbjpnc29uOjEuNy4yJyA6d2FyIDpmZWRjbGllbnQgOm1hbmFnZXIgOmFwaQorLSBjb21waWxlICdvcmcuY29kZWhhdXMuZ3Jvb3Z5Omdyb292eS1hbGw6JHtncm9vdnkudmVyc2lvbn0nIDp3YXIKKy0gY29tcGlsZSAnY29tLnVuYm91bmRpZDp1bmJvdW5kaWQtbGRhcHNkazoyLjMuMCcgOndhcgorLSBjb21waWxlICdvcmcuYXBhY2hlLml2eTppdnk6Mi4yLjAnIDp3YXIKKy0gY29tcGlsZSAnY29tLnRvZWR0ZXI6amNhbGVuZGFyOjEuMy4yJyA6YXV0aG9yaXR5CistIGNvbXBpbGUgJ29yZy5hcGFjaGUuY29tbW9uczpjb21tb25zLWNvbXByZXNzOjEuNC4xJyA6d2FyCistIHRlc3QgJ2p1bml0JworIyBEZXBlbmRlbmNpZXMgZm9yIFNlbGVuaXVtIHdlYiBwYWdlIHRlc3RpbmcKKy0gdGVzdCAnb3JnLnNlbGVuaXVtaHEuc2VsZW5pdW06c2VsZW5pdW0tamF2YToke3NlbGVuaXVtLnZlcnNpb259JyBAamFyCistIHRlc3QgJ29yZy5zZWxlbml1bWhxLnNlbGVuaXVtOnNlbGVuaXVtLXN1cHBvcnQ6JHtzZWxlbml1bS52ZXJzaW9ufScgQGphcgorLSB0ZXN0ICdvcmcuc2VsZW5pdW1ocS5zZWxlbml1bTpzZWxlbml1bS1maXJlZm94LWRyaXZlcjoke3NlbGVuaXVtLnZlcnNpb259JworIyBEZXBlbmRlbmNpZXMgd2l0aCB0aGUgImJ1aWxkIiBzY29wZSBhcmUgcmV0cmlldmVkCisjIGFuZCBpbmplY3RlZCBpbnRvIHRoZSBBbnQgcnVudGltZSBjbGFzc3BhdGgKKy0gYnVpbGQgJ2phY29jbycKKwpkaWZmIC0tZ2l0IGEvYnVpbGQueG1sIGIvYnVpbGQueG1sCmluZGV4IGVkOTFmMjkuLmUxMzMzYmQgMTAwNjQ0Ci0tLSBhL2J1aWxkLnhtbAorKysgYi9idWlsZC54bWwKQEAgLTEsMTE3ICsxLDY0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTxwcm9qZWN0IG5hbWU9ImdpdGJsaXQiIGRlZmF1bHQ9ImNvbXBpbGUiIGJhc2VkaXI9Ii4iPg0KLQ0KLQk8IS0tIEdvb2dsZSBDb2RlIHVwbG9hZCB0YXNrIC0tPg0KLQk8dGFza2RlZiBjbGFzc25hbWU9Im5ldC5ibHVlY293Lmdvb2dsZWNvZGUuYW50Lkdvb2dsZUNvZGVVcGxvYWRUYXNrIiANCi0JCWNsYXNzcGF0aD0iJHtiYXNlZGlyfS90b29scy9hbnQtZ29vZ2xlY29kZS0wLjAuMy5qYXIiIG5hbWU9ImdjdXBsb2FkIi8+DQotDQotCTwhLS0gR2VuSmFyIHRhc2sgLS0+DQotCTx0YXNrZGVmIHJlc291cmNlPSJnZW5qYXIucHJvcGVydGllcyIgY2xhc3NwYXRoPSIke2Jhc2VkaXJ9L3Rvb2xzL0dlbkphci5qYXIiIC8+DQotDQotCTwhLS0gUHJvamVjdCBQcm9wZXJ0aWVzIC0tPg0KLQk8cHJvcGVydHkgbmFtZT0icHJvamVjdC5qYXIiIHZhbHVlPSJnaXRibGl0LmphciIgLz4NCi0JPHByb3BlcnR5IG5hbWU9InByb2plY3QubWFpbmNsYXNzIiB2YWx1ZT0iY29tLmdpdGJsaXQuTGF1bmNoZXIiIC8+DQotCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LmJ1aWxkLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vYnVpbGQiIC8+DQotCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LmRlcGxveS5kaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L2RlcGxveSIgLz4JDQotCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0Lndhci5kaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L3dhciIgLz4NCi0JPHByb3BlcnR5IG5hbWU9InByb2plY3QuamFyLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vamFyIiAvPg0KLQk8cHJvcGVydHkgbmFtZT0icHJvamVjdC5zaXRlLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vdGFyZ2V0L3NpdGUiIC8+DQotCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LnRhcmdldC5kaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L3RhcmdldCIgLz4NCi0JPHByb3BlcnR5IG5hbWU9InByb2plY3QucmVzb3VyY2VzLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzIiAvPgkNCi0JPHByb3BlcnR5IG5hbWU9InByb2plY3QuZXhwcmVzcy5kaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L2V4cHJlc3MiIC8+DQotCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0Lm1hdmVuLnJlcG8udXJsIiB2YWx1ZT0iZW50ZXIgaGVyZSB5b3VyIE1hdmVuIHJlcG8gVVJMIiAvPg0KLQk8cHJvcGVydHkgbmFtZT0icHJvamVjdC5tYXZlbi5yZXBvLmlkIiB2YWx1ZT0iZ2l0YmxpdC5tYXZlbi5yZXBvIiAvPg0KLQk8YXZhaWxhYmxlIHByb3BlcnR5PSJoYXNCdWlsZFByb3BzIiBmaWxlPSIke2Jhc2VkaXJ9L2J1aWxkLnByb3BlcnRpZXMiLz4NCis8cHJvamVjdCBuYW1lPSJnaXRibGl0IiBkZWZhdWx0PSJjb21waWxlIiB4bWxuczpteD0iYW50bGliOm9yZy5tb3hpZSI+DQogDQogCTwhLS0NCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQotCQlMb2FkIGJ1aWxkLnByb3BlcnRpZXMsIGlmIGF2YWlsYWJsZQ0KKwkJUmV0cmlldmUgTW94aWUgVG9vbGtpdA0KIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQotCTx0YXJnZXQgbmFtZT0iYnVpbGRwcm9wcyIgaWY9Imhhc0J1aWxkUHJvcHMiPg0KLQkJPCEtLSBMb2FkIHB1YmxpY2F0aW9uIHNlcnZlcnMsIHBhdGhzLCBhbmQgY3JlZGVudGlhbHMgLS0+IA0KLQkJPGxvYWRwcm9wZXJ0aWVzPg0KLQkJCTxmaWxlIGZpbGU9IiR7YmFzZWRpcn0vYnVpbGQucHJvcGVydGllcyIgLz4NCi0JCTwvbG9hZHByb3BlcnRpZXM+DQotCTwvdGFyZ2V0Pg0KKwk8cHJvcGVydHkgbmFtZT0ibW94aWUudmVyc2lvbiIgdmFsdWU9IjAuNy4xIiAvPg0KKwk8cHJvcGVydHkgbmFtZT0ibW94aWUudXJsIiB2YWx1ZT0iaHR0cDovL2dpdGJsaXQuZ2l0aHViLmNvbS9tb3hpZS9tYXZlbiIgLz4NCisJPHByb3BlcnR5IG5hbWU9Im1veGllLmphciIgdmFsdWU9Im1veGllLXRvb2xraXQtJHttb3hpZS52ZXJzaW9ufS5qYXIiIC8+DQorCTxwcm9wZXJ0eSBuYW1lPSJtb3hpZS5kaXIiIHZhbHVlPSIke3VzZXIuaG9tZX0vLm1veGllIiAvPg0KIAkNCisJPCEtLSBEb3dubG9hZCBNb3hpZSBmcm9tIGl0J3MgTWF2ZW4gcmVwb3NpdG9yeSB0byB1c2VyLmhvbWUgLS0+DQorCTxnZXQgc3JjPSIke21veGllLnVybH0vb3JnL21veGllL21veGllLXRvb2xraXQvJHttb3hpZS52ZXJzaW9ufS8ke21veGllLmphcn0iDQorCQlkZXN0PSIke21veGllLmRpcn0iIHNraXBleGlzdGluZz0idHJ1ZSIgdmVyYm9zZT0idHJ1ZSIgLz4NCisJDQorCTwhLS0gUmVnaXN0ZXIgTW94aWUgdGFza3MgLS0+DQorCTx0YXNrZGVmIHVyaT0iYW50bGliOm9yZy5tb3hpZSI+DQorCQk8Y2xhc3NwYXRoIGxvY2F0aW9uPSIke21veGllLmRpcn0vJHttb3hpZS5qYXJ9IiAvPg0KKwk8L3Rhc2tkZWY+DQorCQ0KKwk8IS0tIFByb2plY3QgZGlyZWN0b3JpZXMgLS0+DQorCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LnNyYy5kaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L3NyYy9tYWluL2phdmEiIC8+CQ0KKwk8cHJvcGVydHkgbmFtZT0icHJvamVjdC5yZXNvdXJjZXMuZGlyIiB2YWx1ZT0iJHtiYXNlZGlyfS9zcmMvbWFpbi9yZXNvdXJjZXMiIC8+CQ0KKwk8cHJvcGVydHkgbmFtZT0icHJvamVjdC5kaXN0cmliLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjL21haW4vZGlzdHJpYiIgLz4NCiAJDQogCTwhLS0NCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQotCQlTY3JhcGUgdGhlIHZlcnNpb24gaW5mbyBmcm9tIGNvZGUgYW5kIHNldHVwIHRoZSBidWlsZCBwcm9wZXJ0aWVzIA0KKwkJSW5pdGlhbGl6ZSBNb3hpZSBhbmQgc2V0dXAgYnVpbGQgcHJvcGVydGllcw0KIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQotCTx0YXJnZXQgbmFtZT0iYnVpbGRpbmZvIiBkZXBlbmRzPSJidWlsZHByb3BzIj4NCisJPHRhcmdldCBuYW1lPSJwcmVwYXJlIj4NCiAJDQotCQk8IS0tIGV4dHJhY3QgR2l0YmxpdCB2ZXJzaW9uIG51bWJlciBmcm9tIHNvdXJjZSBjb2RlIC0tPg0KLQkJPGxvYWRmaWxlIHByb3BlcnR5PSJnYi52ZXJzaW9uIiBzcmNmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC9Db25zdGFudHMuamF2YSI+DQotCQkJPGZpbHRlcmNoYWluPg0KLQkJCQk8bGluZWNvbnRhaW5zPg0KLQkJCQkJPGNvbnRhaW5zIHZhbHVlPSJwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJTSU9OID0gIiAvPg0KLQkJCQk8L2xpbmVjb250YWlucz4NCi0JCQkJPHN0cmlwbGluZWJyZWFrcyAvPg0KLQkJCQk8dG9rZW5maWx0ZXI+DQotCQkJCQk8cmVwbGFjZXN0cmluZyBmcm9tPSJwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJTSU9OID0gJnF1b3Q7IiB0bz0iIiAvPg0KLQkJCQkJPHJlcGxhY2VzdHJpbmcgZnJvbT0iJnF1b3Q7OyIgdG89IiIgLz4NCi0JCQkJCTx0cmltIC8+DQotCQkJCTwvdG9rZW5maWx0ZXI+DQotCQkJPC9maWx0ZXJjaGFpbj4NCi0JCTwvbG9hZGZpbGU+DQotDQotCQk8IS0tIGV4dHJhY3QgR2l0YmxpdCB2ZXJzaW9uIGRhdGUgZnJvbSBzb3VyY2UgY29kZSAtLT4NCi0JCTxsb2FkZmlsZSBwcm9wZXJ0eT0iZ2IudmVyc2lvbkRhdGUiIHNyY2ZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L0NvbnN0YW50cy5qYXZhIj4NCi0JCQk8ZmlsdGVyY2hhaW4+DQotCQkJCTxsaW5lY29udGFpbnM+DQotCQkJCQk8Y29udGFpbnMgdmFsdWU9InB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFZFUlNJT05fREFURSA9ICIgLz4NCi0JCQkJPC9saW5lY29udGFpbnM+DQotCQkJCTxzdHJpcGxpbmVicmVha3MgLz4NCi0JCQkJPHRva2VuZmlsdGVyPg0KLQkJCQkJPHJlcGxhY2VzdHJpbmcgZnJvbT0icHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkVSU0lPTl9EQVRFID0gJnF1b3Q7IiB0bz0iIiAvPg0KLQkJCQkJPHJlcGxhY2VzdHJpbmcgZnJvbT0iJnF1b3Q7OyIgdG89IiIgLz4NCi0JCQkJCTx0cmltIC8+DQotCQkJCTwvdG9rZW5maWx0ZXI+DQotCQkJPC9maWx0ZXJjaGFpbj4NCi0JCTwvbG9hZGZpbGU+DQotCQkJCQkNCi0JCTwhLS0gZXh0cmFjdCBKR2l0IHZlcnNpb24gbnVtYmVyIGZyb20gc291cmNlIGNvZGUgLS0+DQotCQk8bG9hZGZpbGUgcHJvcGVydHk9ImpnaXQudmVyc2lvbiIgc3JjZmlsZT0iJHtiYXNlZGlyfS9zcmMvY29tL2dpdGJsaXQvQ29uc3RhbnRzLmphdmEiPg0KLQkJCTxmaWx0ZXJjaGFpbj4NCi0JCQkJPGxpbmVjb250YWlucz4NCi0JCQkJCTxjb250YWlucyB2YWx1ZT0icHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSkdJVF9WRVJTSU9OID0gIiAvPg0KLQkJCQk8L2xpbmVjb250YWlucz4NCi0JCQkJPHN0cmlwbGluZWJyZWFrcyAvPg0KLQkJCQk8dG9rZW5maWx0ZXI+DQotCQkJCQk8cmVwbGFjZXN0cmluZyBmcm9tPSJwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBKR0lUX1ZFUlNJT04gPSAmcXVvdDsiIHRvPSIiIC8+DQotCQkJCQk8cmVwbGFjZXN0cmluZyBmcm9tPSImcXVvdDs7IiB0bz0iIiAvPg0KLQkJCQkJPHRyaW0gLz4NCi0JCQkJPC90b2tlbmZpbHRlcj4NCi0JCQk8L2ZpbHRlcmNoYWluPg0KLQkJPC9sb2FkZmlsZT4JDQotCQk8cHJvcGVydHkgbmFtZT0iZGlzdHJpYnV0aW9uLnppcGZpbGUiIHZhbHVlPSJnaXRibGl0LSR7Z2IudmVyc2lvbn0uemlwIiAvPg0KLQkJPHByb3BlcnR5IG5hbWU9ImRpc3RyaWJ1dGlvbi53YXJmaWxlIiB2YWx1ZT0iZ2l0YmxpdC0ke2diLnZlcnNpb259LndhciIgLz4NCi0JCTxwcm9wZXJ0eSBuYW1lPSJkaXN0cmlidXRpb24uamFyZmlsZSIgdmFsdWU9ImdpdGJsaXQtJHtnYi52ZXJzaW9ufS5qYXIiIC8+DQotCQk8cHJvcGVydHkgbmFtZT0iZGlzdHJpYnV0aW9uLnBvbWZpbGUiIHZhbHVlPSIke2Jhc2VkaXJ9L3BvbS54bWwiIC8+DQotCQk8cHJvcGVydHkgbmFtZT0iZmVkY2xpZW50LnppcGZpbGUiIHZhbHVlPSJmZWRjbGllbnQtJHtnYi52ZXJzaW9ufS56aXAiIC8+DQotCQk8cHJvcGVydHkgbmFtZT0ibWFuYWdlci56aXBmaWxlIiB2YWx1ZT0ibWFuYWdlci0ke2diLnZlcnNpb259LnppcCIgLz4NCi0JCTxwcm9wZXJ0eSBuYW1lPSJhdXRob3JpdHkuemlwZmlsZSIgdmFsdWU9ImF1dGhvcml0eS0ke2diLnZlcnNpb259LnppcCIgLz4NCi0JCTxwcm9wZXJ0eSBuYW1lPSJnYmFwaS56aXBmaWxlIiB2YWx1ZT0iZ2JhcGktJHtnYi52ZXJzaW9ufS56aXAiIC8+DQotCQk8cHJvcGVydHkgbmFtZT0iZXhwcmVzcy56aXBmaWxlIiB2YWx1ZT0iZXhwcmVzcy0ke2diLnZlcnNpb259LnppcCIgLz4NCi0JCTxwcm9wZXJ0eSBuYW1lPSJkaXN0cmlidXRpb24ucG9tZmlsZVRtcGx0IiB2YWx1ZT0idG1wbHQucG9tLnhtbCIgLz4NCi0JPC90YXJnZXQ+DQotCQ0KLQkNCi0JPCEtLQ0KLQkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JCUNvbXBpbGUNCi0JCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQotCS0tPg0KLQk8dGFyZ2V0IG5hbWU9ImNvbXBpbGUiIGRlcGVuZHM9ImJ1aWxkaW5mbyIgZGVzY3JpcHRpb249IlJldHJpZXZlcyBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGVzIEdpdGJsaXQgZnJvbSBzb3VyY2UiPg0KLQ0KLQkJPCEtLSBjbGVhbnVwIG9sZCBidWlsZHMgLS0+DQotCQk8ZGVsZXRlIGRpcj0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9IiAvPg0KLQkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9IiAvPg0KKwkJPCEtLSBTZXR1cCBBbnQgYnVpbGQgZnJvbSBidWlsZC5tb3hpZSBhbmQgcmVzb2x2ZSBkZXBlbmRlbmNpZXMuDQorCQkgICAgIGlmIGl0IGV4aXN0cywgYnVpbGQucHJvcGVydGllcyBpcyBhdXRvbWF0aWNhbGx5IGxvYWRlZCAtLT4NCisJCTxteDppbml0IHZlcmJvc2U9Im5vIiAvPg0KKwkJCQkNCisJCTwhLS0gU2V0IEFudCBwcm9qZWN0IHByb3BlcnRpZXMgLS0+DQorCQk8cHJvcGVydHkgbmFtZT0iZGlzdHJpYnV0aW9uLnppcGZpbGUiIHZhbHVlPSJnaXRibGl0LSR7cHJvamVjdC52ZXJzaW9ufS56aXAiIC8+DQorCQk8cHJvcGVydHkgbmFtZT0iZGlzdHJpYnV0aW9uLnRnemZpbGUiIHZhbHVlPSJnaXRibGl0LSR7cHJvamVjdC52ZXJzaW9ufS50YXIuZ3oiIC8+DQorCQk8cHJvcGVydHkgbmFtZT0iZGlzdHJpYnV0aW9uLndhcmZpbGUiIHZhbHVlPSJnaXRibGl0LSR7cHJvamVjdC52ZXJzaW9ufS53YXIiIC8+DQorCQk8cHJvcGVydHkgbmFtZT0iZmVkY2xpZW50LnppcGZpbGUiIHZhbHVlPSJmZWRjbGllbnQtJHtwcm9qZWN0LnZlcnNpb259LnppcCIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJtYW5hZ2VyLnppcGZpbGUiIHZhbHVlPSJtYW5hZ2VyLSR7cHJvamVjdC52ZXJzaW9ufS56aXAiIC8+DQorCQk8cHJvcGVydHkgbmFtZT0iYXV0aG9yaXR5LnppcGZpbGUiIHZhbHVlPSJhdXRob3JpdHktJHtwcm9qZWN0LnZlcnNpb259LnppcCIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJnYmFwaS56aXBmaWxlIiB2YWx1ZT0iZ2JhcGktJHtwcm9qZWN0LnZlcnNpb259LnppcCIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJleHByZXNzLnppcGZpbGUiIHZhbHVlPSJleHByZXNzLSR7cHJvamVjdC52ZXJzaW9ufS56aXAiIC8+DQogCQkNCi0JCTwhLS0gY2xlYW51cCBvbGQgYnVpbGRzIC0tPg0KKwkJPCEtLSBEb3dubG9hZCBsaW5rcyAtLT4NCisJCTxwcm9wZXJ0eSBuYW1lPSJnYy51cmwiIHZhbHVlPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9IiAvPg0KKwk8L3RhcmdldD4NCisNCisJDQorCTwhLS0NCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorCQlDbGVhbnVwIGFsbCBidWlsZCBhcnRpZmFjdHMgYW5kIGRpcmVjdG9yaWVzDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwktLT4NCisJPHRhcmdldCBuYW1lPSJjbGVhbiIgZGVwZW5kcz0icHJlcGFyZSIgZGVzY3JpcHRpb249IkNsZWFudXAgYWxsIGJ1aWxkIGFydGlmYWN0cyBhbmQgZGlyZWN0b3JpZXMiPg0KKwkJPCEtLSBjbGVhbnVwIGxlZ2FjeSBidWlsZCBzdHJ1Y3R1cmUgLS0+DQorCQk8IS0tIHRoaXMgY2FuIGJlIGVsaW1pbmF0ZWQgYWZ0ZXIgMS4zLjAgcmVsZWFzZSAtLT4NCiAJCTxkZWxldGU+DQogCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9Ij4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iKi56aXAiIC8+DQpAQCAtMTE5LDMzICs2Niw0MiBAQAogCQkJCTxpbmNsdWRlIG5hbWU9IiouamFyIiAvPg0KIAkJCTwvZmlsZXNldD4NCiAJCTwvZGVsZXRlPg0KKwkJPGRlbGV0ZSBkaXI9IiR7YmFzZWRpcn0vZGVwbG95IiBmYWlsb25lcnJvcj0iZmFsc2UiIC8+DQorCQk8ZGVsZXRlIGRpcj0iJHtiYXNlZGlyfS9leHByZXNzIiBmYWlsb25lcnJvcj0iZmFsc2UiIC8+DQorCQk8ZGVsZXRlIGRpcj0iJHtiYXNlZGlyfS9qYXIiIGZhaWxvbmVycm9yPSJmYWxzZSIgLz4NCisJCTxkZWxldGUgZGlyPSIke2Jhc2VkaXJ9L2phdmFkb2MiIGZhaWxvbmVycm9yPSJmYWxzZSIgLz4NCisJCTxkZWxldGUgZGlyPSIke2Jhc2VkaXJ9L3NpdGUiIGZhaWxvbmVycm9yPSJmYWxzZSIgLz4NCisJCTxkZWxldGUgZGlyPSIke2Jhc2VkaXJ9L3RlbXAiIGZhaWxvbmVycm9yPSJmYWxzZSIgLz4NCisJCTxkZWxldGUgZGlyPSIke2Jhc2VkaXJ9L3dhciIgZmFpbG9uZXJyb3I9ImZhbHNlIiAvPg0KIAkJDQotCQk8IS0tIGNvcHkgcmVxdWlyZWQgZGlzdHJpYnV0aW9uIGZpbGVzIHRvIGRhdGEgZm9sZGVyIC0tPg0KKwkJPCEtLSBDbGVhbiBidWlsZCBhbmQgdGFyZ2V0IGRpcmVjdG9yaWVzIC0tPg0KKwkJPG14OmNsZWFuIC8+DQorDQorCTwvdGFyZ2V0Pg0KKw0KKwkNCisJPCEtLQ0KKwkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCisJCVNldHVwDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwktLT4NCisJPHRhcmdldCBuYW1lPSJzZXR1cCIgZGVwZW5kcz0icHJlcGFyZSIgZGVzY3JpcHRpb249IlNldHVwIHVwIHByb2plY3QiPg0KKw0KKwkJPCEtLSBjb3B5IGRpc3RyaWIvZGF0YSB0byBwcm9qZWN0IGRhdGEgZGlyZWN0b3J5IC0tPg0KIAkJPG1rZGlyIGRpcj0iJHtiYXNlZGlyfS9kYXRhIiAvPg0KIAkJPGNvcHkgdG9kaXI9IiR7YmFzZWRpcn0vZGF0YSIgb3ZlcndyaXRlPSJmYWxzZSI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2Rpc3RyaWIiPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJnaXRibGl0LnByb3BlcnRpZXMiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9InVzZXJzLmNvbmYiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9InByb2plY3RzLmNvbmYiIC8+DQotCQkJPC9maWxlc2V0Pg0KKwkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmRpc3RyaWIuZGlyfS9kYXRhIiAvPg0KIAkJPC9jb3B5Pg0KIAkJDQotCQk8IS0tIGNvcHkgcmVxdWlyZWQgZGlzdHJpYnV0aW9uIGZpbGVzIHRvIHByb2plY3QgZm9sZGVyIC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtiYXNlZGlyfS9kYXRhL2NlcnRzIiAvPg0KLQkJPGNvcHkgdG9kaXI9IiR7YmFzZWRpcn0vZGF0YS9jZXJ0cyIgb3ZlcndyaXRlPSJmYWxzZSI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2Rpc3RyaWIiPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJhdXRob3JpdHkuY29uZiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iKi50bXBsIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCisJCTwhLS0gY29weSBnaXRibGl0LnByb3BlcnRpZXMgdG8gdGhlIFdFQi1JTkYgZGlyZWN0b3J5Lg0KKwkJICAgICB0aGlzIGZpbGUgaXMgb25seSB1c2VkIGZvciBwYXJzaW5nIHNldHRpbmcgZGVzY3JpcHRpb25zLiAtLT4NCisJCTxjb3B5IHRvZmlsZT0iJHtwcm9qZWN0LnNyYy5kaXJ9L1dFQi1JTkYvcmVmZXJlbmNlLnByb3BlcnRpZXMiIG92ZXJ3cml0ZT0idHJ1ZSINCisJCQlmaWxlPSIke3Byb2plY3QuZGlzdHJpYi5kaXJ9L2RhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KIAkJDQotCQk8IS0tIGNvcHkgcmVxdWlyZWQgZGlzdHJpYnV0aW9uIGZpbGVzIHRvIHByb2plY3QgZm9sZGVyIC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtiYXNlZGlyfS9kYXRhL2dyb292eSIgLz4NCi0JCTxjb3B5IHRvZGlyPSIke2Jhc2VkaXJ9L2RhdGEvZ3Jvb3Z5IiBvdmVyd3JpdGU9ImZhbHNlIj4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZGlzdHJpYi9ncm9vdnkiIC8+DQotCQk8L2NvcHk+DQotCQkNCi0JCTwhLS0gdXBncmFkZSBleGlzdGluZyB3b3Jrc3BhY2UgdG8gZGF0YSBmb2xkZXIgLS0+DQorCQk8IS0tIA0KKwkJCXVwZ3JhZGUgZXhpc3Rpbmcgd29ya3NwYWNlIHRvIGRhdGEgZGlyZWN0b3J5DQorCQkJdGhpcyBjb2RlIGNhbiBiZSBlbGltaW5hdGVkIGFmdGVyIDEuMy4wIHJlbGVhc2UNCisJCSAtLT4NCiAJCTxtb3ZlIHRvZGlyPSIke2Jhc2VkaXJ9L2RhdGEiIG92ZXJ3cml0ZT0idHJ1ZSIgZmFpbG9uZXJyb3I9ImZhbHNlIj4NCiAJCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0iPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSJ1c2Vycy5jb25mIiAvPg0KQEAgLTE2NCw0NjcgKzEyMCwxNzggQEAKIAkJPG1vdmUgdG9kaXI9IiR7YmFzZWRpcn0vZGF0YS9wcm9wb3NhbHMiIG92ZXJ3cml0ZT0idHJ1ZSIgZmFpbG9uZXJyb3I9ImZhbHNlIj4NCiAJCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vcHJvcG9zYWxzIiAvPg0KIAkJPC9tb3ZlPg0KLQkJPGRlbGV0ZSBkaXI9IiR7YmFzZWRpcn0vamF2YWRvYyIgZmFpbG9uZXJyb3I9ImZhbHNlIiAvPg0KLQkJPGRlbGV0ZSBkaXI9IiR7YmFzZWRpcn0vc2l0ZSIgZmFpbG9uZXJyb3I9ImZhbHNlIiAvPg0KLQkJPGRlbGV0ZSBkaXI9IiR7YmFzZWRpcn0vdGVtcCIgZmFpbG9uZXJyb3I9ImZhbHNlIiAvPg0KLQ0KLQkJPCEtLSBjb3B5IGdpdGJsaXQucHJvcGVydGllcyB0byB0aGUgV0VCLUlORiBmb2xkZXIuDQotCQkgICAgIHRoaXMgZmlsZSBpcyBvbmx5IHVzZWQgZm9yIHBhcnNpbmcgc2V0dGluZyBkZXNjcmlwdGlvbnMuIC0tPg0KLQkJPGNvcHkgdG9maWxlPSIke2Jhc2VkaXJ9L3NyYy9XRUItSU5GL3JlZmVyZW5jZS5wcm9wZXJ0aWVzIiBvdmVyd3JpdGU9InRydWUiDQotCQkJZmlsZT0iJHtiYXNlZGlyfS9kaXN0cmliL2dpdGJsaXQucHJvcGVydGllcyIgLz4NCi0NCi0JCTwhLS0gQ29tcGlsZSB0aGUgYnVpbGQgdG9vbCBhbmQgZXhlY3V0ZSBpdC4NCi0JCQkgVGhpcyBkb3dubG9hZHMgbWlzc2luZyBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIGZyb20gTWF2ZW4uIC0tPg0KLQ0KLQkJPGRlbGV0ZSBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiAvPg0KLQkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0iIC8+DQotCQk8amF2YWMgZGVidWc9InRydWUiIHNyY2Rpcj0iJHtiYXNlZGlyfS9zcmMiIGRlc3RkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiBpbmNsdWRlYW50cnVudGltZT0iZmFsc2UiPg0KLQkJCTxpbmNsdWRlIG5hbWU9ImNvbS9naXRibGl0L2J1aWxkL0J1aWxkLmphdmEiIC8+CQkJDQotCQkJPGluY2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvQ29uc3RhbnRzLmphdmEiIC8+DQotCQkJPGluY2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvdXRpbHMvU3RyaW5nVXRpbHMuamF2YSIgLz4JCQkNCi0JCTwvamF2YWM+DQotDQotCQk8amF2YSBjbGFzc3BhdGg9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiBjbGFzc25hbWU9ImNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkIiBmYWlsb25lcnJvcj0idHJ1ZSI+DQotCQkJPHN5c3Byb3BlcnR5c2V0IGlkPSJwcm94eS5wcm9wZXJ0aWVzIj4NCi0JCQkJPHByb3BlcnR5cmVmIHByZWZpeD0iamF2YS5uZXQudXNlU3lzdGVtUHJveGllcyIvPg0KLQkJCQk8cHJvcGVydHlyZWYgcHJlZml4PSJodHRwLiIvPg0KLQkJCQk8cHJvcGVydHlyZWYgcHJlZml4PSJodHRwcy4iLz4NCi0JCQkJPHByb3BlcnR5cmVmIHByZWZpeD0iZnRwLiIvPg0KLQkJCQk8cHJvcGVydHlyZWYgcHJlZml4PSJzb2Nrc1Byb3h5Ii8+DQotCQkJPC9zeXNwcm9wZXJ0eXNldD4NCi0JCTwvamF2YT4NCi0NCi0JCTwhLS0gQ29tcGlsZSBQcm9qZWN0IC0tPg0KLQkJPHBhdGggaWQ9Im1hc3Rlci1jbGFzc3BhdGgiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9leHQiPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSIqLmphciIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQkJPHBhdGhlbGVtZW50IHBhdGg9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiAvPgkJCQkNCi0JCTwvcGF0aD4NCi0JCTxqYXZhYyBkZWJ1Zz0idHJ1ZSIgZGVzdGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0iIGZhaWxvbmVycm9yPSJmYWxzZSIgaW5jbHVkZWFudHJ1bnRpbWU9ImZhbHNlIj4NCi0JCQk8c3JjIHBhdGg9IiR7YmFzZWRpcn0vc3JjIiAvPg0KLQkJCTxjbGFzc3BhdGggcmVmaWQ9Im1hc3Rlci1jbGFzc3BhdGgiIC8+DQotCQk8L2phdmFjPg0KLQkJPGNvcHkgdG9kaXI9IiR7cHJvamVjdC5idWlsZC5kaXJ9Ij4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vc3JjIiBleGNsdWRlcz0iKiovKi5qYXZhLCoqL3RodW1icy5kYiIgLz4NCi0JCTwvY29weT4NCi0JCQ0KLQkJPCEtLSBTZXQgVmVyc2lvbiBpbnRvIHdlYi54bWwgLS0+DQotCQk8cmVwbGFjZSBmaWxlPSIke3Byb2plY3QuYnVpbGQuZGlyfS9XRUItSU5GL3dlYi54bWwiIHRva2VuPSJAZ2IudmVyc2lvbkAiIHZhbHVlPSIke2diLnZlcnNpb259IiBzdW1tYXJ5PSJ5ZXMiLz4NCiAJPC90YXJnZXQ+DQogDQorDQorCTwhLS0NCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorCQlDb21waWxlDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwktLT4NCisJPHRhcmdldCBuYW1lPSJjb21waWxlIiBkZXBlbmRzPSJzZXR1cCIgZGVzY3JpcHRpb249ImNvbXBpbGVzIEdpdGJsaXQgZnJvbSBzb3VyY2UiPg0KKwkJDQorCQk8IS0tIEdlbmVyYXRlIHRoZSBLZXlzIGNsYXNzIGZyb20gdGhlIHByb3BlcnRpZXMgZmlsZSAtLT4NCisJCTxteDprZXlzIHByb3BlcnRpZXNmaWxlPSIke3Byb2plY3QuZGlzdHJpYi5kaXJ9L2RhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzIg0KKwkJCSAJb3V0cHV0Y2xhc3M9ImNvbS5naXRibGl0LktleXMiDQorCQkJIAl0b2Rpcj0iJHtwcm9qZWN0LnNyYy5kaXJ9IiAvPg0KKw0KKwkJPCEtLSBDb21waWxlIHByb2plY3QgaW5jcmVtZW50YWxseSAtLT4NCisJCTxteDpqYXZhYyBzY29wZT0iY29tcGlsZSIgY2xlYW49ImZhbHNlIiAvPg0KKwkJDQorCTwvdGFyZ2V0Pg0KKw0KKwkJDQorCTwhLS0NCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorCQlSZXBvcnQgdGhlIGNvbXBpbGUgZGVwZW5kZW5jaWVzIG9uIHRoZSBjb25zb2xlDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwktLT4NCisJPHRhcmdldCBuYW1lPSJyZXBvcnQiIGRlcGVuZHM9InByZXBhcmUiIGRlc2NyaXB0aW9uPSJnZW5lcmF0ZSBkZXBlbmRlbmN5IHJlcG9ydCI+DQorCQkNCisJCTwhLS0gUmVwb3J0IGNvbXBpbGUgZGVwZW5kZW5jaWVzIHRvIHRoZSBjb25zb2xlIC0tPg0KKwkJPG14OnJlcG9ydCBzY29wZT0iY29tcGlsZSIgZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9L2RlcGVuZGVuY2llcy50eHQiIC8+DQorCQkNCisJPC90YXJnZXQ+DQorDQorCQ0KKwk8IS0tDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwkJVGVzdA0KKwkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCisJLS0+DQorCTx0YXJnZXQgbmFtZT0idGVzdCIgZGVwZW5kcz0iY29tcGlsZSIgZGVzY3JpcHRpb249ImNvbXBpbGVzIEdpdGJsaXQgZnJvbSBzb3VyY2UgYW5kIHJ1bnMgdW5pdCB0ZXN0cyI+DQorCQkNCisJCTwhLS0gQ29tcGlsZSB1bml0IHRlc3RzIC0tPg0KKwkJPG14OmphdmFjIHNjb3BlPSJ0ZXN0IiAvPg0KKwkJDQorCQk8IS0tIFJ1biB1bml0IHRlc3RzIC0tPg0KKwkJPG14OnRlc3QgZmFpbG9uZXJyb3I9InRydWUiIC8+DQorCQkNCisJPC90YXJnZXQ+DQorDQorDQorCTwhLS0NCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorCQlSdW4gR2l0YmxpdCBHTw0KKwkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCisJLS0+DQorCTx0YXJnZXQgbmFtZT0icnVuIiBkZXBlbmRzPSJjb21waWxlIiBkZXNjcmlwdGlvbj0iUnVuIEdpdGJsaXQgR08iPg0KKwkJDQorCQk8IS0tIHJ1biB0aGUgbWFpbmNsYXNzIGluIGEgc2VwYXJhdGUgSlZNIC0tPg0KKwkJPG14OnJ1biBmb3JrPSJ0cnVlIiAvPg0KKwkJDQorCTwvdGFyZ2V0PgkJCQ0KKwkJCQ0KIAkNCiAJPCEtLQ0KIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJCUJ1aWxkIEdpdGJsaXQgR08NCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQogCS0tPg0KLQk8dGFyZ2V0IG5hbWU9ImJ1aWxkR08iIGRlcGVuZHM9ImNvbXBpbGUsYnVpbGRBdXRob3JpdHkiIGRlc2NyaXB0aW9uPSJCdWlsZCBHaXRibGl0IEdPIGRpc3RyaWJ1dGlvbiI+DQorCTx0YXJnZXQgbmFtZT0iYnVpbGRHTyIgZGVwZW5kcz0iY29tcGlsZSIgZGVzY3JpcHRpb249IkJ1aWxkIEdpdGJsaXQgR08gZGlzdHJpYnV0aW9uIj4NCiAJCQ0KLQkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBHTyAke2diLnZlcnNpb259PC9lY2hvPg0KKwkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBHTyAke3Byb2plY3QudmVyc2lvbn08L2VjaG8+DQogDQotCQk8IS0tIERlbGV0ZSB0aGUgZGVwbG95IGZvbGRlciAtLT4NCi0JCTxkZWxldGUgZGlyPSIke3Byb2plY3QuZGVwbG95LmRpcn0iIC8+DQorCQk8bG9jYWwgbmFtZT0iZ28uZGlyIiAvPg0KKwkJPHByb3BlcnR5IG5hbWU9ImdvLmRpciIgdmFsdWU9IiR7cHJvamVjdC5vdXRwdXREaXJlY3Rvcnl9L2dvIiAvPgkNCisJCTxkZWxldGUgZGlyPSIke2dvLmRpcn0iIC8+DQogDQotCQk8IS0tIENyZWF0ZSBkZXBsb3ltZW50IGZvbGRlciBzdHJ1Y3R1cmUgLS0+DQotCQk8bWtkaXIgZGlyPSIke3Byb2plY3QuZGVwbG95LmRpcn0iIC8+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9Ij4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZGlzdHJpYiI+DQotCQkJCTxpbmNsdWRlIG5hbWU9IioqLyoiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImZlZGVyYXRpb24ucHJvcGVydGllcyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ib3BlbnNoaWZ0Lm1rZCIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iYXV0aG9yaXR5LmNvbmYiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9InVzZXJzLmNvbmYiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9InByb2plY3RzLmNvbmYiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImdpdGJsaXQucHJvcGVydGllcyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iKi50bXBsIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJncm9vdnkvKioiIC8+DQotCQkJPC9maWxlc2V0Pg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfSI+DQorCQk8cHJlcGFyZURhdGFEaXJlY3RvcnkgdG9EaXI9IiR7Z28uZGlyfS9kYXRhIiAvPg0KKwkJDQorCQk8IS0tIEJ1aWxkIGphciAtLT4NCisJCTxteDpqYXIgZGVzdGZpbGU9IiR7Z28uZGlyfS9naXRibGl0LmphciIgaW5jbHVkZXJlc291cmNlcz0idHJ1ZSI+DQorCQkJPG1haW5jbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5HaXRCbGl0U2VydmVyIiAvPg0KKwkJCTxsYXVuY2hlciBwYXRocz0iZXh0IiAvPg0KKwkJPC9teDpqYXI+DQorDQorCQk8IS0tIEdlbmVyYXRlIHRoZSBkb2NzIGZvciB0aGUgR08gYnVpbGQgLS0+DQorCQk8Z2VuZXJhdGVEb2NzIHRvRGlyPSIke2dvLmRpcn0vZG9jcyIgLz4NCisJCQ0KKwkJPCEtLSBDcmVhdGUgR08gV2luZG93cyBaaXAgZGVwbG95bWVudCAtLT4NCisJCTxteDp6aXAgYmFzZWRpcj0iJHtnby5kaXJ9Ij4NCisJCQk8IS0tIExJQ0VOU0UgYW5kIE5PVElDRSAtLT4NCisJCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0iID4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTElDRU5TRSIgLz4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTk9USUNFIiAvPg0KLQkJCTwvZmlsZXNldD4JCQkNCi0JCTwvY29weT4NCi0JCQ0KLQkJPCEtLSBDb3B5IHRoZSBzdXBwb3J0ZWQgR3Jvb3Z5IGhvb2sgc2NyaXB0cyAtLT4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC5kZXBsb3kuZGlyfS9kYXRhL2dyb292eSIgLz4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3QuZGVwbG95LmRpcn0vZGF0YS9ncm9vdnkiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliL2dyb292eSI+DQotCQkJCTxpbmNsdWRlIG5hbWU9InNlbmRtYWlsLmdyb292eSIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0ic2VuZG1haWwtaHRtbC5ncm9vdnkiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImplbmtpbnMuZ3Jvb3Z5IiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJwcm90ZWN0LXJlZnMuZ3Jvb3Z5IiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJmb2didWd6Lmdyb292eSIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0idGhlYnVnZ2VuaWUuZ3Jvb3Z5IiAvPg0KIAkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0JCQ0KLQkJPGNvcHkgdG9maWxlPSIke3Byb2plY3QuZGVwbG95LmRpcn0vYXV0aG9yaXR5LmphciIgZmlsZT0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9L2F1dGhvcml0eS0ke2diLnZlcnNpb259LmphciIgLz4NCi0JCQ0KLQkJPCEtLSBQcmVwYXJlIHRoZSBkYXRhIGZvbGRlciAtLT4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC5kZXBsb3kuZGlyfS9kYXRhIi8+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9L2RhdGEiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliIj4NCi0JCQkJPGluY2x1ZGUgbmFtZT0idXNlcnMuY29uZiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0icHJvamVjdHMuY29uZiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0JCQkJCQkNCi0JCTwhLS0gQ2VydGlmaWNhdGUgdGVtcGxhdGVzIC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9L2RhdGEvY2VydHMiLz4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC5kZXBsb3kuZGlyfS9kYXRhL2NlcnRzIi8+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9L2RhdGEvY2VydHMiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliIj4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iKi50bXBsIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJhdXRob3JpdHkuY29uZiIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L2NvcHk+DQotCQkNCi0JCTwhLS0gU2V0IFZlcnNpb24gaW50byB3ZWIueG1sIC0tPg0KLQkJPHJlcGxhY2UgZmlsZT0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0vV0VCLUlORi93ZWIueG1sIiB0b2tlbj0iQGdiLnZlcnNpb25AIiB2YWx1ZT0iJHtnYi52ZXJzaW9ufSIgc3VtbWFyeT0ieWVzIi8+DQotCQkJCQkJDQotCQk8IS0tIEJ1aWxkIGphciAtLT4NCi0JCTxqYXIgamFyZmlsZT0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9LyR7cHJvamVjdC5qYXJ9Ij4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJ9Ij4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iKiovKiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvY2xpZW50LyoqIiAvPgkJCQkNCi0JCQk8L2ZpbGVzZXQ+DQotCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0iPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJ0aHVtYnMuZGIiIC8+DQotCQkJPC9maWxlc2V0Pg0KLQkJCTxtYW5pZmVzdD4NCi0JCQkJPGF0dHJpYnV0ZSBuYW1lPSJNYWluLUNsYXNzIiB2YWx1ZT0iJHtwcm9qZWN0Lm1haW5jbGFzc30iIC8+DQotCQkJPC9tYW5pZmVzdD4NCi0JCTwvamFyPg0KKwkJCTwhLS0gV2luZG93cyBkaXN0cmliIGZpbGVzIC0tPg0KKwkJCTx6aXBmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmRpc3RyaWIuZGlyfS93aW4iIC8+DQorCQkJPCEtLSBHaXRibGl0IEF1dGhvcml0eSBkYXRhIC0tPg0KKwkJCTx6aXBmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmRpc3RyaWIuZGlyfS9kYXRhL2NlcnRzIiBwcmVmaXg9ImRhdGEvY2VydHMiIC8+DQorCQkJPCEtLSBpbmNsdWRlIGFsbCBkZXBlbmRlbmNpZXMgLS0+DQorCQkJPGRlcGVuZGVuY2llcyBwcmVmaXg9ImV4dCIgLz4NCisJCTwvbXg6emlwPg0KIA0KLQkJPCEtLSBHaXRibGl0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9L2V4dCIvPg0KLQkJPGNvcHkgdG9kaXI9IiR7cHJvamVjdC5kZXBsb3kuZGlyfS9leHQiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9leHQiPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJzcmMvKioiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9Imp1bml0Ki5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImhhbWNyZXN0Ki5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbW1vbnMtbmV0Ki5qYXIiIC8+DQorCQk8IS0tIENyZWF0ZSBHTyBMaW51eC9PU1ggdGFyLmd6IGRlcGxveW1lbnQgLS0+DQorCQk8bXg6dGFyIGJhc2VkaXI9IiR7Z28uZGlyfSIgbG9uZ2ZpbGU9ImdudSIgY29tcHJlc3Npb249Imd6aXAiPg0KKwkJCTwhLS0gTElDRU5TRSBhbmQgTk9USUNFIC0tPg0KKwkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfSIgPg0KKwkJCQk8aW5jbHVkZSBuYW1lPSJMSUNFTlNFIiAvPg0KKwkJCQk8aW5jbHVkZSBuYW1lPSJOT1RJQ0UiIC8+DQogCQkJPC9maWxlc2V0Pg0KLQkJPC9jb3B5Pg0KLQkJDQotCQk8IS0tIEJ1aWxkIHRoZSBkb2NzIGZvciB0aGUgZGVwbG95IC0tPg0KLQkJPGFudGNhbGwgdGFyZ2V0PSJidWlsZERvY3MiIGluaGVyaXRhbGw9InRydWUiIGluaGVyaXRyZWZzPSJ0cnVlIj4NCi0JCQk8cGFyYW0gbmFtZT0iZG9jcy5vdXRwdXQuZGlyIiB2YWx1ZT0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9L2RvY3MiIC8+DQotCQk8L2FudGNhbGw+DQotCQkNCi0JCTwhLS0gQ3JlYXRlIFppcCBkZXBsb3ltZW50IC0tPgkJDQotCQk8emlwIGRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHtkaXN0cmlidXRpb24uemlwZmlsZX0iPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9Ij4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iKiovKiIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L3ppcD4NCisJCQk8IS0tIExpbnV4L09TWCBkaXN0cmliIGZpbGVzIC0tPg0KKwkJCTx0YXJmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmRpc3RyaWIuZGlyfS9saW51eCIgZmlsZW1vZGU9Ijc1NSIgLz4NCisJCQk8IS0tIEdpdGJsaXQgQXV0aG9yaXR5IGRhdGEgLS0+DQorCQkJPHppcGZpbGVzZXQgZGlyPSIke3Byb2plY3QuZGlzdHJpYi5kaXJ9L2RhdGEvY2VydHMiIHByZWZpeD0iZGF0YS9jZXJ0cyIgLz4NCisJCQk8IS0tIGluY2x1ZGUgYWxsIGRlcGVuZGVuY2llcyAtLT4NCisJCQk8ZGVwZW5kZW5jaWVzIHByZWZpeD0iZXh0IiAvPg0KKwkJPC9teDp0YXI+CQkNCiANCiAJPC90YXJnZXQ+DQogCQ0KIAkNCiAJPCEtLQ0KIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JCUJ1aWxkIEdpdGJsaXQgRG9jcyB3aGljaCBhcmUgYnVuZGxlZCB3aXRoIEdPIGFuZCBXQVIgZG93bmxvYWRzDQotCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KLQktLT4NCi0JPHRhcmdldCBuYW1lPSJidWlsZERvY3MiPg0KLQk8IS0tIEJ1aWxkIERvY3MgLS0+DQotCQkJPG1rZGlyIGRpcj0iJHtkb2NzLm91dHB1dC5kaXJ9IiAvPg0KLQkJCTxjb3B5IHRvZGlyPSIke2RvY3Mub3V0cHV0LmRpcn0iPg0KLQkJCQk8IS0tIENvcHkgc2VsZWN0ZWQgR2l0YmxpdCByZXNvdXJjZXMgLS0+DQotCQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9Ij4NCi0JCQkJCTxpbmNsdWRlIG5hbWU9ImJvb3RzdHJhcC8qKi8qIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0iZ2l0YmxpdC5jc3MiIC8+DQotCQkJCQk8aW5jbHVkZSBuYW1lPSJnaXRibHRfMjVfd2hpdGUucG5nIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0iZ2l0Ymx0LWZhdmljb24ucG5nIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0ibG9ja19nb18xNngxNi5wbmciIC8+DQotCQkJCQk8aW5jbHVkZSBuYW1lPSJsb2NrX3B1bGxfMTZ4MTYucG5nIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0ic2hpZWxkXzE2eDE2LnBuZyIgLz4NCi0JCQkJCTxpbmNsdWRlIG5hbWU9ImNvbGRfMTZ4MTYucG5nIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0iYnVnXzE2eDE2LnBuZyIgLz4NCi0JCQkJCTxpbmNsdWRlIG5hbWU9ImJvb2tfMTZ4MTYucG5nIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0iYmxhbmsucG5nIiAvPg0KLQkJCQkJPGluY2x1ZGUgbmFtZT0iZmVkZXJhdGVkXzE2eDE2LnBuZyIgLz4NCi0JCQkJCTxpbmNsdWRlIG5hbWU9ImFycm93X3BhZ2UucG5nIiAvPg0KLQkJCQk8L2ZpbGVzZXQ+DQotDQotCQkJCTwhLS0gQ29weSBEb2MgaW1hZ2VzIC0tPg0KLQkJCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZG9jcyI+DQotCQkJCQk8aW5jbHVkZSBuYW1lPSIqLnBuZyIgLz4NCi0JCQkJCTxpbmNsdWRlIG5hbWU9IiouZ2lmIiAvPg0KLQkJCQk8L2ZpbGVzZXQ+DQotCQkJPC9jb3B5Pg0KLQ0KLQkJCTwhLS0gQ29weSBnb29nbGUtY29kZS1wcmV0dGlmeSAtLT4NCi0JCQk8bWtkaXIgZGlyPSIke2RvY3Mub3V0cHV0LmRpcn0vcHJldHRpZnkiIC8+DQotCQkJPGNvcHkgdG9kaXI9IiR7ZG9jcy5vdXRwdXQuZGlyfS9wcmV0dGlmeSI+DQotCQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5Ij4NCi0JCQkJCTxleGNsdWRlIG5hbWU9InRodW1icy5kYiIgLz4NCi0JCQkJPC9maWxlc2V0Pg0KLQkJCTwvY29weT4NCi0NCi0JCQk8IS0tIEJ1aWxkIGRlcGxveW1lbnQgZG9jIHBhZ2VzIC0tPg0KLQkJCTxqYXZhIGNsYXNzcGF0aD0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0iIGNsYXNzbmFtZT0iY29tLmdpdGJsaXQuYnVpbGQuQnVpbGRTaXRlIj4NCi0JCQkJPGNsYXNzcGF0aCByZWZpZD0ibWFzdGVyLWNsYXNzcGF0aCIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iLS1zb3VyY2VGb2xkZXIiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiR7YmFzZWRpcn0vZG9jcyIgLz4NCi0NCi0JCQkJPGFyZyB2YWx1ZT0iLS1vdXRwdXRGb2xkZXIiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiR7ZG9jcy5vdXRwdXQuZGlyfSIgLz4NCi0NCi0JCQkJPGFyZyB2YWx1ZT0iLS1wYWdlSGVhZGVyIiAvPg0KLQkJCQk8YXJnIHZhbHVlPSIke2Jhc2VkaXJ9L2RvY3MvZG9jX2hlYWRlci5odG1sIiAvPg0KLQ0KLQkJCQk8YXJnIHZhbHVlPSItLXBhZ2VGb290ZXIiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiR7YmFzZWRpcn0vZG9jcy9kb2NfZm9vdGVyLmh0bWwiIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc2tpcCIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0ic2NyZWVuc2hvdHMiIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc2tpcCIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0icmVsZWFzZXMiIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tYWxpYXMiIC8+DQotCQkJCTxhcmcgdmFsdWU9ImluZGV4PW92ZXJ2aWV3IiAvPg0KLQ0KLQkJCQk8YXJnIHZhbHVlPSItLWFsaWFzIiAvPg0KLQkJCQk8YXJnIHZhbHVlPSJwcm9wZXJ0aWVzPXNldHRpbmdzIiAvPg0KLQ0KLQkJCQk8YXJnIHZhbHVlPSItLXN1YnN0aXR1dGUiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiVWRVJTSU9OJT0ke2diLnZlcnNpb259IiAvPg0KLQ0KLQkJCQk8YXJnIHZhbHVlPSItLXN1YnN0aXR1dGUiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiVHTyU9JHtkaXN0cmlidXRpb24uemlwZmlsZX0iIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJVdBUiU9JHtkaXN0cmlidXRpb24ud2FyZmlsZX0iIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJUZFRENMSUVOVCU9JHtmZWRjbGllbnQuemlwZmlsZX0iIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJU1BTkFHRVIlPSR7bWFuYWdlci56aXBmaWxlfSIgLz4NCi0NCi0JCQkJPGFyZyB2YWx1ZT0iLS1zdWJzdGl0dXRlIiAvPg0KLQkJCQk8YXJnIHZhbHVlPSIlQVBJJT0ke2diYXBpLnppcGZpbGV9IiAvPg0KLQ0KLQkJCQk8YXJnIHZhbHVlPSItLXN1YnN0aXR1dGUiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiVFWFBSRVNTJT0ke2V4cHJlc3MuemlwZmlsZX0iIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJUJVSUxEREFURSU9JHtnYi52ZXJzaW9uRGF0ZX0iIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJUpHSVQlPSR7amdpdC52ZXJzaW9ufSIgLz4NCi0NCi0JCQkJPGFyZyB2YWx1ZT0iLS1wcm9wZXJ0aWVzIiAvPg0KLQkJCQk8YXJnIHZhbHVlPSIlUFJPUEVSVElFUyU9JHtiYXNlZGlyfS9kaXN0cmliL2dpdGJsaXQucHJvcGVydGllcyIgLz4NCi0NCi0JCQkJPGFyZyB2YWx1ZT0iLS1ub21hcmtkb3duIiAvPg0KLQkJCQk8YXJnIHZhbHVlPSIlQkVHSU5DT0RFJTolRU5EQ09ERSUiIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJnF1b3Q7JUJFR0lOQ09ERSU9Jmx0O3ByZSBjbGFzcz0ncHJldHR5cHJpbnQgbGFuZy1qYXZhJyZndDsmcXVvdDsiIC8+DQotDQotCQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQkJPGFyZyB2YWx1ZT0iJUVORENPREUlPSZsdDsvcHJlJmd0OyIgLz4NCi0JCQkJDQotCQkJCTxhcmcgdmFsdWU9Ii0tcmVnZXgiIC8+DQotCQkJCTxhcmcgdmFsdWU9IiZxdW90O1xiKGlzc3VlKShccypbI10/fC0pezAsMX0oXGQrKVxiISEhJmx0O2EgaHJlZj0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvaXNzdWVzL2RldGFpbD9pZD0kMycmZ3Q7aXNzdWUgJDMmbHQ7L2EmZ3Q7JnF1b3Q7IiAvPg0KLQkJDQotCQkJPC9qYXZhPg0KLQk8L3RhcmdldD4NCi0JDQotCQkJCQ0KLQk8IS0tDQotCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KIAkJQnVpbGQgR2l0YmxpdCBXQVINCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQogCS0tPg0KIAk8dGFyZ2V0IG5hbWU9ImJ1aWxkV0FSIiBkZXBlbmRzPSJjb21waWxlIiBkZXNjcmlwdGlvbj0iQnVpbGQgR2l0YmxpdCBXQVIiPg0KIAkJDQotCQk8ZWNobz5CdWlsZGluZyBHaXRibGl0IFdBUiAke2diLnZlcnNpb259PC9lY2hvPg0KLQkJDQotCQk8ZGVsZXRlIGRpcj0iJHtwcm9qZWN0Lndhci5kaXJ9IiAvPg0KKwkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBXQVIgJHtwcm9qZWN0LnZlcnNpb259PC9lY2hvPg0KIA0KLQkJPCEtLSBDb3B5IHdlYi54bWwgYW5kIHVzZXJzLmNvbmYgdG8gV0VCLUlORiAtLT4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORiI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L3NyYy9XRUItSU5GIj4NCi0JCQkgCTxpbmNsdWRlIG5hbWU9IndlYi54bWwiIC8+DQotCQkJPC9maWxlc2V0Pg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfSI+DQotCQkJCTxpbmNsdWRlIG5hbWU9IkxJQ0VOU0UiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9Ik5PVElDRSIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L2NvcHk+DQorCQk8bG9jYWwgbmFtZT0id2FyLmRpciIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJ3YXIuZGlyIiB2YWx1ZT0iJHtwcm9qZWN0Lm91dHB1dERpcmVjdG9yeX0vd2FyIiAvPg0KKwkJPGRlbGV0ZSBkaXI9IiR7d2FyLmRpcn0iIC8+DQogCQkNCi0JCTwhLS0gU2V0IFZlcnNpb24gaW50byB3ZWIueG1sIC0tPg0KLQkJPHJlcGxhY2UgZmlsZT0iJHtwcm9qZWN0Lndhci5kaXJ9L1dFQi1JTkYvd2ViLnhtbCIgdG9rZW49IkBnYi52ZXJzaW9uQCIgdmFsdWU9IiR7Z2IudmVyc2lvbn0iIHN1bW1hcnk9InllcyIvPg0KLQkJDQotCQk8IS0tIENvcHkgZ2l0YmxpdC5wcm9wZXJ0aWVzIGFzIHJlZmVyZW5jZS5wcm9wZXJ0aWVzIC0tPg0KLQkJPGNvcHkgdG9maWxlPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORi9yZWZlcmVuY2UucHJvcGVydGllcyIgDQotCQkJZmlsZT0iJHtiYXNlZGlyfS9kaXN0cmliL2dpdGJsaXQucHJvcGVydGllcyIvPg0KLQkJDQotCQk8IS0tIEJ1aWxkIHRoZSBkb2NzIGZvciB0aGUgV0FSIGJ1aWxkIC0tPg0KLQkJPGFudGNhbGwgdGFyZ2V0PSJidWlsZERvY3MiIGluaGVyaXRhbGw9InRydWUiIGluaGVyaXRyZWZzPSJ0cnVlIj4NCi0JCQk8cGFyYW0gbmFtZT0iZG9jcy5vdXRwdXQuZGlyIiB2YWx1ZT0iJHtwcm9qZWN0Lndhci5kaXJ9L1dFQi1JTkYvZG9jcyIgLz4NCi0JCTwvYW50Y2FsbD4NCisJCTxsb2NhbCBuYW1lPSJ3ZWJpbmYiIC8+DQorCQk8cHJvcGVydHkgbmFtZT0id2ViaW5mIiB2YWx1ZT0iJHt3YXIuZGlyfS9XRUItSU5GIiAvPg0KIA0KLQkJPCEtLSBDb3B5IHVzZXJzLmNvbmYgdG8gV0VCLUlORi9kYXRhIC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0Lndhci5kaXJ9L1dFQi1JTkYvZGF0YSIgLz4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORi9kYXRhIj4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZGlzdHJpYiI+DQotCQkJIAk8aW5jbHVkZSBuYW1lPSJ1c2Vycy5jb25mIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJwcm9qZWN0cy5jb25mIiAvPg0KLQkJCSAJPGluY2x1ZGUgbmFtZT0iZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCisJCTwhLS0gR2VuZXJhdGUgdGhlIGRvY3MgZm9yIHRoZSBXQVIgYnVpbGQgLS0+DQorCQk8Z2VuZXJhdGVEb2NzIHRvRGlyPSIke3dlYmluZn0vZG9jcyIgLz4NCiANCi0JCTwhLS0gQ29weSB0aGUgc3VwcG9ydGVkIEdyb292eSBob29rIHNjcmlwdHMgLS0+DQotCQk8bWtkaXIgZGlyPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORi9kYXRhL2dyb292eSIgLz4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORi9kYXRhL2dyb292eSI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2Rpc3RyaWIvZ3Jvb3Z5Ij4NCi0JCQkJPGluY2x1ZGUgbmFtZT0ic2VuZG1haWwuZ3Jvb3Z5IiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJzZW5kbWFpbC1odG1sLmdyb292eSIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iamVua2lucy5ncm9vdnkiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9InByb3RlY3QtcmVmcy5ncm9vdnkiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImZvZ2J1Z3ouZ3Jvb3Z5IiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJ0aGVidWdnZW5pZS5ncm9vdnkiIC8+DQotCQkJPC9maWxlc2V0Pg0KLQkJPC9jb3B5Pg0KKwkJPCEtLSBQcmVwYXJlIHRoZSBkYXRhIGRpcmVjdG9yeSAtLT4NCisJCTxwcmVwYXJlRGF0YURpcmVjdG9yeSB0b0Rpcj0iJHt3ZWJpbmZ9L2RhdGEiIC8+DQogDQotCQk8IS0tIEJ1aWxkIHRoZSBXQVIgd2ViLnhtbCBmcm9tIHRoZSBwcm90b3R5cGUgd2ViLnhtbCAtLT4gDQotCQk8amF2YSBjbGFzc3BhdGg9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiBjbGFzc25hbWU9ImNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkV2ViWG1sIj4NCi0JCQk8Y2xhc3NwYXRoIHJlZmlkPSJtYXN0ZXItY2xhc3NwYXRoIiAvPg0KLQkJCQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc291cmNlRmlsZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIke2Jhc2VkaXJ9L3NyYy9XRUItSU5GL3dlYi54bWwiIC8+DQotCQkJCQkNCi0JCQk8YXJnIHZhbHVlPSItLWRlc3RpbmF0aW9uRmlsZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORi93ZWIueG1sIiAvPg0KLQkJCQ0KLQkJPC9qYXZhPg0KLQkJDQotCQk8IS0tIFNldCBWZXJzaW9uIGludG8gd2ViLnhtbCAtLT4NCi0JCTxyZXBsYWNlIGZpbGU9IiR7cHJvamVjdC53YXIuZGlyfS9XRUItSU5GL3dlYi54bWwiIHRva2VuPSJAZ2IudmVyc2lvbkAiIHZhbHVlPSIke2diLnZlcnNpb259IiBzdW1tYXJ5PSJ5ZXMiLz4NCi0NCi0JCTwhLS0gR2l0YmxpdCByZXNvdXJjZXMgLS0+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0Lndhci5kaXJ9Ij4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfSI+DQotCQkJCTxleGNsdWRlIG5hbWU9InRodW1icy5kYiIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L2NvcHk+DQotCQkNCi0JCTwhLS0gR2l0YmxpdCBsaWJyYXJ5IGRlcGVuZGVuY2llcyAtLT4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC53YXIuZGlyfS9XRUItSU5GL2xpYiIvPg0KLQkJPGNvcHkgdG9kaXI9IiR7cHJvamVjdC53YXIuZGlyfS9XRUItSU5GL2xpYiI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2V4dCI+DQotCQkJCTxleGNsdWRlIG5hbWU9InNyYy8qKiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iamNvbW1hbmRlciouamFyIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJqZXR0eSouamFyIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJqdW5pdCouamFyIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJoYW1jcmVzdCouamFyIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJzZXJ2bGV0Ki5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImphdmF4LnNlcnZsZXQqLmphciIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L2NvcHk+DQotDQotCQk8IS0tIEdpdGJsaXQgY2xhc3NlcyAtLT4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC53YXIuZGlyfS9XRUItSU5GL2NsYXNzZXMiLz4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3Qud2FyLmRpcn0vV0VCLUlORi9jbGFzc2VzIj4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJ9Ij4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iV0VCLUlORi8iIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS9naXRibGl0L3Rlc3RzLyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvYnVpbGQvKioiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS9naXRibGl0L2NsaWVudC8qKiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvQWRkSW5kZXhlZEJyYW5jaCouY2xhc3MiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS9naXRibGl0L0dpdEJsaXRTZXJ2ZXIqLmNsYXNzIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9MYXVuY2hlciouY2xhc3MiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS9naXRibGl0L2F1dGhvcml0eS8qKiIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L2NvcHk+DQorCQk8IS0tIEJ1aWxkIHRoZSBXQVIgd2ViLnhtbCBmcm9tIHRoZSBwcm90b3R5cGUgd2ViLnhtbCAtLT4NCisJCTxteDp3ZWJ4bWwgc291cmNlZmlsZT0iJHtwcm9qZWN0LnNyYy5kaXJ9L1dFQi1JTkYvd2ViLnhtbCIgZGVzdGZpbGU9IiR7d2ViaW5mfS93ZWIueG1sIiAvPg0KIA0KIAkJPCEtLSBCdWlsZCB0aGUgV0FSIGZpbGUgLS0+DQotCQk8amFyIGJhc2VkaXI9IiR7cHJvamVjdC53YXIuZGlyfSIgZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXQuZGlyfS8ke2Rpc3RyaWJ1dGlvbi53YXJmaWxlfSIgY29tcHJlc3M9InRydWUiIC8+DQotCTwvdGFyZ2V0Pg0KLQ0KLQkNCi0JPCEtLQ0KLQkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JCUJ1aWxkIEdpdGJsaXQgSkFSIGZvciB1c2FnZSBpbiBvdGhlciBwcm9qZWN0cyBwbHVnLWlucyAoaS5lLiBHZXJyaXQpDQotCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KLQktLT4NCi0JPHRhcmdldCBuYW1lPSJidWlsZEpBUiIgZGVwZW5kcz0iY29tcGlsZSIgZGVzY3JpcHRpb249IkJ1aWxkIEdpdGJsaXQgSkFSIj4NCi0NCi0JCTxlY2hvPkJ1aWxkaW5nIEdpdGJsaXQgSkFSICR7Z2IudmVyc2lvbn08L2VjaG8+DQotDQotCQk8ZGVsZXRlIGRpcj0iJHtwcm9qZWN0Lmphci5kaXJ9IiAvPg0KLQ0KLQkJPCEtLSBHaXRibGl0IGNsYXNzZXMgLS0+DQotCQk8bWtkaXIgZGlyPSIke3Byb2plY3QuamFyLmRpcn0iLz4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3QuamFyLmRpcn0iPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0iPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJXRUItSU5GLyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvdGVzdHMvIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9idWlsZC8qKiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvY2xpZW50LyoqIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9hdXRob3JpdHkvKioiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS9naXRibGl0L0FkZEluZGV4ZWRCcmFuY2gqLmNsYXNzIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9HaXRCbGl0U2VydmVyKi5jbGFzcyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvTGF1bmNoZXIqLmNsYXNzIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3QuamFyLmRpcn0vc3RhdGljIj4NCisJCTxteDp6aXAgYmFzZWRpcj0iJHt3YXIuZGlyfSIgZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9LyR7ZGlzdHJpYnV0aW9uLndhcmZpbGV9IiBjb21wcmVzcz0idHJ1ZSIgPg0KKwkJCTwhLS0gUmVzb3VyY2VzIGluIHJvb3QgLS0+DQogCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0iPg0KIAkJCQk8ZXhjbHVkZSBuYW1lPSJ0aHVtYnMuZGIiIC8+DQorCQkJCTxleGNsdWRlIG5hbWU9IioubWtkIiAvPg0KIAkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0NCi0JCTwhLS0gQnVpbGQgdGhlIEpBUiBmaWxlIC0tPg0KLQkJPGphciBiYXNlZGlyPSIke3Byb2plY3QuamFyLmRpcn0iIGRlc3RmaWxlPSIke2Rpc3RyaWJ1dGlvbi5qYXJmaWxlfSIgY29tcHJlc3M9InRydWUiIC8+DQorCQkJPCEtLSBXRUItSU5GIGRpcmVjdG9yeSAtLT4NCisJCQk8emlwZmlsZXNldCBmdWxscGF0aD0iV0VCLUlORi9yZWZlcmVuY2UucHJvcGVydGllcyIgDQorCQkJCWZpbGU9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YS9naXRibGl0LnByb3BlcnRpZXMiIC8+DQorCQkJPHppcGZpbGVzZXQgcHJlZml4PSJXRUItSU5GIiBkaXI9IiR7YmFzZWRpcn0iID4NCisJCQkJPGluY2x1ZGUgbmFtZT0iTElDRU5TRSIgLz4NCisJCQkJPGluY2x1ZGUgbmFtZT0iTk9USUNFIiAvPg0KKwkJCTwvemlwZmlsZXNldD4NCisJCQk8emlwZmlsZXNldCBwcmVmaXg9IldFQi1JTkYiIGZpbGU9IiR7cHJvamVjdC5jb21waWxlT3V0cHV0RGlyZWN0b3J5fS9XRUItSU5GL3dlYmxvZ2ljLnhtbCIgLz4NCisJCQk8IS0tIENsYXNzZXMgYW5kIGNsYXNzcGF0aCByZXNvdXJjZXMgLS0+DQorCQkJPHppcGZpbGVzZXQgcHJlZml4PSJXRUItSU5GL2NsYXNzZXMiIGRpcj0iJHtwcm9qZWN0LmNvbXBpbGVPdXRwdXREaXJlY3Rvcnl9Ij4NCisJCQkJPGluY2x1ZGUgbmFtZT0iKiovKi5jbGFzcyIgLz4NCisJCQkJPGluY2x1ZGUgbmFtZT0iKiovKi5wcm9wZXJ0aWVzIiAvPg0KKwkJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLm1rZCIgLz4NCisJCQkJPGV4Y2x1ZGUgbmFtZT0iV0VCLUlORiIgLz4NCisJCQk8L3ppcGZpbGVzZXQ+DQorCQkJPCEtLSBpbmNsdWRlICJ3YXIiIHRhZ2dlZCBkZXBlbmRlbmNpZXMgLS0+DQorCQkJPGRlcGVuZGVuY2llcyBwcmVmaXg9IldFQi1JTkYvbGliIiB0YWc9IndhciIgLz4NCisJCTwvbXg6emlwPg0KIAk8L3RhcmdldD4NCiANCi0JPCEtLQ0KLQkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JCUJ1aWxkIHBvbS54bWwgZm9yIEdpdEJsaXQgSkFSIE1hdmVuIG1vZHVsZQ0KLQkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JLS0+DQotCTx0YXJnZXQgbmFtZT0iYnVpbGRNYXZlbiIgZGVwZW5kcz0iYnVpbGRKQVIiIGRlc2NyaXB0aW9uPSJCdWlsZCBwb20ueG1sIGZvciBHaXRibGl0IEpBUiBNYXZlbiBtb2R1bGUiPg0KLQkJPGNvcHkgdG9maWxlPSIke2Rpc3RyaWJ1dGlvbi5wb21maWxlfSIgZmlsZT0iJHtkaXN0cmlidXRpb24ucG9tZmlsZVRtcGx0fSIvPg0KLQkJPHJlcGxhY2UgZmlsZT0iJHtkaXN0cmlidXRpb24ucG9tZmlsZX0iIHRva2VuPSJAZ2IudmVyc2lvbkAiIHZhbHVlPSIke2diLnZlcnNpb259IiAvPg0KLQk8L3RhcmdldD4NCi0NCi0JPCEtLQ0KLQkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JCUluc3RhbGwgR2l0YmxpdCBKQVIgZm9yIHVzYWdlIGFzIE1hdmVuIG1vZHVsZQ0KLQkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCi0JLS0+DQotCTx0YXJnZXQgbmFtZT0iaW5zdGFsbE1hdmVuIiBkZXBlbmRzPSJidWlsZE1hdmVuIiBkZXNjcmlwdGlvbj0iSW5zdGFsbCBHaXRibGl0IEpBUiBhcyBNYXZlbiBtb2R1bGUiPg0KLQkJPGV4ZWMgZXhlY3V0YWJsZT0ibXZuIj4NCi0JCQk8YXJnIHZhbHVlPSJpbnN0YWxsOmluc3RhbGwtZmlsZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSItRGZpbGU9JHtkaXN0cmlidXRpb24uamFyZmlsZX0iIC8+DQotCQkJPGFyZyB2YWx1ZT0iLURwb21GaWxlPSR7ZGlzdHJpYnV0aW9uLnBvbWZpbGV9IiAvPg0KLQkJCTxhcmcgdmFsdWU9Ii1EY3JlYXRlQ2hlY2tzdW09dHJ1ZSIgLz4NCi0JCTwvZXhlYz4NCi0JPC90YXJnZXQ+DQotDQotCTwhLS0NCi0gICAgCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQotICAgIAlVcGxvYWQgR2l0YmxpdCBKQVIgdG8gcmVtb3RlIE1hdmVuIHJlcG9zaXRvcnkNCi0gICAgCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQotICAgIC0tPg0KLQk8dGFyZ2V0IG5hbWU9InVwbG9hZE1hdmVuIiBkZXBlbmRzPSJidWlsZEpBUiIgZGVzY3JpcHRpb249IlVwbG9hZCBHaXRibGl0IEpBUiB0byByZW1vdGUgTWF2ZW4gcmVwb3NpdG9yeSI+DQotCQk8ZXhlYyBleGVjdXRhYmxlPSJtdm4iPg0KLQkJCTxhcmcgdmFsdWU9ImRlcGxveTpkZXBsb3ktZmlsZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSItRGZpbGU9JHtkaXN0cmlidXRpb24uamFyZmlsZX0iIC8+DQotCQkJPGFyZyB2YWx1ZT0iLURwb21GaWxlPSR7ZGlzdHJpYnV0aW9uLnBvbWZpbGV9IiAvPg0KLQkJCTxhcmcgdmFsdWU9Ii1EdXJsPSR7cHJvamVjdC5tYXZlbi5yZXBvLnVybH0iIC8+DQotCQkJPGFyZyB2YWx1ZT0iLURyZXBvc2l0b3J5SWQ9JHtwcm9qZWN0Lm1hdmVuLnJlcG8uaWR9IiAvPg0KLQkJCTxhcmcgdmFsdWU9Ii1EY3JlYXRlQ2hlY2tzdW09dHJ1ZSIgLz4NCi0JCTwvZXhlYz4NCi0JPC90YXJnZXQ+DQogDQogCTwhLS0gDQogCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KQEAgLTYzMiwxNTkgKzI5OSwxMDggQEAKIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQogCTx0YXJnZXQgbmFtZT0iYnVpbGRGZWRlcmF0aW9uQ2xpZW50IiBkZXBlbmRzPSJjb21waWxlIiBkZXNjcmlwdGlvbj0iQnVpbGRzIHRoZSBzdGFuZC1hbG9uZSBHaXRibGl0IGZlZGVyYXRpb24gY2xpZW50Ij4NCi0JCTxlY2hvPkJ1aWxkaW5nIEdpdGJsaXQgRmVkZXJhdGlvbiBDbGllbnQgJHtnYi52ZXJzaW9ufTwvZWNobz4NCisJCTxlY2hvPkJ1aWxkaW5nIEdpdGJsaXQgRmVkZXJhdGlvbiBDbGllbnQgJHtwcm9qZWN0LnZlcnNpb259PC9lY2hvPg0KIAkNCi0JCTxnZW5qYXIgamFyZmlsZT0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9L2ZlZGNsaWVudC5qYXIiPg0KLQkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5GZWRlcmF0aW9uQ2xpZW50TGF1bmNoZXIiIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5idWlsZC5kaXJ9L2xvZzRqLnByb3BlcnRpZXMiIC8+DQotCQkJPGNsYXNzZmlsdGVyPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJvcmcuYXBhY2hlLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnLmJvdW5jeWNhc3RsZS4iIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9Im9yZy5lY2xpcHNlLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnLnNsZjRqLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tLmJldXN0LiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tLmdvb2dsZS4iIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS51bmJvdW5kaWQuIiAvPg0KLQkJCTwvY2xhc3NmaWx0ZXI+DQotCQkJPGNsYXNzcGF0aCByZWZpZD0ibWFzdGVyLWNsYXNzcGF0aCIgLz4NCi0JCQk8bWFuaWZlc3Q+DQotCQkJCTxhdHRyaWJ1dGUgbmFtZT0iTWFpbi1DbGFzcyIgdmFsdWU9ImNvbS5naXRibGl0LkZlZGVyYXRpb25DbGllbnRMYXVuY2hlciIgLz4NCi0JCQkJPGF0dHJpYnV0ZSBuYW1lPSJTcGVjaWZpY2F0aW9uLVZlcnNpb24iIHZhbHVlPSIke2diLnZlcnNpb259IiAvPg0KLQkJCQk8YXR0cmlidXRlIG5hbWU9IlJlbGVhc2UtRGF0ZSIgdmFsdWU9IiR7Z2IudmVyc2lvbkRhdGV9IiAvPg0KLQkJCTwvbWFuaWZlc3Q+DQotCQk8L2dlbmphcj4NCisJCTwhLS0gZ2VuZXJhdGUgamFyIGJ5IHRyYXZlcnNpbmcgdGhlIGNsYXNzIGhpZXJhcmNoeSBvZiB0aGUgc3BlY2lmaWVkDQorCQkJIGNsYXNzZXMsIGV4Y2x1ZGUgYW55IGNsYXNzZXMgaW4gY2xhc3NwYXRoIGphcnMgLS0+DQorCQk8bXg6Z2VuamFyIHRhZz0iIiBleGNsdWRlQ2xhc3NwYXRoSmFycz0idHJ1ZSINCisJCQlkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vZmVkY2xpZW50LmphciI+DQorCQkJPG1haW5jbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5GZWRlcmF0aW9uQ2xpZW50IiAvPg0KKwkJCTxsYXVuY2hlciBwYXRocz0iZXh0IiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QuY29tcGlsZU91dHB1dERpcmVjdG9yeX0vbG9nNGoucHJvcGVydGllcyIgLz4NCisJCTwvbXg6Z2VuamFyPg0KIAkJDQogCQk8IS0tIEJ1aWxkIHRoZSBmZWRlcmF0aW9uIGNsaWVudCB6aXAgZmlsZSAtLT4NCi0JCTx6aXAgZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXQuZGlyfS8ke2ZlZGNsaWVudC56aXBmaWxlfSI+DQorCQk8bXg6emlwIGRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fS8ke2ZlZGNsaWVudC56aXBmaWxlfSI+DQogCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9Ij4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTElDRU5TRSIgLz4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTk9USUNFIiAvPg0KIAkJCTwvZmlsZXNldD4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC50YXJnZXQuZGlyfSI+DQorCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fSI+DQogCQkJCTxpbmNsdWRlIG5hbWU9ImZlZGNsaWVudC5qYXIiIC8+DQogCQkJPC9maWxlc2V0Pg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliIj4NCisJCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0iPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSJmZWRlcmF0aW9uLnByb3BlcnRpZXMiIC8+DQogCQkJPC9maWxlc2V0Pg0KLQkJPC96aXA+DQorCQkJPCEtLSBpbmNsdWRlICJmZWRjbGllbnQiIHRhZ2dlZCBkZXBlbmRlbmNpZXMgLS0+DQorCQkJPGRlcGVuZGVuY2llcyBwcmVmaXg9ImV4dCIgdGFnPSJmZWRjbGllbnQiIC8+DQorCQk8L214OnppcD4NCiAJCQ0KIAkJPCEtLSBDbGVhbnVwIC0tPg0KLQkJPGRlbGV0ZSBmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vZmVkY2xpZW50LmphciIgLz4NCisJCTxkZWxldGUgZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vZmVkY2xpZW50LmphciIgLz4NCisJCQ0KIAk8L3RhcmdldD4NCiANCiANCiAJPCEtLSANCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQotCQlCdWlsZCBhIEdpdGJsaXQgZmlsZXN5c3RlbSBmb3IgZGVwbG95bWVudCB0byBSZWRIYXQgT3BlblNoaWYgRXhwcmVzc3QNCisJCUJ1aWxkIGEgR2l0YmxpdCBmaWxlc3lzdGVtIGZvciBkZXBsb3ltZW50IHRvIFJlZEhhdCBPcGVuU2hpZnQgRXhwcmVzcw0KIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQogCTx0YXJnZXQgbmFtZT0iYnVpbGRFeHByZXNzIiBkZXBlbmRzPSJjb21waWxlIiBkZXNjcmlwdGlvbj0iQnVpbGQgZXhwbG9kZWQgV0FSIGZpbGUgc3VpdGFibGUgZm9yIGRlcGxveW1lbnQgdG8gT3BlblNoaWZ0IEV4cHJlc3MiPg0KLQkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBFeHByZXNzIGZvciBSZWRIYXQgT3BlblNoaWZ0ICR7Z2IudmVyc2lvbn08L2VjaG8+DQorCQk8ZWNobz5CdWlsZGluZyBHaXRibGl0IEV4cHJlc3MgZm9yIFJlZEhhdCBPcGVuU2hpZnQgJHtwcm9qZWN0LnZlcnNpb259PC9lY2hvPg0KIAkJDQotCQk8ZGVsZXRlIGRpcj0iJHtwcm9qZWN0LmV4cHJlc3MuZGlyfSIgLz4NCisJCTxsb2NhbCBuYW1lPSJleHByZXNzLmRpciIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJleHByZXNzLmRpciIgdmFsdWU9IiR7cHJvamVjdC5vdXRwdXREaXJlY3Rvcnl9L2V4cHJlc3MiIC8+CQkNCisJCTxkZWxldGUgZGlyPSIke2V4cHJlc3MuZGlyfSIgLz4NCiAJCQ0KIAkJPCEtLSBDcmVhdGUgdGhlIE9wZW5TaGlmdCBmaWxlc3lzdGVtIC0tPg0KLQkJPHByb3BlcnR5IG5hbWU9ImRlcGxveW1lbnRzLnJvb3QiIHZhbHVlPSIke3Byb2plY3QuZXhwcmVzcy5kaXJ9L2RlcGxveW1lbnRzL1JPT1Qud2FyIi8+DQorCQk8bG9jYWwgbmFtZT0iZGVwbG95bWVudHMucm9vdCIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJkZXBsb3ltZW50cy5yb290IiB2YWx1ZT0iJHtleHByZXNzLmRpcn0vZGVwbG95bWVudHMvUk9PVC53YXIiLz4NCiAJCTxta2RpciBkaXI9IiR7ZGVwbG95bWVudHMucm9vdH0iIC8+DQotCQk8dG91Y2ggZmlsZT0iJHtwcm9qZWN0LmV4cHJlc3MuZGlyfS9kZXBsb3ltZW50cy9ST09ULndhci5kb2RlcGxveSIgLz4NCisJCTx0b3VjaCBmaWxlPSIke2V4cHJlc3MuZGlyfS9kZXBsb3ltZW50cy9ST09ULndhci5kb2RlcGxveSIgLz4NCiANCi0JCTwhLS0gQ29weSB0aGUgR2l0YmxpdCBPcGVuU2hpZnQgcmVhZG1lIGZpbGUgLS0+DQotCQk8Y29weSB0b2ZpbGU9IiR7cHJvamVjdC5leHByZXNzLmRpcn0vUkVBRE1FLmdpdGJsaXQiIA0KLQkJCWZpbGU9IiR7YmFzZWRpcn0vZGlzdHJpYi9vcGVuc2hpZnQubWtkIi8+DQorCQk8bG9jYWwgbmFtZT0id2ViaW5mIiAvPg0KKwkJPHByb3BlcnR5IG5hbWU9IndlYmluZiIgdmFsdWU9IiR7ZGVwbG95bWVudHMucm9vdH0vV0VCLUlORiIgLz4NCiANCi0JCTwhLS0gQ29weSBMSUNFTlNFIGFuZCBOT1RJQ0UgdG8gV0VCLUlORiAtLT4NCi0JCTxjb3B5IHRvZGlyPSIke2RlcGxveW1lbnRzLnJvb3R9L1dFQi1JTkYiPg0KKwkJPCEtLSBQcmVwYXJlIHRoZSBkYXRhIGRpcmVjdG9yeSAtLT4NCisJCTxwcmVwYXJlRGF0YURpcmVjdG9yeSB0b0Rpcj0iJHt3ZWJpbmZ9L2RhdGEiIC8+DQorCQkJCQkNCisJCTwhLS0gQnVpbGQgdGhlIEV4cHJlc3Mgd2ViLnhtbCBmcm9tIHRoZSBwcm90b3R5cGUgd2ViLnhtbCBhbmQgZ2l0YmxpdC5wcm9wZXJ0aWVzIC0tPg0KKwkJPCEtLSBUSElTIEZJTEUgSVMgTk9UIE9WRVJSSURERU4gT05DRSBJVCBJUyBCVUlMVCEhISAtLT4NCisJCTxteDp3ZWJ4bWwgc291cmNlZmlsZT0iJHtwcm9qZWN0LnNyYy5kaXJ9L1dFQi1JTkYvd2ViLnhtbCIgZGVzdGZpbGU9IiR7d2ViaW5mfS93ZWIueG1sIg0KKwkJcHJvcGVydGllc0ZpbGU9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YS9naXRibGl0LnByb3BlcnRpZXMiDQorCQlza2lwPSJzZXJ2ZXIuKiIgLz4NCisNCisJCTwhLS0gR2l0YmxpdCBjbGFzc2VzIC0tPg0KKwkJPG14OmdlbmphciBkZXN0ZmlsZT0iJHt3ZWJpbmZ9L2xpYi9naXRibGl0LmphciIgZXhjbHVkZWNsYXNzcGF0aGphcnM9InRydWUiPg0KKwkJCTwhLS0gU3BlY2lmeSBhbGwgd2ViLnhtbCBzZXJ2bGV0cyBhbmQgZmlsdGVycyAtLT4NCisJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQuR2l0QmxpdCIgLz4NCisJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQuRG93bmxvYWRaaXBGaWx0ZXIiIC8+DQorCQkJPGNsYXNzIG5hbWU9ImNvbS5naXRibGl0LkRvd25sb2FkWmlwU2VydmxldCIgLz4NCisJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQuRW5mb3JjZUF1dGhlbnRpY2F0aW9uRmlsdGVyIiAvPg0KKwkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5GZWRlcmF0aW9uU2VydmxldCIgLz4NCisJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQuR2l0RmlsdGVyIiAvPg0KKwkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5HaXRTZXJ2bGV0IiAvPg0KKwkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5QYWdlc0ZpbHRlciIgLz4NCisJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQuUGFnZXNTZXJ2bGV0IiAvPg0KKwkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5Sb2JvdHNUeHRTZXJ2bGV0IiAvPg0KKwkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5ScGNGaWx0ZXIiIC8+DQorCQkJPGNsYXNzIG5hbWU9ImNvbS5naXRibGl0LlJwY1NlcnZsZXQiIC8+DQorCQkJPGNsYXNzIG5hbWU9ImNvbS5naXRibGl0LlN5bmRpY2F0aW9uRmlsdGVyIiAvPg0KKwkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5TeW5kaWNhdGlvblNlcnZsZXQiIC8+DQorCQkJPGNsYXNzIG5hbWU9ImNvbS5naXRibGl0LndpY2tldC5HaXRCbGl0V2ViQXBwIiAvPg0KKwkJPC9teDpnZW5qYXI+DQorDQorCQk8IS0tIEJ1aWxkIEV4cHJlc3MgWmlwIGZpbGUgLS0+DQorCQk8bXg6emlwIGJhc2VkaXI9IiR7ZXhwcmVzcy5kaXJ9IiBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vJHtleHByZXNzLnppcGZpbGV9Ij4NCiAJCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0iPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSJMSUNFTlNFIiAvPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSJOT1RJQ0UiIC8+DQogCQkJPC9maWxlc2V0Pg0KLQkJPC9jb3B5Pg0KLQ0KLQkJPCEtLSBDb3B5IGdpdGJsaXQucHJvcGVydGllcyBhcyByZWZlcmVuY2UucHJvcGVydGllcyAtLT4NCi0JCTxjb3B5IHRvZmlsZT0iJHtkZXBsb3ltZW50cy5yb290fS9XRUItSU5GL3JlZmVyZW5jZS5wcm9wZXJ0aWVzIiANCi0JCQlmaWxlPSIke2Jhc2VkaXJ9L2Rpc3RyaWIvZ2l0YmxpdC5wcm9wZXJ0aWVzIi8+DQotDQotCQk8IS0tIENvcHkgdXNlcnMuY29uZiBhbmQgZ2l0YmxpdC5wcm9wZXJ0aWVzIC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtkZXBsb3ltZW50cy5yb290fS9XRUItSU5GL2RhdGEiIC8+DQotCQk8Y29weSB0b2Rpcj0iJHtkZXBsb3ltZW50cy5yb290fS9XRUItSU5GL2RhdGEiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliIj4NCi0JCQkJPGluY2x1ZGUgbmFtZT0idXNlcnMuY29uZiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0icHJvamVjdHMuY29uZiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0JCQkJCQ0KLQkJPCEtLSBDb3B5IHRoZSBzdXBwb3J0ZWQgR3Jvb3Z5IGhvb2sgc2NyaXB0cyAtLT4NCi0JCTxta2RpciBkaXI9IiR7ZGVwbG95bWVudHMucm9vdH0vV0VCLUlORi9kYXRhL2dyb292eSIgLz4NCi0JCTxjb3B5IHRvZGlyPSIke2RlcGxveW1lbnRzLnJvb3R9L1dFQi1JTkYvZGF0YS9ncm9vdnkiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliL2dyb292eSI+DQotCQkJCTxpbmNsdWRlIG5hbWU9InNlbmRtYWlsLmdyb292eSIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0ic2VuZG1haWwtaHRtbC5ncm9vdnkiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImplbmtpbnMuZ3Jvb3Z5IiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJwcm90ZWN0LXJlZnMuZ3Jvb3Z5IiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJmb2didWd6Lmdyb292eSIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0idGhlYnVnZ2VuaWUuZ3Jvb3Z5IiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0JCQkJCQ0KLQkJPCEtLSBCdWlsZCB0aGUgV0FSIHdlYi54bWwgZnJvbSB0aGUgcHJvdG90eXBlIHdlYi54bWwgYW5kIGdpdGJsaXQucHJvcGVydGllcyAtLT4NCi0JCTwhLS0gVEhJUyBGSUxFIElTIE5PVCBPVkVSUklEREVOIE9OQ0UgSVQgSVMgQlVJTFQhISEgLS0+DQotCQk8amF2YSBjbGFzc3BhdGg9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiBjbGFzc25hbWU9ImNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkV2ViWG1sIj4NCi0JCQk8Y2xhc3NwYXRoIHJlZmlkPSJtYXN0ZXItY2xhc3NwYXRoIiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc291cmNlRmlsZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIke2Jhc2VkaXJ9L3NyYy9XRUItSU5GL3dlYi54bWwiIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1kZXN0aW5hdGlvbkZpbGUiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJHtkZXBsb3ltZW50cy5yb290fS9XRUItSU5GL3dlYi54bWwiIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1wcm9wZXJ0aWVzRmlsZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIke2Jhc2VkaXJ9L2Rpc3RyaWIvZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KLQkJPC9qYXZhPg0KLQkJDQotCQk8IS0tIFNldCBWZXJzaW9uIGludG8gd2ViLnhtbCAtLT4NCi0JCTxyZXBsYWNlIGZpbGU9IiR7ZGVwbG95bWVudHMucm9vdH0vV0VCLUlORi93ZWIueG1sIiB0b2tlbj0iQGdiLnZlcnNpb25AIiB2YWx1ZT0iJHtnYi52ZXJzaW9ufSIgc3VtbWFyeT0ieWVzIi8+DQotDQotCQk8IS0tIEdpdGJsaXQgcmVzb3VyY2VzIC0tPg0KLQkJPGNvcHkgdG9kaXI9IiR7ZGVwbG95bWVudHMucm9vdH0iPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9Ij4NCisJCQk8IS0tIFJFQURNRSAtLT4NCisJCQk8emlwZmlsZXNldCBmdWxscGF0aD0iUkVBRE1FLmdpdGJsaXQiIGZpbGU9IiR7cHJvamVjdC5zaXRlU291cmNlRGlyZWN0b3J5fS9vcGVuc2hpZnQubWtkIiAvPg0KKwkJCTwhLS0gcmVzb3VyY2VzIC0tPg0KKwkJCTx6aXBmaWxlc2V0IHByZWZpeD0iZGVwbG95bWVudHMvUk9PVC53YXIiIGRpcj0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9Ij4NCiAJCQkJPGV4Y2x1ZGUgbmFtZT0idGh1bWJzLmRiIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCi0NCi0JCTwhLS0gR2l0YmxpdCBsaWJyYXJ5IGRlcGVuZGVuY2llcyAtLT4NCi0JCTxta2RpciBkaXI9IiR7ZGVwbG95bWVudHMucm9vdH0vV0VCLUlORi9saWIiLz4NCi0JCTxjb3B5IHRvZGlyPSIke2RlcGxveW1lbnRzLnJvb3R9L1dFQi1JTkYvbGliIj4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZXh0Ij4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ic3JjLyoqIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJqY29tbWFuZGVyKi5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImpldHR5Ki5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9Imp1bml0Ki5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImhhbWNyZXN0Ki5qYXIiIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9InNlcnZsZXQqLmphciIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iamF2YXguc2VydmxldCouamFyIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJqc3NsdXRpbHMqLmphciIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iamNhbGVuZGFyKi5qYXIiIC8+DQotCQkJPC9maWxlc2V0Pg0KLQkJPC9jb3B5Pg0KLQ0KLQkJPCEtLSBHaXRibGl0IGNsYXNzZXMgLS0+DQotCQk8amFyIGRlc3RmaWxlPSIke2RlcGxveW1lbnRzLnJvb3R9L1dFQi1JTkYvbGliL2dpdGJsaXQtJHtnYi52ZXJzaW9ufS5qYXIiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0iPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJXRUItSU5GLyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvdGVzdHMvIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9idWlsZC8qKiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvY2xpZW50LyoqIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9HaXRCbGl0U2VydmVyKi5jbGFzcyIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvTGF1bmNoZXIqLmNsYXNzIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9hdXRob3JpdHkvKioiIC8+DQotCQkJPC9maWxlc2V0Pg0KLQkJPC9qYXI+DQotDQotCQk8IS0tIEJ1aWxkIEV4cHJlc3MgWmlwIGZpbGUgLS0+DQotCQk8emlwIGRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHtleHByZXNzLnppcGZpbGV9Ij4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5leHByZXNzLmRpcn0iIC8+DQotCQk8L3ppcD4NCisJCQkJPGV4Y2x1ZGUgbmFtZT0iKi5ta2QiIC8+DQorCQkJPC96aXBmaWxlc2V0Pg0KKwkJCTwhLS0gcmVmZXJlbmNlLnByb3BlcnRpZXMgLS0+DQorCQkJPHppcGZpbGVzZXQgZnVsbHBhdGg9ImRlcGxveW1lbnRzL1JPT1Qud2FyL1dFQi1JTkYvcmVmZXJlbmNlLnByb3BlcnRpZXMiIA0KKwkJCQlmaWxlPSIke3Byb2plY3QuZGlzdHJpYi5kaXJ9L2RhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KKwkJCTwhLS0gaW5jbHVkZSAid2FyIiB0YWdnZWQgZGVwZW5kZW5jaWVzIC0tPg0KKwkJCTxkZXBlbmRlbmNpZXMgcHJlZml4PSJkZXBsb3ltZW50cy9ST09ULndhci9XRUItSU5GL2xpYiIgdGFnPSJ3YXIiIC8+DQorCQk8L214OnppcD4NCiANCiAJPC90YXJnZXQ+DQogDQpAQCAtNzk1LDcyICs0MTEsNjQgQEAKIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQogCTx0YXJnZXQgbmFtZT0iYnVpbGRNYW5hZ2VyIiBkZXBlbmRzPSJjb21waWxlIiBkZXNjcmlwdGlvbj0iQnVpbGRzIHRoZSBzdGFuZC1hbG9uZSBHaXRibGl0IE1hbmFnZXIiPg0KLQkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBNYW5hZ2VyICR7Z2IudmVyc2lvbn08L2VjaG8+DQorCQk8ZWNobz5CdWlsZGluZyBHaXRibGl0IE1hbmFnZXIgJHtwcm9qZWN0LnZlcnNpb259PC9lY2hvPg0KIA0KLQkJPGdlbmphciBqYXJmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vbWFuYWdlci0ke2diLnZlcnNpb259LmphciI+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L2NsaWVudC9zcGxhc2gucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9naXRibHQtZmF2aWNvbi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2dpdHdlYi1mYXZpY29uLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvZ2l0LW9yYW5nZS0xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL3VzZXJfMTZ4MTYucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy91c2Vyc18xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL3NldHRpbmdzXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvbG9ja19nb18xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2xvY2tfcHVsbF8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL3NoaWVsZF8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2ZlZGVyYXRlZF8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2NvbGRfMTZ4MTYucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9ib29rXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvYnVnXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvaGVhbHRoXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvZmVlZF8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2J1bGxldF9mZWVkLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvc2VhcmNoLWljb24ucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9jb21taXRfY2hhbmdlc18xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2NvbW1pdF9tZXJnZV8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2NvbW1pdF9kaXZpZGVfMTZ4MTYucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9zdGFyXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvYmxhbmsucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcC5wcm9wZXJ0aWVzIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9lcy5wcm9wZXJ0aWVzIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9qYS5wcm9wZXJ0aWVzIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9rby5wcm9wZXJ0aWVzIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9ubC5wcm9wZXJ0aWVzIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9wbC5wcm9wZXJ0aWVzIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9wdF9CUi5wcm9wZXJ0aWVzIiAvPg0KKwkJPCEtLSBnZW5lcmF0ZSBqYXIgYnkgdHJhdmVyc2luZyB0aGUgY2xhc3MgaGllcmFyY2h5IG9mIHRoZSBzcGVjaWZpZWQNCisJCQkgY2xhc3NlcywgZXhjbHVkZSBhbnkgY2xhc3NlcyBpbiBjbGFzc3BhdGggamFycyAtLT4NCisJCTxteDpnZW5qYXIgdGFnPSIiIGV4Y2x1ZGVDbGFzc3BhdGhKYXJzPSJ0cnVlIg0KKwkJCWRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fS9tYW5hZ2VyLmphciI+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5zcmMuZGlyfS9jb20vZ2l0YmxpdC9jbGllbnQvc3BsYXNoLnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2dpdGJsdC1mYXZpY29uLnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2dpdHdlYi1mYXZpY29uLnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2dpdC1vcmFuZ2UtMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vdXNlcl8xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS91c2Vyc18xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9zZXR0aW5nc18xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9sb2NrX2dvXzE2eDE2LnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2xvY2tfcHVsbF8xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9zaGllbGRfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vZmVkZXJhdGVkXzE2eDE2LnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2NvbGRfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vYm9va18xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9idWdfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vaGVhbHRoXzE2eDE2LnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2ZlZWRfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vYnVsbGV0X2ZlZWQucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vc2VhcmNoLWljb24ucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vY29tbWl0X2NoYW5nZXNfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vY29tbWl0X21lcmdlXzE2eDE2LnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2NvbW1pdF9kaXZpZGVfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vc3Rhcl8xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9ibGFuay5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5zcmMuZGlyfS9sb2c0ai5wcm9wZXJ0aWVzIiAvPg0KKwkJCTxyZXNvdXJjZT4NCisJCQkJPCEtLSBpbmxjdWRlIGFsbCB0cmFuc2xhdGlvbnMgLS0+DQorCQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnNyYy5kaXJ9L2NvbS9naXRibGl0L3dpY2tldCI+DQorCQkJCQk8aW5jbHVkZSBuYW1lPSIqLnByb3BlcnRpZXMiIC8+DQorCQkJCTwvZmlsZXNldD4NCisJCQk8L3Jlc291cmNlPg0KIA0KLQkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5jbGllbnQuR2l0YmxpdE1hbmFnZXJMYXVuY2hlciIgLz4NCi0JCQk8Y2xhc3NmaWx0ZXI+DQotCQkJCTxleGNsdWRlIG5hbWU9Im9yZy5hcGFjaGUuIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJvcmcuYm91bmN5Y2FzdGxlLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnLmVjbGlwc2UuIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJvcmcuc2xmNGouIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20uYmV1c3QuIiAvPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJjb20uZ29vZ2xlLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tLnVuYm91bmRpZC4iIC8+DQotCQkJPC9jbGFzc2ZpbHRlcj4NCi0JCQk8Y2xhc3NwYXRoIHJlZmlkPSJtYXN0ZXItY2xhc3NwYXRoIiAvPg0KKwkJCTxtYWluY2xhc3MgbmFtZT0iY29tLmdpdGJsaXQuY2xpZW50LkdpdGJsaXRNYW5hZ2VyTGF1bmNoZXIiIC8+DQogCQkJPG1hbmlmZXN0Pg0KLQkJCQk8YXR0cmlidXRlIG5hbWU9Ik1haW4tQ2xhc3MiIHZhbHVlPSJjb20uZ2l0YmxpdC5jbGllbnQuR2l0YmxpdE1hbmFnZXJMYXVuY2hlciIgLz4NCiAJCQkJPGF0dHJpYnV0ZSBuYW1lPSJTcGxhc2hTY3JlZW4tSW1hZ2UiIHZhbHVlPSJzcGxhc2gucG5nIiAvPg0KLQkJCQk8YXR0cmlidXRlIG5hbWU9IlNwZWNpZmljYXRpb24tVmVyc2lvbiIgdmFsdWU9IiR7Z2IudmVyc2lvbn0iIC8+DQotCQkJCTxhdHRyaWJ1dGUgbmFtZT0iUmVsZWFzZS1EYXRlIiB2YWx1ZT0iJHtnYi52ZXJzaW9uRGF0ZX0iIC8+DQogCQkJPC9tYW5pZmVzdD4NCi0JCTwvZ2VuamFyPg0KKwkJPC9teDpnZW5qYXI+DQogDQogCQk8IS0tIEJ1aWxkIE1hbmFnZXIgWmlwIGZpbGUgLS0+DQotCQk8emlwIGRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHttYW5hZ2VyLnppcGZpbGV9Ij4NCisJCTxteDp6aXAgZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9LyR7bWFuYWdlci56aXBmaWxlfSI+DQogCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9Ij4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTElDRU5TRSIgLz4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTk9USUNFIiAvPg0KIAkJCTwvZmlsZXNldD4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC50YXJnZXQuZGlyfSI+DQotCQkJCTxpbmNsdWRlIG5hbWU9Im1hbmFnZXItJHtnYi52ZXJzaW9ufS5qYXIiIC8+DQorCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fSI+DQorCQkJCTxpbmNsdWRlIG5hbWU9Im1hbmFnZXIuamFyIiAvPg0KIAkJCTwvZmlsZXNldD4NCi0JCTwvemlwPg0KKwkJCTwhLS0gaW5jbHVkZSAibWFuYWdlciIgdGFnZ2VkIGRlcGVuZGVuY2llcyAtLT4NCisJCQk8ZGVwZW5kZW5jaWVzIHByZWZpeD0iZXh0IiB0YWc9Im1hbmFnZXIiIC8+DQorCQk8L214OnppcD4NCiAJCQ0KIAkJPCEtLSBDbGVhbnVwIC0tPg0KLQkJPGRlbGV0ZSBmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vbWFuYWdlci0ke2diLnZlcnNpb259LmphciIgLz4NCisJCTxkZWxldGUgZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vbWFuYWdlci5qYXIiIC8+DQogCTwvdGFyZ2V0Pg0KIAkNCiAJDQpAQCAtODcwLDY5ICs0NzgsNjYgQEAKIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQogCTx0YXJnZXQgbmFtZT0iYnVpbGRBdXRob3JpdHkiIGRlcGVuZHM9ImNvbXBpbGUiIGRlc2NyaXB0aW9uPSJCdWlsZHMgdGhlIHN0YW5kLWFsb25lIEdpdGJsaXQgQXV0aG9yaXR5Ij4NCi0JCTxlY2hvPkJ1aWxkaW5nIEdpdGJsaXQgQXV0aG9yaXR5ICR7Z2IudmVyc2lvbn08L2VjaG8+DQorCQk8ZWNobz5CdWlsZGluZyBHaXRibGl0IEF1dGhvcml0eSAke3Byb2plY3QudmVyc2lvbn08L2VjaG8+DQogDQotCQk8Z2VuamFyIGphcmZpbGU9IiR7cHJvamVjdC50YXJnZXQuZGlyfS9hdXRob3JpdHktJHtnYi52ZXJzaW9ufS5qYXIiPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvc3BsYXNoLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvZ2l0Ymx0LWZhdmljb24ucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy91c2VyXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvdXNlcnNfMTZ4MTYucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9yb3NldHRlXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvcm9zZXR0ZV8zMngzMi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL3ZjYXJkXzE2eDE2LnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvc2V0dGluZ3NfMTZ4MTYucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9zZXR0aW5nc18zMngzMi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL3NlYXJjaC1pY29uLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvbWFpbF8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL3NjcmlwdF8xNngxNi5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2JsYW5rLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvYnVsbGV0X2dyZWVuLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvYnVsbGV0X29yYW5nZS5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vcmVzb3VyY2VzL2J1bGxldF9yZWQucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9idWxsZXRfd2hpdGUucG5nIiAvPg0KLQkJCTxyZXNvdXJjZSBmaWxlPSIke2Jhc2VkaXJ9L3Jlc291cmNlcy9idWxsZXRfZGVsZXRlLnBuZyIgLz4NCi0JCQk8cmVzb3VyY2UgZmlsZT0iJHtiYXNlZGlyfS9yZXNvdXJjZXMvYnVsbGV0X2tleS5wbmciIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2xvZzRqLnByb3BlcnRpZXMiIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwLnByb3BlcnRpZXMiIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2VzLnByb3BlcnRpZXMiIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2phLnByb3BlcnRpZXMiIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2tvLnByb3BlcnRpZXMiIC8+DQotCQkJPHJlc291cmNlIGZpbGU9IiR7YmFzZWRpcn0vc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3BsLnByb3BlcnRpZXMiIC8+DQorCQk8IS0tIGdlbmVyYXRlIGphciBieSB0cmF2ZXJzaW5nIHRoZSBjbGFzcyBoaWVyYXJjaHkgb2YgdGhlIHNwZWNpZmllZA0KKwkJCSBjbGFzc2VzLCBleGNsdWRlIGFueSBjbGFzc2VzIGluICJhdXRob3JpdHkiIGNsYXNzcGF0aCBqYXJzIC0tPg0KKwkJPG14OmdlbmphciB0YWc9ImF1dGhvcml0eSIgZXhjbHVkZUNsYXNzcGF0aEphcnM9InRydWUiIA0KKwkJCWRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fS9hdXRob3JpdHkuamFyIj4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnNyYy5kaXJ9L2NvbS9naXRibGl0L2NsaWVudC9zcGxhc2gucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vZ2l0Ymx0LWZhdmljb24ucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vdXNlcl8xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS91c2Vyc18xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9yb3NldHRlXzE2eDE2LnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L3Jvc2V0dGVfMzJ4MzIucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vdmNhcmRfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vc2V0dGluZ3NfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vc2V0dGluZ3NfMzJ4MzIucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vc2VhcmNoLWljb24ucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vbWFpbF8xNngxNi5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9zY3JpcHRfMTZ4MTYucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vYmxhbmsucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vYnVsbGV0X2dyZWVuLnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2J1bGxldF9vcmFuZ2UucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vYnVsbGV0X3JlZC5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9idWxsZXRfd2hpdGUucG5nIiAvPg0KKwkJCTxyZXNvdXJjZSBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vYnVsbGV0X2RlbGV0ZS5wbmciIC8+DQorCQkJPHJlc291cmNlIGZpbGU9IiR7cHJvamVjdC5yZXNvdXJjZXMuZGlyfS9idWxsZXRfa2V5LnBuZyIgLz4NCisJCQk8cmVzb3VyY2UgZmlsZT0iJHtwcm9qZWN0LnNyYy5kaXJ9L2xvZzRqLnByb3BlcnRpZXMiIC8+DQorCQkJPHJlc291cmNlPg0KKwkJCQk8IS0tIGlubGN1ZGUgYWxsIHRyYW5zbGF0aW9ucyAtLT4NCisJCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3Quc3JjLmRpcn0vY29tL2dpdGJsaXQvd2lja2V0Ij4NCisJCQkJCTxpbmNsdWRlIG5hbWU9IioucHJvcGVydGllcyIgLz4NCisJCQkJPC9maWxlc2V0Pg0KKwkJCTwvcmVzb3VyY2U+DQogDQotCQkJPGNsYXNzIG5hbWU9ImNvbS5naXRibGl0LmF1dGhvcml0eS5HaXRibGl0QXV0aG9yaXR5TGF1bmNoZXIiIC8+DQotCQkJPGNsYXNzZmlsdGVyPg0KLQkJCQk8ZXhjbHVkZSBuYW1lPSJvcmcuYXBhY2hlLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnLmJvdW5jeWNhc3RsZS4iIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9Im9yZy5lY2xpcHNlLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnLnNsZjRqLiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tLmJldXN0LiIgLz4NCi0JCQkJPGV4Y2x1ZGUgbmFtZT0iY29tLmdvb2dsZS4iIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS51bmJvdW5kaWQuIiAvPg0KLQkJCTwvY2xhc3NmaWx0ZXI+DQotCQkJPGNsYXNzcGF0aCByZWZpZD0ibWFzdGVyLWNsYXNzcGF0aCIgLz4NCisJCQk8bWFpbmNsYXNzIG5hbWU9ImNvbS5naXRibGl0LmF1dGhvcml0eS5MYXVuY2hlciIgLz4NCiAJCQk8bWFuaWZlc3Q+DQotCQkJCTxhdHRyaWJ1dGUgbmFtZT0iTWFpbi1DbGFzcyIgdmFsdWU9ImNvbS5naXRibGl0LmF1dGhvcml0eS5HaXRibGl0QXV0aG9yaXR5TGF1bmNoZXIiIC8+DQogCQkJCTxhdHRyaWJ1dGUgbmFtZT0iU3BsYXNoU2NyZWVuLUltYWdlIiB2YWx1ZT0ic3BsYXNoLnBuZyIgLz4NCi0JCQkJPGF0dHJpYnV0ZSBuYW1lPSJTcGVjaWZpY2F0aW9uLVZlcnNpb24iIHZhbHVlPSIke2diLnZlcnNpb259IiAvPg0KLQkJCQk8YXR0cmlidXRlIG5hbWU9IlJlbGVhc2UtRGF0ZSIgdmFsdWU9IiR7Z2IudmVyc2lvbkRhdGV9IiAvPg0KIAkJCTwvbWFuaWZlc3Q+DQotCQk8L2dlbmphcj4NCisJCTwvbXg6Z2VuamFyPg0KIA0KIAkJPCEtLSBCdWlsZCBBdXRob3JpdHkgWmlwIGZpbGUgLS0+DQotCQk8emlwIGRlc3RmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHthdXRob3JpdHkuemlwZmlsZX0iPg0KKwkJPG14OnppcCBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vJHthdXRob3JpdHkuemlwZmlsZX0iPg0KIAkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfSI+DQogCQkJCTxpbmNsdWRlIG5hbWU9IkxJQ0VOU0UiIC8+DQogCQkJCTxpbmNsdWRlIG5hbWU9Ik5PVElDRSIgLz4NCiAJCQk8L2ZpbGVzZXQ+DQotCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QudGFyZ2V0LmRpcn0iPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJhdXRob3JpdHktJHtnYi52ZXJzaW9ufS5qYXIiIC8+DQorCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fSI+DQorCQkJCTxpbmNsdWRlIG5hbWU9ImF1dGhvcml0eS5qYXIiIC8+DQogCQkJPC9maWxlc2V0Pg0KLQkJCTx6aXBmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kaXN0cmliIiBwcmVmaXg9ImRhdGEvY2VydHMiPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJhdXRob3JpdHkuY29uZiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0ibWFpbC50bXBsIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJpbnN0cnVjdGlvbnMudG1wbCIgLz4NCisJCQk8emlwZmlsZXNldCBkaXI9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YSIgcHJlZml4PSJkYXRhIj4NCisJCQkJPGluY2x1ZGUgbmFtZT0idXNlcnMuY29uZiIgLz4NCisJCQkJPGluY2x1ZGUgbmFtZT0iZ2l0YmxpdC5wcm9wZXJ0aWVzIiAvPg0KIAkJCTwvemlwZmlsZXNldD4NCi0JCTwvemlwPg0KKwkJCTwhLS0gR2l0YmxpdCBBdXRob3JpdHkgZGF0YSAtLT4NCisJCQk8emlwZmlsZXNldCBkaXI9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YS9jZXJ0cyIgcHJlZml4PSJkYXRhL2NlcnRzIiAvPg0KKwkJCTwhLS0gaW5jbHVkZSAiYXV0aG9yaXR5IiB0YWdnZWQgZGVwZW5kZW5jaWVzIC0tPg0KKwkJCTxkZXBlbmRlbmNpZXMgcHJlZml4PSJleHQiIHRhZz0iYXV0aG9yaXR5IiAvPg0KKwkJPC9teDp6aXA+DQorCQkJCQ0KKwkJPCEtLSBDbGVhbnVwIC0tPg0KKwkJPGRlbGV0ZSBmaWxlPSIke3Byb2plY3QudGFyZ2V0RGlyZWN0b3J5fS9hdXRob3JpdHkuamFyIiAvPg0KIAk8L3RhcmdldD4NCiAJCQkJCQ0KIAk8IS0tIA0KQEAgLTk0MSwyOSArNTQ2LDI1IEBACiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQogCS0tPg0KIAk8dGFyZ2V0IG5hbWU9ImJ1aWxkQXBpTGlicmFyeSIgZGVwZW5kcz0iY29tcGlsZSIgZGVzY3JpcHRpb249IkJ1aWxkcyB0aGUgR2l0YmxpdCBSUEMgY2xpZW50IGxpYnJhcnkiPg0KLQkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBBUEkgTGlicmFyeSAke2diLnZlcnNpb259PC9lY2hvPg0KKwkJPGVjaG8+QnVpbGRpbmcgR2l0YmxpdCBBUEkgTGlicmFyeSAke3Byb2plY3QudmVyc2lvbn08L2VjaG8+DQogCQ0KKwkJPGxvY2FsIG5hbWU9ImphdmFkb2MuZGlyIiAvPg0KKwkJPHByb3BlcnR5IG5hbWU9ImphdmFkb2MuZGlyIiB2YWx1ZT0iJHtwcm9qZWN0Lm91dHB1dERpcmVjdG9yeX0vamF2YWRvYyIgLz4NCisJCTxkZWxldGUgZGlyPSIke2phdmFkb2MuZGlyfSIgLz4NCisNCiAJCTwhLS0gQnVpbGQgQVBJIExpYnJhcnkgamFyIC0tPg0KLQkJPGdlbmphciBqYXJmaWxlPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vZ2JhcGktJHtnYi52ZXJzaW9ufS5qYXIiPg0KKwkJPG14OmdlbmphciB0YWc9IiIgZXhjbHVkZUNsYXNzcGF0aEphcnM9InRydWUiDQorCQkJZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9L2diYXBpLSR7cHJvamVjdC52ZXJzaW9ufS5qYXIiPg0KIAkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5LZXlzIiAvPg0KIAkJCTxjbGFzcyBuYW1lPSJjb20uZ2l0YmxpdC5jbGllbnQuR2l0YmxpdENsaWVudCIgLz4NCiAJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQubW9kZWxzLkZlZGVyYXRpb25Nb2RlbCIgLz4NCiAJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQubW9kZWxzLkZlZGVyYXRpb25Qcm9wb3NhbCIgLz4NCiAJCQk8Y2xhc3MgbmFtZT0iY29tLmdpdGJsaXQubW9kZWxzLkZlZGVyYXRpb25TZXQiIC8+CQkJDQotCQkJPGNsYXNzcGF0aCByZWZpZD0ibWFzdGVyLWNsYXNzcGF0aCIgLz4NCi0JCQk8Y2xhc3NmaWx0ZXI+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS5nb29nbGUuZ3Nvbi4iIC8+DQotCQkJCTxleGNsdWRlIG5hbWU9ImNvbS5zdW4uc3luZGljYXRpb24uIiAvPg0KLQkJCTwvY2xhc3NmaWx0ZXI+DQotCQkJPG1hbmlmZXN0Pg0KLQkJCQk8YXR0cmlidXRlIG5hbWU9IlNwZWNpZmljYXRpb24tVmVyc2lvbiIgdmFsdWU9IiR7Z2IudmVyc2lvbn0iIC8+DQotCQkJCTxhdHRyaWJ1dGUgbmFtZT0iUmVsZWFzZS1EYXRlIiB2YWx1ZT0iJHtnYi52ZXJzaW9uRGF0ZX0iIC8+DQotCQkJPC9tYW5pZmVzdD4NCi0JCTwvZ2VuamFyPg0KKwkJPC9teDpnZW5qYXI+DQogCQkNCiAJCTwhLS0gQnVpbGQgQVBJIHNvdXJjZXMgamFyIC0tPg0KLQkJPHppcCBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9L2diYXBpLSR7Z2IudmVyc2lvbn0tc291cmNlcy5qYXIiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9zcmMiIGRlZmF1bHRleGNsdWRlcz0ieWVzIj4NCisJCTx6aXAgZGVzdGZpbGU9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9L2diYXBpLSR7cHJvamVjdC52ZXJzaW9ufS1zb3VyY2VzLmphciI+DQorCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3Quc3JjLmRpcn0iIGRlZmF1bHRleGNsdWRlcz0ieWVzIj4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvQ29uc3RhbnRzLmphdmEiLz4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvR2l0QmxpdEV4Y2VwdGlvbi5qYXZhIi8+DQogCQkJCTxpbmNsdWRlIG5hbWU9ImNvbS9naXRibGl0L0tleXMuamF2YSIvPg0KQEAgLTk3NCw4ICs1NzUsOCBAQAogCQk8L3ppcD4NCiAJCQ0KIAkJPCEtLSBCdWlsZCBBUEkgSmF2YURvYyBqYXIgLS0+DQotCQk8amF2YWRvYyBkZXN0ZGlyPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vamF2YWRvYyI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L3NyYyIgZGVmYXVsdGV4Y2x1ZGVzPSJ5ZXMiPg0KKwkJPG14OmphdmFkb2MgZGVzdGRpcj0iJHtqYXZhZG9jLmRpcn0iIHJlZGlyZWN0PSJ0cnVlIj4NCisJCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5zcmMuZGlyfSIgZGVmYXVsdGV4Y2x1ZGVzPSJ5ZXMiPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9Db25zdGFudHMuamF2YSIvPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC9HaXRCbGl0RXhjZXB0aW9uLmphdmEiLz4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iY29tL2dpdGJsaXQvS2V5cy5qYXZhIi8+DQpAQCAtOTgzLDM3ICs1ODQsMzQgQEAKIAkJICAJCTxpbmNsdWRlIG5hbWU9ImNvbS9naXRibGl0L21vZGVscy8qKi8qLmphdmEiLz4NCiAJCSAgCQk8aW5jbHVkZSBuYW1lPSJjb20vZ2l0YmxpdC91dGlscy8qKi8qLmphdmEiLz4JCQkgIAkJDQogCQkJPC9maWxlc2V0Pg0KLQkJPC9qYXZhZG9jPg0KLQkJPHppcCBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9L2diYXBpLSR7Z2IudmVyc2lvbn0tamF2YWRvYy5qYXIiPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9L2phdmFkb2MiIC8+DQorCQk8L214OmphdmFkb2M+DQorCQkgIAkJCQ0KKwkJPHppcCBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vZ2JhcGktJHtwcm9qZWN0LnZlcnNpb259LWphdmFkb2MuamFyIj4NCisJCQk8ZmlsZXNldCBkaXI9IiR7amF2YWRvYy5kaXJ9IiAvPg0KIAkJPC96aXA+DQogCQkNCiAJCTwhLS0gQnVpbGQgdGhlIEFQSSBsaWJyYXJ5IHppcCBmaWxlIC0tPg0KLQkJPHppcCBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9LyR7Z2JhcGkuemlwZmlsZX0iPg0KKwkJPG14OnppcCBkZXN0ZmlsZT0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0vJHtnYmFwaS56aXBmaWxlfSI+DQogCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9Ij4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTElDRU5TRSIgLz4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iTk9USUNFIiAvPg0KIAkJCTwvZmlsZXNldD4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC50YXJnZXQuZGlyfSI+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImdiYXBpLSR7Z2IudmVyc2lvbn0uamFyIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJnYmFwaS0ke2diLnZlcnNpb259LXNvdXJjZXMuamFyIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJnYmFwaS0ke2diLnZlcnNpb259LWphdmFkb2MuamFyIiAvPg0KKwkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnRhcmdldERpcmVjdG9yeX0iPg0KKwkJCQk8aW5jbHVkZSBuYW1lPSJnYmFwaS0ke3Byb2plY3QudmVyc2lvbn0uamFyIiAvPg0KKwkJCQk8aW5jbHVkZSBuYW1lPSJnYmFwaS0ke3Byb2plY3QudmVyc2lvbn0tc291cmNlcy5qYXIiIC8+DQorCQkJCTxpbmNsdWRlIG5hbWU9ImdiYXBpLSR7cHJvamVjdC52ZXJzaW9ufS1qYXZhZG9jLmphciIgLz4NCiAJCQk8L2ZpbGVzZXQ+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2V4dCI+DQotCQkJCTxleGNsdWRlIG5hbWU9InNyYy8qKiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iZ3NvbiouamFyIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJyb21lKi5qYXIiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9Impkb20qLmphciIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L3ppcD4NCisJCQk8IS0tIGluY2x1ZGUgImFwaSIgdGFnZ2VkIGRlcGVuZGVuY2llcyAtLT4NCisJCQk8ZGVwZW5kZW5jaWVzIHByZWZpeD0iZXh0IiB0YWc9ImFwaSIgLz4NCisJCTwvbXg6emlwPg0KIAkJDQogCQk8IS0tIENsZWFudXAgLS0+DQogCQk8ZGVsZXRlPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnRhcmdldC5kaXJ9Ij4NCisJCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9Ij4NCiAJCQkJPGluY2x1ZGUgbmFtZT0iamF2YWRvYy8qKiIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iZ2JhcGktJHtnYi52ZXJzaW9ufS5qYXIiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImdiYXBpLSR7Z2IudmVyc2lvbn0tc291cmNlcy5qYXIiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImdiYXBpLSR7Z2IudmVyc2lvbn0tamF2YWRvYy5qYXIiIC8+DQorCQkJCTxpbmNsdWRlIG5hbWU9ImdiYXBpLSR7cHJvamVjdC52ZXJzaW9ufS5qYXIiIC8+DQorCQkJCTxpbmNsdWRlIG5hbWU9ImdiYXBpLSR7cHJvamVjdC52ZXJzaW9ufS1zb3VyY2VzLmphciIgLz4NCisJCQkJPGluY2x1ZGUgbmFtZT0iZ2JhcGktJHtwcm9qZWN0LnZlcnNpb259LWphdmFkb2MuamFyIiAvPg0KIAkJPC9maWxlc2V0Pg0KIAkJPC9kZWxldGU+DQogCTwvdGFyZ2V0Pg0KQEAgLTEwMjQsMTYyICs2MjIsMTIyIEBACiAJCUJ1aWxkIHRoZSBHaXRibGl0IFdlYnNpdGUNCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQogCS0tPg0KLQk8dGFyZ2V0IG5hbWU9ImJ1aWxkU2l0ZSIgZGVwZW5kcz0iY29tcGlsZSIgZGVzY3JpcHRpb249IkJ1aWxkIHRoZSBHaXRibGl0IHdlYnNpdGUiPg0KKwk8dGFyZ2V0IG5hbWU9ImJ1aWxkU2l0ZSIgZGVwZW5kcz0icHJlcGFyZSIgZGVzY3JpcHRpb249IkJ1aWxkIHRoZSBHaXRibGl0IHdlYnNpdGUiPg0KIAkJDQotCQk8ZWNobz5CdWlsZGluZyBHaXRibGl0IFdlYnNpdGUgJHtnYi52ZXJzaW9ufTwvZWNobz4NCisJCTxlY2hvPkJ1aWxkaW5nIEdpdGJsaXQgV2Vic2l0ZSAke3Byb2plY3QudmVyc2lvbn08L2VjaG8+DQorDQorCQk8cHJvcGVydHkgbmFtZT0icmVsZWFzZWxvZyIgdmFsdWU9IiR7YmFzZWRpcn0vcmVsZWFzZXMubW94aWUiIC8+DQogDQogCQk8IS0tIEJ1aWxkIFNpdGUgLS0+DQotCQk8ZGVsZXRlIGRpcj0iJHtwcm9qZWN0LnNpdGUuZGlyfSIgLz4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC5zaXRlLmRpcn0iIC8+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0LnNpdGUuZGlyfSI+DQotCQkJPCEtLSBDb3B5IHNlbGVjdGVkIEdpdGJsaXQgcmVzb3VyY2VzIC0tPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9Ij4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iYm9vdHN0cmFwLyoqLyoiIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImdpdGJsaXQuY3NzIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJnaXRibHRfMjVfd2hpdGUucG5nIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJnaXRibHQtZmF2aWNvbi5wbmciIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImxvY2tfZ29fMTZ4MTYucG5nIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJsb2NrX3B1bGxfMTZ4MTYucG5nIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJzaGllbGRfMTZ4MTYucG5nIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSJjb2xkXzE2eDE2LnBuZyIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iYnVnXzE2eDE2LnBuZyIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iYm9va18xNngxNi5wbmciIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9ImJsYW5rLnBuZyIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iZmVkZXJhdGVkXzE2eDE2LnBuZyIgLz4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iYXJyb3dfcGFnZS5wbmciIC8+DQotCQkJPC9maWxlc2V0Pg0KLQ0KLQkJCTwhLS0gQ29weSBEb2MgaW1hZ2VzIC0tPg0KLQkJCTxmaWxlc2V0IGRpcj0iJHtiYXNlZGlyfS9kb2NzIj4NCi0JCQkJPGluY2x1ZGUgbmFtZT0iKi5wbmciIC8+DQotCQkJCTxpbmNsdWRlIG5hbWU9IiouZ2lmIiAvPg0KLQkJCQk8aW5jbHVkZSBuYW1lPSIqLmpzIiAvPg0KLQkJCTwvZmlsZXNldD4NCi0JCTwvY29weT4NCisJCTxteDpkb2MJZ29vZ2xlcGx1c2lkPSIxMTQ0NjQ2NzgzOTI1OTM0MjE2ODQiIGdvb2dsZWFuYWx5dGljc2lkPSJVQS0yNDM3NzA3Mi0xIg0KKwkJCWdvb2dsZVBsdXNPbmU9InRydWUiIG1pbmlmeT0idHJ1ZSIgY3VzdG9tbGVzcz0iY3VzdG9tLmxlc3MiPg0KKwkJCTxzdHJ1Y3R1cmU+DQorCQkJCTxtZW51IG5hbWU9ImFib3V0Ij4NCisJCQkJCTxwYWdlIG5hbWU9Im92ZXJ2aWV3IiBzcmM9InNpdGVpbmRleC5ta2QiIG91dD0iaW5kZXguaHRtbCIgaGVhZGVyTGlua3M9ImZhbHNlIiAvPg0KKwkJCQkJPHBhZ2UgbmFtZT0iZmVhdHVyZXMiIHNyYz0iZmVhdHVyZXMubWtkIiAvPg0KKwkJCQkJPHBhZ2UgbmFtZT0ic2NyZWVuc2hvdHMiIHNyYz0ic2NyZWVuc2hvdHMubWtkIiAvPg0KKwkJCQk8L21lbnU+DQorCQkJCTxtZW51IG5hbWU9ImRvY3VtZW50YXRpb24iPg0KKwkJCQkJPHBhZ2UgbmFtZT0ic2V0dXAiIHNyYz0ic2V0dXAubWtkIiAvPg0KKwkJCQkJPHBhZ2UgbmFtZT0iZmVkZXJhdGlvbiIgc3JjPSJmZWRlcmF0aW9uLm1rZCIgLz4NCisJCQkJCTxkaXZpZGVyIC8+DQorCQkJCQk8cGFnZSBuYW1lPSJzZXR0aW5ncyIgc3JjPSJwcm9wZXJ0aWVzLm1rZCIgLz4NCisJCQkJCTxwYWdlIG5hbWU9ImZhcSIgc3JjPSJmYXEubWtkIiAvPg0KKwkJCQkJPGRpdmlkZXIgLz4NCisJCQkJCTxwYWdlIG5hbWU9ImRlc2lnbiIgc3JjPSJkZXNpZ24ubWtkIiAvPg0KKwkJCQkJPHBhZ2UgbmFtZT0icnBjIiBzcmM9InJwYy5ta2QiIC8+DQorCQkJCTwvbWVudT4NCisJCQkJDQorCQkJCTxtZW51IG5hbWU9InJlbGVhc2VzIj4NCisJCQkJCTxwYWdlIG5hbWU9InJlbGVhc2Ugbm90ZXMiIG91dD0icmVsZWFzZW5vdGVzLmh0bWwiPg0KKwkJCQkJCTx0ZW1wbGF0ZSBzcmM9InJlbGVhc2VjdXJyZW50LmZ0bCIgZGF0YT0iJHtyZWxlYXNlbG9nfSIgLz4NCisJCQkJCTwvcGFnZT4NCisJCQkJCTxwYWdlIG5hbWU9InJlbGVhc2UgaGlzdG9yeSIgb3V0PSJyZWxlYXNlcy5odG1sIj4NCisJCQkJCQk8dGVtcGxhdGUgc3JjPSJyZWxlYXNlaGlzdG9yeS5mdGwiIGRhdGE9IiR7cmVsZWFzZWxvZ30iIC8+DQorCQkJCQk8L3BhZ2U+DQorCQkJCQk8ZGl2aWRlciAvPg0KKwkJCQkJPHBhZ2UgbmFtZT0icm9hZG1hcCIgc3JjPSJyb2FkbWFwLm1rZCIgLz4JCQkJCQ0KKwkJCQk8L21lbnU+DQorCQkJCQ0KKwkJCQk8bWVudSBuYW1lPSJkb3dubG9hZHMiPg0KKwkJCQkJPGxpbmsgbmFtZT0iR2l0YmxpdCBHTyAoV2luZG93cykiIHNyYz0iJHtnYy51cmx9Z2l0YmxpdC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCIgLz4NCisJCQkJCTxsaW5rIG5hbWU9IkdpdGJsaXQgR08gKExpbnV4L09TWCkiIHNyYz0iJHtnYy51cmx9Z2l0YmxpdC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnRhci5neiIgLz4NCisJCQkJCTxsaW5rIG5hbWU9IkdpdGJsaXQgV0FSIiBzcmM9IiR7Z2MudXJsfWdpdGJsaXQtJHtwcm9qZWN0LnJlbGVhc2VWZXJzaW9ufS53YXIiIC8+DQorCQkJCQk8bGluayBuYW1lPSJHaXRibGl0IEV4cHJlc3MiIHNyYz0iJHtnYy51cmx9ZXhwcmVzcy0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCIgLz4NCisJCQkJCTxkaXZpZGVyIC8+DQorCQkJCQk8bGluayBuYW1lPSJHaXRibGl0IE1hbmFnZXIiIHNyYz0iJHtnYy51cmx9bWFuYWdlci0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCIgLz4NCisJCQkJCTxsaW5rIG5hbWU9IkZlZGVyYXRpb24gQ2xpZW50IiBzcmM9IiR7Z2MudXJsfWZlZGNsaWVudC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCIgLz4NCisJCQkJCTxkaXZpZGVyIC8+DQorCQkJCQk8bGluayBuYW1lPSJBUEkgTGlicmFyeSIgc3JjPSIke2djLnVybH1nYmFwaS0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCIgLz4NCisJCQkJPC9tZW51Pg0KKwkJCQkNCisJCQkJPG1lbnUgbmFtZT0ibGlua3MiPg0KKwkJCQkJPGxpbmsgbmFtZT0iRGVtbyIgc3JjPSJodHRwczovL2RlbW8tZ2l0YmxpdC5yaGNsb3VkLmNvbSIgLz4NCisJCQkJCTxkaXZpZGVyIC8+DQorCQkJCQk8bGluayBuYW1lPSJHaXRodWIiIHNyYz0iJHtwcm9qZWN0LnNjbVVybH0iIC8+DQorCQkJCQk8bGluayBuYW1lPSJJc3N1ZXMiIHNyYz0iJHtwcm9qZWN0Lmlzc3Vlc1VybH0iIC8+DQorCQkJCQk8bGluayBuYW1lPSJEaXNjdXNzaW9uIiBzcmM9IiR7cHJvamVjdC5mb3J1bVVybH0iIC8+DQorCQkJCQk8bGluayBuYW1lPSJHb29nbGUrIiBzcmM9IiR7cHJvamVjdC5zb2NpYWxOZXR3b3JrVXJsfSIgLz4NCisJCQkJCTxsaW5rIG5hbWU9Ik9obG9oIiBzcmM9Imh0dHA6Ly93d3cub2hsb2gubmV0L3AvZ2l0YmxpdCIgLz4NCisJCQkJPC9tZW51Pg0KKwkJCQk8ZGl2aWRlciAvPg0KKwkJCTwvc3RydWN0dXJlPg0KKwkJCQ0KKwkJCTxyZXBsYWNlIHRva2VuPSIlR0NVUkwlIiB2YWx1ZT0iJHtnYy51cmx9IiAvPg0KKwkJCQ0KKwkJCTxwcm9wZXJ0aWVzIHRva2VuPSIlUFJPUEVSVElFUyUiIGZpbGU9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YS9naXRibGl0LnByb3BlcnRpZXMiIC8+DQorCQkJDQorCQkJPHJlZ2V4IHNlYXJjaFBhdHRlcm49IlxiKGlzc3VlKShccypbI10/fC0pezAsMX0oXGQrKVxiIiByZXBsYWNlUGF0dGVybj0iJmx0O2EgaHJlZj0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvaXNzdWVzL2RldGFpbD9pZD0kMycmZ3Q7aXNzdWUgJDMmbHQ7L2EmZ3Q7IiAvPg0KKwkJCQ0KKwkJCTwhLS0gU2V0IHRoZSBsb2dvIGZyb20gdGhlIG14OmRvYyByZXNvdXJjZXMgLS0+DQorCQkJPGxvZ28gZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2dpdGJsdF8yNV93aGl0ZS5wbmciIC8+DQorCQkJPGZhdmljb24gZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2dpdGJsdC1mYXZpY29uLnBuZyIgLz4NCisJCQkNCisJCQk8cmVzb3VyY2U+DQorCQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9Ij4NCisJCQkJCTxpbmNsdWRlIG5hbWU9ImxvY2tfZ29fMTZ4MTYucG5nIiAvPg0KKwkJCQkJPGluY2x1ZGUgbmFtZT0ibG9ja19wdWxsXzE2eDE2LnBuZyIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9InNoaWVsZF8xNngxNi5wbmciIC8+DQorCQkJCQk8aW5jbHVkZSBuYW1lPSJjb2xkXzE2eDE2LnBuZyIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9ImJ1Z18xNngxNi5wbmciIC8+DQorCQkJCQk8aW5jbHVkZSBuYW1lPSJib29rXzE2eDE2LnBuZyIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9ImJsYW5rLnBuZyIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9ImZlZGVyYXRlZF8xNngxNi5wbmciIC8+DQorCQkJCQk8aW5jbHVkZSBuYW1lPSJhcnJvd19wYWdlLnBuZyIgLz4NCisJCQkJPC9maWxlc2V0Pg0KKwkJCTwvcmVzb3VyY2U+DQorCQk8L214OmRvYz4JCQ0KIA0KIAkJPCEtLSBDb3B5IEZhbmN5Ym94IC0tPg0KLQkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LnNpdGUuZGlyfS9mYW5jeWJveCIgLz4NCi0JCTxjb3B5IHRvZGlyPSIke3Byb2plY3Quc2l0ZS5kaXJ9L2ZhbmN5Ym94Ij4NCi0JCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZG9jcy9mYW5jeWJveCI+DQotCQkJCTxleGNsdWRlIG5hbWU9InRodW1icy5kYiIgLz4NCi0JCQk8L2ZpbGVzZXQ+DQotCQk8L2NvcHk+DQotDQotCQk8IS0tIENvcHkgZ29vZ2xlLWNvZGUtcHJldHRpZnkgLS0+DQotCQk8bWtkaXIgZGlyPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkiIC8+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0LnNpdGUuZGlyfS9wcmV0dGlmeSI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkiPg0KKwkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LnNpdGVUYXJnZXREaXJlY3Rvcnl9L2ZhbmN5Ym94IiAvPg0KKwkJPGNvcHkgdG9kaXI9IiR7cHJvamVjdC5zaXRlVGFyZ2V0RGlyZWN0b3J5fS9mYW5jeWJveCI+DQorCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3Quc2l0ZVNvdXJjZURpcmVjdG9yeX0vZmFuY3lib3giPg0KIAkJCQk8ZXhjbHVkZSBuYW1lPSJ0aHVtYnMuZGIiIC8+DQogCQkJPC9maWxlc2V0Pg0KIAkJPC9jb3B5Pg0KIA0KIAkJPCEtLSBHZW5lcmF0ZSB0aHVtYm5haWxzIG9mIHNjcmVlbnNob3RzIC0tPg0KLQkJPGphdmEgY2xhc3NwYXRoPSIke3Byb2plY3QuYnVpbGQuZGlyfSIgY2xhc3NuYW1lPSJjb20uZ2l0YmxpdC5idWlsZC5CdWlsZFRodW1ibmFpbHMiPg0KLQkJCTxjbGFzc3BhdGggcmVmaWQ9Im1hc3Rlci1jbGFzc3BhdGgiIC8+DQotCQkJCQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc291cmNlRm9sZGVyIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiR7YmFzZWRpcn0vZG9jcy9zY3JlZW5zaG90cyIgLz4NCi0JCQ0KLQkJCTxhcmcgdmFsdWU9Ii0tZGVzdGluYXRpb25Gb2xkZXIiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJHtwcm9qZWN0LnNpdGUuZGlyfS90aHVtYnMiIC8+DQotCQkJDQotCQkJPGFyZyB2YWx1ZT0iLS1tYXhpbXVtRGltZW5zaW9uIiAvPg0KLQkJCTxhcmcgdmFsdWU9IjI1MCIgLz4NCi0JCTwvamF2YT4NCisJCTxteDp0aHVtYnMgaW5wdXQ9InBuZyIgb3V0cHV0PSJwbmciIG1heGltdW1EaW1lbnNpb249IjI1MCIgDQorCQkJc291cmNlRGlyPSIke3Byb2plY3Quc2l0ZVNvdXJjZURpcmVjdG9yeX0vc2NyZWVuc2hvdHMiDQorCQkJZGVzdERpcj0iJHtwcm9qZWN0LnNpdGVUYXJnZXREaXJlY3Rvcnl9L3RodW1icyIgLz4NCiANCiAJCTwhLS0gQ29weSBzY3JlZW5zaG90cyAtLT4NCi0JCTxta2RpciBkaXI9IiR7cHJvamVjdC5zaXRlLmRpcn0vc2NyZWVuc2hvdHMiIC8+DQotCQk8Y29weSB0b2Rpcj0iJHtwcm9qZWN0LnNpdGUuZGlyfS9zY3JlZW5zaG90cyI+DQotCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2RvY3Mvc2NyZWVuc2hvdHMiPg0KKwkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LnNpdGVUYXJnZXREaXJlY3Rvcnl9L3NjcmVlbnNob3RzIiAvPg0KKwkJPGNvcHkgdG9kaXI9IiR7cHJvamVjdC5zaXRlVGFyZ2V0RGlyZWN0b3J5fS9zY3JlZW5zaG90cyI+DQorCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3Quc2l0ZVNvdXJjZURpcmVjdG9yeX0vc2NyZWVuc2hvdHMiPg0KIAkJCQk8aW5jbHVkZSBuYW1lPSIqLnBuZyIgLz4NCiAJCQk8L2ZpbGVzZXQ+DQogCQk8L2NvcHk+DQogDQotCQk8IS0tIEJ1aWxkIHNpdGUgcGFnZXMgLS0+DQotCQk8amF2YSBjbGFzc3BhdGg9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiBjbGFzc25hbWU9ImNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkU2l0ZSI+DQotCQkJPGNsYXNzcGF0aCByZWZpZD0ibWFzdGVyLWNsYXNzcGF0aCIgLz4NCi0JCQk8YXJnIHZhbHVlPSItLXNvdXJjZUZvbGRlciIgLz4NCi0JCQk8YXJnIHZhbHVlPSIke2Jhc2VkaXJ9L2RvY3MiIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1vdXRwdXRGb2xkZXIiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJHtwcm9qZWN0LnNpdGUuZGlyfSIgLz4NCi0NCi0JCQk8YXJnIHZhbHVlPSItLXBhZ2VIZWFkZXIiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJHtiYXNlZGlyfS9kb2NzL3NpdGVfaGVhZGVyLmh0bWwiIC8+DQotCQkJDQotCQkJPGFyZyB2YWx1ZT0iLS1wYWdlRm9vdGVyIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiR7YmFzZWRpcn0vZG9jcy9zaXRlX2Zvb3Rlci5odG1sIiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tYW5hbHl0aWNzU25pcHBldCIgLz4NCi0JCQk8YXJnIHZhbHVlPSIke2Jhc2VkaXJ9L2RvY3Mvc2l0ZV9hbmFseXRpY3MuaHRtbCIgLz4NCi0JCQkJDQotCQkJPGFyZyB2YWx1ZT0iLS1hZFNuaXBwZXQiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJHtiYXNlZGlyfS9kb2NzL3NpdGVfYWRzLmh0bWwiIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1hbGlhcyIgLz4NCi0JCQk8YXJnIHZhbHVlPSJpbmRleD1vdmVydmlldyIgLz4NCi0NCi0JCQk8YXJnIHZhbHVlPSItLWFsaWFzIiAvPg0KLQkJCTxhcmcgdmFsdWU9InByb3BlcnRpZXM9c2V0dGluZ3MiIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1zdWJzdGl0dXRlIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiVWRVJTSU9OJT0ke2diLnZlcnNpb259IiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIlR08lPSR7ZGlzdHJpYnV0aW9uLnppcGZpbGV9IiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIlV0FSJT0ke2Rpc3RyaWJ1dGlvbi53YXJmaWxlfSIgLz4NCi0NCi0JCQk8YXJnIHZhbHVlPSItLXN1YnN0aXR1dGUiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJUZFRENMSUVOVCU9JHtmZWRjbGllbnQuemlwZmlsZX0iIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1zdWJzdGl0dXRlIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiVNQU5BR0VSJT0ke21hbmFnZXIuemlwZmlsZX0iIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1zdWJzdGl0dXRlIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiVBUEklPSR7Z2JhcGkuemlwZmlsZX0iIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1zdWJzdGl0dXRlIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiVFWFBSRVNTJT0ke2V4cHJlc3MuemlwZmlsZX0iIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1zdWJzdGl0dXRlIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiVCVUlMRERBVEUlPSR7Z2IudmVyc2lvbkRhdGV9IiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSIlSkdJVCU9JHtqZ2l0LnZlcnNpb259IiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tcHJvcGVydGllcyIgLz4NCi0JCQk8YXJnIHZhbHVlPSIlUFJPUEVSVElFUyU9JHtiYXNlZGlyfS9kaXN0cmliL2dpdGJsaXQucHJvcGVydGllcyIgLz4NCi0JCQkNCi0JCQk8YXJnIHZhbHVlPSItLW5vbWFya2Rvd24iIC8+DQotCQkJPGFyZyB2YWx1ZT0iJUJFR0lOQ09ERSU6JUVORENPREUlIiAvPg0KLQ0KLQkJCTxhcmcgdmFsdWU9Ii0tc3Vic3RpdHV0ZSIgLz4NCi0JCQk8YXJnIHZhbHVlPSImcXVvdDslQkVHSU5DT0RFJT0mbHQ7cHJlIGNsYXNzPSdwcmV0dHlwcmludCBsYW5nLWphdmEnJmd0OyZxdW90OyIgLz4NCi0NCi0JCQk8YXJnIHZhbHVlPSItLXN1YnN0aXR1dGUiIC8+DQotCQkJPGFyZyB2YWx1ZT0iJUVORENPREUlPSZsdDsvcHJlJmd0OyIgLz4NCi0NCi0JCQk8YXJnIHZhbHVlPSItLXJlZ2V4IiAvPg0KLQkJCTxhcmcgdmFsdWU9IiZxdW90O1xiKGlzc3VlKShccypbI10/fC0pezAsMX0oXGQrKVxiISEhJmx0O2EgaHJlZj0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvaXNzdWVzL2RldGFpbD9pZD0kMycmZ3Q7aXNzdWUgJDMmbHQ7L2EmZ3Q7JnF1b3Q7IiAvPg0KLQ0KLQkJPC9qYXZhPgkNCiAJPC90YXJnZXQ+DQogDQogDQogCTwhLS0NCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+IA0KLQkJQ29tcGlsZSBmcm9tIHNvdXJjZSwgcHVibGlzaCBiaW5hcmllcywgYW5kIGJ1aWxkICYgZGVwbG95IHNpdGUNCisJCUJ1aWxkIGFsbCBiaW5hcmllcyBhbmQgc2l0ZQ0KIAkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCiAJLS0+DQotCTx0YXJnZXQgbmFtZT0iYnVpbGRBbGwiIGRlcGVuZHM9ImJ1aWxkQXV0aG9yaXR5LGJ1aWxkR08sYnVpbGRXQVIsYnVpbGRFeHByZXNzLGJ1aWxkRmVkZXJhdGlvbkNsaWVudCxidWlsZE1hbmFnZXIsYnVpbGRBcGlMaWJyYXJ5LGJ1aWxkU2l0ZSI+CQkNCi0JCTwhLS0gQ2xlYW51cCAtLT4NCi0JCTxkZWxldGUgZGlyPSIke3Byb2plY3QuYnVpbGQuZGlyfSIgLz4NCi0JCTxkZWxldGUgZGlyPSIke3Byb2plY3Qud2FyLmRpcn0iIC8+DQotCQk8ZGVsZXRlIGRpcj0iJHtwcm9qZWN0LmRlcGxveS5kaXJ9IiAvPg0KLQkJPGRlbGV0ZSBkaXI9IiR7cHJvamVjdC5leHByZXNzLmRpcn0iIC8+DQotCTwvdGFyZ2V0Pg0KKwk8dGFyZ2V0IG5hbWU9ImJ1aWxkQWxsIiBkZXBlbmRzPSJidWlsZEF1dGhvcml0eSxidWlsZEdPLGJ1aWxkV0FSLGJ1aWxkRXhwcmVzcyxidWlsZEZlZGVyYXRpb25DbGllbnQsYnVpbGRNYW5hZ2VyLGJ1aWxkQXBpTGlicmFyeSxidWlsZFNpdGUiIC8+CQkNCiANCiAJDQogCTwhLS0NCkBAIC0xMTg5LDE2ICs3NDcsNyBAQAogCS0tPg0KIAk8dGFyZ2V0IG5hbWU9InVwZGF0ZUdoUGFnZXMiIGRlcGVuZHM9ImJ1aWxkU2l0ZSI+DQogCQk8IS0tIEJ1aWxkIGdoLXBhZ2VzIGJyYW5jaCAtLT4NCi0JCTxqYXZhIGNsYXNzcGF0aD0iJHtwcm9qZWN0LmJ1aWxkLmRpcn0iIGNsYXNzbmFtZT0iY29tLmdpdGJsaXQuYnVpbGQuQnVpbGRHaFBhZ2VzIj4NCi0JCQk8Y2xhc3NwYXRoIHJlZmlkPSJtYXN0ZXItY2xhc3NwYXRoIiAvPg0KLQkJCTxhcmcgdmFsdWU9Ii0tc291cmNlRm9sZGVyIiAvPg0KLQkJCTxhcmcgdmFsdWU9IiR7YmFzZWRpcn0vdGFyZ2V0L3NpdGUiIC8+DQotDQotCQkJPGFyZyB2YWx1ZT0iLS1yZXBvc2l0b3J5IiAvPg0KLQkJCTxhcmcgdmFsdWU9IiR7YmFzZWRpcn0iIC8+DQotCQkJDQotCQkJPGFyZyB2YWx1ZT0iLS1vYmxpdGVyYXRlIiAvPg0KLQkJPC9qYXZhPg0KKwkJPG14OmdocGFnZXMgcmVwb3NpdG9yeWRpcj0iJHtiYXNlZGlyfSIgb2JsaXRlcmF0ZT0idHJ1ZSIgLz4NCiAJPC90YXJnZXQ+DQogCQ0KIA0KQEAgLTEyMDcsNjkgKzc1Niw1MSBAQAogCQlQdWJsaXNoIGJpbmFyaWVzIHRvIEdvb2dsZSBDb2RlDQogCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KIAktLT4NCi0JPHRhcmdldCBuYW1lPSJwdWJsaXNoQmluYXJpZXMiIGRlcGVuZHM9ImJ1aWxkR08sYnVpbGRXQVIsYnVpbGRFeHByZXNzLGJ1aWxkRmVkZXJhdGlvbkNsaWVudCxidWlsZE1hbmFnZXIsYnVpbGRBcGlMaWJyYXJ5IiBkZXNjcmlwdGlvbj0iUHVibGlzaCB0aGUgR2l0YmxpdCBiaW5hcmllcyB0byBHb29nbGUgQ29kZSI+DQorCTx0YXJnZXQgbmFtZT0icHVibGlzaEJpbmFyaWVzIiBkZXBlbmRzPSJjbGVhbixidWlsZEdPLGJ1aWxkV0FSLGJ1aWxkRXhwcmVzcyxidWlsZEZlZGVyYXRpb25DbGllbnQsYnVpbGRNYW5hZ2VyLGJ1aWxkQXBpTGlicmFyeSIgZGVzY3JpcHRpb249IlB1Ymxpc2ggdGhlIEdpdGJsaXQgYmluYXJpZXMgdG8gR29vZ2xlIENvZGUiPg0KIA0KLQkJPGVjaG8+VXBsb2FkaW5nIEdpdGJsaXQgJHtnYi52ZXJzaW9ufSBiaW5hcmllczwvZWNobz4NCisJCTxlY2hvPlVwbG9hZGluZyBHaXRibGl0ICR7cHJvamVjdC52ZXJzaW9ufSBiaW5hcmllczwvZWNobz4NCiANCi0JCTwhLS0gVXBsb2FkIEdpdGJsaXQgR08gWklQIGZpbGUgLS0+DQotCQk8Z2N1cGxvYWQgDQotCQkJIHVzZXJuYW1lPSIke2dvb2dsZWNvZGUudXNlcn0iIA0KLQkJCSBwYXNzd29yZD0iJHtnb29nbGVjb2RlLnBhc3N3b3JkfSIgDQotCQkJIHByb2plY3RuYW1lPSJnaXRibGl0IiANCi0JCQkgZmlsZW5hbWU9IiR7cHJvamVjdC50YXJnZXQuZGlyfS8ke2Rpc3RyaWJ1dGlvbi56aXBmaWxlfSIgDQotCQkJIHRhcmdldGZpbGVuYW1lPSJnaXRibGl0LSR7Z2IudmVyc2lvbn0uemlwIg0KLQkJCSBzdW1tYXJ5PSJHaXRibGl0IEdPIHYke2diLnZlcnNpb259IChzdGFuZGFsb25lLCBpbnRlZ3JhdGVkIEdpdGJsaXQgc2VydmVyKSINCi0JCQkgbGFiZWxzPSJGZWF0dXJlZCwgVHlwZS1QYWNrYWdlLCBPcFN5cy1BbGwiIC8+DQorCQk8IS0tIFVwbG9hZCBHaXRibGl0IEdPIFdpbmRvd3MgWklQIGZpbGUgLS0+DQorCQk8bXg6Z2N1cGxvYWQgDQorCQkJIHNvdXJjZUZpbGU9IiR7ZGlzdHJpYnV0aW9uLnppcGZpbGV9IiANCisJCQkgdGFyZ2V0RmlsZT0iZ2l0YmxpdC0ke3Byb2plY3QudmVyc2lvbn0uemlwIg0KKwkJCSBkZXNjcmlwdGlvbj0iR2l0YmxpdCBHTyB2JHtwcm9qZWN0LnZlcnNpb259IChzdGFuZGFsb25lLCBpbnRlZ3JhdGVkIEdpdGJsaXQgc2VydmVyIGZvciBXaW5kb3dzKSIgLz4NCisNCisJCTwhLS0gVXBsb2FkIEdpdGJsaXQgR08gTGludXgvVW5peCB0YXIuZ3ogZmlsZSAtLT4NCisJCTxteDpnY3VwbG9hZA0KKwkJCSBzb3VyY2VGaWxlPSIke2Rpc3RyaWJ1dGlvbi50Z3pmaWxlfSIgDQorCQkJIHRhcmdldEZpbGU9ImdpdGJsaXQtJHtwcm9qZWN0LnZlcnNpb259LnRhci5neiINCisJCQkgZGVzY3JpcHRpb249IkdpdGJsaXQgR08gdiR7cHJvamVjdC52ZXJzaW9ufSAoc3RhbmRhbG9uZSwgaW50ZWdyYXRlZCBHaXRibGl0IHNlcnZlciBmb3IgTGludXgvVW5peCkiIC8+DQogDQogCQk8IS0tIFVwbG9hZCBHaXRibGl0IFdBUiBmaWxlIC0tPg0KLQkJPGdjdXBsb2FkIA0KLQkJICAgICB1c2VybmFtZT0iJHtnb29nbGVjb2RlLnVzZXJ9IiANCi0JCSAgICAgcGFzc3dvcmQ9IiR7Z29vZ2xlY29kZS5wYXNzd29yZH0iIA0KLQkJICAgICBwcm9qZWN0bmFtZT0iZ2l0YmxpdCIgDQotCQkgICAgIGZpbGVuYW1lPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHtkaXN0cmlidXRpb24ud2FyZmlsZX0iIA0KLQkJICAgICB0YXJnZXRmaWxlbmFtZT0iZ2l0YmxpdC0ke2diLnZlcnNpb259LndhciINCi0JCSAgICAgc3VtbWFyeT0iR2l0YmxpdCBXQVIgdiR7Z2IudmVyc2lvbn0gKHN0YW5kYXJkIFdBUiB3ZWJhcHAgZm9yIHNlcnZsZXQgY29udGFpbmVycykiDQotCQkgICAgIGxhYmVscz0iRmVhdHVyZWQsIFR5cGUtUGFja2FnZSwgT3BTeXMtQWxsIiAvPg0KKwkJPG14OmdjdXBsb2FkIA0KKwkJICAgICBzb3VyY2VGaWxlPSIke2Rpc3RyaWJ1dGlvbi53YXJmaWxlfSIgDQorCQkgICAgIHRhcmdldEZpbGU9ImdpdGJsaXQtJHtwcm9qZWN0LnZlcnNpb259LndhciINCisJCSAgICAgZGVzY3JpcHRpb249IkdpdGJsaXQgV0FSIHYke3Byb2plY3QudmVyc2lvbn0gKHN0YW5kYXJkIFdBUiB3ZWJhcHAgZm9yIHNlcnZsZXQgY29udGFpbmVycykiIC8+DQogDQogCQk8IS0tIFVwbG9hZCBHaXRibGl0IEZlZENsaWVudCAtLT4NCi0JCTxnY3VwbG9hZCANCi0JCQl1c2VybmFtZT0iJHtnb29nbGVjb2RlLnVzZXJ9IiANCi0JCQlwYXNzd29yZD0iJHtnb29nbGVjb2RlLnBhc3N3b3JkfSIgDQotCQkJcHJvamVjdG5hbWU9ImdpdGJsaXQiIA0KLQkJCWZpbGVuYW1lPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHtmZWRjbGllbnQuemlwZmlsZX0iIA0KLQkJCXRhcmdldGZpbGVuYW1lPSJmZWRjbGllbnQtJHtnYi52ZXJzaW9ufS56aXAiDQotCQkJc3VtbWFyeT0iR2l0YmxpdCBGZWRlcmF0aW9uIENsaWVudCB2JHtnYi52ZXJzaW9ufSAoY29tbWFuZC1saW5lIHRvb2wgdG8gY2xvbmUgZGF0YSBmcm9tIGZlZGVyYXRlZCBHaXRibGl0IGluc3RhbmNlcykiDQotCQkJbGFiZWxzPSJGZWF0dXJlZCwgVHlwZS1QYWNrYWdlLCBPcFN5cy1BbGwiIC8+DQorCQk8bXg6Z2N1cGxvYWQgDQorCQkJc291cmNlRmlsZT0iJHtmZWRjbGllbnQuemlwZmlsZX0iIA0KKwkJCXRhcmdldEZpbGU9ImZlZGNsaWVudC0ke3Byb2plY3QudmVyc2lvbn0uemlwIg0KKwkJCWRlc2NyaXB0aW9uPSJHaXRibGl0IEZlZGVyYXRpb24gQ2xpZW50IHYke3Byb2plY3QudmVyc2lvbn0gKGNvbW1hbmQtbGluZSB0b29sIHRvIGNsb25lIGRhdGEgZnJvbSBmZWRlcmF0ZWQgR2l0YmxpdCBpbnN0YW5jZXMpIiAvPg0KIA0KIAkJPCEtLSBVcGxvYWQgR2l0YmxpdCBNYW5hZ2VyIC0tPg0KLQkJPGdjdXBsb2FkIA0KLQkJCXVzZXJuYW1lPSIke2dvb2dsZWNvZGUudXNlcn0iIA0KLQkJCXBhc3N3b3JkPSIke2dvb2dsZWNvZGUucGFzc3dvcmR9IiANCi0JCQlwcm9qZWN0bmFtZT0iZ2l0YmxpdCIgDQotCQkJZmlsZW5hbWU9IiR7cHJvamVjdC50YXJnZXQuZGlyfS8ke21hbmFnZXIuemlwZmlsZX0iIA0KLQkJCXRhcmdldGZpbGVuYW1lPSJtYW5hZ2VyLSR7Z2IudmVyc2lvbn0uemlwIg0KLQkJCXN1bW1hcnk9IkdpdGJsaXQgTWFuYWdlciB2JHtnYi52ZXJzaW9ufSAoU3dpbmcgdG9vbCB0byByZW1vdGVseSBhZG1pbmlzdGVyIGEgR2l0YmxpdCBzZXJ2ZXIpIg0KLQkJCWxhYmVscz0iRmVhdHVyZWQsIFR5cGUtUGFja2FnZSwgT3BTeXMtQWxsIiAvPg0KKwkJPG14OmdjdXBsb2FkDQorCQkJc291cmNlRmlsZT0iJHttYW5hZ2VyLnppcGZpbGV9IiANCisJCQl0YXJnZXRGaWxlPSJtYW5hZ2VyLSR7cHJvamVjdC52ZXJzaW9ufS56aXAiDQorCQkJZGVzY3JpcHRpb249IkdpdGJsaXQgTWFuYWdlciB2JHtwcm9qZWN0LnZlcnNpb259IChTd2luZyB0b29sIHRvIHJlbW90ZWx5IGFkbWluaXN0ZXIgYSBHaXRibGl0IHNlcnZlcikiIC8+DQogDQogCQk8IS0tIFVwbG9hZCBHaXRibGl0IEFQSSBMaWJyYXJ5IC0tPg0KLQkJPGdjdXBsb2FkIA0KLQkJCXVzZXJuYW1lPSIke2dvb2dsZWNvZGUudXNlcn0iIA0KLQkJCXBhc3N3b3JkPSIke2dvb2dsZWNvZGUucGFzc3dvcmR9IiANCi0JCQlwcm9qZWN0bmFtZT0iZ2l0YmxpdCIgDQotCQkJZmlsZW5hbWU9IiR7cHJvamVjdC50YXJnZXQuZGlyfS8ke2diYXBpLnppcGZpbGV9IiANCi0JCQl0YXJnZXRmaWxlbmFtZT0iZ2JhcGktJHtnYi52ZXJzaW9ufS56aXAiDQotCQkJc3VtbWFyeT0iR2l0YmxpdCBBUEkgTGlicmFyeSB2JHtnYi52ZXJzaW9ufSAoSlNPTiBSUEMgbGlicmFyeSB0byBpbnRlZ3JhdGUgd2l0aCB5b3VyIHNvZnR3YXJlKSINCi0JCQlsYWJlbHM9IkZlYXR1cmVkLCBUeXBlLVBhY2thZ2UsIE9wU3lzLUFsbCIgLz4NCisJCTxteDpnY3VwbG9hZA0KKwkJCXNvdXJjZUZpbGU9IiR7Z2JhcGkuemlwZmlsZX0iIA0KKwkJCXRhcmdldEZpbGU9ImdiYXBpLSR7cHJvamVjdC52ZXJzaW9ufS56aXAiDQorCQkJZGVzY3JpcHRpb249IkdpdGJsaXQgQVBJIExpYnJhcnkgdiR7cHJvamVjdC52ZXJzaW9ufSAoSlNPTiBSUEMgbGlicmFyeSB0byBpbnRlZ3JhdGUgd2l0aCB5b3VyIHNvZnR3YXJlKSIgLz4NCiANCiAJCTwhLS0gVXBsb2FkIEdpdGJsaXQgRXhwcmVzcyBmb3IgUmVkSGF0IE9wZW5TaGlmdCAtLT4NCi0JCTxnY3VwbG9hZCANCi0JCQl1c2VybmFtZT0iJHtnb29nbGVjb2RlLnVzZXJ9IiANCi0JCQlwYXNzd29yZD0iJHtnb29nbGVjb2RlLnBhc3N3b3JkfSIgDQotCQkJcHJvamVjdG5hbWU9ImdpdGJsaXQiIA0KLQkJCWZpbGVuYW1lPSIke3Byb2plY3QudGFyZ2V0LmRpcn0vJHtleHByZXNzLnppcGZpbGV9IiANCi0JCQl0YXJnZXRmaWxlbmFtZT0iZXhwcmVzcy0ke2diLnZlcnNpb259LnppcCINCi0JCQlzdW1tYXJ5PSJHaXRibGl0IEV4cHJlc3MgdiR7Z2IudmVyc2lvbn0gKHJ1biBHaXRibGl0IG9uIFJlZEhhdCdzIE9wZW5TaGlmdCBjbG91ZCkiDQotCQkJbGFiZWxzPSJGZWF0dXJlZCwgVHlwZS1QYWNrYWdlLCBPcFN5cy1BbGwiIC8+DQorCQk8bXg6Z2N1cGxvYWQgDQorCQkJc291cmNlRmlsZT0iJHtleHByZXNzLnppcGZpbGV9IiANCisJCQl0YXJnZXRGaWxlPSJleHByZXNzLSR7cHJvamVjdC52ZXJzaW9ufS56aXAiDQorCQkJZGVzY3JpcHRpb249IkdpdGJsaXQgRXhwcmVzcyB2JHtwcm9qZWN0LnZlcnNpb259IChydW4gR2l0YmxpdCBvbiBSZWRIYXQncyBPcGVuU2hpZnQgY2xvdWQpIiAvPg0KIA0KIAk8L3RhcmdldD4NCiANCkBAIC0xMjgwLDkgKzgxMSw5IEBACiAJCVlvdSBtdXN0IGFkZCBleHQvY29tbW9ucy1uZXQtMS40LjAuamFyIHRvIHlvdXIgQU5UIGNsYXNzcGF0aC4NCiAJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQogCS0tPg0KLQk8dGFyZ2V0IG5hbWU9InB1Ymxpc2hTaXRlIiBkZXBlbmRzPSJidWlsZFNpdGUsdXBkYXRlR2hQYWdlcyIgZGVzY3JpcHRpb249IlB1Ymxpc2ggdGhlIEdpdGJsaXQgc2l0ZSB0byBhIHdlYnNlcnZlciAocmVxdWlyZXMgZXh0L2NvbW1vbnMtbmV0LTEuNC4wLmphcikiID4NCisJPHRhcmdldCBuYW1lPSJwdWJsaXNoU2l0ZSIgZGVwZW5kcz0iY2xlYW4sYnVpbGRTaXRlLHVwZGF0ZUdoUGFnZXMiIGRlc2NyaXB0aW9uPSJQdWJsaXNoIHRoZSBHaXRibGl0IHNpdGUgdG8gYSB3ZWJzZXJ2ZXIgKHJlcXVpcmVzIGV4dC9jb21tb25zLW5ldC0xLjQuMC5qYXIpIiA+DQogDQotCQk8ZWNobz5VcGxvYWRpbmcgR2l0YmxpdCAke2diLnZlcnNpb259IHdlYnNpdGU8L2VjaG8+DQorCQk8ZWNobz5VcGxvYWRpbmcgR2l0YmxpdCAke3Byb2plY3QudmVyc2lvbn0gd2Vic2l0ZTwvZWNobz4NCiANCiAJCTxmdHAgc2VydmVyPSIke2Z0cC5zZXJ2ZXJ9Ig0KIAkJCXVzZXJpZD0iJHtmdHAudXNlcn0iDQpAQCAtMTI5MCw3ICs4MjEsNyBAQAogCQkJcmVtb3RlZGlyPSIke2Z0cC5kaXJ9Ig0KIAkJCXBhc3NpdmU9InRydWUiDQogCQkJdmVyYm9zZT0ieWVzIj4NCi0JCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnNpdGUuZGlyfSIgLz4NCisJCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5zaXRlVGFyZ2V0RGlyZWN0b3J5fSIgLz4NCiAJCTwvZnRwPg0KIAk8L3RhcmdldD4NCiANCkBAIC0xMzAwLDEwICs4MzEsMTg5IEBACiAJCUNvbXBpbGUgZnJvbSBzb3VyY2UsIHB1Ymxpc2ggYmluYXJpZXMsIGFuZCBidWlsZCAmIGRlcGxveSBzaXRlDQogCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KIAktLT4NCi0JPHRhcmdldCBuYW1lPSJwdWJsaXNoQWxsIiBkZXBlbmRzPSJwdWJsaXNoQmluYXJpZXMscHVibGlzaFNpdGUiPg0KLQkJPCEtLSBDbGVhbnVwIC0tPg0KLQkJPGRlbGV0ZSBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJ9IiAvPg0KLQkJPGRlbGV0ZSBkaXI9IiR7cHJvamVjdC53YXIuZGlyfSIgLz4NCi0JCTxkZWxldGUgZGlyPSIke3Byb2plY3QuZGVwbG95LmRpcn0iIC8+DQorCTx0YXJnZXQgbmFtZT0icHVibGlzaEFsbCIgZGVwZW5kcz0icHVibGlzaEJpbmFyaWVzLHB1Ymxpc2hTaXRlIiAvPg0KKw0KKwkNCisJPCEtLQ0KKwkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gDQorCQlUYWcgYSBuZXcgdmVyc2lvbiBhbmQgcHJlcGFyZSBmb3IgdGhlIG5leHQgZGV2ZWxvcG1lbnQgY3ljbGUuDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fiANCisJLS0+DQorCTx0YXJnZXQgbmFtZT0idGFnUmVsZWFzZSIgZGVwZW5kcz0icHJlcGFyZSI+DQorCQk8IS0tIHJlbGVhc2UgLS0+DQorCQk8cHJvcGVydHkgbmFtZT0iZHJ5cnVuIiB2YWx1ZT0iZmFsc2UiIC8+DQorCQk8bXg6dmVyc2lvbiBzdGFnZT0icmVsZWFzZSIgZHJ5cnVuPSIke2RyeXJ1bn0iIC8+CQkNCisJCTwhLS0gY29tbWl0IGJ1aWxkLm1veGllICYgcmVsZWFzZXMubW94aWUgKGF1dG9tYXRpYykgLS0+DQorCQk8bXg6Y29tbWl0IHNob3d0aXRsZT0ibm8iPg0KKwkJICAgIDxtZXNzYWdlPlByZXBhcmUgJHtwcm9qZWN0LnZlcnNpb259IHJlbGVhc2U8L21lc3NhZ2U+DQorCQkJPHRhZyBuYW1lPSJ2JHtwcm9qZWN0LnZlcnNpb259Ij4NCisJCQkJPG1lc3NhZ2U+JHtwcm9qZWN0Lm5hbWV9ICR7cHJvamVjdC52ZXJzaW9ufSByZWxlYXNlPC9tZXNzYWdlPg0KKwkJCTwvdGFnPg0KKwkJPC9teDpjb21taXQ+DQorDQorCQk8IS0tIG5leHQgY3ljbGUgLS0+DQorCQk8bXg6dmVyc2lvbiBzdGFnZT0ic25hcHNob3QiIGluY3JlbWVudE51bWJlcj0iaW5jcmVtZW50YWwiIGRyeXJ1bj0iJHtkcnlydW59IiAvPg0KKwkJPG14OmNvbW1pdCBzaG93dGl0bGU9Im5vIj4NCisJCSAgICA8bWVzc2FnZT5SZXNldCBidWlsZCBpZGVudGlmaWVycyBmb3IgbmV4dCBkZXZlbG9wbWVudCBjeWNsZTwvbWVzc2FnZT4NCisJCTwvbXg6Y29tbWl0Pg0KIAk8L3RhcmdldD4NCisNCisJCQ0KKwk8IS0tDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwkJQnVpbGQgR2l0YmxpdCBEb2NzDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwktLT4NCisJPG1hY3JvZGVmIG5hbWU9ImdlbmVyYXRlRG9jcyI+DQorCQk8YXR0cmlidXRlIG5hbWU9InRvRGlyIi8+DQorCQk8c2VxdWVudGlhbD4NCisJCQk8bXg6ZG9jIHRvRGlyPSJAe3RvRGlyfSIgbWluaWZ5PSJ0cnVlIiBjdXN0b21sZXNzPSJjdXN0b20ubGVzcyI+DQorCQkJCTxzdHJ1Y3R1cmU+DQorCQkJCQk8bWVudSBuYW1lPSJhYm91dCI+DQorCQkJCQkJPHBhZ2UgbmFtZT0ib3ZlcnZpZXciIHNyYz0ic2l0ZWluZGV4Lm1rZCIgb3V0PSJpbmRleC5odG1sIiBoZWFkZXJMaW5rcz0iZmFsc2UiIC8+DQorCQkJCQkJPHBhZ2UgbmFtZT0iZmVhdHVyZXMiIHNyYz0iZmVhdHVyZXMubWtkIiAvPg0KKwkJCQkJPC9tZW51Pg0KKwkJCQkJPG1lbnUgbmFtZT0iZG9jdW1lbnRhdGlvbiI+DQorCQkJCQkJPHBhZ2UgbmFtZT0ic2V0dXAiIHNyYz0ic2V0dXAubWtkIiAvPg0KKwkJCQkJCTxwYWdlIG5hbWU9ImZlZGVyYXRpb24iIHNyYz0iZmVkZXJhdGlvbi5ta2QiIC8+DQorCQkJCQkJPGRpdmlkZXIgLz4NCisJCQkJCQk8cGFnZSBuYW1lPSJmYXEiIHNyYz0iZmFxLm1rZCIgLz4NCisJCQkJCQk8cGFnZSBuYW1lPSJzZXR0aW5ncyIgc3JjPSJwcm9wZXJ0aWVzLm1rZCIgLz4NCisJCQkJCQk8ZGl2aWRlciAvPg0KKwkJCQkJCTxwYWdlIG5hbWU9ImRlc2lnbiIgc3JjPSJkZXNpZ24ubWtkIiAvPg0KKwkJCQkJCTxwYWdlIG5hbWU9InJwYyIgc3JjPSJycGMubWtkIiAvPg0KKwkJCQkJPC9tZW51Pg0KKwkJCQkJPG1lbnUgbmFtZT0iY2hhbmdlbG9nIj4NCisJCQkJCQk8cGFnZSBuYW1lPSJjdXJyZW50IHJlbGVhc2UiIHNyYz0icmVsZWFzZWN1cnJlbnQubWtkIiAvPg0KKwkJCQkJCTxwYWdlIG5hbWU9Im9sZGVyIHJlbGVhc2VzIiBzcmM9InJlbGVhc2VoaXN0b3J5Lm1rZCIgLz4NCisJCQkJCTwvbWVudT4NCisJCQkJCTxtZW51IG5hbWU9ImxpbmtzIj4NCisJCQkJCQk8bGluayBuYW1lPSJEZW1vIiBzcmM9Imh0dHBzOi8vZGVtby1naXRibGl0LnJoY2xvdWQuY29tIiAvPg0KKwkJCQkJCTxkaXZpZGVyIC8+DQorCQkJCQkJPGxpbmsgbmFtZT0iR2l0aHViIiBzcmM9IiR7cHJvamVjdC5zY21Vcmx9IiAvPg0KKwkJCQkJCTxsaW5rIG5hbWU9Iklzc3VlcyIgc3JjPSIke3Byb2plY3QuaXNzdWVzVXJsfSIgLz4NCisJCQkJCQk8bGluayBuYW1lPSJEaXNjdXNzaW9uIiBzcmM9IiR7cHJvamVjdC5mb3J1bVVybH0iIC8+DQorCQkJCQkJPGxpbmsgbmFtZT0iR29vZ2xlKyIgc3JjPSIke3Byb2plY3Quc29jaWFsTmV0d29ya1VybH0iIC8+DQorCQkJCQkJPGxpbmsgbmFtZT0iT2hsb2giIHNyYz0iaHR0cDovL3d3dy5vaGxvaC5uZXQvcC9naXRibGl0IiAvPg0KKwkJCQkJPC9tZW51Pg0KKwkJCQk8L3N0cnVjdHVyZT4NCisJCQkJDQorCQkJCTxwcm9wZXJ0aWVzIHRva2VuPSIlUFJPUEVSVElFUyUiIGZpbGU9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YS9naXRibGl0LnByb3BlcnRpZXMiIC8+DQorCQkJCQ0KKwkJCQk8cmVnZXggc2VhcmNoUGF0dGVybj0iXGIoaXNzdWUpKFxzKlsjXT98LSl7MCwxfShcZCspXGIiIHJlcGxhY2VQYXR0ZXJuPSImbHQ7YSBocmVmPSdodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9pc3N1ZXMvZGV0YWlsP2lkPSQzJyZndDtpc3N1ZSAkMyZsdDsvYSZndDsiIC8+DQorCQkJCQ0KKwkJCQk8IS0tIFNldCB0aGUgbG9nbyBmcm9tIHRoZSBteDpkb2MgcmVzb3VyY2VzIC0tPg0KKwkJCQk8bG9nbyBmaWxlPSIke3Byb2plY3QucmVzb3VyY2VzLmRpcn0vZ2l0Ymx0XzI1X3doaXRlLnBuZyIgLz4NCisJCQkJPGZhdmljb24gZmlsZT0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9L2dpdGJsdC1mYXZpY29uLnBuZyIgLz4NCisJCQkJDQorCQkJCTxyZXNvdXJjZT4NCisJCQkJCTxmaWxlc2V0IGRpcj0iJHtwcm9qZWN0LnJlc291cmNlcy5kaXJ9Ij4NCisJCQkJCQk8aW5jbHVkZSBuYW1lPSJsb2NrX2dvXzE2eDE2LnBuZyIgLz4NCisJCQkJCQk8aW5jbHVkZSBuYW1lPSJsb2NrX3B1bGxfMTZ4MTYucG5nIiAvPg0KKwkJCQkJCTxpbmNsdWRlIG5hbWU9InNoaWVsZF8xNngxNi5wbmciIC8+DQorCQkJCQkJPGluY2x1ZGUgbmFtZT0iY29sZF8xNngxNi5wbmciIC8+DQorCQkJCQkJPGluY2x1ZGUgbmFtZT0iYnVnXzE2eDE2LnBuZyIgLz4NCisJCQkJCQk8aW5jbHVkZSBuYW1lPSJib29rXzE2eDE2LnBuZyIgLz4NCisJCQkJCQk8aW5jbHVkZSBuYW1lPSJibGFuay5wbmciIC8+DQorCQkJCQkJPGluY2x1ZGUgbmFtZT0iZmVkZXJhdGVkXzE2eDE2LnBuZyIgLz4NCisJCQkJCQk8aW5jbHVkZSBuYW1lPSJhcnJvd19wYWdlLnBuZyIgLz4NCisJCQkJCTwvZmlsZXNldD4NCisJCQkJPC9yZXNvdXJjZT4NCisJCQk8L214OmRvYz4NCisJICAgIDwvc2VxdWVudGlhbD4NCisJPC9tYWNyb2RlZj4NCisJDQorCTwhLS0NCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+IA0KKwkJTWFjcm8gdG8gY3JlYXRlIGEgcHJpc3RpbmUgZGF0YSBkaXJlY3RvcnkgZm9yIHRoZSB0YXJnZXQgYnVpbGQNCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorCS0tPg0KKwk8bWFjcm9kZWYgbmFtZT0icHJlcGFyZURhdGFEaXJlY3RvcnkiPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ0b0RpciIvPg0KKwkJPHNlcXVlbnRpYWw+DQorCQkJPG1rZGlyIGRpcj0iQHt0b0Rpcn0iIC8+DQorCQkJPGNvcHkgdG9kaXI9IkB7dG9EaXJ9IiBvdmVyd3JpdGU9ImZhbHNlIj4NCisJCQkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QuZGlzdHJpYi5kaXJ9L2RhdGEiPg0KKwkJCQkJPGluY2x1ZGUgbmFtZT0idXNlcnMuY29uZiIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9InByb2plY3RzLmNvbmYiIC8+DQorCQkJCQk8aW5jbHVkZSBuYW1lPSJnaXRibGl0LnByb3BlcnRpZXMiIC8+DQorCQkJCTwvZmlsZXNldD4NCisJCQk8L2NvcHk+DQorCQkJPG1rZGlyIGRpcj0iQHt0b0Rpcn0vZ3Jvb3Z5IiAvPg0KKwkJCTxjb3B5IHRvZGlyPSJAe3RvRGlyfS9ncm9vdnkiPg0KKwkJCQk8ZmlsZXNldCBkaXI9IiR7cHJvamVjdC5kaXN0cmliLmRpcn0vZGF0YS9ncm9vdnkiPgkJCQkJDQorCQkJCQk8aW5jbHVkZSBuYW1lPSJzZW5kbWFpbC5ncm9vdnkiIC8+DQorCQkJCQk8aW5jbHVkZSBuYW1lPSJzZW5kbWFpbC1odG1sLmdyb292eSIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9ImplbmtpbnMuZ3Jvb3Z5IiAvPg0KKwkJCQkJPGluY2x1ZGUgbmFtZT0icHJvdGVjdC1yZWZzLmdyb292eSIgLz4NCisJCQkJCTxpbmNsdWRlIG5hbWU9ImZvZ2J1Z3ouZ3Jvb3Z5IiAvPg0KKwkJCQkJPGluY2x1ZGUgbmFtZT0idGhlYnVnZ2VuaWUuZ3Jvb3Z5IiAvPg0KKwkJCQk8L2ZpbGVzZXQ+DQorCQkJPC9jb3B5Pg0KKyAgICAgIDwvc2VxdWVudGlhbD4NCisJPC9tYWNyb2RlZj4NCisJDQorCTwhLS0NCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+IA0KKwkJTWFjcm8gdG8gdXBsb2FkIGJpbmFyaWVzIHRvIEdvb2dsZUNvZGUNCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorCS0tPg0KKwk8bWFjcm9kZWYgbmFtZT0iZ29vZ2xlVXBsb2FkIj4NCisJCTxhdHRyaWJ1dGUgbmFtZT0ic291cmNlRmlsZSIvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRGaWxlIi8+DQorCQk8YXR0cmlidXRlIG5hbWU9ImRlc2NyaXB0aW9uIi8+DQorCQk8c2VxdWVudGlhbD4NCisJCQk8Z2N1cGxvYWQgDQorCQkJCXVzZXJuYW1lPSIke2dvb2dsZWNvZGUudXNlcn0iIA0KKwkJCQlwYXNzd29yZD0iJHtnb29nbGVjb2RlLnBhc3N3b3JkfSIgDQorCQkJCXByb2plY3RuYW1lPSJnaXRibGl0IiANCisJCQkJZmlsZW5hbWU9IiR7cHJvamVjdC50YXJnZXREaXJlY3Rvcnl9L0B7c291cmNlRmlsZX0iIA0KKwkJCQl0YXJnZXRmaWxlbmFtZT0iQHt0YXJnZXRGaWxlfSINCisJCQkJc3VtbWFyeT0iQHtkZXNjcmlwdGlvbn0iDQorCQkJCWxhYmVscz0iRmVhdHVyZWQsIFR5cGUtUGFja2FnZSwgT3BTeXMtQWxsIiAvPgkJDQorCSAgICAgPC9zZXF1ZW50aWFsPg0KKwk8L21hY3JvZGVmPg0KKw0KKw0KKwk8IS0tDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwkJSW5zdGFsbCBHaXRibGl0IEpBUiBmb3IgdXNhZ2UgYXMgTWF2ZW4gbW9kdWxlDQorCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKwktLT4NCisJPHRhcmdldCBuYW1lPSJpbnN0YWxsTWF2ZW4iIGRlcGVuZHM9ImNvbXBpbGUiIGRlc2NyaXB0aW9uPSJJbnN0YWxsIEdpdGJsaXQgSkFSIGFzIE1hdmVuIG1vZHVsZSI+DQorCQk8bG9jYWwgbmFtZT0icHJvamVjdC5qYXIiIC8+DQorCQk8cHJvcGVydHkgbmFtZT0icHJvamVjdC5qYXIiIHZhbHVlPSIke3Byb2plY3Qub3V0cHV0RGlyZWN0b3J5fS9naXRibGl0LmphciIgLz4NCisJCTxteDpqYXIgZGVzdGZpbGU9IiR7cHJvamVjdC5qYXJ9IiBpbmNsdWRlcmVzb3VyY2VzPSJ0cnVlIiAvPg0KKw0KKwkJPGV4ZWMgZXhlY3V0YWJsZT0ibXZuIj4NCisJCQk8YXJnIHZhbHVlPSJpbnN0YWxsOmluc3RhbGwtZmlsZSIgLz4NCisJCQk8YXJnIHZhbHVlPSItRGZpbGU9JHtwcm9qZWN0Lmphcn0iIC8+DQorCQkJPGFyZyB2YWx1ZT0iLURwb21GaWxlPSR7YmFzZWRpcn0vcG9tLnhtbCIgLz4NCisJCQk8YXJnIHZhbHVlPSItRGNyZWF0ZUNoZWNrc3VtPXRydWUiIC8+DQorCQk8L2V4ZWM+DQorCTwvdGFyZ2V0Pg0KKw0KKwk8IS0tDQorICAgIAl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KKyAgICAJVXBsb2FkIEdpdGJsaXQgSkFSIHRvIHJlbW90ZSBNYXZlbiByZXBvc2l0b3J5DQorICAgIAkNCisgICAgCWJ1aWxkLnByb3BlcnRpZXM6DQorICAgIAkgICBwcm9qZWN0Lm1hdmVuLnJlcG8udXJsID0gaHR0cDovL3doYXRldmVyLmNvbS9tYXZlbjINCisgICAgCSAgIHByb2plY3QubWF2ZW4ucmVwby5pZCA9IHdoYXRldmVySWQNCisgICAgCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQorICAgIC0tPg0KKwk8dGFyZ2V0IG5hbWU9InVwbG9hZE1hdmVuIiBkZXBlbmRzPSJjb21waWxlIiBkZXNjcmlwdGlvbj0iVXBsb2FkIEdpdGJsaXQgSkFSIHRvIHJlbW90ZSBNYXZlbiByZXBvc2l0b3J5Ij4NCisJCTxsb2NhbCBuYW1lPSJwcm9qZWN0LmphciIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LmphciIgdmFsdWU9IiR7cHJvamVjdC5vdXRwdXREaXJlY3Rvcnl9L2dpdGJsaXQuamFyIiAvPg0KKwkJPG14OmphciBkZXN0ZmlsZT0iJHtwcm9qZWN0Lmphcn0iIGluY2x1ZGVyZXNvdXJjZXM9InRydWUiIC8+DQorDQorCQk8ZXhlYyBleGVjdXRhYmxlPSJtdm4iPg0KKwkJCTxhcmcgdmFsdWU9ImRlcGxveTpkZXBsb3ktZmlsZSIgLz4NCisJCQk8YXJnIHZhbHVlPSItRGZpbGU9JHtwcm9qZWN0Lmphcn0iIC8+DQorCQkJPGFyZyB2YWx1ZT0iLURwb21GaWxlPSR7YmFzZWRpcn0vcG9tLnhtbCIgLz4NCisJCQk8YXJnIHZhbHVlPSItRHVybD0ke3Byb2plY3QubWF2ZW4ucmVwby51cmx9IiAvPg0KKwkJCTxhcmcgdmFsdWU9Ii1EcmVwb3NpdG9yeUlkPSR7cHJvamVjdC5tYXZlbi5yZXBvLmlkfSIgLz4NCisJCQk8YXJnIHZhbHVlPSItRGNyZWF0ZUNoZWNrc3VtPXRydWUiIC8+DQorCQk8L2V4ZWM+DQorCTwvdGFyZ2V0PgkJCQkJDQogPC9wcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2Rpc3RyaWIvYXV0aG9yaXR5LmNtZCBiL2Rpc3RyaWIvYXV0aG9yaXR5LmNtZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA1ODE1ZS4uMDAwMDAwMAotLS0gYS9kaXN0cmliL2F1dGhvcml0eS5jbWQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1AamF2YSAtamFyIGF1dGhvcml0eS5qYXIgLS1iYXNlRm9sZGVyIGRhdGEgJSoNCmRpZmYgLS1naXQgYS9kaXN0cmliL2dpdGJsaXQgYi9kaXN0cmliL2dpdGJsaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNzRkNTQuLjAwMDAwMDAKLS0tIGEvZGlzdHJpYi9naXRibGl0CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyEvYmluL3NoCi0KLXNldCAtZQotCi1HSVRCTElUX1BBVEg9L29wdC9naXRibGl0Ci1HSVRCTElUX0JBU0VfRk9MREVSPS9vcHQvZ2l0YmxpdC9kYXRhCi1HSVRCTElUX0hUVFBfUE9SVD0wCi1HSVRCTElUX0hUVFBTX1BPUlQ9ODQ0Mwotc291cmNlICR7R0lUQkxJVF9QQVRIfS9qYXZhLXByb3h5LWNvbmZpZy5zaAotSkFWQT0iamF2YSAtc2VydmVyIC1YbXgxMDI0TSAke0pBVkFfUFJPWFlfQ09ORklHfSAtRGphdmEuYXd0LmhlYWRsZXNzPXRydWUgLWphciIKLQotLiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucwotCi1jYXNlICIkMSIgaW4KLSAgc3RhcnQpCi0gICAgICAgIGxvZ19hY3Rpb25fYmVnaW5fbXNnICJTdGFydGluZyBnaXRibGl0IHNlcnZlciIKLSAgICAgICAgY2QgJEdJVEJMSVRfUEFUSAotICAgICAgICAkSkFWQSAkR0lUQkxJVF9QQVRIL2dpdGJsaXQuamFyIC0taHR0cHNQb3J0ICRHSVRCTElUX0hUVFBTX1BPUlQgLS1odHRwUG9ydCAkR0lUQkxJVF9IVFRQX1BPUlQgLS1iYXNlRm9sZGVyICRHSVRCTElUX0JBU0VfRk9MREVSID4gL2Rldi9udWxsICYKLSAgICAgICAgbG9nX2FjdGlvbl9lbmRfbXNnICQ/Ci0gICAgICAgIDs7Ci0gIHN0b3ApCi0gICAgICAgIGxvZ19hY3Rpb25fYmVnaW5fbXNnICJTdG9wcGluZyBnaXRibGl0IHNlcnZlciIKLSAgICAgICAgY2QgJEdJVEJMSVRfUEFUSAotICAgICAgICAkSkFWQSAkR0lUQkxJVF9QQVRIL2dpdGJsaXQuamFyIC0tYmFzZUZvbGRlciAkR0lUQkxJVF9CQVNFX0ZPTERFUiAtLXN0b3AgPiAvZGV2L251bGwgJgotICAgICAgICBsb2dfYWN0aW9uX2VuZF9tc2cgJD8KLSAgICAgICAgOzsKLSAgZm9yY2UtcmVsb2FkfHJlc3RhcnQpCi0gICAgICAgICQwIHN0b3AKLSAgICAgICAgJDAgc3RhcnQKLSAgICAgICAgOzsKLSAgKikKLSAgICAgICAgZWNobyAiVXNhZ2U6IC9ldGMvaW5pdC5kL2dpdGJsaXQge3N0YXJ0fHN0b3B8cmVzdGFydHxmb3JjZS1yZWxvYWR9IgotICAgICAgICBleGl0IDEKLSAgICAgICAgOzsKLWVzYWMKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9kaXN0cmliL2luc3RhbGwtc2VydmljZS1jZW50b3Muc2ggYi9kaXN0cmliL2luc3RhbGwtc2VydmljZS1jZW50b3Muc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMmU1OTIuLjAwMDAwMDAKLS0tIGEvZGlzdHJpYi9pbnN0YWxsLXNlcnZpY2UtY2VudG9zLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1jcCBnaXRibGl0LWNlbnRvcyAvZXRjL2luaXQuZC9naXRibGl0Ci1jaG1vZCAreCAvZXRjL2luaXQuZC9naXRibGl0Ci1zdWRvIGNoa2NvbmZpZyAtLWFkZCBnaXRibGl0CmRpZmYgLS1naXQgYS9kaXN0cmliL2luc3RhbGwtc2VydmljZS5zaCBiL2Rpc3RyaWIvaW5zdGFsbC1zZXJ2aWNlLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWQ3ZmNjLi4wMDAwMDAwCi0tLSBhL2Rpc3RyaWIvaW5zdGFsbC1zZXJ2aWNlLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1jcCBnaXRibGl0IC9ldGMvaW5pdC5kLwotY2htb2QgK3ggL2V0Yy9pbml0LmQvZ2l0YmxpdAotc3VkbyB1cGRhdGUtcmMuZCBnaXRibGl0IGRlZmF1bHRzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9kb2NfZm9vdGVyLmh0bWwgYi9kb2NzL2RvY19mb290ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3MzgwZS4uMDAwMDAwMAotLS0gYS9kb2NzL2RvY19mb290ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotCQk8L2Rpdj4gPCEtLSBtYXJrZG93biAtLT4NCi0JCTxmb290ZXI+DQotCQkJPHAgY2xhc3M9InB1bGwtcmlnaHQiPnswfTwvcD4NCi0JCVRoZSBjb250ZW50IG9mIHRoaXMgcGFnZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMCBMaWNlbnNlPC9hPi4NCi0JCTwvZm9vdGVyPgkJCQ0KLQk8L2Rpdj4gPCEtLSBjb250YWluZXIgLS0+CQ0KLTwvYm9keT4NCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9kb2NfaGVhZGVyLmh0bWwgYi9kb2NzL2RvY19oZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzViYTM2Ni4uMDAwMDAwMAotLS0gYS9kb2NzL2RvY19oZWFkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+DQotPGh0bWw+DQotCTxoZWFkPg0KLQkJPHRpdGxlPkdpdGJsaXQ8L3RpdGxlPg0KLQkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuL2Jvb3RzdHJhcC9jc3MvYm9vdHN0cmFwLmNzcyIvPg0KLQkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9naXRibGl0LmNzcyIvPg0KLQkJPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS9wbmciIGhyZWY9Ii4vZ2l0Ymx0LWZhdmljb24ucG5nIiAvPg0KLQkJPG1ldGEgbmFtZT0iUk9CT1RTIiBjb250ZW50PSJJTkRFWCwgTk9GT0xMT1ciPg0KLQkJPG1ldGEgaHR0cC1lcXVpdj0iaW1hZ2V0b29sYmFyIiBjb250ZW50PSJubyIgLz4NCi0JCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPg0KLQkJPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImphdmEgZ2l0IHNlcnZlciIgLz4NCi0NCi0JCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vYm9vdHN0cmFwL2pzL2pxdWVyeS5qcyI+PC9zY3JpcHQ+DQotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL2Jvb3RzdHJhcC9qcy9ib290c3RyYXAuanMiPjwvc2NyaXB0Pg0KLQkJDQotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwcmV0dGlmeS9wcmV0dGlmeS5qcyI+PC9zY3JpcHQ+DQotCQk8bGluayBocmVmPSJwcmV0dGlmeS9wcmV0dGlmeS5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+CQkNCi0JPC9oZWFkPg0KLQk8Ym9keSBvbmxvYWQ9InByZXR0eVByaW50KCkiPg0KLQkJPGRpdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1maXhlZC10b3AiPg0KLQkJCTxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+DQotCQkJCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQotCQkJCQk8YSBjbGFzcz0iYnJhbmQiIGhyZWY9Imh0dHA6Ly9naXRibGl0LmNvbSIgdGl0bGU9ImdpdGJsaXQgaG9tZXBhZ2UiPg0KLQkJCQkJCTxpbWcgc3JjPSJnaXRibHRfMjVfd2hpdGUucG5nIiB3aWR0aD0iNzkiIGhlaWdodD0iMjUiIGFsdD0iZ2l0YmxpdCIgY2xhc3M9ImxvZ28iLz4NCi0JCQkJCTwvYT4NCi0JCQkJCTx1bCBjbGFzcz0ibmF2Ij4NCi0JCQkJCQl7MX0JCQ0KLQkJCQkJPC91bD4NCi0JCQkJPC9kaXY+DQotCQkJPC9kaXY+DQotCQk8L2Rpdj4NCi0JCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQotCQkJPGRpdiBjbGFzcz0ibWFya2Rvd24iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZV9mb290ZXIuaHRtbCBiL2RvY3Mvc2l0ZV9mb290ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3MzgwZS4uMDAwMDAwMAotLS0gYS9kb2NzL3NpdGVfZm9vdGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLQkJPC9kaXY+IDwhLS0gbWFya2Rvd24gLS0+DQotCQk8Zm9vdGVyPg0KLQkJCTxwIGNsYXNzPSJwdWxsLXJpZ2h0Ij57MH08L3A+DQotCQlUaGUgY29udGVudCBvZiB0aGlzIHBhZ2UgaXMgbGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMCI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjAgTGljZW5zZTwvYT4uDQotCQk8L2Zvb3Rlcj4JCQkNCi0JPC9kaXY+IDwhLS0gY29udGFpbmVyIC0tPgkNCi08L2JvZHk+DQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZV9oZWFkZXIuaHRtbCBiL2RvY3Mvc2l0ZV9oZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNmYTY3ZC4uMDAwMDAwMAotLS0gYS9kb2NzL3NpdGVfaGVhZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPg0KLTxodG1sPg0KLQk8aGVhZD4NCi0JCTx0aXRsZT5HaXRibGl0PC90aXRsZT4NCi0JCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi9ib290c3RyYXAvY3NzL2Jvb3RzdHJhcC5jc3MiLz4NCi0JCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4vZ2l0YmxpdC5jc3MiLz4NCi0JCTxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSIuL2dpdGJsdC1mYXZpY29uLnBuZyIgLz4NCi0JCTxtZXRhIG5hbWU9IlJPQk9UUyIgY29udGVudD0iSU5ERVgiPg0KLQkJPG1ldGEgaHR0cC1lcXVpdj0iaW1hZ2V0b29sYmFyIiBjb250ZW50PSJubyIgLz4NCi0JCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPg0KLQkJPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImphdmEgZ2l0IHNlcnZlciIgLz4NCi0NCi0JCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vYm9vdHN0cmFwL2pzL2pxdWVyeS5qcyI+PC9zY3JpcHQ+DQotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL2Jvb3RzdHJhcC9qcy9ib290c3RyYXAuanMiPjwvc2NyaXB0Pg0KLQkJDQotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL2ZhbmN5Ym94L3F1ZXJ5Lm1vdXNld2hlZWwtMy4wLjQucGFjay5qcyI+PC9zY3JpcHQ+DQotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5wYWNrLmpzIj48L3NjcmlwdD4NCi0JCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4vZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LmNzcyIgbWVkaWE9InNjcmVlbiIgLz4NCi0JCQ0KLQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi9zY3JlZW5zaG90cy5qcyI+PC9zY3JpcHQ+CQkNCi0JCQ0KLQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icHJldHRpZnkvcHJldHRpZnkuanMiPjwvc2NyaXB0Pg0KLQkJPGxpbmsgaHJlZj0icHJldHRpZnkvcHJldHRpZnkuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPg0KLQkJDQotCQk8IS0tIFBsYWNlIHRoaXMgdGFnIGluIHlvdXIgaGVhZCBvciBqdXN0IGJlZm9yZSB5b3VyIGNsb3NlIGJvZHkgdGFnIC0tPg0KLQkJPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHA6Ly9naXRibGl0LmNvbSIgLz4NCi0JCTxsaW5rIHJlbD0icHVibGlzaGVyIiBocmVmPSJodHRwczovL3BsdXMuZ29vZ2xlLmNvbS8xMTQ0NjQ2NzgzOTI1OTM0MjE2ODQiIC8+DQotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2FwaXMuZ29vZ2xlLmNvbS9qcy9wbHVzb25lLmpzIj48L3NjcmlwdD4NCi0JCQ0KLQkJPCEtLSBBTkFMWVRJQ1MgLS0+DQotCTwvaGVhZD4NCi0JPGJvZHkgb25sb2FkPSJwcmV0dHlQcmludCgpIj4NCi0JCTxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4NCi0JCQk8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPg0KLQkJCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KLQkJCQkJPGEgY2xhc3M9ImJyYW5kIiBocmVmPSJodHRwOi8vZ2l0YmxpdC5jb20iIHRpdGxlPSJnaXRibGl0IGhvbWVwYWdlIj4NCi0JCQkJCQk8aW1nIHNyYz0iZ2l0Ymx0XzI1X3doaXRlLnBuZyIgd2lkdGg9Ijc5IiBoZWlnaHQ9IjI1IiBhbHQ9ImdpdGJsaXQiIGNsYXNzPSJsb2dvIi8+DQotCQkJCQk8L2E+DQotCQkJCQkNCi0JCQkJCTx1bCBjbGFzcz0ibmF2Ij4NCi0JCQkJCQl7MX0JCQ0KLQkJCQkJCTwhLS0gR29vZ2xlIFBsdXMgQmFkZ2UgLS0+DQotCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vcGx1cy5nb29nbGUuY29tLzExNDQ2NDY3ODM5MjU5MzQyMTY4ND9wcnNyYz0zIiBzdHlsZT0ibWFyZ2luLXRvcDozcHg7dGV4dC1kZWNvcmF0aW9uOiBub25lOyI+PGltZyBzcmM9Imh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL2ltYWdlcy9pY29ucy9ncGx1cy0xNi5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9ImJvcmRlcjogMDsiLz48L2E+PC9saT4NCi0JCQkJCQk8IS0tIEdvb2dsZSBQbHVzIE9uZSAtLT4NCi0JCQkJCQk8bGk+PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4OyI+PGc6cGx1c29uZSBzaXplPSJzbWFsbCIgaHJlZj0iaHR0cDovL2dpdGJsaXQuY29tIj48L2c6cGx1c29uZT48L2Rpdj48L2xpPg0KLQkJCQkJPC91bD4NCi0JCQkJPC9kaXY+DQotCQkJPC9kaXY+DQotCQk8L2Rpdj4NCi0JCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQotCQkJPGRpdiBjbGFzcz0ibWFya2Rvd24iPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpdGJsaXQuaW1sIGIvZ2l0YmxpdC5pbWwKaW5kZXggMjMyZjAwZC4uMGZlN2ZlOSAxMDA2NDQKLS0tIGEvZ2l0YmxpdC5pbWwKKysrIGIvZ2l0YmxpdC5pbWwKQEAgLTUsOSArNSw5IEBACiAgICAgPG91dHB1dC10ZXN0IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9iaW4vdGVzdC1jbGFzc2VzIiAvPgogICAgIDxleGNsdWRlLW91dHB1dCAvPgogICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+Ci0gICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+Ci0gICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9yZXNvdXJjZXMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+Ci0gICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC90ZXN0cyIgaXNUZXN0U291cmNlPSJ0cnVlIiAvPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjL21haW4vamF2YSIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYy90ZXN0L2phdmEiIGlzVGVzdFNvdXJjZT0idHJ1ZSIgLz4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYy9tYWluL3Jlc291cmNlcyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KICAgICA8L2NvbnRlbnQ+CiAgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CiAgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiPgpAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvamNvbW1hbmRlci0xLjE3LXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qY29tbWFuZGVyLTEuMTcuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9sb2c0ai0xLjIuMTctc291cmNlcy5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2xvZzRqLTEuMi4xNy5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3NsZjRqLWFwaS0xLjYuNi1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvc2xmNGotYXBpLTEuNi42LmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtNTAsNyArNTAsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvc2xmNGotbG9nNGoxMi0xLjYuNi1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvc2xmNGotbG9nNGoxMi0xLjYuNi5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTYxLDcgKzYxLDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL21haWwtMS40LjMtc291cmNlcy5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL21haWwtMS40LjMuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qYXZheC5zZXJ2bGV0LWFwaS0zLjAuMS1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvamF2YXguc2VydmxldC1hcGktMy4wLjEuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC04Myw3ICs4Myw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qZXR0eS13ZWJhcHAtNy42LjgudjIwMTIxMTA2LXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qZXR0eS13ZWJhcHAtNy42LjgudjIwMTIxMTA2LmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvamV0dHktYWpwLTcuNi44LnYyMDEyMTEwNi1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvamV0dHktYWpwLTcuNi44LnYyMDEyMTEwNi5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvd2lja2V0LTEuNC4yMS1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvd2lja2V0LTEuNC4yMS5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvd2lja2V0LWF1dGgtcm9sZXMtMS40LjIxLXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy93aWNrZXQtYXV0aC1yb2xlcy0xLjQuMjEuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0xMjcsNyArMTI3LDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3dpY2tldC1leHRlbnNpb25zLTEuNC4yMS1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvd2lja2V0LWV4dGVuc2lvbnMtMS40LjIxLmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtMTM4LDcgKzEzOCw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9nb29nbGVjaGFydHMtMS40LjIxLXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9nb29nbGVjaGFydHMtMS40LjIxLmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtMTQ5LDcgKzE0OSw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9sdWNlbmUtY29yZS0zLjYuMS1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvbHVjZW5lLWNvcmUtMy42LjEuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0xNjAsNyArMTYwLDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2x1Y2VuZS1oaWdobGlnaHRlci0zLjYuMS1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvbHVjZW5lLWhpZ2hsaWdodGVyLTMuNi4xLmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9sdWNlbmUtbWVtb3J5LTMuNi4xLXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9sdWNlbmUtbWVtb3J5LTMuNi4xLmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtMTgyLDcgKzE4Miw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9sdWNlbmUtcXVlcmllcy0zLjYuMS1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvbHVjZW5lLXF1ZXJpZXMtMy42LjEuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0yMDIsNDAgKzIwMiw0MCBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvbWFya2Rvd25wYXBlcnMtY29yZS0xLjMuMi1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvbWFya2Rvd25wYXBlcnMtY29yZS0xLjMuMi5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KICAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSI+Ci0gICAgICA8bGlicmFyeSBuYW1lPSJvcmcuZWNsaXBzZS5qZ2l0LTIuMi4wLjIwMTIxMjE5MTg1MC1yLmphciI+CisgICAgICA8bGlicmFyeSBuYW1lPSJvcmcuZWNsaXBzZS5qZ2l0LTIuMy4xLjIwMTMwMjIwMTgzOC1yLmphciI+CiAgICAgICAgIDxDTEFTU0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9vcmcuZWNsaXBzZS5qZ2l0LTIuMi4wLjIwMTIxMjE5MTg1MC1yLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9vcmcuZWNsaXBzZS5qZ2l0LTIuMy4xLjIwMTMwMjIwMTgzOC1yLmphciEvIiAvPgogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvb3JnLmVjbGlwc2UuamdpdC0yLjIuMC4yMDEyMTIxOTE4NTAtci1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvb3JnLmVjbGlwc2UuamdpdC0yLjMuMS4yMDEzMDIyMDE4Mzgtci5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KICAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSI+Ci0gICAgICA8bGlicmFyeSBuYW1lPSJqc2NoLTAuMS40NC0xLmphciI+CisgICAgICA8bGlicmFyeSBuYW1lPSJqc2NoLTAuMS40Ni5qYXIiPgogICAgICAgICA8Q0xBU1NFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvanNjaC0wLjEuNDQtMS5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvanNjaC0wLjEuNDYuamFyIS8iIC8+CiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qc2NoLTAuMS40NC0xLXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qc2NoLTAuMS40Ni5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KICAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSI+Ci0gICAgICA8bGlicmFyeSBuYW1lPSJvcmcuZWNsaXBzZS5qZ2l0Lmh0dHAuc2VydmVyLTIuMi4wLjIwMTIxMjE5MTg1MC1yLmphciI+CisgICAgICA8bGlicmFyeSBuYW1lPSJvcmcuZWNsaXBzZS5qZ2l0Lmh0dHAuc2VydmVyLTIuMy4xLjIwMTMwMjIwMTgzOC1yLmphciI+CiAgICAgICAgIDxDTEFTU0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9vcmcuZWNsaXBzZS5qZ2l0Lmh0dHAuc2VydmVyLTIuMi4wLjIwMTIxMjE5MTg1MC1yLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9vcmcuZWNsaXBzZS5qZ2l0Lmh0dHAuc2VydmVyLTIuMy4xLjIwMTMwMjIwMTgzOC1yLmphciEvIiAvPgogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvb3JnLmVjbGlwc2UuamdpdC5odHRwLnNlcnZlci0yLjIuMC4yMDEyMTIxOTE4NTAtci1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvb3JnLmVjbGlwc2UuamdpdC5odHRwLnNlcnZlci0yLjMuMS4yMDEzMDIyMDE4Mzgtci5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTI0Niw3ICsyNDYsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvYmNwcm92LWpkazE1b24tMS40Ny1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvYmNwcm92LWpkazE1b24tMS40Ny5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTI1Nyw3ICsyNTcsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvYmNtYWlsLWpkazE1b24tMS40Ny1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvYmNtYWlsLWpkazE1b24tMS40Ny5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTI2OCw3ICsyNjgsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvYmNwa2l4LWpkazE1b24tMS40Ny1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvYmNwa2l4LWpkazE1b24tMS40Ny5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTI3OSw3ICsyNzksNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvcm9tZS0wLjktc291cmNlcy5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3JvbWUtMC45LmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgpAQCAtMjkwLDcgKzI5MCw3IEBACiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KICAgICAgICAgPFNPVVJDRVM+Ci0gICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9qZG9tLTEuMC1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvamRvbS0xLjAuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0zMDEsNyArMzAxLDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2dzb24tMS43LjItc291cmNlcy5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2dzb24tMS43LjIuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0zMTIsNyArMzEyLDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2dyb292eS1hbGwtMS44Ljgtc291cmNlcy5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2dyb292eS1hbGwtMS44LjguamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0zMjMsNyArMzIzLDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3VuYm91bmRpZC1sZGFwc2RrLTIuMy4wLXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy91bmJvdW5kaWQtbGRhcHNkay0yLjMuMC5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KQEAgLTMzNCw3ICszMzQsNyBAQAogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvaXZ5LTIuMi4wLXNvdXJjZXMuamFyIS8iIC8+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9pdnktMi4yLjAuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0zNTQsNyArMzU0LDcgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2NvbW1vbnMtY29tcHJlc3MtMS40LjEtc291cmNlcy5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2NvbW1vbnMtY29tcHJlc3MtMS40LjEuamFyIS8iIC8+CiAgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CkBAIC0zNjUsMjggKzM2NSwyMDYgQEAKICAgICAgICAgPC9DTEFTU0VTPgogICAgICAgICA8SkFWQURPQyAvPgogICAgICAgICA8U09VUkNFUz4KLSAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3h6LTEuMC1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMveHotMS4wLmphciEvIiAvPgogICAgICAgICA8L1NPVVJDRVM+CiAgICAgICA8L2xpYnJhcnk+CiAgICAgPC9vcmRlckVudHJ5PgogICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5IiBzY29wZT0iVEVTVCI+Ci0gICAgICA8bGlicmFyeSBuYW1lPSJqdW5pdC00LjEwLmphciI+CisgICAgICA8bGlicmFyeSBuYW1lPSJqdW5pdC00LjExLmphciI+CiAgICAgICAgIDxDTEFTU0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9qdW5pdC00LjEwLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9qdW5pdC00LjExLmphciEvIiAvPgogICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgIDxKQVZBRE9DIC8+CiAgICAgICAgIDxTT1VSQ0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvanVuaXQtNC4xMC1zb3VyY2VzLmphciEvIiAvPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvanVuaXQtNC4xMS5qYXIhLyIgLz4KICAgICAgICAgPC9TT1VSQ0VTPgogICAgICAgPC9saWJyYXJ5PgogICAgIDwvb3JkZXJFbnRyeT4KICAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgotICAgICAgPGxpYnJhcnkgbmFtZT0iaGFtY3Jlc3QtY29yZS0xLjEuamFyIj4KKyAgICAgIDxsaWJyYXJ5IG5hbWU9ImhhbWNyZXN0LWNvcmUtMS4zLmphciI+CiAgICAgICAgIDxDTEFTU0VTPgotICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9oYW1jcmVzdC1jb3JlLTEuMS5qYXIhLyIgLz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvaGFtY3Jlc3QtY29yZS0xLjMuamFyIS8iIC8+CiAgICAgICAgIDwvQ0xBU1NFUz4KICAgICAgICAgPEpBVkFET0MgLz4KLSAgICAgICAgPFNPVVJDRVMgLz4KKyAgICAgICAgPFNPVVJDRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9oYW1jcmVzdC1jb3JlLTEuMy5qYXIhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgorICAgICAgPGxpYnJhcnkgbmFtZT0ic2VsZW5pdW0tamF2YS0yLjI4LjAuamFyIj4KKyAgICAgICAgPENMQVNTRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NlbGVuaXVtLWphdmEtMi4yOC4wLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvc2VsZW5pdW0tamF2YS0yLjI4LjAuamFyIS8iIC8+CisgICAgICAgIDwvU09VUkNFUz4KKyAgICAgIDwvbGlicmFyeT4KKyAgICA8L29yZGVyRW50cnk+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiIHNjb3BlPSJURVNUIj4KKyAgICAgIDxsaWJyYXJ5IG5hbWU9InNlbGVuaXVtLXN1cHBvcnQtMi4yOC4wLmphciI+CisgICAgICAgIDxDTEFTU0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zZWxlbml1bS1zdXBwb3J0LTIuMjguMC5qYXIhLyIgLz4KKyAgICAgICAgPC9DTEFTU0VTPgorICAgICAgICA8SkFWQURPQyAvPgorICAgICAgICA8U09VUkNFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3NlbGVuaXVtLXN1cHBvcnQtMi4yOC4wLmphciEvIiAvPgorICAgICAgICA8L1NPVVJDRVM+CisgICAgICA8L2xpYnJhcnk+CisgICAgPC9vcmRlckVudHJ5PgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5IiBzY29wZT0iVEVTVCI+CisgICAgICA8bGlicmFyeSBuYW1lPSJzZWxlbml1bS1maXJlZm94LWRyaXZlci0yLjI4LjAuamFyIj4KKyAgICAgICAgPENMQVNTRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NlbGVuaXVtLWZpcmVmb3gtZHJpdmVyLTIuMjguMC5qYXIhLyIgLz4KKyAgICAgICAgPC9DTEFTU0VTPgorICAgICAgICA8SkFWQURPQyAvPgorICAgICAgICA8U09VUkNFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3NlbGVuaXVtLWZpcmVmb3gtZHJpdmVyLTIuMjguMC5qYXIhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgorICAgICAgPGxpYnJhcnkgbmFtZT0ic2VsZW5pdW0tcmVtb3RlLWRyaXZlci0yLjI4LjAuamFyIj4KKyAgICAgICAgPENMQVNTRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NlbGVuaXVtLXJlbW90ZS1kcml2ZXItMi4yOC4wLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvc2VsZW5pdW0tcmVtb3RlLWRyaXZlci0yLjI4LjAuamFyIS8iIC8+CisgICAgICAgIDwvU09VUkNFUz4KKyAgICAgIDwvbGlicmFyeT4KKyAgICA8L29yZGVyRW50cnk+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiIHNjb3BlPSJURVNUIj4KKyAgICAgIDxsaWJyYXJ5IG5hbWU9ImNnbGliLW5vZGVwLTIuMV8zLmphciI+CisgICAgICAgIDxDTEFTU0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9jZ2xpYi1ub2RlcC0yLjFfMy5qYXIhLyIgLz4KKyAgICAgICAgPC9DTEFTU0VTPgorICAgICAgICA8SkFWQURPQyAvPgorICAgICAgICA8U09VUkNFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2NnbGliLW5vZGVwLTIuMV8zLmphciEvIiAvPgorICAgICAgICA8L1NPVVJDRVM+CisgICAgICA8L2xpYnJhcnk+CisgICAgPC9vcmRlckVudHJ5PgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5IiBzY29wZT0iVEVTVCI+CisgICAgICA8bGlicmFyeSBuYW1lPSJqc29uLTIwMDgwNzAxLmphciI+CisgICAgICAgIDxDTEFTU0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9qc29uLTIwMDgwNzAxLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvanNvbi0yMDA4MDcwMS5qYXIhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgorICAgICAgPGxpYnJhcnkgbmFtZT0ic2VsZW5pdW0tYXBpLTIuMjguMC5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc2VsZW5pdW0tYXBpLTIuMjguMC5qYXIhLyIgLz4KKyAgICAgICAgPC9DTEFTU0VTPgorICAgICAgICA8SkFWQURPQyAvPgorICAgICAgICA8U09VUkNFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL3NlbGVuaXVtLWFwaS0yLjI4LjAuamFyIS8iIC8+CisgICAgICAgIDwvU09VUkNFUz4KKyAgICAgIDwvbGlicmFyeT4KKyAgICA8L29yZGVyRW50cnk+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiIHNjb3BlPSJURVNUIj4KKyAgICAgIDxsaWJyYXJ5IG5hbWU9Imd1YXZhLTEzLjAuMS5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvZ3VhdmEtMTMuMC4xLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvZ3VhdmEtMTMuMC4xLmphciEvIiAvPgorICAgICAgICA8L1NPVVJDRVM+CisgICAgICA8L2xpYnJhcnk+CisgICAgPC9vcmRlckVudHJ5PgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5IiBzY29wZT0iVEVTVCI+CisgICAgICA8bGlicmFyeSBuYW1lPSJodHRwY2xpZW50LTQuMi4xLmphciI+CisgICAgICAgIDxDTEFTU0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9odHRwY2xpZW50LTQuMi4xLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvaHR0cGNsaWVudC00LjIuMS5qYXIhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgorICAgICAgPGxpYnJhcnkgbmFtZT0iaHR0cGNvcmUtNC4yLjEuamFyIj4KKyAgICAgICAgPENMQVNTRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L2h0dHBjb3JlLTQuMi4xLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvaHR0cGNvcmUtNC4yLjEuamFyIS8iIC8+CisgICAgICAgIDwvU09VUkNFUz4KKyAgICAgIDwvbGlicmFyeT4KKyAgICA8L29yZGVyRW50cnk+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiIHNjb3BlPSJURVNUIj4KKyAgICAgIDxsaWJyYXJ5IG5hbWU9ImNvbW1vbnMtbG9nZ2luZy0xLjEuMS5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvY29tbW9ucy1sb2dnaW5nLTEuMS4xLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvY29tbW9ucy1sb2dnaW5nLTEuMS4xLmphciEvIiAvPgorICAgICAgICA8L1NPVVJDRVM+CisgICAgICA8L2xpYnJhcnk+CisgICAgPC9vcmRlckVudHJ5PgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5IiBzY29wZT0iVEVTVCI+CisgICAgICA8bGlicmFyeSBuYW1lPSJjb21tb25zLWNvZGVjLTEuNi5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvY29tbW9ucy1jb2RlYy0xLjYuamFyIS8iIC8+CisgICAgICAgIDwvQ0xBU1NFUz4KKyAgICAgICAgPEpBVkFET0MgLz4KKyAgICAgICAgPFNPVVJDRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9jb21tb25zLWNvZGVjLTEuNi5qYXIhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgorICAgICAgPGxpYnJhcnkgbmFtZT0iY29tbW9ucy1leGVjLTEuMS5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvY29tbW9ucy1leGVjLTEuMS5qYXIhLyIgLz4KKyAgICAgICAgPC9DTEFTU0VTPgorICAgICAgICA8SkFWQURPQyAvPgorICAgICAgICA8U09VUkNFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvc3JjL2NvbW1vbnMtZXhlYy0xLjEuamFyIS8iIC8+CisgICAgICAgIDwvU09VUkNFUz4KKyAgICAgIDwvbGlicmFyeT4KKyAgICA8L29yZGVyRW50cnk+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiIHNjb3BlPSJURVNUIj4KKyAgICAgIDxsaWJyYXJ5IG5hbWU9ImpuYS0zLjQuMC5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvam5hLTMuNC4wLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvam5hLTMuNC4wLmphciEvIiAvPgorICAgICAgICA8L1NPVVJDRVM+CisgICAgICA8L2xpYnJhcnk+CisgICAgPC9vcmRlckVudHJ5PgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5IiBzY29wZT0iVEVTVCI+CisgICAgICA8bGlicmFyeSBuYW1lPSJwbGF0Zm9ybS0zLjQuMC5qYXIiPgorICAgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9leHQvcGxhdGZvcm0tMy40LjAuamFyIS8iIC8+CisgICAgICAgIDwvQ0xBU1NFUz4KKyAgICAgICAgPEpBVkFET0MgLz4KKyAgICAgICAgPFNPVVJDRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L3NyYy9wbGF0Zm9ybS0zLjQuMC5qYXIhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSIgc2NvcGU9IlRFU1QiPgorICAgICAgPGxpYnJhcnkgbmFtZT0iY29tbW9ucy1pby0yLjIuamFyIj4KKyAgICAgICAgPENMQVNTRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvZXh0L2NvbW1vbnMtaW8tMi4yLmphciEvIiAvPgorICAgICAgICA8L0NMQVNTRVM+CisgICAgICAgIDxKQVZBRE9DIC8+CisgICAgICAgIDxTT1VSQ0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2V4dC9zcmMvY29tbW9ucy1pby0yLjIuamFyIS8iIC8+CisgICAgICAgIDwvU09VUkNFUz4KICAgICAgIDwvbGlicmFyeT4KICAgICA8L29yZGVyRW50cnk+CiAgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgpkaWZmIC0tZ2l0IGEvcmVsZWFzZXMubW94aWUgYi9yZWxlYXNlcy5tb3hpZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWM3ZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvcmVsZWFzZXMubW94aWUKQEAgLTAsMCArMSw3MjkgQEAKKyMNCisjICR7cHJvamVjdC52ZXJzaW9ufQ0KKyMNCityMTc6IHsNCisgICAgdGl0bGU6IEdpdGJsaXQgJHtwcm9qZWN0LnZlcnNpb259IFJlbGVhc2VkDQorICAgIGlkOiAke3Byb2plY3QudmVyc2lvbn0NCisgICAgZGF0ZTogJHtwcm9qZWN0LmJ1aWxkRGF0ZX0NCisJc2VjdXJpdHk6DQorCS0gUmF3IHNlcnZsZXQgd2FzIGluc2VjdXJlLiBJZiBzb21lb25lIGtuZXcgdGhlIGV4YWN0IHJlcG9zaXRvcnkgbmFtZSBhbmQgcGF0aCB0byBhIGZpbGUsIHRoZSByYXcgYmxvYiBjb3VsZCBiZSByZXRyaWV2ZWQgYnlwYXNzaW5nIHNlY3VyaXR5IGNvbnN0cmFpbnRzLiAoaXNzdWUgMTk4KQ0KKyAgICBmaXhlczoNCisgICAgIC0gQ291bGQgbm90IHJlc2V0IHNldHRpbmdzIHdpdGggJCBvciB7IGNoYXJhY3RlcnMgdGhyb3VnaCBHaXRibGl0IE1hbmFnZXIgYmVjYXVzZSB0aGV5IGFyZSBub3QgcHJvcGVybHkgZXNjYXBlZA0KKwkgLSBBZGRlZCBtb3JlIGVycm9yIGNoZWNraW5nIHRvIGJsb2IgcGFnZSBhbmQgYmxhbWUgcGFnZQ0KKwkgLSBEaXNhYmxlIFNOSSBleHRlbnNpb25zIGZvciBjbGllbnQgU1NMIGNvbm5lY3Rpb25zDQorCSAtIEZpeCBOUEUgd2hlbiBnZXR0aW5nIHVzZXIncyBmb3JrIHdpdGhvdXQgcmVwb3NpdG9yeSBsaXN0IGNhY2hpbmcgKGlzc3VlIDE4MikNCisJIC0gRml4IGludGVybmFsIGVycm9yIG9uIGZvbGRlciBoaXN0b3J5IGxpbmtzIChpc3N1ZSAxOTIpDQorCSAtIEZpeGVkIGluY29ycmVjdCBpY29uIGZpbGUgbmFtZSBmb3IgLmRvYyBmaWxlcyAoaXNzdWUgMjAwKQ0KKwkgLSBEbyBub3QgcXVldWUgZW1haWxzIHdpdGggbm8gcmVjaXBpZW50cyAoaXNzdWUgMjAxKQ0KKwkgLSBEaXNhYmxlIHZpZXcgYW5kIGJsYW1lIGxpbmtzIGZvciBkZWxldGVkIGJsb2JzIChpc3N1ZSAyMTYpDQorCSAtIEZpeGVkIDEuMi54IHJlZ3Jlc3Npb24gd2l0aCBpbmRpdmlkdWFsbHkgc3ltbGlua2VkIHJlcG9zaXRvcmllcyAoaXNzdWUgMjE3KQ0KKwkgLSBGaXhlZCBVVEYtOCBlbmNvZGluZyBlcnJvcnMgaW4gZW1haWwgbm90aWZpY2F0aW9ucyAoaXNzdWUgMjE4KQ0KKwkgLSBGaXhlZCBOUEUgaW4gMS4yLjEgRmVkZXJhdGlvbiBDbGllbnQgKGlzc3VlIDIxOSkNCisJIC0gRml4ZWQgZXh0cmFjdGluZyBHcm9vdnkgc2NyaXB0cyBvbiBFeHByZXNzIGluc3RhbGxzIChpc3N1ZSAyMjApDQorCSAtIEVuc3VyZSBSZWRtaW5lIHVybCBpcyBwcm9wZXJseSBmb3JtYXR0ZWQgKGlzc3VlIDIyMykNCisJIC0gVXNlIHN0YW5kYXJkIFNlcnZsZXRSZXF1ZXN0V3JhcHBlciBpbnN0ZWFkIG9mIGN1c3RvbSB3cmFwcGVyIChpc3N1ZSAyMjQpDQorDQorICAgIGFkZGl0aW9uczogDQorCSAtIFN1cHBvcnQgLS1iYXNlRm9sZGVyIHBhcmFtZXRlciBpbiBGZWRlcmF0aW9uIENsaWVudA0KKyAgICAgLSBPcHRpb25hbCBwZXJpb2RpYyBMREFQIHVzZXIgYW5kIHRlYW0gcHJlLWZldGNoaW5nICYgc3luY2hyb25pemF0aW9uDQorICAgICAtIERpc3BsYXkgbmFtZSBhbmQgdmVyc2lvbiBpbiBUb21jYXQgTWFuYWdlcg0KKyAgICAgLSBGb2dCdWd6IHBvc3QtcmVjZWl2ZSBob29rIHNjcmlwdA0KKyAgICAgLSBJbXBsZW1lbnRlZCBtdWx0aXBsZSByZXBvc2l0b3J5IG93bmVycw0KKyAgICAgLSBDaGluZXNlIHRyYW5zbGF0aW9uDQorCSAtIEFkZGVkIHdlYmxvZ2ljLnhtbCB0byBXQVIgZm9yIGRlcGxveW1lbnQgb24gV2ViTG9naWMgKGlzc3VlIDE5OSkNCisJIC0gU3VwcG9ydCB1c2VybmFtZSBzdWJzdGl0dXRpb24gaW4gd2ViLm90aGVyVXJscyAoaXNzdWUgMjEzKQ0KKwkgLSBPcHRpb24gdG8gZm9yY2UgY2xpZW50LXNpZGUgYmFzaWMgYXV0aGVudGljYXRpb24gaW5zdGVhZCBvZiBmb3JtLWJhc2VkIGF1dGhlbnRpY2F0aW9uIGlmIHdlYi5hdXRoZW50aWNhdGVWaWV3UGFnZXM9dHJ1ZSAoaXNzdWUgMjIyKQ0KKw0KKyAgICBjb250cmlidXRvcnM6DQorCS0gQmFuZGFydXBhbGxpIFNhdHlhbmFyYXlhbmENCisJLSBDaHJpc3RpYW4gQWlzdGxlaXRuZXINCisJLSBFZ2JlcnQgVGVlc2VsaW5rDQorCS0gSGlnZSBNYW5peWENCisJLSBJa3NsYXdlaw0KKwktIEpheSBNZXllcg0KKwktIEpvaG4gQ3J5Z2llcg0KKwktIExhdXJlbnMgVnJpam5zZW4NCisJLSBMZWUgR3JvZml0DQorCS0gTWFydGlqbiBMYWFuDQorCS0gTWljaGFlbCBTY2hhZWZlcnMNCisJLSBQaGlsaXAgQm91dHJvcw0KKwktIFJhZmFlbCBDYXZhemluDQorCS0gUnlhbiBTY2huZWlkZXINCisJLSBTYXJhaCBIYXNlbGJhdWVyDQorCS0gU2xhd29taXIgQm9jaGVuc2tpDQorCS0gU3RhcmRyYWQgWWluDQorCS0gVGhvbWFzIFB1bW1lcg0KKwktIFl1a2loaWtvIFNhd2Fub2JvcmkNCisgICAgLSBnaXRodWIvYWtxdWluZXQNCisgICAgLSBnaXRodWIvZGFwZW5nbWUNCisJDQorCWRlcGVuZGVuY3lDaGFuZ2VzOg0KKwktIEpHaXQgMi4zLjEuMjAxMzAyMjAxODM4LXINCit9DQorDQorIw0KKyMgMS4yLjENCisjDQorcjE2OiB7DQorICAgIHRpdGxlOiBHaXRibGl0IDEuMi4xIFJlbGVhc2VkDQorICAgIGlkOiAxLjIuMQ0KKyAgICBkYXRlOiAyMDEzLTAxLTE1DQorICAgIG5vdGU6ICcnDQorICAgICAgICAgIEJlY2F1c2UgdGhlcmUgYXJlIG5vdyBzZXZlcmFsIHR5cGVzIG9mIGZpbGVzIGFuZCBmb2xkZXJzIHRoYXQgbXVzdCBiZSBjb25zaWRlcmVkIEdpdGJsaXQgZGF0YSwgdGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIGRhdGEgaGFzIGNoYW5nZWQuDQorICAgICAgICAgIA0KKyAgICAgICAgICBZb3Ugd2lsbCBuZWVkIHRvIG1vdmUgYSBmZXcgZmlsZXMgYXJvdW5kIHdoZW4gdXBncmFkaW5nLiAgUGxlYXNlIHNlZSB0aGUgVXBncmFkaW5nIHNlY3Rpb24gb2YgdGhlIDxhIGhyZWY9InNldHVwLmh0bWwiPnNldHVwPC9hPiBwYWdlIGZvciBkZXRhaWxzLg0KKw0KKyAgICAgICAgICA8Yj5FeHByZXNzIFVzZXJzPC9iPiBtYWtlIHN1cmUgdG8gdXBkYXRlIHlvdXIgd2ViLnhtbCBmaWxlIHdpdGggdGhlICR7YmFzZUZvbGRlcn0gdmFsdWVzIQ0KKyAgICAgICAgICAnJw0KKyAgICBmaXhlczoNCisgICAgLSBGaXhlZCBudWxscG9pbnRlciBvbiByZWN1cnNpdmVseSBjYWxjdWxhdGluZyBmb2xkZXIgc2l6ZXMgd2hlbiB0aGVyZSBpcyBhIG5hbWVkIHBpcGUgb3Igc3ltbGluayBpbiB0aGUgaGllcmFyY2h5DQorICAgIC0gQWRkZWQgbnVsbGNoZWNraW5nIHdoZW4gY29uY3VycmVudGx5IGZvcmtpbmcgYSByZXBvc2l0b3J5IGFuZCB0cnlpbmcgdG8gZGlzcGxheSB0aGUgZm9yayBuZXR3b3JrIChpc3N1ZS0xODcpDQorICAgIC0gRml4ZWQgYnVnIHdoZXJlIHBlcm1pc3Npb24gY2hhbmdlcyB3ZXJlIG5vdCB2aXNpYmxlIGluIHRoZSB3ZWIgdWkgdG8gYSBsb2dnZWQtaW4gdXNlciB1bnRpbCB0aGUgdXNlciBsb2dnZWQtb3V0IGFuZCB0aGVuIGxvZ2dlZCBiYWNrIGluIGFnYWluIChpc3N1ZS0xODYpDQorICAgIC0gRml4ZWQgbnVsbHBvaW50ZXIgb24gY3JlYXRpbmcgYSByZXBvc2l0b3J5IHdpdGggbWl4ZWQgY2FzZSAoaXNzdWUgMTg1KQ0KKyAgICAtIEluY2x1ZGUgbWlzc2luZyBtb2RlbCBjbGFzc2VzIGluIGFwaSBsaWJyYXJ5IChpc3N1ZS0xODQpDQorICAgIC0gRml4ZWQgbnVsbHBvaW50ZXIgd2hlbiB1c2luZyAqd2ViLmFsbG93Rm9ya2luZyA9IHRydWUqICYmICpnaXQuY2FjaGVSZXBvc2l0b3J5TGlzdCA9IGZhbHNlKiAoaXNzdWUgMTgyKQ0KKyAgICAtIExpa2VseSBmaXggZm9yIGNvbW1pdCBhbmQgY29tbWl0ZGlmZiBwYWdlIGZhaWx1cmVzIHdoZW4gYSBzdWJtb2R1bGUgcmVmZXJlbmNlIGNoYW5nZXMgKGlzc3VlIDE3OCkNCisgICAgLSBCdWlsZCBwcm9qZWN0IG1vZGVscyBmcm9tIHRoZSByZXBvc2l0b3J5IG1vZGVsIGNhY2hlLCB3aGVuIHBvc3NpYmxlLCB0byByZWR1Y2UgcGFnZSBsb2FkIHRpbWUgKGlzc3VlIDE3MikNCisgICAgLSBGaXhlZCBsb2FkaW5nIG9mIEJyYXppbGlhbiBQb3J0dWd1ZXNlIHRyYW5zbGF0aW9uIGZyb20gKm5peCBzZXJ2ZXINCisNCisgICAgYWRkaXRpb25zOg0KKyAgICAtICcnRmFub3V0IFB1YlN1YiBzZXJ2aWNlIGZvciBzZWxmLWhvc3RlZCBbU3BhcmtsZXNoYXJlXShodHRwOi8vc3BhcmtsZXNoYXJlLm9yZykgbm90aWZpY2F0aW9ucy4NCisgICAgICBUaGlzIHNlcnZpY2UgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4nJw0KKyAgICAtICcnSW1wbGVtZW50ZWQgYSBzaW1wbGUgcHVzaCBsb2cgYmFzZWQgb24gYSBoaWRkZW4sIG9ycGhhbiBicmFuY2ggcmVmcy9naXRibGl0L3B1c2hlcyAoaXNzdWUgMTc3KQ0KKyAgICAgIFRoZSBwdXNoIGxvZyBpcyBub3QgY3VycmVudGx5IHZpc2libGUgaW4gdGhlIHVpLCBidXQgdGhlIGRhdGEgd2lsbCBiZSBjb2xsZWN0ZWQgYW5kIGl0IHdpbGwgYmUgZXhwb3NlZCB0byB0aGUgdWkgaW4gdGhlIG5leHQgcmVsZWFzZS4nJw0KKyAgICAtIFN1cHBvcnQgZm9yIGxvY2FsbHkgYW5kIHJlbW90ZWx5IGF1dGhlbnRpY2F0ZWQgYWNjb3VudHMgaW4gTGRhcFVzZXJTZXJ2aWNlIGFuZCBSZWRtaW5lVXNlclNlcnZpY2UgKGlzc3VlIDE4MykNCisgICAgLSBBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbg0KKw0KKyAgICBjaGFuZ2VzOg0KKyAgICAtICcnR2l0YmxpdCBHTyBhbmQgR2l0YmxpdCBXQVIgYXJlIG5vdyBib3RoIGNvbmZpZ3VyZWQgYnkgYGdpdGJsaXQucHJvcGVydGllc2AuIFdBUiBpcyBubyBsb25nZXIgY29uZmlndXJlZCBieSBgd2ViLnhtbGAuDQorICAgICAgSG93ZXZlciwgRXhwcmVzcyBmb3IgT3BlblNoaWZ0IGNvbnRpbnVlcyB0byBiZSBjb25maWd1cmVkIGJ5IGB3ZWIueG1sYC4nJw0KKyAgICAtIFN1cHBvcnQgZm9yIGEgKi0tYmFzZUZvbGRlciogY29tbWFuZC1saW5lIGFyZ3VtZW50IGZvciBHaXRibGl0IEdPIGFuZCBHaXRibGl0IENlcnRpZmljYXRlIEF1dGhvcml0eQ0KKyAgICAtIFN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSAqJHtiYXNlRm9sZGVyfSogcGFyYW1ldGVyIGluIGBnaXRibGl0LnByb3BlcnRpZXNgIGFuZCBgd2ViLnhtbGAgZm9yIHNldmVyYWwgc2V0dGluZ3MNCisgICAgLSBJbXByb3ZlIGhpc3RvcnkgZGlzcGxheSBvZiBhIHN1Ym1vZHVsZSBsaW5rDQorICAgIC0gVXBkYXRlZCBLb3JlYW4gdHJhbnNsYXRpb24NCisgICAgLSBVcGRhdGVkIGNoZWNrc3R5bGUgZGVmaW5pdGlvbg0KKyAgICANCisgICAgc2V0dGluZ3M6DQorICAgIC0geyBuYW1lOiBmYW5vdXQuYmluZEludGVyZmFjZSwgZGVmYXVsdFZhbHVlOiBsb2NhbGhvc3QgfQ0KKyAgICAtIHsgbmFtZTogZmFub3V0LnBvcnQsIGRlZmF1bHRWYWx1ZTogMCB9DQorICAgIC0geyBuYW1lOiBmYW5vdXQudXNlTmlvLCBkZWZhdWx0VmFsdWU6ICd0cnVlJyB9DQorICAgIC0geyBuYW1lOiBmYW5vdXQuY29ubmVjdGlvbkxpbWl0LCBkZWZhdWx0VmFsdWU6IDAgfQ0KKw0KKyAgICBjb250cmlidXRvcnM6DQorICAgIC0gZ2l0aHViL215c3R5Z2FnZQ0KKyAgICAtIGdpdGh1Yi9kczVhcG4NCisgICAgLSBnaXRodWIva3dvb3QNCisgICAgLSBnaXRodWIvaW5haWF0DQorfQ0KKw0KKyMNCisjIDEuMi4wDQorIw0KK3IxNTogew0KKyAgICB0aXRsZTogR2l0YmxpdCAxLjIuMCBSZWxlYXNlZA0KKyAgICBpZDogMS4yLjANCisgICAgZGF0ZTogMjAxMi0xMi0zMQ0KKyAgICBub3RlOiAnJw0KKyAgICAgICAgICBUaGUgcGVybWlzc2lvbnMgbW9kZWwgaGFzIGNoYW5nZWQgaW4gdGhlIDEuMi4wIHJlbGVhc2UuDQorICAgICAgICAgIElmIHlvdSBhcmUgdXBkYXRpbmcgeW91ciBzZXJ2ZXIsIHlvdSBtdXN0IGFsc28gdXBkYXRlIGFueSBHaXRibGl0IE1hbmFnZXIgYW5kIEZlZGVyYXRpb24gQ2xpZW50IGluc3RhbGxzIHRvIDEuMi4wIGFzIHdlbGwuICBUaGUgZGF0YSBtb2RlbCB1c2VkIGJ5IHRoZSBSUEMgbWVjaGFuaXNtIGhhcyBjaGFuZ2VkIHNsaWdodGx5IGZvciB0aGUgbmV3IHBlcm1pc3Npb25zIGluZnJhc3RydWN0dXJlLg0KKyAgICAgICAgICAnJw0KKyAgICBmaXhlczoNCisgICAgLSBGaXhlZCByZWdyZXNzaW9uIGluICppc0Zyb3plbiogKGlzc3VlIDE4MSkNCisgICAgLSBBdXRob3IgbWV0cmljcyBjYW4gYmUgYnJva2VuIGJ5IG5ld2xpbmVzIGluIGVtYWlsIGFkZHJlc3NlcyBmcm9tIGNvbnZlcnRlZCByZXBvc2l0b3JpZXMgKGlzc3VlIDE3NikNCisgICAgLSBTZXQgc3ViamVjdEFsdGVybmF0aXZlTmFtZSBvbiBnZW5lcmF0ZWQgU1NMIGNlcnQgaWYgQ04gaXMgYW4gaXAgYWRkcmVzcyAoaXNzdWUgMTcwKQ0KKyAgICAtIEZpeGVkIGluY29ycmVjdCBsaW5rcyBvbiBoaXN0b3J5IHBhZ2UgZm9yIGZpbGVzIG5vdCBpbiB0aGUgY3VycmVudC9hY3RpdmUgY29tbWl0IChpc3N1ZSAxNjYpDQorICAgIC0gRW1wdHkgcmVwb3NpdG9yeSBwYWdlIGZhaWxlZCB0byBoYW5kbGUgbWlzc2luZyByZXBvc2l0b3J5IChpc3N1ZSAxNjApDQorICAgIC0gRml4ZWQgYnJva2VuIHRpY2dpdCB1cmxzIChpc3N1ZSAxNTcpDQorICAgIC0gRXhjbHVkZSBzdWJtb2R1bGVzIGZyb20gemlwIGRvd25sb2FkcyAoaXNzdWUgMTUxKQ0KKyAgICAtIEZpeGVkIGJ1ZyB3aGVyZSByZXBvc2l0b3J5IG93bmVyc2hpcCB3YXMgbm90IHVwZGF0ZWQgb24gcmVuYW1lIHVzZXINCisgICAgLSBGaXhlZCBidWcgaW4gY3JlYXRlL3JlbmFtZSByZXBvc2l0b3J5IGlmIHlvdSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aGUgYWxpYXMgZm9yIHRoZSByb290IGdyb3VwIChlLmcuIG1haW4vbXlyZXBvKSAoaXNzdWUgMTQzKQ0KKyAgICAtIFdyYXBwZWQgTWFya2Rvd24gcGFyc2VyIHdpdGggaW1wcm92ZWQgZXhjZXB0aW9uIGhhbmRsZXIgKGlzc3VlIDE0MikNCisgICAgLSBGaXhlZCBkdXBsaWNhdGUgZW50cmllcyBpbiByZXBvc2l0b3J5IGNhY2hlIChpc3N1ZSAxNDApDQorICAgIC0gRml4ZWQgY29ubmVjdGlvbiBsZWFrIGluIExEQVBVc2VyU2VydmljZSAoaXNzdWUgMTM5KQ0KKyAgICAtIEZpeGVkIGJ1ZyBpbiBjb21taXQgcGFnZSB3aGVyZSBjaGFuZ2VzIHRvIGEgc3VibW9kdWxlIHRocmV3IGEgbnVsbCBwb2ludGVyIGV4Y2VwdGlvbiAoaXNzdWUgMTMyKQ0KKyAgICAtIEZpeGVkIGJ1ZyBpbiB0aGUgZGlmZiB2aWV3IGZvciBmaWxlbmFtZXMgdGhhdCBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIChpc3N1ZSAxMjgpDQorDQorICAgIGFkZGl0aW9uczoNCisgICAgLSAnJw0KKyAgICAgIEltcGxlbWVudGVkIGRpc2NyZXRlIHJlcG9zaXRvcnkgcGVybWlzc2lvbnMgKGlzc3VlIDM2KQ0KKyAgICAgIA0KKyAgICAgICAgLSBWICh2aWV3IGluIHdlYiB1aSwgUlNTIGZlZWRzLCBkb3dubG9hZCB6aXApDQorICAgICAgICAtIFIgKGNsb25lKQ0KKyAgICAgICAgLSBSVyAoY2xvbmUgYW5kIHB1c2gpDQorICAgICAgICAtIFJXQyAoY2xvbmUgYW5kIHB1c2ggd2l0aCByZWYgY3JlYXRpb24pDQorICAgICAgICAtIFJXRCAoY2xvbmUgYW5kIHB1c2ggd2l0aCByZWYgY3JlYXRpb24sIGRlbGV0aW9uKQ0KKyAgICAgICAgLSBSVysgKGNsb25lIGFuZCBwdXNoIHdpdGggcmVmIGNyZWF0aW9uLCBkZWxldGlvbiwgcmV3aW5kKQ0KKyAgICAgICAgDQorICAgICAgV2hpbGUgbm90IGFzIHNvcGhpc3RpY2F0ZWQgYXMgR2l0b2xpdGUsIHRoaXMgZG9lcyBnaXZlIGZpbmVyIGFjY2VzcyBjb250cm9scy4gIFRoZXNlIHBlcm1pc3Npb25zIGZpdCBpbiBjbGVhbmx5IHdpdGggdGhlIGV4aXN0aW5nIHVzZXJzLmNvbmYgYW5kIHVzZXJzLnByb3BlcnRpZXMgZmlsZXMuICBJbiBHaXRibGl0IDw9IDEuMS4wLCBhbGwgeW91ciBleGlzdGluZyB1c2VyIGFjY291bnRzIGhhdmUgUlcrIGFjY2Vzcy4gICBJZiB5b3UgYXJlIHVwZ3JhZGluZyB0byAxLjIuMCwgdGhlIFJXKyBhY2Nlc3MgaXMgKnByZXNlcnZlZCogYW5kIHlvdSB3aWxsIGhhdmUgdG8gbG93ZXIvYWRqdXN0IGFjY29yZGluZ2x5Lg0KKyAgICAgICcnDQorICAgIC0gJydJbXBsZW1lbnRlZCAqY2FzZS1pbnNlbnNpdGl2ZSogcmVnZXggcmVwb3NpdG9yeSBwZXJtaXNzaW9uIG1hdGNoaW5nIChpc3N1ZSAzNikNCisNCisgICAgICBUaGlzIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIHBlcm1pc3Npb24gbGlrZSBgUlc6bXlncm91cC8uKmAgdG8gZ3JhbnQgcHVzaCBwcml2aWxlZ2VzIHRvIGFsbCByZXBvc2l0b3JpZXMgd2l0aGluIHRoZSAqbXlncm91cCogcHJvamVjdC9mb2xkZXIuJycNCisgICAgLSBBZGRlZCBERUxFVEUsIENSRUFURSwgYW5kIE5PTi1GQVNULUZPUldBUkQgcmVmIGNoYW5nZSBsb2dnaW5nDQorICAgIC0gJydBZGRlZCBzdXBwb3J0IGZvciBwZXJzb25hbCByZXBvc2l0b3JpZXMuDQorICAgICAgUGVyc29uYWwgcmVwb3NpdG9yaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IGFjY291bnRzIHdpdGggdGhlICpjcmVhdGUqIHBlcm1pc3Npb24gYW5kIGFyZSBzdG9yZWQgaW4gKmdpdC5yZXBvc2l0b3JpZXNGb2xkZXIvfnVzZXJuYW1lKi4gIEVhY2ggdXNlciB3aXRoIHBlcnNvbmFsIHJlcG9zaXRvcmllcyB3aWxsIGhhdmUgYSB1c2VyIHBhZ2UsIHNvbWV0aGluZyBsaWtlIHRoZSBHaXRIdWIgcHJvZmlsZSBwYWdlLiAgUGVyc29uYWwgcmVwb3NpdG9yaWVzIGhhdmUgYWxsIHRoZSBzYW1lIGZlYXR1cmVzIGFzIGNvbW1vbiByZXBvc2l0b3JpZXMsIGV4Y2VwdCBwZXJzb25hbCByZXBvc2l0b3JpZXMgY2FuIGJlIHJlbmFtZWQgYnkgdGhlaXIgb3duZXIuJycNCisgICAgLSAnJ0FkZGVkIHN1cHBvcnQgZm9yIHNlcnZlci1zaWRlIGZvcmtpbmcgb2YgYSByZXBvc2l0b3J5IHRvIGEgcGVyc29uYWwgcmVwb3NpdG9yeSAoaXNzdWUgMTM3KQ0KKyAgICAgIEluIG9yZGVyIHRvIGZvcmsgYSByZXBvc2l0b3J5LCB0aGUgdXNlciBhY2NvdW50IG11c3QgaGF2ZSB0aGUgKmZvcmsqIHBlcm1pc3Npb24gKiphbmQqKiB0aGUgcmVwb3NpdG9yeSBtdXN0ICphbGxvdyBmb3JrcyouICBUaGUgY2xvbmUgaW5oZXJpdHMgdGhlIGFjY2VzcyBsaXN0IG9mIGl0cyBvcmlnaW4uICBpLmUuIGlmIFRlYW0gQSBoYXMgY2xvbmUgYWNjZXNzIHRvIHRoZSBvcmlnaW4gcmVwb3NpdG9yeSwgdGhlbiBieSBkZWZhdWx0IFRlYW0gQSBhbHNvIGhhcyBjbG9uZSBhY2Nlc3MgdG8gdGhlIGZvcmsuICBUaGlzIGlzIHRvIGZhY2lsaXRhdGUgY29sbGFib3JhdGlvbi4gIFRoZSBmb3JrIG93bmVyIG1heSBjaGFuZ2UgYWNjZXNzIHRvIHRoZSBmb3JrIGFuZCBhZGQvcmVtb3ZlIHVzZXJzL3RlYW1zLCBldGMgYXMgcmVxdWlyZWQgPHU+aG93ZXZlcjwvdT4gaXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgYWxsIHBlcnNvbmFsIGZvcmtzIHdpbGwgYmUgZW51bWVyYXRlZCBpbiB0aGUgZm9yayBuZXR3b3JrIHJlZ2FyZGxlc3Mgb2YgYWNjZXNzIHZpZXcgcmVzdHJpY3Rpb25zLiAgSWYgeW91IHJlYWxseSBtdXN0IGhhdmUgYW4gaW52aXNpYmxlIGZvcmssIHRoZSBjbG9uZSBpdCBsb2NhbGx5LCBjcmVhdGUgYSBuZXcgcmVwb3NpdG9yeSBmb3IgeW91ciBpbnZpc2libGUgZm9yaywgYW5kIHB1c2ggaXQgYmFjayB0byBHaXRibGl0LicnDQorICAgIC0gQWRkZWQgb3B0aW9uYWwgKmNyZWF0ZS1vbi1wdXNoKiBzdXBwb3J0DQorICAgIC0gQWRkZWQgKipleHBlcmltZW50YWwqKiBKR2l0LWJhc2VkIGdhcmJhZ2UgY29sbGVjdGlvbiBzZXJ2aWNlLiAgVGhpcyBzZXJ2aWNlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuDQorICAgIC0gJydBZGRlZCBzdXBwb3J0IGZvciBYNTA5IGNsaWVudCBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbi4gIChpc3N1ZSAxMDYpDQorICAgICAgWW91IGNhbiByZXF1aXJlIGFsbCBnaXQgc2VydmxldCBhY2Nlc3MgYmUgYXV0aGVudGljYXRlZCBieSBhIGNsaWVudCBjZXJ0aWZpY2F0ZS4gIFlvdSBtYXkgYWxzbyBzcGVjaWZ5IHRoZSBPSUQgZmluZ2VycHJpbnQgdG8gdXNlIGZvciBtYXBwaW5nIGEgY2VydGlmaWNhdGUgdG8gYSB1c2VybmFtZS4gIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoZSB1c2VyIGFjY291bnQgTVVTVCBhbHJlYWR5IGV4aXN0IGluIEdpdGJsaXQgZm9yIHRoaXMgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtIHRvIHdvcms7IHRoaXMgbWVjaGFuaXNtIGNhbiBub3QgYmUgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB1c2VyIGFjY291bnRzIGZyb20gYSBjZXJ0aWZpY2F0ZS4nJw0KKyAgICAtIFJldmlzZWQgY2xlYW4gaW5zdGFsbCBjZXJ0aWZpY2F0ZSBnZW5lcmF0aW9uIHRvIGNyZWF0ZSBhIEdpdGJsaXQgR08gQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGNlcnRpZmljYXRlOyBhbiBTU0wgY2VydGlmaWNhdGUgc2lnbmVkIGJ5IHRoZSBDQSBjZXJ0aWZpY2F0ZTsgYW5kIHRvIGNyZWF0ZSBkaXN0aW5jdCBzZXJ2ZXIga2V5IGFuZCBzZXJ2ZXIgdHJ1c3Qgc3RvcmVzLiAgPHU+VGhlIHN0b3JlIGZpbGVzIGhhdmUgYmVlbiByZW5hbWVkITwvdT4NCisgICAgLSBBZGRlZCBzdXBwb3J0IGZvciBHaXRibGl0IEdPIHRvIHJlcXVpcmUgdXNhZ2Ugb2YgY2xpZW50IGNlcnRpZmljYXRlcyB0byBhY2Nlc3MgdGhlIGVudGlyZSBzZXJ2ZXIuDQorICAgIC0gQWRkZWQgKipHaXRibGl0IENlcnRpZmljYXRlIEF1dGhvcml0eSoqLCBhbiB4NTA5IFBLSSBtYW5hZ2VtZW50IHRvb2wgZm9yIEdpdGJsaXQgR08gdG8gZW5jb3VyYWdlIHVzZSBvZiB4NTA5IGNsaWVudCBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbi4NCisgICAgLSBBZGRlZCB3ZWIuc2hvcnRDb21taXRJZCBzZXR0aW5nIHRvIGNvbnRyb2wgbGVuZ3RoIG9mIHNob3J0ZW5lZCBjb21taXQgaWRzDQorICAgIC0gQWRkZWQgYWx0ZXJuYXRlIGNvbXByZXNzZWQgZG93bmxvYWQgZm9ybWF0czogdGFyLmd6LCB0YXIueHosIHRhci5iemlwMiAoaXNzdWUgMTc0KQ0KKyAgICAtIEFkZGVkIHNpbXBsZSBwcm9qZWN0IHBhZ2VzLiAgQSBwcm9qZWN0IGlzIGEgc3ViZm9sZGVyIG9mZiB0aGUgKmdpdC5yZXBvc2l0b3JpZXNGb2xkZXIqLg0KKyAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIFgtRm9yd2FyZGVkLUNvbnRleHQgZm9yIEFwYWNoZSBzdWJkb21haW4gcHJveHkgY29uZmlndXJhdGlvbnMgKGlzc3VlIDEzNSkNCisgICAgLSBEZWxldGUgYnJhbmNoIGZlYXR1cmUgKGlzc3VlIDEyMSkNCisgICAgLSBBZGRlZCBsaW5lIGxpbmtzIHRvIGJsb2IgdmlldyAoaXNzdWUgMTMwKQ0KKyAgICAtIEFkZGVkIEhUTUwgc2VuZG1haWwgaG9vayBzY3JpcHQgYW5kIEdpdGJsaXQuc2VuZEh0bWxNYWlsIG1ldGhvZA0KKyAgICAtIEFkZGVkIFJlZG1pbmVVc2VyU2VydmljZQ0KKyAgICAtIFN1cHBvcnQgZm9yIGNvbW1pdHRlciB2ZXJpZmljYXRpb24uICBSZXF1aXJlcyB1c2Ugb2YgKi0tbm8tZmYqIHdoZW4gbWVyZ2luZyBicmFuY2hlcyBvciBwdWxsIHJlcXVlc3RzLiAgU2VlIHNldHVwIHBhZ2UgZm9yIGRldGFpbHMuDQorICAgIC0gQWRkZWQgQnJhemlsaWFuIFBvcnR1Z3Vlc2UgdHJhbnNsYXRpb24NCisNCisgICAgY2hhbmdlczoNCisgICAgLSBBZGRlZCBzZXJ2ZXIgc2V0dGluZyB0byBzcGVjaWZ5IGtleXN0b3JlIGFsaWFzIGZvciBzc2wgY2VydGlmaWNhdGUgKGlzc3VlIDk4KQ0KKyAgICAtIEFkZGVkIG9wdGlvbmFsIGdsb2JhbCBhbmQgcGVyLXJlcG9zaXRvcnkgYWN0aXZpdHkgcGFnZSBjb21taXQgY29udHJpYnV0aW9uIHRocm90dGxlIHRvIGhlbHAgdGFtZSAqcmVhbGx5KiBhY3RpdmUgcmVwb3NpdG9yaWVzIChpc3N1ZSAxNzMpDQorICAgIC0gQWRkZWQgc3VwcG9ydCBmb3Igc3ltbGlua3MgaW4gdHJlZSBwYWdlIGFuZCBjb21taXQgcGFnZSAoaXNzdWUgMTcxKQ0KKyAgICAtIEFsbCBhY2Nlc3MgcmVzdHJpY3RlZCBzZXJ2bGV0cyAoZS5nLiBEb3dubG9hZFppcCwgUlNTLCBldGMpIHdpbGwgdHJ5IHRvIGF1dGhlbnRpY2F0ZSB1c2luZyBYNTA5IGNlcnRpZmljYXRlcywgY29udGFpbmVyIHByaW5jaXBhbHMsIGNvb2tpZXMsIGFuZCBCQVNJQyBoZWFkZXJzLCBpbiB0aGF0IG9yZGVyLg0KKyAgICAtIEFkZGVkICpncm9vdnkqIGFuZCAqc2NhbGEqIHRvICp3ZWIucHJldHR5UHJpbnRFeHRlbnNpb25zKg0KKyAgICAtIEFkZGVkIHNob3J0IGNvbW1pdCBpZCBjb2x1bW4gdG8gbG9nIGFuZCBoaXN0b3J5IHRhYmxlcyAoaXNzdWUgMTY4KQ0KKyAgICAtIFRlYW1zIGNhbiBub3cgc3BlY2lmeSB0aGUgKmFkbWluKiwgKmNyZWF0ZSosIGFuZCAqZm9yayogcm9sZXMgdG8gc2ltcGxpZnkgdXNlciBhZG1pbmlzdHJhdGlvbg0KKyAgICAtIFVzZSBodHRwcyBHcmF2YXRhciB1cmxzIHRvIGF2b2lkIGJyb3dzZXIgY29tcGxhaW50cw0KKyAgICAtIEFkZGVkIGZybSB0byBkZWZhdWx0IHByZXR0eSBwcmludCBleHRlbnNpb25zIChpc3N1ZSAxNTYpDQorICAgIC0gRXhwb3NlIFJlY2VpdmVQYWNrIHRvIEdyb292eSBwdXNoIGhvb2tzIChpc3N1ZSAxMjUpDQorICAgIC0gUmVkaXJlY3QgdG8gc3VtbWFyeSBwYWdlIHdoZW4gcmVmcmVzaGluZyB0aGUgZW1wdHkgcmVwb3NpdG9yeSBwYWdlIG9uIGEgcmVwb3NpdG9yeSB0aGF0IGlzIG5vdCBlbXB0eSAoaXNzdWUgMTI5KQ0KKyAgICAtIEVtaXQgYSB3YXJuaW5nIGluIHRoZSBsb2cgZmlsZSBpZiBydW5uaW5nIG9uIGEgVG9tY2F0LWJhc2VkIHNlcnZsZXQgY29udGFpbmVyIHdoaWNoIGlzIHVuZnJpZW5kbHkgdG8gJTJGIGZvcndhcmQtc2xhc2ggdXJsIGVuY29kaW5nIEFORCBHaXRibGl0IGlzIGNvbmZpZ3VyZWQgdG8gbW91bnQgcGFyYW1ldGVycyB3aXRoICUyRiBmb3J3YXJkLXNsYXNoIHVybCBlbmNvZGluZyAoaXNzdWUgMTI2KQ0KKyAgICAtICcnTERBUCBhZG1pbiBhdHRyaWJ1dGUgc2V0dGluZyBpcyBub3cgY29uc2lzdGVudCB3aXRoIExEQVAgdGVhbXMgc2V0dGluZyBhbmQgYWRtaW4gdGVhbXMgbGlzdC4NCisgICAgICBJZiAqcmVhbG0ubGRhcC5tYWludGFpblRlYW1zPT10cnVlKiAqKkFORCoqICpyZWFsbS5sZGFwLmFkbWlucyogaXMgbm90IGVtcHR5LCB0aGVuIFVzZXIuY2FuQWRtaW4oKSBpcyBjb250cm9sbGVkIGJ5IExEQVAgYWRtaW5pc3RyYXRpdmUgdGVhbSBtZW1iZXJzaGlwLiAgT3RoZXJ3aXNlLCBVc2VyLmNhbkFkbWluKCkgaXMgY29udHJvbGxlZCBieSBHaXRibGl0LicnDQorICAgIC0gU3VwcG9ydCBzZXJ2bGV0IGNvbnRhaW5lciBhdXRoZW50aWNhdGlvbiBmb3IgZXhpc3RpbmcgVXNlck1vZGVscyAoaXNzdWUgNjgpDQorDQorCXNldHRpbmdzOg0KKwktIHsgbmFtZTogd2ViLmFsbG93Rm9ya2luZywgZGVmYXVsdFZhbHVlOiAndHJ1ZScgfQ0KKwktIHsgbmFtZTogZ2l0LmFsbG93Q3JlYXRlT25QdXNoLCBkZWZhdWx0VmFsdWU6ICd0cnVlJyB9DQorCS0geyBuYW1lOiBnaXQuYWxsb3dHYXJiYWdlQ29sbGVjdGlvbiwgZGVmYXVsdFZhbHVlOiAnZmFsc2UnIH0NCisJLSB7IG5hbWU6IGdpdC5nYXJiYWdlQ29sbGVjdGlvbkhvdXIsIGRlZmF1bHRWYWx1ZTogMCB9DQorCS0geyBuYW1lOiBnaXQuZGVmYXVsdEdhcmJhZ2VDb2xsZWN0aW9uVGhyZXNob2xkLCBkZWZhdWx0VmFsdWU6IDUwMGsgfQ0KKwktIHsgbmFtZTogZ2l0LmRlZmF1bHRHYXJiYWdlQ29sbGVjdGlvblBlcmlvZCwgZGVmYXVsdFZhbHVlOiA3IGRheXMgfQ0KKwktIHsgbmFtZTogZ2l0LnJlcXVpcmVDbGllbnRDZXJ0aWZpY2F0ZXMsIGRlZmF1bHRWYWx1ZTogJ2ZhbHNlJyB9DQorCS0geyBuYW1lOiBnaXQuZW5mb3JjZUNlcnRpZmljYXRlVmFsaWRpdHksIGRlZmF1bHRWYWx1ZTogJ3RydWUnIH0NCisJLSB7IG5hbWU6IGdpdC5jZXJ0aWZpY2F0ZVVzZXJuYW1lT0lEcywgZGVmYXVsdFZhbHVlOiBDTiB9DQorCS0geyBuYW1lOiB3ZWIuc2hvcnRDb21taXRJZExlbmd0aCwgZGVmYXVsdFZhbHVlOiA4IH0NCisJLSB7IG5hbWU6IHdlYi5jb21wcmVzc2VkRG93bmxvYWRzLCBkZWZhdWx0VmFsdWU6IHppcCBneiB9DQorCS0geyBuYW1lOiBzZXJ2ZXIucmVxdWlyZUNsaWVudENlcnRpZmljYXRlcywgZGVmYXVsdFZhbHVlOiAnZmFsc2UnIH0NCisNCisgICAgZGVwZW5kZW5jeUNoYW5nZXM6DQorICAgIC0gSmV0dHkgNy42LjgNCisgICAgLSBKR2l0IDIuMi4wLjIwMTIxMjE5MTg1MC1yDQorICAgIC0gR3Jvb3Z5IDEuOC44DQorICAgIC0gV2lja2V0IDEuNC4yMQ0KKyAgICAtIEx1Y2VuZSAzLjYuMQ0KKyAgICAtIEJvdW5jeUNhc3RsZSAxLjQ3DQorICAgIC0gTWFya2Rvd25QYXBlcnMgMS4zLjINCisgICAgLSBKQ2FsZW5kYXIgMS4zLjINCisgICAgLSBDb21tb25zLUNvbXByZXNzIDEuNC4xDQorICAgIC0gWFogZm9yIEphdmEgMS4wDQorDQorICAgIGNvbnRyaWJ1dG9yczoNCisgICAgLSBnaXRodWIvcmFmYWVsY2F2YXppbg0KKyAgICAtIGdpdGh1Yi9tYWxsb3dsYWJzDQorICAgIC0gZ2l0aHViL3NhdXRoaWVnDQorICAgIC0gZ2l0aHViL2FqZXJtYWtvdmljcw0KKyAgICAtIGdpdGh1Yi9rZXZpbmFuZGVyc29uMQ0KKyAgICAtIGdpdGh1Yi9qcHllcm9uDQorfQ0KKw0KKyMNCisjIDEuMS4wDQorIw0KK3IxNDogew0KKyAgICB0aXRsZTogR2l0YmxpdCAxLjEuMCBSZWxlYXNlZA0KKyAgICBpZDogMS4xLjANCisgICAgZGF0ZTogMjAxMi0wOC0yNQ0KKyAgICBub3RlOiBJZiB5b3UgYXJlIHVwZGF0aW5nIGZyb20gYW4gZWFybGllciByZWxlYXNlIEFORCB5b3UgaGF2ZSBpbmRleGVkIGJyYW5jaGVzIHdpdGggdGhlIEx1Y2VuZSBpbmRleGluZyBmZWF0dXJlLCB5b3UgbmVlZCB0byBiZSBhd2FyZSB0aGF0IHRoaXMgcmVsZWFzZSB3aWxsIGNvbXBsZXRlbHkgcmUtaW5kZXggeW91ciByZXBvc2l0b3JpZXMuICBQbGVhc2UgYmUgc3VyZSB0byBwcm92aWRlIGFtcGxlIGhlYXAgcmVzb3VyY2VzIGFzIGFwcHJvcHJpYXRlIGZvciB5b3VyIGluc3RhbGxhdGlvbi4NCisNCisgICAgZml4ZXM6DQorICAgIC0gQnlwYXNzIFdpY2tldCdzIGluYWJpbGl0eSB0byBoYW5kbGUgZGlyZWN0IHVybCBhZGRyZXNzaW5nIG9mIGEgdmlldy1yZXN0cmljdGVkLCBncm91cGVkIHJlcG9zaXRvcnkgZm9yIG5ldywgdW5hdXRoZW50aWNhdGVkIHNlc3Npb25zIChlLmcuIGNsaWNrIGxpbmsgZnJvbSBlbWFpbCBvciByc3MgZmVlZCB3aXRob3V0IGhhdmluZyBhbiBhY3RpdmUgV2lja2V0IHNlc3Npb24pDQorICAgIC0gRml4ZWQgTWFpbEV4ZWN1dG9yJ3MgZmFpbHVyZSB0byBjb3BlIHdpdGggbWFpbCBzZXJ2ZXIgY29ubmVjdGlvbiB0cm91YmxlcyByZXN1bHRpbmcgaW4gMTAwJSBDUFUgdXNhZ2UNCisgICAgLSBGaXhlZCBnZW5lcmF0ZWQgdXJscyBpbiBHcm9vdnkgKnNlbmRtYWlsKiBob29rIHNjcmlwdCBmb3IgZ3JvdXBlZCByZXBvc2l0b3JpZXMNCisgICAgLSBGaXhlZCBnZW5lcmF0ZWQgdXJscyBpbiBSU1MgZmVlZHMgZm9yIGdyb3VwZWQgcmVwb3NpdG9yaWVzDQorICAgIC0gRml4ZWQgbnVsbHBvaW50ZXIgZXhjZXB0aW9uIGluIGdpdCBzZXJ2bGV0IHNlY3VyaXR5IGZpbHRlciAoaXNzdWUgMTIzKQ0KKyAgICAtIEVsaW1pbmF0ZWQgYW4gdW5uZWNlc3NhcnkgcmVwb3NpdG9yeSBlbnVtZXJhdGlvbiBjYWxsIG9uIHRoZSByb290IHBhZ2Ugd2hpY2ggc2hvdWxkIHJlc3VsdCBpbiBmYXN0ZXIgcGFnZSBsb2FkcyAoaXNzdWUgMTAzKQ0KKyAgICAtIEdpdGJsaXQgY291bGQgbm90IGRlbGV0ZSBhIEx1Y2VuZSBpbmRleCBpbiBhIHdvcmtpbmcgY29weSBvbiBpbmRleCB1cGdyYWRlDQorICAgIC0gRG8gbm90IGluZGV4IHN1Ym1vZHVsZSBsaW5rcyAoaXNzdWUgMTE5KQ0KKyAgICAtIFJlc3RvcmUgb3JpZ2luYWwgdXNlciBvciB0ZWFtIG9iamVjdCBvbiBmYWlsdXJlIHRvIHVwZGF0ZSAoaXNzdWUgMTE4KQ0KKyAgICAtIEZpeGVzIHRvIHJlbGF0aXZlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbiByZXBvc2l0b3J5IHNlYXJjaCBhbGdvcml0aG0gZm9yIHN5bWxpbmtzIChpc3N1ZSAxMTYpDQorICAgIC0gRml4IHRvIEdpdFNlcnZsZXQgdG8gYWxsb3cgcHVzaGluZyB0byBzeW1saW5rZWQgcmVwb3NpdG9yaWVzIChpc3N1ZSAxMTYpDQorICAgIC0gUmVwb3NpdG9yeSBVUkwgbm93IHVzZXMgYFgtRm9yd2FyZGVkLVByb3RvYCBhbmQgYFgtRm9yd2FyZGVkLVBvcnRgLCBpZiBhdmFpbGFibGUsIGZvciByZXZlcnNlIHByb3h5IGNvbmZpZ3VyYXRpb25zIChpc3N1ZSAxMTUpDQorICAgIC0gT3V0cHV0IHJlYWwgUkFXIGNvbnRlbnQsIG5vdCBzaW11bGF0ZWQgUkFXIGNvbnRlbnQgKGlzc3VlIDExNCkNCisgICAgLSBGaXhlZCBMdWNlbmUgY2hhcnNldCBlbmNvZGluZyBidWcgd2hlbiByZWluZGV4aW5nIGEgcmVwb3NpdG9yeSAoaXNzdWUgMTEyKQ0KKyAgICAtIEZpeGVkIHNlYXJjaCBib3ggbGlua2luZyB0byBMdWNlbmUgcGFnZSBmb3IgZ3JvdXBlZCByZXBvc2l0b3J5IG9uIFRvbWNhdCAoaXNzdWUgMTExKQ0KKyAgICAtIEZpeGVkIG51bGwgcG9pbnRlciBpbiBMZGFwVXNlclNlcml2Y2UgaWYgYWNjb3VudCBoYXMgYSBudWxsIGVtYWlsIGFkZHJlc3MgKGlzc3VlIDExMCkNCisgICAgLSBSZWFsbHkgZml4ZWQgZmFpbHVyZSB0byB1cGRhdGUgYSBHTyBzZXR0aW5nIGZyb20gdGhlIG1hbmFnZXIgKGlzc3VlIDg1KQ0KKw0KKyAgICBhZGRpdGlvbnM6DQorICAgIC0gSWRlbnRpZmllZCByZXBvc2l0b3J5IGxpc3QgaXMgbm93IGNhY2hlZCBieSBkZWZhdWx0IHRvIHJlZHVjZSBkaXNrIGlvIGFuZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIChpc3N1ZSAxMDMpDQorICAgIC0gUHJlbGltaW5hcnkgYmFyZSByZXBvc2l0b3J5IHN1Ym1vZHVsZSBzdXBwb3J0DQorICAgIC0gJycNCisgICAgICAqZ2l0LnN1Ym1vZHVsZVVybFBhdHRlcm5zKiBpcyBhIHNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIGV4dHJhY3RpbmcgYSByZXBvc2l0b3J5IG5hbWUgZnJvbSBhIHN1Ym1vZHVsZSB1cmwuDQorICAgICAgRm9yIGV4YW1wbGUsIGBnaXQuc3VibW9kdWxlVXJsUGF0dGVybnMgPSAuKj86Ly9naXRodWIuY29tLyguKilgIHdvdWxkIGV4dHJhY3QgKmdpdGJsaXQvZ2l0YmxpdC5naXQqIGZyb20gKmdpdDovL2dpdGh1Yi5naXQvZ2l0YmxpdC9naXRibGl0LmdpdCoNCisgICAgICAqKk5vdGU6KiogWW91IG1heSBub3QgbmVlZCB0aGlzIGNvbnRyb2wgdG8gd29yayB3aXRoIHN1Ym1vZHVsZXMsIGJ1dCBpdCBpcyB0aGVyZSBpZiB5b3UgZG8uDQorICAgICAgICAtIElmIHRoZXJlIGFyZSBubyBtYXRjaGVzIGZyb20gKmdpdC5zdWJtb2R1bGVVcmxQYXR0ZXJucyogdGhlbiB0aGUgcmVwb3NpdG9yeSBuYW1lIGlzIGFzc3VtZWQgdG8gYmUgd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgdGhlIGxhc3QgYC9gIGNoYXJhY3RlciAqKGUuZy4gZ2l0YmxpdC5naXQpKg0KKyAgICAgICAgLSBHaXRibGl0IHdpbGwgdHJ5IHRvIGxvY2F0ZSB0aGlzIHJlcG9zaXRvcnkgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcmVwb3NpdG9yeSAqKGUuZy4gbXlmb2xkZXIvbXlyZXBvLmdpdCwgbXlmb2xkZXIvbXlzdWJtb2R1bGUuZ2l0KSogYW5kIHRoZW4gYXQgdGhlIHJvb3QgbGV2ZWwgKihteXN1Ym1vZHVsZS5naXQpKiBpZiB0aGF0IGZhaWxzLg0KKyAgICAgICAgLSBTdWJtb2R1bGUgcmVmZXJlbmNlcyBpbiBhIHdvcmtpbmcgY29weSB3aWxsIGJlIHByb3Blcmx5IGlkZW50aWZpZWQgYXMgZ2l0bGlua3MsIGJ1dCBHaXRibGl0IHdpbGwgbm90IHRyYXZlcnNlIGludG8gdGhlIHdvcmtpbmcgY29weSBzdWJtb2R1bGUgcmVwb3NpdG9yeS4NCisgICAgICAnJw0KKyAgICAtICcnDQorICAgICAgQWRkZWQgYSByZXBvc2l0b3J5IHNldHRpbmcgdG8gY29udHJvbCBhdXRob3JpemF0aW9uIGFzIEFVVEhFTlRJQ0FURUQgb3IgTkFNRUQuIChpc3N1ZSAxMTcpDQorDQorICAgICAgTkFNRUQgaXMgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGZvciBhdXRob3JpemluZyBhZ2FpbnN0IGEgbGlzdCBvZiBwZXJtaXR0ZWQgdXNlcnMgb3IgcGVybWl0dGVkIHRlYW1zLg0KKyAgICAgIEFVVEhFTlRJQ0FURUQgYWxsb3dzIHJlc3RyaWN0ZWQgYWNjZXNzIGZvciBhbnkgYXV0aGVudGljYXRlZCB1c2VyLiAgVGhpcyBpcyBhIGxvb3NlciBhdXRob3JpemF0aW9uIGNvbnRyb2wuDQorICAgICAgJycNCisgICAgLSBBZGRlZCBkZWZhdWx0IGF1dGhvcml6YXRpb24gY29udHJvbCBzZXR0aW5nIChBVVRIRU5USUNBVEVEIG9yIE5BTUVEKQ0KKyAgICAtIEFkZGVkIHNldHRpbmcgdG8gY29udHJvbCBob3cgZGVlcCBHaXRibGl0IHdpbGwgcmVjdXJzZSBpbnRvICpnaXQucmVwb3NpdG9yaWVzRm9sZGVyKiBsb29raW5nIGZvciByZXBvc2l0b3JpZXMgKGlzc3VlIDEwMykNCisgICAgLSBBZGRlZCBzZXR0aW5nIHRvIHNwZWNpZnkgcmVnZXggZXhjbHVzaW9ucyBmb3IgcmVwb3NpdG9yaWVzIChpc3N1ZSAxMDMpDQorICAgIC0gQmxvYiBwYWdlIG5vdyBzdXBwb3J0cyBkaXNwbGF5aW5nIGltYWdlcyAoaXNzdWUgNikNCisgICAgLSBOb24taW1hZ2UgYmluYXJ5IGZpbGVzIGNhbiBub3cgYmUgZG93bmxvYWRlZCB1c2luZyB0aGUgUkFXIGxpbmsNCisgICAgLSBTdXBwb3J0IFN0YXJ0VExTIGluIExkYXBVc2VyU2VydmljZSAoaXNzdWUgMTIyKQ0KKyAgICAtIEFkZGVkIEtvcmVhbiB0cmFuc2xhdGlvbg0KKw0KKyAgICBjaGFuZ2VzOg0KKyAgICAtIExpbmUgYnJlYWtzIGluc2VydGVkIGZvciByZWFkYWJpbGl0eSBpbiByYXcgTWFya2Rvd24gY29udGVudCBkaXNwbGF5IGluIHRoZSBldmVudCBvZiBhIHBhcnNpbmcvdHJhbnNmb3JtYXRpb24gZXJyb3IuICBBbiBlcnJvciBtZXNzYWdlIGlzIG5vdyBkaXNwbGF5ZWQgcHJlcGVuZGVkIHRvIHRoZSByYXcgY29udGVudC4NCisgICAgLSBJbXByb3ZlIFVURi04IHJlYWRpbmcgZm9yIE1hcmtkb3duIGZpbGVzDQorICAgIC0gVXBkYXRlZCBQb2xpc2ggdHJhbnNsYXRpb24NCisgICAgLSBVcGRhdGVkIEphcGFuZXNlIHRyYW5zbGF0aW9uDQorICAgIC0gVXBkYXRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uDQorICAgIA0KKyAgICBzZXR0aW5nczoNCisgICAgLSB7IG5hbWU6IGdpdC5jYWNoZVJlcG9zaXRvcnlMaXN0LCBkZWZhdWx0VmFsdWU6ICd0cnVlJyB9DQorICAgIC0geyBuYW1lOiBnaXQuc3VibW9kdWxlVXJsUGF0dGVybnMsIGRlZmF1bHRWYWx1ZTogKiB9DQorICAgIC0geyBuYW1lOiBnaXQuc2VhcmNoRXhjbHVzaW9ucywgZGVmYXVsdFZhbHVlOiAqIH0NCisgICAgLSB7IG5hbWU6IGdpdC5zZWFyY2hSZWN1cnNpb25EZXB0aCwgZGVmYXVsdFZhbHVlOiAtMSB9DQorICAgIC0geyBuYW1lOiBnaXQuZGVmYXVsdEF1dGhvcml6YXRpb25Db250cm9sLCBkZWZhdWx0VmFsdWU6IE5BTUVEIH0NCisNCisgICAgY29udHJpYnV0b3JzOg0KKyAgICAtIFN0ZWZmZW4gR2ViZXJ0DQorfQ0KKw0KKyMNCisjIDEuMC4wDQorIw0KK3IxMzogew0KKyAgICB0aXRsZTogR2l0YmxpdCAxLjAuMCBSZWxlYXNlZA0KKyAgICBpZDogMS4wLjANCisgICAgZGF0ZTogMjAxMi0wNy0xNA0KKw0KKyAgICBmaXhlczoNCisgICAgLSBGaXhlZCBidWcgaW4gTHVjZW5lIHNlYXJjaCB3aGVyZSBvbGQvc3RhbGUgYmxvYnMgd2VyZSBuZXZlciBwcm9wZXJseSBkZWxldGVkIGR1cmluZyBpbmNyZW1lbnRhbCB1cGRhdGVzLiAgVGhpcyByZXN1bHRlZCBpbiBkdXBsaWNhdGUgYmxvYiBlbnRyaWVzIGluIHRoZSBpbmRleC4NCisgICAgLSBGaXhlZCBpbnRlcm1pdHRlbnQgYnVnIGluIGlkZW50aWZ5aW5nIGxpbmUgbnVtYmVycyBpbiBMdWNlbmUgc2VhcmNoIChpc3N1ZSAxMDUpDQorICAgIC0gQWRqdXN0IHJlcG9zaXRvcnkgaWRlbnRpZmljYXRpb24gYWxnb3JpdGhtIHRvIGhhbmRsZSB0aGUgc2NlbmFyaW8gd2hlcmUgYSByZXBvc2l0b3J5IG5hbWUgY29sbGlkZXMgd2l0aCBhIGdyb3VwL2ZvbGRlciBuYW1lIChlLmcuIGZvby5naXQgYW5kIGZvby9iYXIuZ2l0KSAoaXNzdWUgMTA0KQ0KKyAgICAtIEZpeGVkIGJ1ZyB3aGVyZSBhIHJlcG9zaXRvcnkgc2V0IGFzICphdXRoZW50aWNhdGVkIHB1c2gqIGRpZCBub3QgaGF2ZSBhbm9ueW1vdXMgY2xvbmUgYWNjZXNzIChpc3N1ZSA5NikNCisgICAgLSBGaXhlZCBidWcgaW4gQmFzaWMgYXV0aGVudGljYXRpb24gaWYgcGFzc3dvcmRzIGhhZCBhIGNvbG9uDQorICAgIC0gRml4ZWQgYnVnIHdoZXJlIHRoZSBHaXRibGl0IE1hbmFnZXIgY291bGQgbm90IHVwZGF0ZSBhIHNldHRpbmcgdGhhdCB3YXMgbm90IHJlZmVyZW5jZWQgaW4gcmVmZXJlbmNlLnByb3BlcnRpZXMgKGlzc3VlIDg1KQ0KKw0KKyAgICBjaGFuZ2VzOg0KKyAgICAtICcnKipVcGRhdGVkIEx1Y2VuZSBpbmRleCB2ZXJzaW9uIHdoaWNoIHdpbGwgZm9yY2UgYSByZWJ1aWxkIG9mIEFMTCB5b3VyIEx1Y2VuZSBpbmRleGVzKioNCisgICAgICBNYWtlIHN1cmUgdG8gcHJvcGVybHkgc2V0ICp3ZWIuYmxvYkVuY29kaW5ncyogYmVmb3JlIHN0YXJ0aW5nIEdpdGJsaXQgaWYgeW91IGFyZSB1cGRhdGluZyEgIChpc3N1ZSA5NyknJw0KKyAgICAtIENoYW5nZWQgZGVmYXVsdCBsYXlvdXQgZm9yIHdlYiB1aSBmcm9tIEZpeGVkLVdpZHRoIGxheW91dCB0byBSZXNwb25zaXZlIGxheW91dCAoaXNzdWUgMTAxKQ0KKyAgICAtICcnSVVzZXJTZXJ2aWNlIGludGVyZmFjZSBoYXMgY2hhbmdlZCB0byBiZXR0ZXIgYWNjb21vZGF0ZSBjdXN0b20gYXV0aGVudGljYXRpb24gYW5kL29yIGN1c3RvbSBhdXRob3JpemF0aW9uPA0KKyAgICAgIFRoZSBkZWZhdWx0IGB1c2Vycy5jb25mYCBub3cgc3VwcG9ydHMgcGVyc2lzdGluZyBkaXNwbGF5IG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMuJycNCisgICAgLSBVcGRhdGVkIEphcGFuZXNlIHRyYW5zbGF0aW9uDQorDQorICAgIGFkZGl0aW9uczoNCisgICAgLSBBZGRlZCBzZXR0aW5nIHRvIGFsbG93IHNwZWNpZmljYXRpb24gb2YgYSByb2JvdHMudHh0IGZpbGUgKGlzc3VlIDk5KQ0KKyAgICAtICcnQWRkZWQgc2V0dGluZyB0byBjb250cm9sIFJlc3BvbnNpdmUgbGF5b3V0IG9yIEZpeGVkLVdpZHRoIGxheW91dCAoaXNzdWUgMTAxKQ0KKyAgICAgIFJlc3BvbnNpdmUgbGF5b3V0IGlzIG5vdyB0aGUgZGVmYXVsdC4gIFRoaXMgbGF5b3V0IGdyYWNlZnVsbHkgc2NhbGVzIHRoZSB3ZWIgdWkgZnJvbSBhIGRlc2t0b3AgbGF5b3V0IHRvIGEgbW9iaWxlIGxheW91dCBieSBoaWRpbmcgcGFnZSBjb21wb25lbnRzLiAgSXQgaXMgZWFzeSB0byB0cnksIGp1c3QgcmVzaXplIHlvdXIgYnJvd3NlciBvciBwb2ludCB5b3VyIEFuZHJvaWQvaU9TIGRldmljZSB0byB0aGUgdXJsIG9mIHlvdXIgR2l0YmxpdCBpbnN0YWxsLicnDQorICAgIC0gQWRkZWQgc2V0dGluZyB0byBjb250cm9sIGNoYXJzZXRzIGZvciBibG9iIHN0cmluZyBkZWNvZGluZy4gIERlZmF1bHQgZW5jb2RpbmdzIGFyZSBVVEYtOCwgSVNPLTg4NTktMSwgYW5kIHRoZSBzZXJ2ZXIgZGVmYXVsdCBjaGFyc2V0LiAoaXNzdWUgOTcpICAgICAgDQorICAgIC0gJydFeHBvc2VkIEpHaXQgaW50ZXJuYWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBpbiBnaXRibGl0LnByb3BlcnRpZXMvd2ViLnhtbCAoaXNzdWUgOTMpDQorICAgICAgUmV2aWV3IHlvdXIgYGdpdGJsaXQucHJvcGVydGllc2Agb3IgYHdlYi54bWxgIGZvciBkZXRhaWxlZCBleHBsYW5hdGlvbnMgb2YgdGhlc2Ugc2V0dGluZ3MuJycNCisgICAgLSBBZGRlZCBkZWZhdWx0IGFjY2VzcyByZXN0cmljdGlvbi4gIEFwcGxpZXMgdG8gbmV3IHJlcG9zaXRvcmllcyBhbmQgcmVwb3NpdG9yaWVzIHRoYXQgaGF2ZSBub3QgYmVlbiBjb25maWd1cmVkIHdpdGggR2l0YmxpdC4gKGlzc3VlIDg4KQ0KKyAgICAtIEFkZGVkIEl2eSAyLjIuMCBkZXBlbmRlbmN5IHdoaWNoIGVuYWJsZXMgR3Jvb3Z5IEdyYXBlcywgYSBtZWNoYW5pc20gdG8gcmVzb2x2ZSBhbmQgcmV0cmlldmUgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSBhIE1hdmVuIDIgcmVwb3NpdG9yeSB3aXRoaW4gYSBHcm9vdnkgcHVzaCBob29rIHNjcmlwdA0KKyAgICAtICcnQWRkZWQgc2V0dGluZyB0byBjb250cm9sIEdyb292eSBHcmFwZSByb290IGZvbGRlciAobG9jYXRpb24gd2hlcmUgcmVzb2x2ZWQgZGVwZW5kZW5jaWVzIGFyZSBzdG9yZWQpDQorICAgICAgW0dyYXBlXShodHRwOi8vZ3Jvb3Z5LmNvZGVoYXVzLm9yZy9HcmFwZSkgYWxsb3dzIHlvdSB0byBhZGQgTWF2ZW4gZGVwZW5kZW5jaWVzIHRvIHlvdXIgcHJlLS9wb3N0LXJlY2VpdmUgaG9vayBzY3JpcHQgY2xhc3NwYXRoLicnDQorICAgIC0gQWRkZWQgTERBUCBVc2VyIFNlcnZpY2Ugd2l0aCBtYW55IG5ldyAqcmVhbG0ubGRhcCoga2V5cw0KKyAgICAtICcnQWRkZWQgc3VwcG9ydCBmb3IgY3VzdG9tIHJlcG9zaXRvcnkgcHJvcGVydGllcyBmb3IgR3Jvb3Z5IGhvb2tzDQorICAgICAgQ3VzdG9tIHJlcG9zaXRvcnkgcHJvcGVydGllcyBjb21wbGVtZW50IGhvb2sgc2NyaXB0cyBieSBwcm92aWRpbmcgdGV4dCBmaWVsZCBwcm9tcHRzIGluIHRoZSB3ZWIgdWkgYW5kIHRoZSBHaXRibGl0IE1hbmFnZXIgZm9yIHRoZSBkZWZpbmVkIHByb3BlcnRpZXMuICBUaGlzIGFsbG93cyB5b3VyIHB1c2ggaG9va3MgdG8gYmUgcGFyYW1ldGVyaXplZC4nJw0KKyAgICAtIEFkZGVkIHNjcmlwdCB0byBmYWNpbGl0YXRlIHByb3h5IGVudmlyb25tZW50IHNldHVwIG9uIExpbnV4DQorICAgIC0gQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uDQorICAgIC0gQWRkZWQgU3BhbmlzaCB0cmFuc2xhdGlvbg0KKw0KKyAgICBzZXR0aW5nczoNCisgICAgLSB7IG5hbWU6IGdyb292eS5ncmFwZUZvbGRlciwgZGVmYXVsdFZhbHVlOiBncm9vdnkvZ3JhcGUgfQ0KKyAgICAtIHsgbmFtZTogd2ViLnJvYm90cy50eHQsIGRlZmF1bHRWYWx1ZTogfQ0KKyAgICAtIHsgbmFtZTogd2ViLnVzZVJlc3BvbnNpdmVMYXlvdXQsIGRlZmF1bHRWYWx1ZTogJ3RydWUnIH0NCisgICAgLSB7IG5hbWU6IHdlYi5ibG9iRW5jb2RpbmdzLCBkZWZhdWx0VmFsdWU6IFVURi04IElTTy04ODU5LTEgfQ0KKyAgICAtIHsgbmFtZTogZ2l0LmRlZmF1bHRBY2Nlc3NSZXN0cmljdGlvbiwgZGVmYXVsdFZhbHVlOiBOT05FIH0NCisgICAgLSB7IG5hbWU6IGdpdC5wYWNrZWRHaXRXaW5kb3dTaXplLCBkZWZhdWx0VmFsdWU6IDhrIH0NCisgICAgLSB7IG5hbWU6IGdpdC5wYWNrZWRHaXRMaW1pdCwgZGVmYXVsdFZhbHVlOiAxMG0gfQ0KKyAgICAtIHsgbmFtZTogZ2l0LmRlbHRhQmFzZUNhY2hlTGltaXQsIGRlZmF1bHRWYWx1ZTogMTBtIH0NCisgICAgLSB7IG5hbWU6IGdpdC5wYWNrZWRHaXRPcGVuRmlsZXMsIGRlZmF1bHRWYWx1ZTogMTI4IH0NCisgICAgLSB7IG5hbWU6IGdpdC5zdHJlYW1GaWxlVGhyZXNob2xkLCBkZWZhdWx0VmFsdWU6IDUwbSB9DQorICAgIC0geyBuYW1lOiBnaXQucGFja2VkR2l0TW1hcCwgZGVmYXVsdFZhbHVlOiAnZmFsc2UnIH0NCisNCisgICAgZGVwZW5kZW5jeUNoYW5nZXM6DQorICAgIC0gQm9vdHN0cmFwIDIuMC40DQorICAgIC0gSkdpdCAyLjAuMC4yMDEyMDYxMzA5MDAtcg0KKyAgICAtIEdyb292eSAxLjguNg0KKyAgICAtIEdzb24gMS43LjINCisgICAgLSBMb2c0SiAxLjIuMTcNCisgICAgLSBTTEY0SiAxLjYuNg0KKyAgICAtIEFwYWNoZSBDb21tb25zIERhZW1vbiAxLjAuMTANCisgICAgLSBJdnkgMi4yLjANCisNCisgICAgY29udHJpYnV0b3JzOg0KKyAgICAtIEVkdWFyZG8gR3VlcnZvcyBOYXJ2YWV6DQorICAgIC0gTHVrYXN6IEphZGVyDQorICAgIC0gZ2l0aHViL21yYWdhYg0KKyAgICAtIGdpdGh1Yi9qY3J5Z2llcg0KKyAgICAtIGdpdGh1Yi96YWtraQ0KKyAgICAtIGdpdGh1Yi9wZXRlcmxvcm9uDQorfQ0KKw0KKyMNCisjIDAuOS4zDQorIw0KK3IxMjogew0KKyAgICB0aXRsZTogR2l0YmxpdCAwLjkuMyBSZWxlYXNlZA0KKyAgICBpZDogMC45LjMNCisgICAgZGF0ZTogMjAxMi0wNC0xMQ0KKw0KKyAgICBmaXhlczoNCisgICAgLSBGaXhlZCBidWcgd2hlcmUgeW91IGNvdWxkIG5vdCByZW1vdmUgYWxsIHNlbGVjdGlvbnMgZnJvbSBhIFJlcG9zaXRvcnlNb2RlbCBsaXN0IChwZXJtaXR0ZWQgdXNlcnMsIHBlcm1pdHRlZCB0ZWFtcywgaG9vayBzY3JpcHRzLCBmZWRlcmF0aW9uIHNldHMsIGV0YykgKGlzc3VlIDgxKQ0KKyAgICAtIEF1dG9tYXRpY2FsbHkgc2V0ICpqYXZhLmF3dC5oZWFkbGVzcz10cnVlKiBmb3IgR2l0YmxpdCBHTw0KK30NCisNCisjDQorIyAwLjkuMg0KKyMNCityMTE6IHsNCisgICAgdGl0bGU6IEdpdGJsaXQgMC45LjIgUmVsZWFzZWQNCisgICAgaWQ6IDAuOS4yDQorICAgIGRhdGU6IDIwMTItMDQtMDQNCisgICAgDQorICAgIGNoYW5nZXM6DQorICAgIC0gQWRkZWQgKmNsaWVudExvZ2dlciogYm91bmQgdmFyaWFibGUgdG8gR3Jvb3Z5IGhvb2sgbWVjaGFuaXNtIHRvIGFsbG93IGN1c3RvbSBpbmZvIGFuZCBlcnJvciBtZXNzYWdlcyB0byBiZSByZXR1cm5lZCB0byB0aGUgY2xpZW50DQorDQorICAgZml4ZXM6DQorICAgIC0gRml4ZWQgYWJzb2x1dGUgcGF0aC9jYW5vbmljYWwgcGF0aCBkaXNjcmVwYW5jeSBiZXR3ZWVuIEdpdGJsaXQgYW5kIEpHaXQgcmVnYXJkaW5nIHVzZSBvZiBzeW1saW5rcyAoaXNzdWUgNzgpDQorICAgIC0gRml4ZWQgcm93IGxheW91dCBvbiBhY3Rpdml0eSBwYWdlIChpc3N1ZSA3OSkNCisgICAgLSBGaXhlZCBDZW50b3Mgc2VydmljZSBzY3JpcHQNCisgICAgLSBGaXhlZCBFZGl0UmVwb3NpdG9yeVBhZ2UgZm9yIElFODsgbWlzc2luZyBzYXZlIGJ1dHRvbiAoaXNzdWUgODApDQorDQorICAgIGNvbnRyaWJ1dG9yczoNCisgICAgLSBnaXRodWIvam9ubnliYmINCisgICAgLSBnaXRodWIvbW9oYW1lZG1hbnNvdXINCisgICAgLSBnaXRodWIvamNyeWdpZXINCit9DQorDQorIw0KKyMgMC45LjENCisjDQorcjEwOiB7DQorICAgIHRpdGxlOiBHaXRibGl0IDAuOS4xIFJlbGVhc2VkDQorICAgIGlkOiAwLjkuMQ0KKyAgICBkYXRlOiAyMDEyLTAzLTI3DQorDQorICAgIGZpeGVzOg0KKyAgICAtIEx1Y2VuZSBmb2xkZXIgd2FzIHN0b3JlZCBpbiB3b3JraW5nIGNvcHkgaW5zdGVhZCBvZiBpbiAuZ2l0IGZvbGRlcg0KK30NCisNCisjDQorIyAwLjkuMA0KKyMNCityOTogew0KKyAgICB0aXRsZTogR2l0YmxpdCAwLjkuMCBSZWxlYXNlZA0KKyAgICBpZDogMC45LjANCisgICAgZGF0ZTogMjAxMi0wMy0yNw0KKw0KKyAgICBzZWN1cml0eToNCisgICAgLSBGaXhlZCBzZXNzaW9uIGZpeGF0aW9uIHZ1bG5lcmFiaWxpdHkgd2hlcmUgdGhlIHNlc3Npb24gaWRlbnRpZmllciB3YXMgbm90IHJlc2V0IGR1cmluZyB0aGUgbG9naW4gcHJvY2VzcyAoaXNzdWUgNjIpDQorDQorICAgIGNoYW5nZXM6DQorICAgIC0gUmVqZWN0IHB1c2hlcyB0byBhIHJlcG9zaXRvcnkgd2l0aCBhIHdvcmtpbmcgY29weSAoaS5lLiBub24tYmFyZSByZXBvc2l0b3J5KSAoaXNzdWUtNDkpDQorICAgIC0gQ2hhbmdlZCBkZWZhdWx0IHdlYi5kYXRldGltZXN0YW1wTG9uZ0Zvcm1hdCBmcm9tICpFRUVFLCBNTU1NIGQsIHl5eXkgaDptbSBhIHoqIHRvICpFRUVFLCBNTU1NIGQsIHl5eXkgSEg6bW0gWiogKGlzc3VlIDUwKQ0KKyAgICAtIEV4cGFuZGVkIGNvbW1pdCBhZ2UgY29sb3JpbmcgZnJvbSAyIGRheXMgdG8gMzAgZGF5cyAoaXNzdWUgNTcpDQorDQorICAgIGFkZGl0aW9uczoNCisgICAgLSAnJ0FkZGVkIG9wdGlvbmFsIEx1Y2VuZSBicmFuY2ggaW5kZXhpbmcgKGlzc3VlIDE2KQ0KKyAgICAgIFJlcG9zaXRvcnkgYnJhbmNoZXMgbWF5IGJlIG9wdGlvbmFsbHkgaW5kZXhlZCBieSBMdWNlbmUgZm9yIGltcHJvdmVkIHNlYXJjaGluZy4gIFRvIHVzZSB0aGlzIGZlYXR1cmUgeW91IG11c3Qgc3BlY2lmeSB3aGljaCBicmFuY2hlcyB0byBpbmRleCB3aXRoaW4gdGhlICpFZGl0IFJlcG9zaXRvcnkqIHBhZ2U7IF9ubyByZXBvc2l0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5kZXhlZF8uICBHaXRibGl0IHdpbGwgYnVpbGQgb3IgaW5jcmVtZW50YWxseSB1cGRhdGUgZW5yb2xsZWQgcmVwb3NpdG9yaWVzIG9uIGEgMiBtaW51dGUgY3ljbGUuIChpLmUgeW91IHdpbGwgaGF2ZSB0byB3YWl0IDItMyBtaW51dGVzIGFmdGVyIHJlc3BlY2lmeWluZyBpbmRleGVkIGJyYW5jaGVzIG9yIHB1c2hpbmcgbmV3IGNvbW1pdHMgYmVmb3JlIEdpdGJsaXQgd2lsbCBidWlsZC91cGRhdGUgdGhlIHJlcG9zaXRvcnkgTHVjZW5lIGluZGV4LikNCisgICAgICBJZiBhIHJlcG9zaXRvcnkgaGFzIEx1Y2VuZS1pbmRleGVkIGJyYW5jaGVzIHRoZSAqc2VhcmNoKiBmb3JtIG9uIHRoZSByZXBvc2l0b3J5IHBhZ2VzIHdpbGwgcmVkaXJlY3QgdG8gdGhlIHJvb3QtbGV2ZWwgTHVjZW5lIHNlYXJjaCBwYWdlIGFuZCBvbmx5IHRoZSBjb250ZW50IG9mIHRob3NlIGJyYW5jaGVzIGNhbiBiZSBzZWFyY2hlZC48YnIvPg0KKyAgICAgIElmIHRoZSByZXBvc2l0b3J5IGRvZXMgbm90IHNwZWNpZnkgYW55IGluZGV4ZWQgYnJhbmNoZXMgdGhlbiByZXBvc2l0b3J5IGNvbW1pdC10cmF2ZXJzYWwgc2VhcmNoIGlzIHVzZWQuDQorDQorICAgICAgKipOb3RlOioqIEluaXRpYWwgaW5kZXhpbmcgb2YgYW4gZXhpc3RpbmcgcmVwb3NpdG9yeSBjYW4gYmUgbWVtb3J5LWV4aGF1c3RpdmUuIEJlIHN1cmUgdG8gcHJvdmlkZSB5b3VyIEdpdGJsaXQgc2VydmVyIGFkZXF1YXRlIGhlYXAgc3BhY2UgdG8gaW5kZXggeW91ciByZXBvc2l0b3JpZXMgKGUuZy4gLVhteDEwMjRNKS48YnIvPg0KKyAgICAgIFNlZSB0aGUgW3NldHVwXShzZXR1cC5odG1sKSBwYWdlIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuJycNCisgICAgLSBBbGxvdyBzcGVjaWZ5aW5nIHRpbWV6b25lIHRvIHVzZSBmb3IgR2l0YmxpdCB3aGljaCBpcyBpbmRlcGVuZGVudCBvZiBib3RoIHRoZSBKVk0gYW5kIHRoZSBzeXN0ZW0gdGltZXpvbmUgKGlzc3VlIDU0KQ0KKyAgICAtIEFkZGVkIGEgYnVpbHQtaW4gQUpQIGNvbm5lY3RvciBmb3IgaW50ZWdyYXRpbmcgR2l0YmxpdCBHTyBpbnRvIGFuIEFwYWNoZSBtb2RfcHJveHkgc2V0dXAgKGlzc3VlIDU5KQ0KKyAgICAtICcnT24gdGhlIFJlcG9zaXRvcmllcyBwYWdlIHNob3cgYSBiYW5nICohKiBjaGFyYWN0ZXIgaW4gdGhlIGNvbG9yIHN3YXRjaCBvZiBhIHJlcG9zaXRvcnkgd2l0aCBhIHdvcmtpbmcgY29weSAoaXNzdWUgNDkpDQorICAgICAgUHVzaCByZXF1ZXN0cyB0byB0aGVzZSByZXBvc2l0b3JpZXMgd2lsbCBiZSByZWplY3RlZC4nJw0KKyAgICAtIE9uIGFsbCBub24tYmFyZSBSZXBvc2l0b3J5IHBhZ2VzIHNob3cgKldPUktJTkcgQ09QWSogaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lciAoaXNzdWUgNDkpDQorICAgIC0gTmV3IHNldHRpbmcgdG8gcHJldmVudCBkaXNwbGF5L3NlcnZpbmcgbm9uLWJhcmUgcmVwb3NpdG9yaWVzDQorICAgIC0gQWRkZWQgKnByb3RlY3QtcmVmcy5ncm9vdnkqDQorICAgIC0gQWxsb3cgc2V0dGluZyBkZWZhdWx0IGJyYW5jaCAocmVsaW5raW5nIEhFQUQpIHRvIGEgYnJhbmNoIG9yIGEgdGFnDQorICAgIC0gQWRkZWQgVWJ1bnR1IHNlcnZpY2UgaW5pdCBzY3JpcHQgKGlzc3VlIDcyKQ0KKyAgICAtIEFkZGVkIHBhcnRpYWwgSmFwYW5lc2UgdHJhbnNsYXRpb24NCisNCisgICAgZml4ZXM6DQorICAgIC0gRW5zdXJlIHRoYXQgV2VsY29tZSBtZXNzYWdlIGlzIHBhcnNlZCB1c2luZyBVVEYtOCBlbmNvZGluZyAoaXNzdWUgNzQpDQorICAgIC0gQWN0aXZpdHkgcGFnZSBjaGFydCBsYXlvdXQgYnJva2VuIGJ5IEdvb2dsZSAoaXNzdWUgNzMpDQorICAgIC0gVXBwZXJjYXNlIHJlcG9zaXRvcmllcyBub3Qgc2VsZWN0YWJsZSBpbiBlZGl0IHBhbGV0dGVzIChpc3N1ZSA3MSkNCisgICAgLSBOb3QgYWxsIGdpdCBub3RlcyB3ZXJlIHByb3Blcmx5IGRpc3BsYXllZCBvbiB0aGUgY29tbWl0IHBhZ2UgKGlzc3VlIDcwKQ0KKyAgICAtIEFjdGl2aXR5IHBhZ2Ugbm93IGRpc3BsYXlzIGFsbCBsb2NhbCBicmFuY2hlcyAoaXNzdWUgNjUpDQorICAgIC0gRml4ZWQgKGhhcm1sZXNzKSBudWxscG9pbnRlciBvbiBwdXNoaW5nIHRvIGFuIGVtcHR5IHJlcG9zaXRvcnkgKGlzc3VlIDY5KQ0KKyAgICAtIEZpeGVkIHBvc3NpYmxlIG51bGxwb2ludGVyIGZyb20gdGhlIHNlcnZsZXQgY29udGFpbmVyIG9uIHN0YXJ0dXAgKGlzc3VlIDY3KQ0KKyAgICAtIEZpeGVkIFVURi04IGVuY29kaW5nIGJ1ZyBvbiBkaWZmIHBhZ2UgKGlzc3VlIDY2KQ0KKyAgICAtIEZpeGVkIHRpbWV6b25lIGJ1Z3Mgb24gdGhlIGFjdGl2aXR5IHBhZ2UgKGlzc3VlIDU0KQ0KKyAgICAtIFByZXZlbnQgYWRkL2VkaXQgdGVhbSB3aXRoIG5vIHNlbGVjdGVkIHJlcG9zaXRvcmllcyAoaXNzdWUgNTYpDQorICAgIC0gRGlzYWxsb3cgYnJvd3NlciBhdXRvY29tcGxldGUgb24gYWRkL2VkaXQgdXNlci90ZWFtL3JlcG9zaXRvcnkgcGFnZXMNCisgICAgLSBGaXhlZCB1c2VybmFtZSBjYXNlLXNlbnNpdGl2aXR5IGlzc3VlcyAoaXNzdWUgNDMpDQorICAgIC0gRGlzcmVnYXJkIHNlYXJjaGluZyBhIHN1YmZvbGRlciBpZiBHaXRibGl0IGRvZXMgbm90IGhhdmUgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucyAoaXNzdWUgNTEpDQorDQorICAgIHNldHRpbmdzOg0KKyAgICAtIHsgbmFtZTogd2ViLmFsbG93THVjZW5lSW5kZXhpbmcsIGRlZmF1bHRWYWx1ZTogJ3RydWUnIH0NCisgICAgLSB7IG5hbWU6IHdlYi5sdWNlbmVJZ25vcmVFeHRlbnNpb25zLCBkZWZhdWx0VmFsdWU6IDd6IGFyYyBhcmogYmluIGJtcCBkbGwgZG9jIGRvY3ggZXhlIGdpZiBneiBqYXIganBnIGxpYiBsemggb2RnIG9kZiBvZHQgcGRmIHBwdCBwbmcgc28gc3dmIHhjZiB4bHMgeGxzeCB6aXAgfQ0KKyAgICAtIHsgbmFtZTogd2ViLnRpbWV6b25lLCBkZWZhdWx0VmFsdWU6IH0NCisgICAgLSB7IG5hbWU6IHNlcnZlci5hanBQb3J0LCBkZWZhdWx0VmFsdWU6IDAgfQ0KKyAgICAtIHsgbmFtZTogc2VydmVyLmFqcEJpbmRJbnRlcmZhY2UsIGRlZmF1bHRWYWx1ZTogbG9jYWxob3N0IH0NCisgICAgLSB7IG5hbWU6IGdpdC5vbmx5QWNjZXNzQmFyZVJlcG9zaXRvcmllcywgZGVmYXVsdFZhbHVlOiAnZmFsc2UnIH0NCisNCisgICAgZGVwZW5kZW5jeUNoYW5nZXM6DQorICAgIC0gQm9vdHN0cmFwIDIuMC4yDQorICAgIC0gTWFya2Rvd25QYXBlcnMgMS4yLjcNCisgICAgLSBKR2l0IDEuMy4wLjIwMTIwMjE1MTQ0MC1yDQorICAgIC0gV2lja2V0IDEuNC4yMA0KKw0KKyAgICBjb250cmlidXRvcnM6DQorICAgIC0gZ2l0aHViL2xlbXZhbA0KKyAgICAtIGdpdGh1Yi96YWtraQ0KKyAgICAtIGdpdGh1Yi9wbG0NCit9DQorDQorIw0KKyMgMC44LjINCisjDQorcjg6IHsNCisgICAgdGl0bGU6IEdpdGJsaXQgMC44LjIgUmVsZWFzZWQNCisgICAgaWQ6IDAuOC4yDQorICAgIGRhdGU6IDIwMTItMDEtMTMNCisNCisgICAgZml4ZXM6DQorICAgIC0gRml4ZWQgYnVnIHdoZW4gdXBncmFkaW5nIGZyb20gdXNlcnMucHJvcGVydGllcyB0byB1c2Vycy5jb25mIChpc3N1ZSA0MSkNCit9DQorDQorIw0KKyMgMC44LjENCisjDQorcjc6IHsNCisgICAgdGl0bGU6IEdpdGJsaXQgMC44LjEgUmVsZWFzZWQNCisgICAgaWQ6IDAuOC4xDQorICAgIGRhdGU6IDIwMTItMDEtMTENCisNCisgICAgZml4ZXM6DQorICAgIC0gSW5jbHVkZSBtaXNzaW5nIGljb24gcmVzb3VyY2UgZm9yIHRoZSBtYW5hZ2VyIChpc3N1ZSA0MCkNCisgICAgLSBGaXhlZCBzZW5kbWFpbC5ncm9vdnkgbWVzc2FnZSBjb250ZW50IHdpdGggaW5jb3JyZWN0IHRhZy9icmFuY2ggbGFiZWxzDQorfQ0KKw0KKyMNCisjIDAuOC4wDQorIw0KK3I2OiB7DQorICAgIHRpdGxlOiBHaXRibGl0IDAuOC4wIFJlbGVhc2VkDQorICAgIGlkOiAwLjguMA0KKyAgICBkYXRlOiAyMDEyLTAxLTExDQorDQorICAgIGFkZGl0aW9uczoNCisgICAgLSAnJ1BsYXRmb3JtLWluZGVwZW5kZW50LCBHcm9vdnkgcHVzaCBob29rIHNjcmlwdCBtZWNoYW5pc20uDQorICAgICAgSG9vayBzY3JpcHRzIGNhbiBiZSBzZXQgcGVyLXJlcG9zaXRvcnksIHBlci10ZWFtLCBvciBnbG9iYWxseSBmb3IgYWxsIHJlcG9zaXRvcmllcy4nJw0KKyAgICAtICcnKnNlbmRtYWlsLmdyb292eSogZm9yIG9wdGlvbmFsIGVtYWlsIG5vdGlmaWNhdGlvbnMgb24gcHVzaC4NCisgICAgICBZb3UgbXVzdCBwcm9wZXJseSBjb25maWd1cmUgeW91ciBTTVRQIHNlcnZlciBzZXR0aW5ncyBpbiBgZ2l0YmxpdC5wcm9wZXJ0aWVzYCBvciBgd2ViLnhtbGAgdG8gdXNlICpzZW5kbWFpbC5ncm9vdnkqLicnDQorICAgIC0gTmV3IGdsb2JhbCBrZXkgZm9yIG1haWxpbmcgbGlzdHMuICBUaGlzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgKnNlbmRtYWlsLmdyb292eSogaG9vayBzY3JpcHQuICBBbGwgcmVwb3NpdG9yaWVzIHRoYXQgdXNlIHRoZSAqc2VuZG1haWwuZ3Jvb3Z5KiBzY3JpcHQgd2lsbCBpbmNsdWRlIHRoZXNlIGFkZHJlc3NlcyBpbiB0aGUgbm90aWZpY2F0aW9uIHByb2Nlc3MuICBQbGVhc2Ugc2VlIHRoZSBTZXR1cCBwYWdlIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgY29uZmlndXJpbmcgc2VuZG1haWwuDQorICAgIC0gKmNvbS5naXRibGl0LkdpdGJsaXRVc2VyU2VydmljZSouICBUaGlzIGlzIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBidWlsdC1pbiB1c2VyIHNlcnZpY2UgaW1wbGVtZW50YXRpb25zLiAgRm9yIHRob3NlIHdhbnRpbmcgdG8gb25seSBpbXBsZW1lbnQgY3VzdG9tIGF1dGhlbnRpY2F0aW9uIGl0IGlzIHJlY29tbWVuZGVkIHRvIHN1YmNsYXNzIEdpdGJsaXRVc2VyU2VydmljZSBhbmQgb3ZlcnJpZGUgdGhlIGFwcHJvcHJpYXRlIG1ldGhvZHMuICBHb2luZyBmb3J3YXJkLCB0aGlzIHdpbGwgaGVscCBpbnN1bGF0ZSBjdXN0b20gYXV0aGVudGljYXRpb24gZnJvbSBuZXcgSVVzZXJTZXJ2aWNlIEFQSSBhbmQvb3IgY2hhbmdlcyBpbiBtb2RlbCBjbGFzc2VzLg0KKyAgICAtICcnTmV3IGRlZmF1bHQgdXNlciBzZXJ2aWNlIGltcGxlbWVudGF0aW9uOiAqY29tLmdpdGJsaXQuQ29uZmlnVXNlclNlcnZpY2UqIChgdXNlcnMuY29uZmApDQorICAgICAgVGhpcyB1c2VyIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gYWxsb3dzIGZvciBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgbW9yZSBzb3BoaXN0aWNhdGVkIEdpdGJsaXQgVXNlciBvYmplY3RzIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSBlbmNvZGluZyB0cmlja2VyeSBub3cgcHJlc2VudCBpbiBGaWxlVXNlclNlcnZpY2UgKHVzZXJzLnByb3BlcnRpZXMpLiAgVGhpcyB3aWxsIG9wZW4gdGhlIGRvb3IgZm9yIG1vcmUgYWR2YW5jZWQgR2l0YmxpdCBmZWF0dXJlcy4NCisgICAgICBGb3IgdGhvc2UgdXBncmFkaW5nIGZyb20gYW4gZWFybGllciBHaXRibGl0IHZlcnNpb24sIGEgYHVzZXJzLmNvbmZgIGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgZm9yIHlvdSBmcm9tIHlvdXIgZXhpc3RpbmcgYHVzZXJzLnByb3BlcnRpZXNgIGZpbGUgb24geW91ciBmaXJzdCBsYXVuY2ggb2YgR2l0YmxpdCA8dT5ob3dldmVyPC91PiB5b3Ugd2lsbCBoYXZlIHRvIG1hbnVhbGx5IHNldCAqcmVhbG0udXNlclNlcnZpY2U9dXNlcnMuY29uZiogdG8gc3dpdGNoIHRvIHRoZSBuZXcgdXNlciBzZXJ2aWNlLg0KKyAgICAgIFRoZSBvcmlnaW5hbCBgdXNlcnMucHJvcGVydGllc2AgZmlsZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW1wbGVtZW50YXRpb24gYXJlICoqZGVwcmVjYXRlZCoqLicnDQorICAgIC0gVGVhbXMgZm9yIHNwZWNpZnlpbmcgdXNlci1yZXBvc2l0b3J5IGFjY2VzcyBpbiBidWxrLiAgVGVhbXMgbWF5IGFsc28gc3BlY2lmeSBtYWlsaW5nIGxpc3RzIGFkZHJlc3NlcyBhbmQgcHJlLSAmIHBvc3QtIHJlY2VpdmUgaG9vayBzY3JpcHRzLg0KKyAgICAtIEdyYXZhdGFyIGludGVncmF0aW9uDQorICAgIC0gQWN0aXZpdHkgcGFnZSBmb3IgYWdncmVnYXRlZCByZXBvc2l0b3J5IGFjdGl2aXR5LiAgVGhpcyBpcyBhIHRpbWVsaW5lIG9mIGNvbW1pdCBhY3Rpdml0eSBvdmVyIHRoZSBsYXN0IE4gZGF5cyBmb3Igb25lIG9yIG1vcmUgcmVwb3NpdG9yaWVzLg0KKyAgICAtICpGaWx0ZXJzKiBtZW51IGZvciB0aGUgUmVwb3NpdG9yaWVzIHBhZ2UgYW5kIEFjdGl2aXR5IHBhZ2UuICBZb3UgY2FuIGZpbHRlciBieSBmZWRlcmF0aW9uIHNldCwgdGVhbSwgYW5kIHNpbXBsZSBjdXN0b20gcmVndWxhciBleHByZXNzaW9ucy4gIEN1c3RvbSBleHByZXNzaW9ucyBjYW4gYmUgc3RvcmVkIGluIGBnaXRibGl0LnByb3BlcnRpZXNgIG9yIGB3ZWIueG1sYCBvciBkaXJlY3RseSBkZWZpbmVkIGluIHlvdXIgdXJsIChpc3N1ZSAyNykNCisgICAgLSBGbGFzaC1iYXNlZCAxLXN0ZXAgKmNvcHkgdG8gY2xpcGJvYXJkKiBvZiB0aGUgcHJpbWFyeSByZXBvc2l0b3J5IHVybCBiYXNlZCBvbiBDbGlwcHkNCisgICAgLSBKYXZhU2NyaXB0LWJhc2VkIDMtc3RlcCAoY2xpY2ssIGN0cmwrYywgZW50ZXIpICpjb3B5IHRvIGNsaXBib2FyZCogb2YgdGhlIHByaW1hcnkgcmVwb3NpdG9yeSB1cmwgaW4gdGhlIGV2ZW50IHRoYXQgeW91IGRvIG5vdCB3YW50IHRvIHVzZSBGbGFzaCBvbiB5b3VyIGluc3RhbGxhdGlvbg0KKyAgICAtIEVtcHR5IHJlcG9zaXRvcmllcyBub3cgbGluayB0byBhbiAqZW1wdHkgcmVwb3NpdG9yeSogcGFnZSB3aGljaCBnaXZlcyBzb21lIGRpcmVjdGlvbiB0byB0aGUgdXNlciBmb3IgdGhlIG5leHQgc3RlcCBpbiB1c2luZyBHaXRibGl0LiAgVGhpcyBwYWdlIGRpc3BsYXlzIHRoZSBwcmltYXJ5IHB1c2gvY2xvbmUgdXJsIG9mIHRoZSByZXBvc2l0b3J5IGFuZCBnaXZlcyBzYW1wbGUgc3ludGF4IGZvciB0aGUgZ2l0IGNvbW1hbmQtbGluZSBjbGllbnQuIChpc3N1ZSAzMSkNCisgICAgLSBSZXBvc2l0b3JpZXMgd2l0aCBhICpnaC1wYWdlcyogYnJhbmNoIHdpbGwgbm93IGhhdmUgYSAqcGFnZXMqIGxpbmsgd2hpY2ggd2lsbCBzZXJ2ZSB0aGUgY29udGVudCBvZiB0aGlzIGJyYW5jaC4gIEFsbCByZXNvdXJjZSByZXF1ZXN0cyBhcmUgYWdhaW5zdCB0aGUgcmVwb3NpdG9yeSwgR2l0YmxpdCBkb2VzIG5vdCBjaGVja291dC9leHBvcnQgdGhpcyBicmFuY2ggdG8gYSB0ZW1wb3JhcnkgZmlsZXN5c3RlbS4gIEpla3lsbCB0ZW1wbGF0aW5nIGlzIG5vdCBzdXBwb3J0ZWQuDQorICAgIC0gR2l0YmxpdCBFeHByZXNzIGJ1bmRsZSB0byBnZXQgc3RhcnRlZCBydW5uaW5nIEdpdGJsaXQgb24gUmVkSGF0IE9wZW5TaGlmdCBjbG91ZCA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtd2FybmluZyI+QkVUQTwvc3Bhbj4NCisNCisgICAgY2hhbmdlczoNCisgICAgLSBEcm9wcGVkIGRpc3BsYXkgb2YgdHJhaWxpbmcgLmdpdCBmcm9tIHJlcG9zaXRvcnkgbmFtZXMNCisgICAgLSAnJ0dpdGJsaXQgR08gaXMgbm93IG1vbm9saXRoaWMgbGlrZSB0aGUgV0FSIGJ1aWxkLiAoaXNzdWUgMzApDQorICAgICAgVGhpcyBjaGFuZ2UgaGVscHMgYWRvcHRpb24gb2YgR08gaW4gZW52aXJvbm1lbnRzIHdpdGhvdXQgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiBvciB3aXRoIGEgcmVzdHJpY3RlZCBjb25uZWN0aW9uLicnDQorICAgIC0gVW5pdCB0ZXN0aW5nIGZyYW1ld29yayBoYXMgYmVlbiBtaWdyYXRlZCB0byBKVW5pdDQgc3ludGF4IGFuZCB0aGUgdGVzdCBzdWl0ZSBoYXMgYmVlbiByZWRlc2lnbmVkIHRvIHJ1biBhbGwgdW5pdCB0ZXN0cywgaW5jbHVkaW5nIHJwYywgZmVkZXJhdGlvbiwgYW5kIGdpdCBwdXNoL2Nsb25lIHRlc3RzDQorDQorICAgIGZpeGVzOg0KKyAgICAtIFNldmVyYWwgYSBidWdzIGluIEZpbGVVc2VyU2VydmljZSByZWxhdGVkIHRvIGNsZWFuaW5nIHVwIG9sZCByZXBvc2l0b3J5IHBlcm1pc3Npb25zIG9uIGEgcmVuYW1lIG9yIGRlbGV0ZQ0KKyAgICAtIFJlbmFtaW5nIGEgcmVwb3NpdG9yeSBpbnRvIGEgbmV3IHN1YmZvbGRlciBmYWlsZWQgKGlzc3VlIDMzKQ0KKw0KKyAgICBzZXR0aW5nczoNCisgICAgLSB7IG5hbWU6IGdyb292eS5zY3JpcHRzRm9sZGVyLCBkZWZhdWx0VmFsdWU6IGdyb292eSB9DQorICAgIC0geyBuYW1lOiBncm9vdnkucHJlUmVjZWl2ZVNjcmlwdHMsIGRlZmF1bHRWYWx1ZTogfQ0KKyAgICAtIHsgbmFtZTogZ3Jvb3Z5LnBvc3RSZWNlaXZlU2NyaXB0cywgZGVmYXVsdFZhbHVlOiB9DQorICAgIC0geyBuYW1lOiBtYWlsLm1haWxpbmdMaXN0cywgZGVmYXVsdFZhbHVlOiB9DQorICAgIC0geyBuYW1lOiByZWFsbS51c2VyU2VydmljZSwgZGVmYXVsdFZhbHVlOiB1c2Vycy5jb25mIH0NCisgICAgLSB7IG5hbWU6IHdlYi5hbGxvd0dyYXZhdGFyLCBkZWZhdWx0VmFsdWU6ICd0cnVlJyB9DQorICAgIC0geyBuYW1lOiB3ZWIuYWN0aXZpdHlEdXJhdGlvbiwgZGVmYXVsdFZhbHVlOiAxNCB9DQorICAgIC0geyBuYW1lOiB3ZWIudGltZUZvcm1hdCwgZGVmYXVsdFZhbHVlOiBISDptbSB9DQorICAgIC0geyBuYW1lOiB3ZWIuZGF0ZXN0YW1wTG9uZ0Zvcm1hdCwgZGVmYXVsdFZhbHVlOiAiRUVFRSwgTU1NTSBkLCB5eXl5IiB9DQorICAgIC0geyBuYW1lOiB3ZWIuY3VzdG9tRmlsdGVycywgZGVmYXVsdFZhbHVlOiB9DQorICAgIC0geyBuYW1lOiB3ZWIuYWxsb3dGbGFzaENvcHlUb0NsaXBib2FyZCwgZGVmYXVsdFZhbHVlOiAndHJ1ZScgfQ0KKw0KKyAgICBkZXBlbmRlbmN5Q2hhbmdlczoNCisgICAgLSBKR2l0IDEuMi4wDQorICAgIC0gR3Jvb3Z5IDEuOC41DQorICAgIC0gQ2xpcHB5DQorfQ0KKw0KKyMNCisjIDAuNy4wDQorIw0KK3I1OiB7DQorICAgIHRpdGxlOiBHaXRibGl0IDAuNy4wIFJlbGVhc2VkDQorICAgIGlkOiAwLjcuMA0KKyAgICBkYXRlOiAyMDExLTExLTExDQorDQorICAgIHNlY3VyaXR5Og0KKyAgICAtIGZpeGVkIHNlY3VyaXR5IGhvbGUgd2hlbiBjbG9uaW5nIGNsb25lLXJlc3RyaWN0ZWQgcmVwb3NpdG9yeSB3aXRoIFRvcnRvaXNlR2l0IChpc3N1ZSAyOCkNCisNCisgICAgZml4ZXM6DQorICAgIC0gJydmZWRlcmF0aW9uIHByb3RvY29sIHRpbWVzdGFtcHMuICBkYXRlcyBhcmUgbm93IHNlcmlhbGl6ZWQgdG8gdGhlIFtpc284NjAxXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxKSBzdGFuZGFyZC4NCisgICAgICAqKlRoaXMgYnJlYWtzIDAuNi4wIGZlZGVyYXRpb24gY2xpZW50cy9zZXJ2ZXJzLioqJycNCisgICAgLSBjb2xsaXNpb24gb24gcmVuYW1lIGZvciByZXBvc2l0b3JpZXMgYW5kIHVzZXJzDQorICAgIC0gR2l0YmxpdCBjYW4gbm93IGJyb3dzZSB0aGUgTGludXgga2VybmVsIHJlcG9zaXRvcnkgKGlzc3VlIDI1KQ0KKyAgICAtIEdpdGJsaXQgbm93IHJ1bnMgb24gU2VydmxldCAzLjAgd2Vic2VydmVycyAoZS5nLiBUb21jYXQgNywgSmV0dHkgOCkgKGlzc3VlIDIzKQ0KKyAgICAtIFNldCB0aGUgUlNTIGNvbnRlbnQgdHlwZSBvZiBzeW5kaWNhdGlvbiBmZWVkcyBmb3IgRmlyZWZveCA0IChpc3N1ZSAyMikNCisgICAgLSBSU1MgZmVlZHMgYXJlIG5vdyBwcm9wZXJseSBlbmNvZGVkIHRvIFVURi04DQorICAgIC0gUlNTIGZlZWRzIG5vdyBwcm9wZXJseSBnZW5lcmF0ZSBwYXJhbWV0ZXJpemVkIGxpbmtzIGlmICp3ZWIubW91bnRQYXJhbWV0ZXJzPWZhbHNlKg0KKyAgICAtIE51bGwgcG9pbnRlciBleGNlcHRpb24gaWYgZGlkIG5vdCBzZXQgZmVkZXJhdGlvbiBzdHJhdGVneSAoaXNzdWUgMjApDQorICAgIC0gR2l0YmxpdCBHTyBhbGxvd3MgU1NMIHJlbmVnb3RpYXRpb24gaWYgcnVubmluZyBvbiBKYXZhIDEuNi4wXzIyIG9yIGxhdGVyDQorICAgICAgICANCisgICAgY2hhbmdlczoNCisgICAgLSB1cGRhdGVkIHVpIHdpdGggVHdpdHRlciBCb290c3RyYXAgQ1NTIHRvb2xraXQNCisgICAgLSByZXBvc2l0b3JpZXMgbGlzdCBwZXJmb3JtYW5jZSBieSBjYWNoaW5nIHJlcG9zaXRvcnkgc2l6ZXMgKGlzc3VlIDI3KQ0KKyAgICAtIHN1bW1hcnkgcGFnZSBwZXJmb3JtYW5jZSBieSBjYWNoaW5nIG1ldHJpYyBjYWxjdWxhdGlvbnMgKGlzc3VlIDI1KQ0KKyAgICANCisgICAgYWRkaXRpb25zOg0KKyAgICAtIGF1dGhlbnRpY2F0ZWQgSlNPTiBSUEMgbWVjaGFuaXNtDQorICAgIC0gR2l0YmxpdCBBUEkgUlNTL0pTT04gUlBDIGxpYnJhcnkNCisgICAgLSBHaXRibGl0IE1hbmFnZXIgKEphdmEvU3dpbmcgQXBwbGljYXRpb24pIGZvciByZW1vdGUgYWRtaW5pc3RyYXRpb24gb2YgYSBHaXRibGl0IHNlcnZlci4NCisgICAgLSBwZXItcmVwb3NpdG9yeSBzZXR0aW5nIHRvIHNraXAgc2l6ZSBjYWxjdWxhdGlvbiAoZmFzdGVyIHJlcG9zaXRvcmllcyBwYWdlIGxvYWRpbmcpDQorICAgIC0gcGVyLXJlcG9zaXRvcnkgc2V0dGluZyB0byBza2lwIHN1bW1hcnkgbWV0cmljcyBjYWxjdWxhdGlvbiAoZmFzdGVyIHN1bW1hcnkgcGFnZSBsb2FkaW5nKQ0KKyAgICAtIElVc2VyU2VydmljZS5zZXR1cChJU3RvcmVkU2V0dGluZ3MpIGZvciBjdXN0b20gdXNlciBzZXJ2aWNlIGltcGxlbWVudGF0aW9ucw0KKyAgICAtIHNldHRpbmcgdG8gY29udHJvbCBHaXRibGl0IEdPIGNvbnRleHQgcGF0aCBmb3IgcHJveHkgc2V0dXBzDQorICAgIC0gKmNvbWJpbmVkLW1kNSogcGFzc3dvcmQgc3RvcmFnZSBvcHRpb24gd2hpY2ggc3RvcmVzIHRoZSBoYXNoIG9mIHVzZXJuYW1lK3Bhc3N3b3JkIGFzIHRoZSBwYXNzd29yZA0KKyAgICAtIHJlcG9zaXRvcnkgb3duZXJzIGFyZSBhdXRvbWF0aWNhbGx5IGdyYW50ZWQgYWNjZXNzIGZvciBnaXQsIGZlZWRzLCBhbmQgemlwIGRvd25sb2FkcyB3aXRob3V0IGV4cGxpY2l0bHkgc2VsZWN0aW5nIHRoZW0NCisgICAgLSBSU1MgZmVlZHMgbm93IGluY2x1ZGUgcmVnZXggc3Vic3RpdHV0aW9ucyBvbiBjb21taXQgbWVzc2FnZXMgZm9yIGJ1ZyB0cmFja2VycywgZXRjDQorICAgIA0KKyAgICBzZXR0aW5nczoNCisgICAgLSB7IG5hbWU6IHdlYi5sb2dpbk1lc3NhZ2UsIGRlZmF1bHRWYWx1ZTogZ2l0YmxpdCB9DQorICAgIC0geyBuYW1lOiB3ZWIuZW5hYmxlUnBjU2VydmxldCwgZGVmYXVsdFZhbHVlOiAndHJ1ZScgfQ0KKyAgICAtIHsgbmFtZTogd2ViLmVuYWJsZVJwY01hbmFnZW1lbnQsIGRlZmF1bHRWYWx1ZTogJ2ZhbHNlJyB9DQorICAgIC0geyBuYW1lOiB3ZWIuZW5hYmxlUnBjQWRtaW5pc3RyYXRpb24sIGRlZmF1bHRWYWx1ZTogJ2ZhbHNlJyB9DQorICAgIC0geyBuYW1lOiBzZXJ2ZXIuY29udGV4dFBhdGgsIGRlZmF1bHRWYWx1ZTogLyB9DQorICAgIA0KKyAgICBkZXBlbmRlbmN5Q2hhbmdlczoNCisgICAgLSBNYXJrZG93blBhcGVycyAxLjIuNQ0KKyAgICAtIFdpY2tldCAxLjQuMTkNCisNCisgICAgY29udHJpYnV0b3JzOg0KKyAgICAtIGdpdGh1Yi9kYWRhbGFyDQorICAgIC0gZ2l0aHViL2FseWFuZG9uDQorICAgIC0gZ2l0aHViL3RyeWd2aXMNCit9DQorDQorIw0KKyMgMC42LjANCisjDQorcjQ6IHsNCisgICAgdGl0bGU6IEdpdGJsaXQgMC42LjAgUmVsZWFzZWQNCisgICAgaWQ6IDAuNi4wDQorICAgIGRhdGU6IDIwMTEtMDktMjcNCisNCisgICAgZml4ZXM6DQorICAgIC0gc3luZGljYXRpb24gdXJscyBmb3IgV0FSIGRlcGxveW1lbnRzDQorICAgIC0gYXV0aGVudGljYXRpb24gZm9yIHppcCBkb3dubG9hZHMNCisNCisgICAgYWRkaXRpb25zOg0KKyAgICAtIGZlZGVyYXRpb24gZmVhdHVyZSB0byBhbGxvdyBnaXRibGl0IGluc3RhbmNlcyAob3IgZ2l0YmxpdCBmZWRlcmF0aW9uIGNsaWVudHMpIHRvIHB1bGwgcmVwb3NpdG9yaWVzIGFuZCwgb3B0aW9uYWxseSwgc2V0dGluZ3MgYW5kIGFjY291bnRzIGZyb20gb3RoZXIgZ2l0YmxpdCBpbnN0YW5jZXMuICBUaGlzIGlzIHNvbWV0aGluZyBsaWtlIFtzdm4tc3luY10oaHR0cDovL3N2bmJvb2sucmVkLWJlYW4uY29tL2VuLzEuNS9zdm4ucmVmLnN2bnN5bmMuaHRtbCkgZm9yIGdpdGJsaXQuDQorICAgIC0gdXNlciByb2xlICojbm90ZmVkZXJhdGVkKiB0byBwcmV2ZW50IGEgdXNlciBhY2NvdW50IGZyb20gYmVpbmcgcHVsbGVkIGJ5IGEgZmVkZXJhdGVkIEdpdGJsaXQgaW5zdGFuY2UNCisNCisgICAgc2V0dGluZ3M6DQorICAgIC0geyBuYW1lOiBmZWRlcmF0aW9uLm5hbWUsIGRlZmF1bHRWYWx1ZTogfQ0KKyAgICAtIHsgbmFtZTogZmVkZXJhdGlvbi5wYXNzcGhyYXNlLCBkZWZhdWx0VmFsdWU6IH0NCisgICAgLSB7IG5hbWU6IGZlZGVyYXRpb24uYWxsb3dQcm9wb3NhbHMsIGRlZmF1bHRWYWx1ZTogJ2ZhbHNlJyB9DQorICAgIC0geyBuYW1lOiBmZWRlcmF0aW9uLnByb3Bvc2Fsc0ZvbGRlciwgZGVmYXVsdFZhbHVlOiBwcm9wb3NhbHMgfQ0KKyAgICAtIHsgbmFtZTogZmVkZXJhdGlvbi5kZWZhdWx0RnJlcXVlbmN5LCBkZWZhdWx0VmFsdWU6IDYwIG1pbnMgfQ0KKyAgICAtIHsgbmFtZTogZmVkZXJhdGlvbi5zZXRzLCBkZWZhdWx0VmFsdWU6IH0NCisgICAgLSB7IG5hbWU6ICJtYWlsLioiLCBkZWZhdWx0VmFsdWU6IH0NCisgICAgICAgIA0KKyAgICBkZXBlbmRlbmN5Q2hhbmdlczoNCisgICAgLSBNYXJrZG93blBhcGVycyAxLjEuMQ0KKyAgICAtIFdpY2tldCAxLjQuMTgNCisgICAgLSBKR2l0IDEuMS4wDQorICAgIC0gZ29vZ2xlLWdzb24NCisgICAgLSBqYXZhbWFpbA0KK30NCisNCisjDQorIyAwLjUuMg0KKyMNCityMzogew0KKyAgICB0aXRsZTogR2l0YmxpdCAwLjUuMiBSZWxlYXNlZA0KKyAgICBpZDogMC41LjINCisgICAgZGF0ZTogMjAxMS0wNy0yNw0KKw0KKyAgICBmaXhlczoNCisgICAgLSBhY3RpdmUgcmVwb3NpdG9yaWVzIHdpdGggYSBIRUFEIHRoYXQgcG9pbnRlZCB0byBhbiBlbXB0eSBicmFuY2ggY2F1c2VkIGludGVybmFsIGVycm9ycyAoaXNzdWUgMTQpDQorICAgIC0gYmFyZS1jbG9uZWQgcmVwb3NpdG9yaWVzIHdlcmUgbGlzdGVkIGFzIChlbXB0eSkgYW5kIHdlcmUgbm90IGNsaWNrYWJsZSAoaXNzdWUgMTMpDQorICAgIC0gZGVmYXVsdCBwb3J0IGZvciBHaXRibGl0IEdPIGlzIG5vdyA4NDQzIHRvIGJlIG1vcmUgbGludXgvb3MgeCBmcmllbmRseSAoaXNzdWUgMTIpDQorICAgIC0gcmVwb3NpdG9yaWVzIGNhbiBub3cgYmUgcmVsaWFibHkgZGVsZXRlZCBhbmQgcmVuYW1lZCAoaXNzdWUgMTApDQorICAgIC0gdXNlcnMgY2FuIG5vdyBjaGFuZ2UgdGhlaXIgcGFzc3dvcmRzIChpc3N1ZSAxKQ0KKyAgICAtIGFsd2F5cyBzaG93IHJvb3QgcmVwb3NpdG9yeSBncm91cCBmaXJzdCwgaS5lLiBkbyBub3Qgc29ydCByb290IGdyb3VwIHdpdGggb3RoZXIgZ3JvdXBzDQorICAgIC0gdG9uZS1kb3duIHJlcG9zaXRvcnkgZ3JvdXAgaGVhZGVyIGNvbG9yDQorICAgIA0KKyAgICBhZGRpdGlvbnM6DQorICAgIC0gb3B0aW9uYWxseSBkaXNwbGF5IHJlcG9zaXRvcnkgb24tZGlzayBzaXplIG9uIHJlcG9zaXRvcmllcyBwYWdlDQorICAgIC0gZm9yd2FyZC1zbGFzaGVzICgnLycsICUyRikgY2FuIGJlIGVuY29kZWQgdXNpbmcgYSBjdXN0b20gY2hhcmFjdGVyIHRvIHdvcmthcm91bmQgc29tZSBzZXJ2bGV0IGNvbnRhaW5lciBkZWZhdWx0IHNlY3VyaXR5IG1lYXN1cmVzIGZvciBwcm94eSBzZXJ2ZXJzDQorICAgIA0KKyAgICBzZXR0aW5nczoNCisgICAgLSB7IG5hbWU6IHdlYi5zaG93UmVwb3NpdG9yeVNpemVzLCBkZWZhdWx0VmFsdWU6ICd0cnVlJyB9DQorICAgIC0geyBuYW1lOiB3ZWIuZm9yd2FyZFNsYXNoQ2hhcmFjdGVyLCBkZWZhdWx0VmFsdWU6IC8gfQ0KKyAgICANCisgICAgZGVwZW5kZW5jeUNoYW5nZXM6DQorICAgIC0gTWFya2Rvd25QYXBlcnMgMS4xLjANCisgICAgLSBKZXR0eSA3LjQuMw0KK30NCisNCisjDQorIyAwLjUuMQ0KKyMNCityMjogew0KKyAgICB0aXRsZTogR2l0YmxpdCAwLjUuMSBSZWxlYXNlZA0KKyAgICBpZDogMC41LjENCisgICAgZGF0ZTogMjAxMS0wNi0yOA0KKw0KKyAgICBjaGFuZ2VzOg0KKyAgICAtIGNsYXJpZmllZCBTU0wgY2VydGlmaWNhdGUgZ2VuZXJhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBmb3IgYm90aCBzZXJ2ZXItc2lkZSBhbmQgY2xpZW50LXNpZGUNCisgICAgLSBhZGRlZCBzb21lIG1vcmUgdHJvdWJsZXNob290aW5nIGluZm9ybWF0aW9uIHRvIGRvY3VtZW50YXRpb24NCisgICAgLSByZXBsYWNlZCBKYXZhU2VydmljZSB3aXRoIEFwYWNoZSBDb21tb25zIERhZW1vbg0KK30NCisNCisjDQorIyAwLjUuMA0KKyMNCityMTogew0KKyAgICB0aXRsZTogR2l0YmxpdCAwLjUuMCBSZWxlYXNlZA0KKyAgICBpZDogMC41LjANCisgICAgZGF0ZTogMjAxMS0wNi0yNg0KKyAgICB0ZXh0OiBpbml0aWFsIHJlbGVhc2UNCit9DQorDQorc25hcHNob3Q6ICZyMTcNCityZWxlYXNlOiAmcjE2DQorcmVsZWFzZXM6ICZyWzEuLjE2XQ0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uQ2xpZW50TGF1bmNoZXIuamF2YSBiL3NyYy9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uQ2xpZW50TGF1bmNoZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNWEzZC4uMDAwMDAwMAotLS0gYS9zcmMvY29tL2dpdGJsaXQvRmVkZXJhdGlvbkNsaWVudExhdW5jaGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKg0KLSAqIENvcHlyaWdodCAyMDExIGdpdGJsaXQuY29tLg0KLSAqDQotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KLSAqDQotICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KLSAqDQotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KLSAqLw0KLXBhY2thZ2UgY29tLmdpdGJsaXQ7DQotDQotaW1wb3J0IGphdmEuaW8uRmlsZTsNCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCi1pbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOw0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCi0NCi1pbXBvcnQgY29tLmdpdGJsaXQuYnVpbGQuQnVpbGQ7DQotDQotLyoqDQotICogRG93bmxvYWRzIGRlcGVuZGVuY2llcyBhbmQgbGF1bmNoZXMgY29tbWFuZC1saW5lIEZlZGVyYXRpb24gY2xpZW50Lg0KLSAqIA0KLSAqIEBhdXRob3IgSmFtZXMgTW9nZXINCi0gKiANCi0gKi8NCi1wdWJsaWMgY2xhc3MgRmVkZXJhdGlvbkNsaWVudExhdW5jaGVyIHsNCi0NCi0JcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgew0KLQkJLy8gZG93bmxvYWQgZmVkZXJhdGlvbiBjbGllbnQgcnVudGltZSBkZXBlbmRlbmNpZXMNCi0JCUJ1aWxkLmZlZGVyYXRpb25DbGllbnQoKTsNCi0NCi0JCUZpbGUgbGliRm9sZGVyID0gbmV3IEZpbGUoImV4dCIpOw0KLQkJTGlzdDxGaWxlPiBqYXJzID0gTGF1bmNoZXIuZmluZEphcnMobGliRm9sZGVyLmdldEFic29sdXRlRmlsZSgpKTsNCi0JCQ0KLQkJLy8gc29ydCB0aGUgamFycyBieSBuYW1lIGFuZCB0aGVuIHJldmVyc2UgdGhlIG9yZGVyIHNvIHRoZSBuZXdlciB2ZXJzaW9uDQotCQkvLyBvZiB0aGUgbGlicmFyeSBnZXRzIGxvYWRlZCBpbiB0aGUgZXZlbnQgdGhhdCB0aGlzIGlzIGFuIHVwZ3JhZGUNCi0JCUNvbGxlY3Rpb25zLnNvcnQoamFycyk7DQotCQlDb2xsZWN0aW9ucy5yZXZlcnNlKGphcnMpOw0KLQkJZm9yIChGaWxlIGphciA6IGphcnMpIHsNCi0JCQl0cnkgew0KLQkJCQlMYXVuY2hlci5hZGRKYXJGaWxlKGphcik7DQotCQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KLQ0KLQkJCX0NCi0JCX0NCi0JCQ0KLQkJRmVkZXJhdGlvbkNsaWVudC5tYWluKGFyZ3MpOw0KLQl9DQotfQ0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9TZXJ2bGV0UmVxdWVzdFdyYXBwZXIuamF2YSBiL3NyYy9jb20vZ2l0YmxpdC9TZXJ2bGV0UmVxdWVzdFdyYXBwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0YTllYy4uMDAwMDAwMAotLS0gYS9zcmMvY29tL2dpdGJsaXQvU2VydmxldFJlcXVlc3RXcmFwcGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MDAgKzAsMCBAQAotLyoNCi0gKiBDb3B5cmlnaHQgMjAxMSBnaXRibGl0LmNvbS4NCi0gKg0KLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCi0gKg0KLSAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCi0gKg0KLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCi0gKi8NCi1wYWNrYWdlIGNvbS5naXRibGl0Ow0KLQ0KLWltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOw0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KLWltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247DQotaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpbmNpcGFsOw0KLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCi1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOw0KLWltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOw0KLWltcG9ydCBqYXZhLnV0aWwuTWFwOw0KLQ0KLWltcG9ydCBqYXZheC5zZXJ2bGV0LkFzeW5jQ29udGV4dDsNCi1pbXBvcnQgamF2YXguc2VydmxldC5EaXNwYXRjaGVyVHlwZTsNCi1pbXBvcnQgamF2YXguc2VydmxldC5SZXF1ZXN0RGlzcGF0Y2hlcjsNCi1pbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDsNCi1pbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOw0KLWltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRJbnB1dFN0cmVhbTsNCi1pbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0UmVxdWVzdDsNCi1pbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0UmVzcG9uc2U7DQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5Db29raWU7DQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7DQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOw0KLWltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlc3Npb247DQotaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5QYXJ0Ow0KLQ0KLS8qKg0KLSAqIFNlcnZsZXRSZXF1ZXN0V3JhcHBlciBpcyBhIHBhc3MtdGhyb3VnaC9kZWxlZ2F0ZSB3cmFwcGVyIGNsYXNzIGZvciBhIHNlcnZsZXQNCi0gKiByZXF1ZXN0LiBUaGlzIGNsYXNzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBTZXJ2bGV0RmlsdGVycywgc3VjaCBhcyB0aGUNCi0gKiBBY2Nlc3NSZXN0cmljdGlvbkZpbHRlci4NCi0gKiANCi0gKiBUaGUgb3JpZ2luYWwgcmVxdWVzdCBpcyB3cmFwcGVkIGJ5IGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFuZCB0aGlzIGNsYXNzIGlzDQotICogc2V0IGFzIHRoZSBzZXJ2bGV0IHJlcXVlc3QgaW4gdGhlIGZpbHRlci4gVGhpcyBhbGxvd3MgZm9yIHNwZWNpYWxpemVkDQotICogaW1wbGVtZW50YXRpb25zIG9mIHJlcXVlc3QgbWV0aG9kcywgbGlrZSBnZXRVc2VyUHJpbmNpcGFsKCkgd2l0aCBkZWxlZ2F0aW9uDQotICogdG8gdGhlIG9yaWdpbmFsIHJlcXVlc3QgZm9yIGFueSBtZXRob2Qgbm90IG92ZXJyaWRkZW4uDQotICogDQotICogVGhpcyBjbGFzcywgYnkgaXRzZWxmLCBpcyBub3QgYWx0b2dldGhlciBpbnRlcmVzdGluZy4gU3ViY2xhc3NlcyBvZiB0aGlzDQotICogY2xhc3MsIGhvd2V2ZXIsIGFyZSBvZiBpbnRlcmVzdC4NCi0gKiANCi0gKiBAYXV0aG9yIEphbWVzIE1vZ2VyDQotICogDQotICovDQotcHVibGljIGFic3RyYWN0IGNsYXNzIFNlcnZsZXRSZXF1ZXN0V3JhcHBlciBpbXBsZW1lbnRzIEh0dHBTZXJ2bGV0UmVxdWVzdCB7DQotDQotCXByb3RlY3RlZCBmaW5hbCBIdHRwU2VydmxldFJlcXVlc3QgcmVxOw0KLQ0KLQlwdWJsaWMgU2VydmxldFJlcXVlc3RXcmFwcGVyKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXEpIHsNCi0JCXRoaXMucmVxID0gcmVxOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgT2JqZWN0IGdldEF0dHJpYnV0ZShTdHJpbmcgbmFtZSkgew0KLQkJcmV0dXJuIHJlcS5nZXRBdHRyaWJ1dGUobmFtZSk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBFbnVtZXJhdGlvbiBnZXRBdHRyaWJ1dGVOYW1lcygpIHsNCi0JCXJldHVybiByZXEuZ2V0QXR0cmlidXRlTmFtZXMoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRDaGFyYWN0ZXJFbmNvZGluZygpIHsNCi0JCXJldHVybiByZXEuZ2V0Q2hhcmFjdGVyRW5jb2RpbmcoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIHZvaWQgc2V0Q2hhcmFjdGVyRW5jb2RpbmcoU3RyaW5nIGVudikgdGhyb3dzIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gew0KLQkJcmVxLnNldENoYXJhY3RlckVuY29kaW5nKGVudik7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBpbnQgZ2V0Q29udGVudExlbmd0aCgpIHsNCi0JCXJldHVybiByZXEuZ2V0Q29udGVudExlbmd0aCgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU3RyaW5nIGdldENvbnRlbnRUeXBlKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRDb250ZW50VHlwZSgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU2VydmxldElucHV0U3RyZWFtIGdldElucHV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCi0JCXJldHVybiByZXEuZ2V0SW5wdXRTdHJlYW0oKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRQYXJhbWV0ZXIoU3RyaW5nIG5hbWUpIHsNCi0JCXJldHVybiByZXEuZ2V0UGFyYW1ldGVyKG5hbWUpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgRW51bWVyYXRpb24gZ2V0UGFyYW1ldGVyTmFtZXMoKSB7DQotCQlyZXR1cm4gcmVxLmdldFBhcmFtZXRlck5hbWVzKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmdbXSBnZXRQYXJhbWV0ZXJWYWx1ZXMoU3RyaW5nIG5hbWUpIHsNCi0JCXJldHVybiByZXEuZ2V0UGFyYW1ldGVyVmFsdWVzKG5hbWUpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgTWFwIGdldFBhcmFtZXRlck1hcCgpIHsNCi0JCXJldHVybiByZXEuZ2V0UGFyYW1ldGVyTWFwKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0UHJvdG9jb2woKSB7DQotCQlyZXR1cm4gcmVxLmdldFByb3RvY29sKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0U2NoZW1lKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRTY2hlbWUoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJOYW1lKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRTZXJ2ZXJOYW1lKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBpbnQgZ2V0U2VydmVyUG9ydCgpIHsNCi0JCXJldHVybiByZXEuZ2V0U2VydmVyUG9ydCgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgQnVmZmVyZWRSZWFkZXIgZ2V0UmVhZGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCi0JCXJldHVybiByZXEuZ2V0UmVhZGVyKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0UmVtb3RlQWRkcigpIHsNCi0JCXJldHVybiByZXEuZ2V0UmVtb3RlQWRkcigpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU3RyaW5nIGdldFJlbW90ZUhvc3QoKSB7DQotCQlyZXR1cm4gcmVxLmdldFJlbW90ZUhvc3QoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIHZvaWQgc2V0QXR0cmlidXRlKFN0cmluZyBuYW1lLCBPYmplY3Qgbykgew0KLQkJcmVxLnNldEF0dHJpYnV0ZShuYW1lLCBvKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIHZvaWQgcmVtb3ZlQXR0cmlidXRlKFN0cmluZyBuYW1lKSB7DQotCQlyZXEucmVtb3ZlQXR0cmlidXRlKG5hbWUpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgTG9jYWxlIGdldExvY2FsZSgpIHsNCi0JCXJldHVybiByZXEuZ2V0TG9jYWxlKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBFbnVtZXJhdGlvbiBnZXRMb2NhbGVzKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRMb2NhbGVzKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBib29sZWFuIGlzU2VjdXJlKCkgew0KLQkJcmV0dXJuIHJlcS5pc1NlY3VyZSgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgUmVxdWVzdERpc3BhdGNoZXIgZ2V0UmVxdWVzdERpc3BhdGNoZXIoU3RyaW5nIHBhdGgpIHsNCi0JCXJldHVybiByZXEuZ2V0UmVxdWVzdERpc3BhdGNoZXIocGF0aCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCUBEZXByZWNhdGVkDQotCXB1YmxpYyBTdHJpbmcgZ2V0UmVhbFBhdGgoU3RyaW5nIHBhdGgpIHsNCi0JCXJldHVybiByZXEuZ2V0UmVhbFBhdGgocGF0aCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBpbnQgZ2V0UmVtb3RlUG9ydCgpIHsNCi0JCXJldHVybiByZXEuZ2V0UmVtb3RlUG9ydCgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU3RyaW5nIGdldExvY2FsTmFtZSgpIHsNCi0JCXJldHVybiByZXEuZ2V0TG9jYWxOYW1lKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0TG9jYWxBZGRyKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRMb2NhbEFkZHIoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIGludCBnZXRMb2NhbFBvcnQoKSB7DQotCQlyZXR1cm4gcmVxLmdldExvY2FsUG9ydCgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU3RyaW5nIGdldEF1dGhUeXBlKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRBdXRoVHlwZSgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgQ29va2llW10gZ2V0Q29va2llcygpIHsNCi0JCXJldHVybiByZXEuZ2V0Q29va2llcygpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgbG9uZyBnZXREYXRlSGVhZGVyKFN0cmluZyBuYW1lKSB7DQotCQlyZXR1cm4gcmVxLmdldERhdGVIZWFkZXIobmFtZSk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0SGVhZGVyKFN0cmluZyBuYW1lKSB7DQotCQlyZXR1cm4gcmVxLmdldEhlYWRlcihuYW1lKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIEVudW1lcmF0aW9uIGdldEhlYWRlcnMoU3RyaW5nIG5hbWUpIHsNCi0JCXJldHVybiByZXEuZ2V0SGVhZGVycyhuYW1lKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIEVudW1lcmF0aW9uIGdldEhlYWRlck5hbWVzKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRIZWFkZXJOYW1lcygpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgaW50IGdldEludEhlYWRlcihTdHJpbmcgbmFtZSkgew0KLQkJcmV0dXJuIHJlcS5nZXRJbnRIZWFkZXIobmFtZSk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0TWV0aG9kKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRNZXRob2QoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRQYXRoSW5mbygpIHsNCi0JCXJldHVybiByZXEuZ2V0UGF0aEluZm8oKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRQYXRoVHJhbnNsYXRlZCgpIHsNCi0JCXJldHVybiByZXEuZ2V0UGF0aFRyYW5zbGF0ZWQoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRDb250ZXh0UGF0aCgpIHsNCi0JCXJldHVybiByZXEuZ2V0Q29udGV4dFBhdGgoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRRdWVyeVN0cmluZygpIHsNCi0JCXJldHVybiByZXEuZ2V0UXVlcnlTdHJpbmcoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRSZW1vdGVVc2VyKCkgew0KLQkJcmV0dXJuIHJlcS5nZXRSZW1vdGVVc2VyKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBib29sZWFuIGlzVXNlckluUm9sZShTdHJpbmcgcm9sZSkgew0KLQkJcmV0dXJuIHJlcS5pc1VzZXJJblJvbGUocm9sZSk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBQcmluY2lwYWwgZ2V0VXNlclByaW5jaXBhbCgpIHsNCi0JCXJldHVybiByZXEuZ2V0VXNlclByaW5jaXBhbCgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU3RyaW5nIGdldFJlcXVlc3RlZFNlc3Npb25JZCgpIHsNCi0JCXJldHVybiByZXEuZ2V0UmVxdWVzdGVkU2Vzc2lvbklkKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTdHJpbmcgZ2V0UmVxdWVzdFVSSSgpIHsNCi0JCXJldHVybiByZXEuZ2V0UmVxdWVzdFVSSSgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgU3RyaW5nQnVmZmVyIGdldFJlcXVlc3RVUkwoKSB7DQotCQlyZXR1cm4gcmVxLmdldFJlcXVlc3RVUkwoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIFN0cmluZyBnZXRTZXJ2bGV0UGF0aCgpIHsNCi0JCXJldHVybiByZXEuZ2V0U2VydmxldFBhdGgoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIEh0dHBTZXNzaW9uIGdldFNlc3Npb24oYm9vbGVhbiBjcmVhdGUpIHsNCi0JCXJldHVybiByZXEuZ2V0U2Vzc2lvbihjcmVhdGUpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgSHR0cFNlc3Npb24gZ2V0U2Vzc2lvbigpIHsNCi0JCXJldHVybiByZXEuZ2V0U2Vzc2lvbigpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgYm9vbGVhbiBpc1JlcXVlc3RlZFNlc3Npb25JZFZhbGlkKCkgew0KLQkJcmV0dXJuIHJlcS5pc1JlcXVlc3RlZFNlc3Npb25JZFZhbGlkKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBib29sZWFuIGlzUmVxdWVzdGVkU2Vzc2lvbklkRnJvbUNvb2tpZSgpIHsNCi0JCXJldHVybiByZXEuaXNSZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tQ29va2llKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBib29sZWFuIGlzUmVxdWVzdGVkU2Vzc2lvbklkRnJvbVVSTCgpIHsNCi0JCXJldHVybiByZXEuaXNSZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tVVJMKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCUBEZXByZWNhdGVkDQotCXB1YmxpYyBib29sZWFuIGlzUmVxdWVzdGVkU2Vzc2lvbklkRnJvbVVybCgpIHsNCi0JCXJldHVybiByZXEuaXNSZXF1ZXN0ZWRTZXNzaW9uSWRGcm9tVXJsKCk7DQotCX0NCi0JDQotCS8qDQotCSAqIFNlcnZsZXQgMy4wIE1ldGhvZHMgDQotCSAqLw0KLQkNCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBib29sZWFuIGF1dGhlbnRpY2F0ZShIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlKSB0aHJvd3MgSU9FeGNlcHRpb24sIFNlcnZsZXRFeGNlcHRpb24gew0KLQkJcmV0dXJuIGZhbHNlOw0KLQl9DQotCQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIHZvaWQgbG9naW4oU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgcGFzc3dvcmQpIHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uIHsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIHZvaWQgbG9nb3V0KCkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24gew0KLQl9DQotDQotCQkNCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBQYXJ0IGdldFBhcnQoU3RyaW5nIGFyZzApIHRocm93cyBJT0V4Y2VwdGlvbiwgU2VydmxldEV4Y2VwdGlvbiB7DQotCQlyZXR1cm4gcmVxLmdldFBhcnQoYXJnMCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBDb2xsZWN0aW9uPFBhcnQ+IGdldFBhcnRzKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBTZXJ2bGV0RXhjZXB0aW9uIHsNCi0JCXJldHVybiByZXEuZ2V0UGFydHMoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIEFzeW5jQ29udGV4dCBnZXRBc3luY0NvbnRleHQoKSB7DQotCQlyZXR1cm4gcmVxLmdldEFzeW5jQ29udGV4dCgpOw0KLQl9DQotDQotCUBPdmVycmlkZQ0KLQlwdWJsaWMgRGlzcGF0Y2hlclR5cGUgZ2V0RGlzcGF0Y2hlclR5cGUoKSB7DQotCQlyZXR1cm4gcmVxLmdldERpc3BhdGNoZXJUeXBlKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBTZXJ2bGV0Q29udGV4dCBnZXRTZXJ2bGV0Q29udGV4dCgpIHsNCi0JCXJldHVybiByZXEuZ2V0U2VydmxldENvbnRleHQoKTsNCi0JfQ0KLQ0KLQlAT3ZlcnJpZGUNCi0JcHVibGljIGJvb2xlYW4gaXNBc3luY1N0YXJ0ZWQoKSB7DQotCQlyZXR1cm4gcmVxLmlzQXN5bmNTdGFydGVkKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBib29sZWFuIGlzQXN5bmNTdXBwb3J0ZWQoKSB7DQotCQlyZXR1cm4gcmVxLmlzQXN5bmNTdGFydGVkKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBBc3luY0NvbnRleHQgc3RhcnRBc3luYygpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gew0KLQkJcmV0dXJuIHJlcS5zdGFydEFzeW5jKCk7DQotCX0NCi0NCi0JQE92ZXJyaWRlDQotCXB1YmxpYyBBc3luY0NvbnRleHQgc3RhcnRBc3luYyhTZXJ2bGV0UmVxdWVzdCBhcmcwLCBTZXJ2bGV0UmVzcG9uc2UgYXJnMSkNCi0JCQl0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsNCi0JCXJldHVybiByZXEuc3RhcnRBc3luYyhhcmcwLCBhcmcxKTsNCi0JfQ0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0dpdGJsaXRBdXRob3JpdHlMYXVuY2hlci5qYXZhIGIvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9HaXRibGl0QXV0aG9yaXR5TGF1bmNoZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg0YWMwMS4uMDAwMDAwMAotLS0gYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0dpdGJsaXRBdXRob3JpdHlMYXVuY2hlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IDIwMTIgZ2l0YmxpdC5jb20uDQotICoNCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICoNCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQotICoNCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotICovDQotcGFja2FnZSBjb20uZ2l0YmxpdC5hdXRob3JpdHk7DQotDQotaW1wb3J0IGphdmEuYXd0LkNvbG9yOw0KLWltcG9ydCBqYXZhLmF3dC5FdmVudFF1ZXVlOw0KLWltcG9ydCBqYXZhLmF3dC5Gb250TWV0cmljczsNCi1pbXBvcnQgamF2YS5hd3QuR3JhcGhpY3MyRDsNCi1pbXBvcnQgamF2YS5hd3QuU3BsYXNoU2NyZWVuOw0KLWltcG9ydCBqYXZhLmlvLkZpbGU7DQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7DQotDQotaW1wb3J0IGNvbS5naXRibGl0LkNvbnN0YW50czsNCi1pbXBvcnQgY29tLmdpdGJsaXQuTGF1bmNoZXI7DQotaW1wb3J0IGNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkOw0KLWltcG9ydCBjb20uZ2l0YmxpdC5idWlsZC5CdWlsZC5Eb3dubG9hZExpc3RlbmVyOw0KLWltcG9ydCBjb20uZ2l0YmxpdC5jbGllbnQuVHJhbnNsYXRpb247DQotDQotLyoqDQotICogRG93bmxvYWRzIGRlcGVuZGVuY2llcyBhbmQgbGF1bmNoZXMgR2l0YmxpdCBBdXRob3JpdHkuDQotICogDQotICogQGF1dGhvciBKYW1lcyBNb2dlcg0KLSAqIA0KLSAqLw0KLXB1YmxpYyBjbGFzcyBHaXRibGl0QXV0aG9yaXR5TGF1bmNoZXIgew0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7DQotCQlmaW5hbCBTcGxhc2hTY3JlZW4gc3BsYXNoID0gU3BsYXNoU2NyZWVuLmdldFNwbGFzaFNjcmVlbigpOw0KLQkJDQotCQlEb3dubG9hZExpc3RlbmVyIGRvd25sb2FkTGlzdGVuZXIgPSBuZXcgRG93bmxvYWRMaXN0ZW5lcigpIHsNCi0JCQlAT3ZlcnJpZGUNCi0JCQlwdWJsaWMgdm9pZCBkb3dubG9hZGluZyhTdHJpbmcgbmFtZSkgew0KLQkJCQl1cGRhdGVTcGxhc2goc3BsYXNoLCBUcmFuc2xhdGlvbi5nZXQoImdiLmRvd25sb2FkaW5nIikgKyAiICIgKyBuYW1lKTsJCQkJDQotCQkJfQ0KLQkJfTsNCi0JCQ0KLQkJLy8gZG93bmxvYWQgYXV0aG9yaXR5IHJ1bnRpbWUgZGVwZW5kZW5jaWVzDQotCQlCdWlsZC5hdXRob3JpdHkoZG93bmxvYWRMaXN0ZW5lcik7DQotDQotCQlGaWxlIGxpYkZvbGRlciA9IG5ldyBGaWxlKCJleHQiKTsNCi0JCUxpc3Q8RmlsZT4gamFycyA9IExhdW5jaGVyLmZpbmRKYXJzKGxpYkZvbGRlci5nZXRBYnNvbHV0ZUZpbGUoKSk7DQotCQkNCi0JCS8vIHNvcnQgdGhlIGphcnMgYnkgbmFtZSBhbmQgdGhlbiByZXZlcnNlIHRoZSBvcmRlciBzbyB0aGUgbmV3ZXIgdmVyc2lvbg0KLQkJLy8gb2YgdGhlIGxpYnJhcnkgZ2V0cyBsb2FkZWQgaW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBpcyBhbiB1cGdyYWRlDQotCQlDb2xsZWN0aW9ucy5zb3J0KGphcnMpOw0KLQkJQ29sbGVjdGlvbnMucmV2ZXJzZShqYXJzKTsNCi0JCWZvciAoRmlsZSBqYXIgOiBqYXJzKSB7DQotCQkJdHJ5IHsNCi0JCQkJdXBkYXRlU3BsYXNoKHNwbGFzaCwgVHJhbnNsYXRpb24uZ2V0KCJnYi5sb2FkaW5nIikgKyAiICIgKyBqYXIuZ2V0TmFtZSgpICsgIi4uLiIpOw0KLQkJCQlMYXVuY2hlci5hZGRKYXJGaWxlKGphcik7DQotCQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KLQ0KLQkJCX0NCi0JCX0NCi0JCQ0KLQkJdXBkYXRlU3BsYXNoKHNwbGFzaCwgVHJhbnNsYXRpb24uZ2V0KCJnYi5zdGFydGluZyIpICsgIiBHaXRibGl0IEF1dGhvcml0eS4uLiIpOw0KLQkJR2l0YmxpdEF1dGhvcml0eS5tYWluKGFyZ3MpOw0KLQl9DQotDQotCXByaXZhdGUgc3RhdGljIHZvaWQgdXBkYXRlU3BsYXNoKGZpbmFsIFNwbGFzaFNjcmVlbiBzcGxhc2gsIGZpbmFsIFN0cmluZyBzdHJpbmcpIHsNCi0JCWlmIChzcGxhc2ggPT0gbnVsbCkgew0KLQkJCXJldHVybjsNCi0JCX0NCi0JCXRyeSB7DQotCQkJRXZlbnRRdWV1ZS5pbnZva2VBbmRXYWl0KG5ldyBSdW5uYWJsZSgpIHsNCi0JCQkJcHVibGljIHZvaWQgcnVuKCkgew0KLQkJCQkJR3JhcGhpY3MyRCBnID0gc3BsYXNoLmNyZWF0ZUdyYXBoaWNzKCk7DQotCQkJCQlpZiAoZyAhPSBudWxsKSB7DQotCQkJCQkJLy8gU3BsYXNoIGlzIDMyMHgxMjANCi0JCQkJCQlGb250TWV0cmljcyBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsNCi0JCQkJCQkNCi0JCQkJCQkvLyBwYWludCBzdGFydHVwIHN0YXR1cw0KLQkJCQkJCWcuc2V0Q29sb3IoQ29sb3IuZGFya0dyYXkpOw0KLQkJCQkJCWludCBoID0gZm0uZ2V0SGVpZ2h0KCkgKyBmbS5nZXRNYXhEZXNjZW50KCk7DQotCQkJCQkJaW50IHggPSA1Ow0KLQkJCQkJCWludCB5ID0gMTE1Ow0KLQkJCQkJCWludCB3ID0gMzIwIC0gMiAqIHg7DQotCQkJCQkJZy5maWxsUmVjdCh4LCB5IC0gaCwgdywgaCk7DQotCQkJCQkJZy5zZXRDb2xvcihDb2xvci5saWdodEdyYXkpOw0KLQkJCQkJCWcuZHJhd1JlY3QoeCwgeSAtIGgsIHcsIGgpOw0KLQkJCQkJCWcuc2V0Q29sb3IoQ29sb3IuV0hJVEUpOw0KLQkJCQkJCWludCB4dyA9IGZtLnN0cmluZ1dpZHRoKHN0cmluZyk7DQotCQkJCQkJZy5kcmF3U3RyaW5nKHN0cmluZywgeCArICgodyAtIHh3KSAvIDIpLCB5IC0gNSk7DQotCQkJCQkJDQotCQkJCQkJLy8gcGFpbnQgdmVyc2lvbg0KLQkJCQkJCVN0cmluZyB2ZXIgPSAidiIgKyBDb25zdGFudHMuVkVSU0lPTjsNCi0JCQkJCQlpbnQgdncgPSBnLmdldEZvbnRNZXRyaWNzKCkuc3RyaW5nV2lkdGgodmVyKTsNCi0JCQkJCQlnLmRyYXdTdHJpbmcodmVyLCAzMjAgLSB2dyAtIDUsIDM0KTsNCi0JCQkJCQlnLmRpc3Bvc2UoKTsNCi0JCQkJCQlzcGxhc2gudXBkYXRlKCk7DQotCQkJCQl9DQotCQkJCX0NCi0JCQl9KTsNCi0JCX0gY2F0Y2ggKFRocm93YWJsZSB0KSB7DQotCQkJdC5wcmludFN0YWNrVHJhY2UoKTsNCi0JCX0NCi0JfQ0KLX0NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYnVpbGQvQnVpbGQuamF2YSBiL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTllZDc1Li4wMDAwMDAwCi0tLSBhL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTY3ICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IDIwMTEgZ2l0YmxpdC5jb20uDQotICoNCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICoNCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQotICoNCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotICovDQotcGFja2FnZSBjb20uZ2l0YmxpdC5idWlsZDsNCi0NCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtOw0KLWltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsNCi1pbXBvcnQgamF2YS5pby5GaWxlOw0KLWltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsNCi1pbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOw0KLWltcG9ydCBqYXZhLmlvLkZpbGVuYW1lRmlsdGVyOw0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KLWltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOw0KLWltcG9ydCBqYXZhLmlvLlJhbmRvbUFjY2Vzc0ZpbGU7DQotaW1wb3J0IGphdmEubmV0LlVSTDsNCi1pbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7DQotaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOw0KLQ0KLWltcG9ydCBjb20uZ2l0YmxpdC5Db25zdGFudHM7DQotaW1wb3J0IGNvbS5naXRibGl0LnV0aWxzLlN0cmluZ1V0aWxzOw0KLQ0KLS8qKg0KLSAqIFRoZSBCdWlsZCBjbGFzcyBkb3dubG9hZHMgcnVudGltZSBhbmQgY29tcGlsZS10aW1lIGphciBmaWxlcyBmcm9tIHRoZSBBcGFjaGUNCi0gKiBvciBFY2xpcHNlIE1hdmVuIHJlcG9zaXRvcmllcy4NCi0gKiANCi0gKiBJdCBhbHNvIGdlbmVyYXRlcyB0aGUgS2V5cyBjbGFzcyBmcm9tIHRoZSBnaXRibGl0LnByb3BlcnRpZXMgZmlsZS4NCi0gKiANCi0gKiBJdHMgaW1wb3J0YW50IHRoYXQgdGhpcyBjbGFzcyBoYXZlIG1pbmltYWwgY29tcGlsZSBkZXBlbmRlbmNpZXMgc2luY2UgaXRzDQotICogY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIGJ1aWxkIHNjcmlwdC4NCi0gKiANCi0gKiBAYXV0aG9yIEphbWVzIE1vZ2VyDQotICogDQotICovDQotcHVibGljIGNsYXNzIEJ1aWxkIHsNCi0NCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIG9zTmFtZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpOw0KLQ0KLQlwdWJsaWMgaW50ZXJmYWNlIERvd25sb2FkTGlzdGVuZXIgew0KLQkJcHVibGljIHZvaWQgZG93bmxvYWRpbmcoU3RyaW5nIG5hbWUpOw0KLQl9DQotDQotCS8qKg0KLQkgKiBCdWlsZFR5cGUgZW51bWVyYXRpb24gcmVwcmVzZW50aW5nIGNvbXBpbGUtdGltZSBvciBydW50aW1lLiBUaGlzIGlzIHVzZWQNCi0JICogdG8gZG93bmxvYWQgZGVwZW5kZW5jaWVzIGVpdGhlciBmb3IgR2l0YmxpdCBHTyBydW50aW1lIG9yIGZvciBzZXR0aW5nIHVwDQotCSAqIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuDQotCSAqLw0KLQlwdWJsaWMgc3RhdGljIGVudW0gQnVpbGRUeXBlIHsNCi0JCVJVTlRJTUUsIENPTVBJTEVUSU1FOw0KLQl9DQotDQotCXByaXZhdGUgc3RhdGljIERvd25sb2FkTGlzdGVuZXIgZG93bmxvYWRMaXN0ZW5lcjsNCi0NCi0JcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nLi4uIGFyZ3MpIHsNCi0JCXJ1bnRpbWUoKTsNCi0JCWNvbXBpbGV0aW1lKCk7DQotCQlidWlsZFNldHRpbmdLZXlzKCk7DQotCQlkZWxldGUoDQotCQkJCSJiY21haWwtamRrMTYtMS40Ni5qYXIiLA0KLQkJCQkiYmNwcm92LWpkazE2LTEuNDYuamFyIiwNCi0JCQkJInNyYy9iY21haWwtamRrMTYtMS40Ni1zb3VyY2VzLmphciIsDQotCQkJCSJzcmMvYmNwcm92LWpkazE2LTEuNDYtc291cmNlcy5qYXIiKTsNCi0JfQ0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgcnVudGltZSgpIHsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KQ09NTUFOREVSLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSkVUVFksIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KRVRUWV9BSlAsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5TRVJWTEVULCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuU0xGNEpBUEksIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5TTEY0TE9HNEosIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MT0c0SiwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LldJQ0tFVCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LldJQ0tFVF9FWFQsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5XSUNLRVRfQVVUSF9ST0xFUywgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LldJQ0tFVF9HT09HTEVfQ0hBUlRTLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuTUFSS0RPV05QQVBFUlMsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5CT1VOQ1lDQVNUTEUsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5CT1VOQ1lDQVNUTEVfTUFJTCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkJPVU5DWUNBU1RMRV9QS0lYLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSlNDSCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LlJPTUUsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KRE9NLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuR1NPTiwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0Lk1BSUwsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5HUk9PVlksIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MVUNFTkUsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MVUNFTkVfSElHSExJR0hURVIsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MVUNFTkVfTUVNT1JZLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuTFVDRU5FX1FVRVJJRVMsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KQUtBUlRBX1JFR0VYUCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LlVOQk9VTkRfSUQsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5JVlksIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KQ0FMRU5EQVIsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5DT01NT05TX0NPTVBSRVNTLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuWFosIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0NCi0JCS8vbmVlZGVkIGZvciBzZWxlbml1bSB1aSB0ZXN0cw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfQVBJLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LlNFTF9GRiwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfSkFWQSwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfUkVNT1RFLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LlNFTF9TVVBQT1JULCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LkdVQVZBLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LkpTT04sIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuQ09NTU9OU19FWEVDLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LkhUVFBDTElFTlQsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuSFRUUENPUkUsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuSFRUUE1JTUUsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuQ09NTU9OU19MT0dHSU5HLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQkNCi0JCWRvd25sb2FkRnJvbUVjbGlwc2UoTWF2ZW5PYmplY3QuSkdJVCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tRWNsaXBzZShNYXZlbk9iamVjdC5KR0lUX0hUVFAsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JfQ0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgY29tcGlsZXRpbWUoKSB7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSlVOSVQsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5IQU1DUkVTVCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkpDT01NQU5ERVIsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSkVUVFksIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSkVUVFlfQUpQLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LlNFUlZMRVQsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuU0xGNEpBUEksIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuU0xGNExPRzRKLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkxPRzRKLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LldJQ0tFVCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5XSUNLRVRfRVhULCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LldJQ0tFVF9BVVRIX1JPTEVTLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LldJQ0tFVF9HT09HTEVfQ0hBUlRTLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0Lk1BUktET1dOUEFQRVJTLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkJPVU5DWUNBU1RMRSwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5CT1VOQ1lDQVNUTEVfTUFJTCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5CT1VOQ1lDQVNUTEVfUEtJWCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KU0NILCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LlJPTUUsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSkRPTSwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5HU09OLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0Lk1BSUwsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuR1JPT1ZZLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkxVQ0VORSwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MVUNFTkVfSElHSExJR0hURVIsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuTFVDRU5FX01FTU9SWSwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MVUNFTkVfUVVFUklFUywgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KQUtBUlRBX1JFR0VYUCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5VTkJPVU5EX0lELCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LklWWSwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KQ0FMRU5EQVIsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuQ09NTU9OU19DT01QUkVTUywgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5YWiwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0NCi0JCS8vbmVlZGVkIGZvciBzZWxlbml1bSB1aSB0ZXN0cw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfQVBJLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfRkYsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LlNFTF9KQVZBLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfUkVNT1RFLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5TRUxfU1VQUE9SVCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuR1VBVkEsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LkpTT04sIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LkNPTU1PTlNfRVhFQywgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuSFRUUENMSUVOVCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QuSFRUUENPUkUsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGVUb0V4dFNlbGVuaXVtKE1hdmVuT2JqZWN0LkhUVFBNSU1FLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlVG9FeHRTZWxlbml1bShNYXZlbk9iamVjdC5DT01NT05TX0xPR0dJTkcsIEJ1aWxkVHlwZS5DT01QSUxFVElNRSk7DQotCQkNCi0JCWRvd25sb2FkRnJvbUVjbGlwc2UoTWF2ZW5PYmplY3QuSkdJVCwgQnVpbGRUeXBlLkNPTVBJTEVUSU1FKTsNCi0JCWRvd25sb2FkRnJvbUVjbGlwc2UoTWF2ZW5PYmplY3QuSkdJVF9IVFRQLCBCdWlsZFR5cGUuQ09NUElMRVRJTUUpOw0KLQ0KLQkJLy8gbmVlZGVkIGZvciBzaXRlIHB1Ymxpc2hpbmcNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5DT01NT05TTkVULCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCX0NCi0JDQotCXByaXZhdGUgc3RhdGljIHZvaWQgZGVsZXRlKFN0cmluZy4uLiBmaWxlcykgew0KLQkJZm9yIChTdHJpbmcgbmFtZSA6IGZpbGVzKSB7DQotCQkJRmlsZSBmaWxlID0gbmV3IEZpbGUoImV4dCIsIG5hbWUpOw0KLQkJCWlmIChmaWxlLmV4aXN0cygpKSB7DQotCQkJCWZpbGUuZGVsZXRlKCk7DQotCQkJfQ0KLQkJfQ0KLQl9DQotDQotCXB1YmxpYyBzdGF0aWMgdm9pZCBmZWRlcmF0aW9uQ2xpZW50KCkgew0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkpDT01NQU5ERVIsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5TRVJWTEVULCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuTUFJTCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LlNMRjRKQVBJLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuU0xGNExPRzRKLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuTE9HNEosIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5HU09OLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSlNDSCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkxVQ0VORSwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkxVQ0VORV9ISUdITElHSFRFUiwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkxVQ0VORV9NRU1PUlksIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MVUNFTkVfUVVFUklFUywgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkpBS0FSVEFfUkVHRVhQLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotDQotCQlkb3dubG9hZEZyb21FY2xpcHNlKE1hdmVuT2JqZWN0LkpHSVQsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JfQ0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFuYWdlcihEb3dubG9hZExpc3RlbmVyIGxpc3RlbmVyKSB7DQotCQlkb3dubG9hZExpc3RlbmVyID0gbGlzdGVuZXI7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuR1NPTiwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LlJPTUUsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KRE9NLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuSlNDSCwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQ0KLQkJZG93bmxvYWRGcm9tRWNsaXBzZShNYXZlbk9iamVjdC5KR0lULCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCX0NCi0JDQotCXB1YmxpYyBzdGF0aWMgdm9pZCBhdXRob3JpdHkoRG93bmxvYWRMaXN0ZW5lciBsaXN0ZW5lcikgew0KLQkJZG93bmxvYWRMaXN0ZW5lciA9IGxpc3RlbmVyOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkpDT01NQU5ERVIsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KU0NILCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuU0xGNEpBUEksIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5TTEY0TE9HNEosIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5MT0c0SiwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkJPVU5DWUNBU1RMRSwgQnVpbGRUeXBlLlJVTlRJTUUpOw0KLQkJZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0LkJPVU5DWUNBU1RMRV9NQUlMLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotCQlkb3dubG9hZEZyb21BcGFjaGUoTWF2ZW5PYmplY3QuQk9VTkNZQ0FTVExFX1BLSVgsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5KQ0FMRU5EQVIsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JCWRvd25sb2FkRnJvbUFwYWNoZShNYXZlbk9iamVjdC5NQUlMLCBCdWlsZFR5cGUuUlVOVElNRSk7DQotDQotCQlkb3dubG9hZEZyb21FY2xpcHNlKE1hdmVuT2JqZWN0LkpHSVQsIEJ1aWxkVHlwZS5SVU5USU1FKTsNCi0JfQ0KLQ0KLQkvKioNCi0JICogQnVpbGRzIHRoZSBLZXlzIGNsYXNzIGJhc2VkIG9uIHRoZSBnaXRibGl0LnByb3BlcnRpZXMgZmlsZSBhbmQgaW5zZXJ0cw0KLQkgKiB0aGUgY2xhc3Mgc291cmNlIGludG8gdGhlIHByb2plY3Qgc291cmNlIGZvbGRlci4NCi0JICovDQotCXB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFNldHRpbmdLZXlzKCkgew0KLQkJLy8gTG9hZCBhbGwga2V5cw0KLQkJUHJvcGVydGllcyBwcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsNCi0JCUZpbGVJbnB1dFN0cmVhbSBpcyA9IG51bGw7DQotCQl0cnkgew0KLQkJCWlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShuZXcgRmlsZSgiZGlzdHJpYiIsIENvbnN0YW50cy5QUk9QRVJUSUVTX0ZJTEUpKTsNCi0JCQlwcm9wZXJ0aWVzLmxvYWQoaXMpOw0KLQkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCi0JCQl0LnByaW50U3RhY2tUcmFjZSgpOw0KLQkJfSBmaW5hbGx5IHsNCi0JCQlpZiAoaXMgIT0gbnVsbCkgew0KLQkJCQl0cnkgew0KLQkJCQkJaXMuY2xvc2UoKTsNCi0JCQkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCi0JCQkJCS8vIElHTk9SRQ0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQkJTGlzdDxTdHJpbmc+IGtleXMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4ocHJvcGVydGllcy5zdHJpbmdQcm9wZXJ0eU5hbWVzKCkpOw0KLQkJQ29sbGVjdGlvbnMuc29ydChrZXlzKTsNCi0NCi0JCUtleUdyb3VwIHJvb3QgPSBuZXcgS2V5R3JvdXAoKTsNCi0JCWZvciAoU3RyaW5nIGtleSA6IGtleXMpIHsNCi0JCQlyb290LmFkZEtleShrZXkpOw0KLQkJfQ0KLQ0KLQkJLy8gU2F2ZSBLZXlzIGNsYXNzIGRlZmluaXRpb24NCi0JCXRyeSB7DQotCQkJRmlsZSBmaWxlID0gbmV3IEZpbGUoInNyYy9jb20vZ2l0YmxpdC9LZXlzLmphdmEiKTsNCi0JCQlGaWxlV3JpdGVyIGZ3ID0gbmV3IEZpbGVXcml0ZXIoZmlsZSwgZmFsc2UpOw0KLQkJCWZ3LndyaXRlKHJvb3QuZ2VuZXJhdGVDbGFzcygiY29tLmdpdGJsaXQiLCAiS2V5cyIpKTsNCi0JCQlmdy5jbG9zZSgpOw0KLQkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCi0JCQl0LnByaW50U3RhY2tUcmFjZSgpOw0KLQkJfQ0KLQl9DQotCQ0KLQlwcml2YXRlIHN0YXRpYyBjbGFzcyBLZXlHcm91cCB7DQotCQlmaW5hbCBLZXlHcm91cCBwYXJlbnQ7DQotCQlmaW5hbCBTdHJpbmcgbmFtZXNwYWNlOw0KLQkJDQotCQlTdHJpbmcgbmFtZTsNCi0JCUxpc3Q8S2V5R3JvdXA+IGNoaWxkcmVuOwkJDQotCQlMaXN0PFN0cmluZz4gZmllbGRzOwkJDQotCQkNCi0JCUtleUdyb3VwKCkgew0KLQkJCXRoaXMucGFyZW50ID0gbnVsbDsNCi0JCQl0aGlzLm5hbWVzcGFjZSA9ICIiOw0KLQkJCXRoaXMubmFtZSA9ICIiOwkNCi0JCX0NCi0JCQ0KLQkJS2V5R3JvdXAoU3RyaW5nIG5hbWVzcGFjZSwgS2V5R3JvdXAgcGFyZW50KSB7DQotCQkJdGhpcy5wYXJlbnQgPSBwYXJlbnQ7DQotCQkJdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7DQotCQkJaWYgKHBhcmVudC5jaGlsZHJlbiA9PSBudWxsKSB7DQotCQkJCXBhcmVudC5jaGlsZHJlbiA9IG5ldyBBcnJheUxpc3Q8S2V5R3JvdXA+KCk7DQotCQkJfQ0KLQkJCXBhcmVudC5jaGlsZHJlbi5hZGQodGhpcyk7DQotCQl9DQotCQkNCi0JCXZvaWQgYWRkS2V5KFN0cmluZyBrZXkpIHsNCi0JCQlTdHJpbmcga2V5c3BhY2UgPSAiIjsNCi0JCQlTdHJpbmcgZmllbGQgPSBrZXk7DQotCQkJaWYgKGtleS5pbmRleE9mKCcuJykgPiAtMSkgew0KLQkJCQlrZXlzcGFjZSA9IGtleS5zdWJzdHJpbmcoMCwga2V5Lmxhc3RJbmRleE9mKCcuJykpOw0KLQkJCQlmaWVsZCA9IGtleS5zdWJzdHJpbmcoa2V5Lmxhc3RJbmRleE9mKCcuJykgKyAxKTsNCi0JCQkJS2V5R3JvdXAgZ3JvdXAgPSBhZGRLZXlHcm91cChrZXlzcGFjZSk7DQotCQkJCWdyb3VwLmFkZEtleShmaWVsZCk7DQotCQkJfSBlbHNlIHsNCi0JCQkJaWYgKGZpZWxkcyA9PSBudWxsKSB7DQotCQkJCQlmaWVsZHMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsNCi0JCQkJfQ0KLQkJCQlmaWVsZHMuYWRkKGtleSk7DQotCQkJfQ0KLQkJfQ0KLQkJCQkNCi0JCUtleUdyb3VwIGFkZEtleUdyb3VwKFN0cmluZyBrZXlzcGFjZSkgew0KLQkJCUtleUdyb3VwIHBhcmVudCA9IHRoaXM7DQotCQkJS2V5R3JvdXAgbm9kZSA9IG51bGw7CQkJDQotCQkJU3RyaW5nIFtdIHNwYWNlID0ga2V5c3BhY2Uuc3BsaXQoIlxcLiIpOw0KLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgc3BhY2UubGVuZ3RoOyBpKyspIHsNCi0JCQkJU3RyaW5nQnVpbGRlciBuYW1lc3BhY2UgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KLQkJCQlmb3IgKGludCBqID0gMDsgaiA8PSBpOyBqKyspIHsNCi0JCQkJCW5hbWVzcGFjZS5hcHBlbmQoc3BhY2Vbal0pOw0KLQkJCQkJaWYgKGogPCBpKSB7DQotCQkJCQkJbmFtZXNwYWNlLmFwcGVuZCgnLicpOw0KLQkJCQkJfQ0KLQkJCQl9DQotCQkJCWlmIChwYXJlbnQuY2hpbGRyZW4gIT0gbnVsbCkgew0KLQkJCQkJZm9yIChLZXlHcm91cCBjaGlsZCA6IHBhcmVudC5jaGlsZHJlbikgew0KLQkJCQkJCWlmIChjaGlsZC5uYW1lLmVxdWFscyhzcGFjZVtpXSkpIHsNCi0JCQkJCQkJbm9kZSA9IGNoaWxkOwkJCQkJDQotCQkJCQkJfQ0KLQkJCQkJfQ0KLQkJCQl9DQotCQkJCWlmIChub2RlID09IG51bGwpIHsNCi0JCQkJCW5vZGUgPSBuZXcgS2V5R3JvdXAobmFtZXNwYWNlLnRvU3RyaW5nKCksIHBhcmVudCk7DQotCQkJCQlub2RlLm5hbWUgPSBzcGFjZVtpXTsNCi0JCQkJfQ0KLQkJCQlwYXJlbnQgPSBub2RlOw0KLQkJCQlub2RlID0gbnVsbDsNCi0JCQl9DQotCQkJcmV0dXJuIHBhcmVudDsNCi0JCX0JCQ0KLQkJDQotCQlTdHJpbmcgZnVsbEtleShTdHJpbmcgZmllbGQpIHsNCi0JCQlpZiAobmFtZXNwYWNlLmVxdWFscygiIikpIHsNCi0JCQkJcmV0dXJuIGZpZWxkOw0KLQkJCX0NCi0JCQlyZXR1cm4gbmFtZXNwYWNlICsgIi4iICsgZmllbGQ7DQotCQl9DQotCQkNCi0JCVN0cmluZyBnZW5lcmF0ZUNsYXNzKFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIGNsYXNzTmFtZSkgew0KLQkJCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KLQkJCXNiLmFwcGVuZCgicGFja2FnZSAiKS5hcHBlbmQocGFja2FnZU5hbWUpLmFwcGVuZCgiO1xuIik7DQotCQkJc2IuYXBwZW5kKCdcbicpOw0KLQkJCXNiLmFwcGVuZCgiLypcbiIpOw0KLQkJCXNiLmFwcGVuZCgiICogVGhpcyBjbGFzcyBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIHRoZSBwcm9wZXJ0aWVzIGZpbGUuXG4iKTsNCi0JCQlzYi5hcHBlbmQoIiAqIERvIG5vdCB2ZXJzaW9uIGNvbnRyb2whXG4iKTsNCi0JCQlzYi5hcHBlbmQoIiAqL1xuIik7DQotCQkJc2IuYXBwZW5kKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJwdWJsaWMgZmluYWwgY2xhc3MgezB9ICd7J1xuXG4iLCBjbGFzc05hbWUpKTsNCi0JCQlzYi5hcHBlbmQoZ2VuZXJhdGVDbGFzcyh0aGlzLCAwKSk7DQotCQkJc2IuYXBwZW5kKCJ9XG4iKTsNCi0JCQlyZXR1cm4gc2IudG9TdHJpbmcoKTsNCi0JCX0NCi0JCQ0KLQkJU3RyaW5nIGdlbmVyYXRlQ2xhc3MoS2V5R3JvdXAgZ3JvdXAsIGludCBsZXZlbCkgew0KLQkJCVN0cmluZyBjbGFzc0luZGVudCA9IFN0cmluZ1V0aWxzLmxlZnRQYWQoIiIsIGxldmVsLCAnXHQnKTsNCi0JCQlTdHJpbmcgZmllbGRJbmRlbnQgPSBTdHJpbmdVdGlscy5sZWZ0UGFkKCIiLCBsZXZlbCArIDEsICdcdCcpOw0KLQkJCQ0KLQkJCS8vIGJlZ2luIGNsYXNzDQotCQkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQotCQkJaWYgKCFncm91cC5uYW1lc3BhY2UuZXF1YWxzKCIiKSkgew0KLQkJCQlzYi5hcHBlbmQoY2xhc3NJbmRlbnQpLmFwcGVuZChNZXNzYWdlRm9ybWF0LmZvcm1hdCgicHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyB7MH0gJ3snXG5cbiIsIGdyb3VwLm5hbWUpKTsNCi0JCQkJc2IuYXBwZW5kKGZpZWxkSW5kZW50KS5hcHBlbmQoTWVzc2FnZUZvcm1hdC5mb3JtYXQoInB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9ST09UID0gXCJ7MH1cIjtcblxuIiwgZ3JvdXAubmFtZXNwYWNlKSk7DQotCQkJfQ0KLQkJCQ0KLQkJCWlmIChncm91cC5maWVsZHMgIT0gbnVsbCkgew0KLQkJCQkvLyBmaWVsZHMNCi0JCQkJZm9yIChTdHJpbmcgZmllbGQgOiBncm91cC5maWVsZHMpIHsJCQkJCQ0KLQkJCQkJc2IuYXBwZW5kKGZpZWxkSW5kZW50KS5hcHBlbmQoTWVzc2FnZUZvcm1hdC5mb3JtYXQoInB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHswfSA9IFwiezF9XCI7XG5cbiIsIGZpZWxkLCBncm91cC5mdWxsS2V5KGZpZWxkKSkpOw0KLQkJCQl9DQotCQkJfQ0KLQkJCWlmIChncm91cC5jaGlsZHJlbiAhPSBudWxsKSB7DQotCQkJCS8vIGlubmVyIGNsYXNzZXMNCi0JCQkJZm9yIChLZXlHcm91cCBjaGlsZCA6IGdyb3VwLmNoaWxkcmVuKSB7DQotCQkJCQlzYi5hcHBlbmQoZ2VuZXJhdGVDbGFzcyhjaGlsZCwgbGV2ZWwgKyAxKSk7DQotCQkJCX0NCi0JCQl9DQotCQkJLy8gZW5kIGNsYXNzDQotCQkJaWYgKCFncm91cC5uYW1lc3BhY2UuZXF1YWxzKCIiKSkgew0KLQkJCQlzYi5hcHBlbmQoY2xhc3NJbmRlbnQpLmFwcGVuZCgifVxuXG4iKTsNCi0JCQl9DQotCQkJcmV0dXJuIHNiLnRvU3RyaW5nKCk7CQkJDQotCQl9DQotCX0NCi0NCi0JLyoqDQotCSAqIERvd25sb2FkIGEgZmlsZSBmcm9tIHRoZSBvZmZpY2lhbCBBcGFjaGUgTWF2ZW4gcmVwb3NpdG9yeS4NCi0JICogDQotCSAqIEBwYXJhbSBtbw0KLQkgKiAgICAgICAgICAgIHRoZSBtYXZlbiBvYmplY3QgdG8gZG93bmxvYWQuDQotCSAqIEByZXR1cm4NCi0JICovDQotCXByaXZhdGUgc3RhdGljIExpc3Q8RmlsZT4gZG93bmxvYWRGcm9tQXBhY2hlKE1hdmVuT2JqZWN0IG1vLCBCdWlsZFR5cGUgdHlwZSkgew0KLQkJcmV0dXJuIGRvd25sb2FkRnJvbU1hdmVuKCJodHRwOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi8iLCBtbywgdHlwZSk7DQotCX0NCi0NCi0JLyoqDQotCSAqIERvd25sb2FkIGEgZmlsZSBmcm9tIHRoZSBvZmZpY2lhbCBFY2xpcHNlIE1hdmVuIHJlcG9zaXRvcnkuDQotCSAqIA0KLQkgKiBAcGFyYW0gbW8NCi0JICogICAgICAgICAgICB0aGUgbWF2ZW4gb2JqZWN0IHRvIGRvd25sb2FkLg0KLQkgKiBAcmV0dXJuDQotCSAqLw0KLQlwcml2YXRlIHN0YXRpYyBMaXN0PEZpbGU+IGRvd25sb2FkRnJvbUVjbGlwc2UoTWF2ZW5PYmplY3QgbW8sIEJ1aWxkVHlwZSB0eXBlKSB7DQotCQlyZXR1cm4gZG93bmxvYWRGcm9tTWF2ZW4oImh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9qZ2l0L21hdmVuLyIsIG1vLCB0eXBlKTsNCi0JfQ0KLQ0KLQkvKioNCi0JICogRG93bmxvYWQgYSBmaWxlIGZyb20gYSBNYXZlbiByZXBvc2l0b3J5Lg0KLQkgKiANCi0JICogQHBhcmFtIG1vDQotCSAqICAgICAgICAgICAgdGhlIG1hdmVuIG9iamVjdCB0byBkb3dubG9hZC4NCi0JICogQHJldHVybg0KLQkgKi8NCi0JcHJpdmF0ZSBzdGF0aWMgTGlzdDxGaWxlPiBkb3dubG9hZEZyb21NYXZlbihTdHJpbmcgbWF2ZW5Sb290LCBNYXZlbk9iamVjdCBtbywgQnVpbGRUeXBlIHR5cGUsIFN0cmluZyB0YXJnZXRGb2xkZXIpIHsNCi0JCUxpc3Q8RmlsZT4gZG93bmxvYWRzID0gbmV3IEFycmF5TGlzdDxGaWxlPigpOw0KLQkJU3RyaW5nW10gamFycyA9IHsgIiIgfTsNCi0JCWlmIChCdWlsZFR5cGUuUlVOVElNRS5lcXVhbHModHlwZSkpIHsNCi0JCQlqYXJzID0gbmV3IFN0cmluZ1tdIHsgIiIgfTsNCi0JCX0gZWxzZSBpZiAoQnVpbGRUeXBlLkNPTVBJTEVUSU1FLmVxdWFscyh0eXBlKSkgew0KLQkJCWphcnMgPSBuZXcgU3RyaW5nW10geyAiLXNvdXJjZXMiIH07DQotCQl9DQotCQlmb3IgKFN0cmluZyBqYXIgOiBqYXJzKSB7DQotCQkJRmlsZSB0YXJnZXRGaWxlID0gbW8uZ2V0TG9jYWxGaWxlKHRhcmdldEZvbGRlciwgamFyKTsNCi0JCQlpZiAoIi1zb3VyY2VzIi5lcXVhbHMoamFyKSkgew0KLQkJCQlGaWxlIHJlbG9jYXRlZCA9IG5ldyBGaWxlKHRhcmdldEZvbGRlcisiL3NyYyIsIHRhcmdldEZpbGUuZ2V0TmFtZSgpKTsNCi0JCQkJaWYgKHRhcmdldEZpbGUuZXhpc3RzKCkpIHsNCi0JCQkJCS8vIG1vdmUgLXNvdXJjZXMgamFyIHRvIGV4dC9zcmMgZm9sZGVyDQotCQkJCQl0YXJnZXRGaWxlLnJlbmFtZVRvKHJlbG9jYXRlZCk7DQotCQkJCX0NCi0JCQkJLy8gLXNvdXJjZXMgamFycyBhcmUgbG9jYXRlZCBpbiBleHQvc3JjDQotCQkJCXRhcmdldEZpbGUgPSByZWxvY2F0ZWQ7DQotCQkJfQ0KLQkJCQ0KLQkJCWlmICh0YXJnZXRGaWxlLmV4aXN0cygpKSB7DQotCQkJCWRvd25sb2Fkcy5hZGQodGFyZ2V0RmlsZSk7DQotCQkJCXJlbW92ZU9ic29sZXRlQXJ0aWZhY3RzKG1vLCB0eXBlLCB0YXJnZXRGaWxlLmdldFBhcmVudEZpbGUoKSk7DQotCQkJCWNvbnRpbnVlOw0KLQkJCX0NCi0JCQlTdHJpbmcgZXhwZWN0ZWRTSEExID0gbW8uZ2V0U0hBMShqYXIpOw0KLQkJCWlmIChleHBlY3RlZFNIQTEgPT0gbnVsbCkgew0KLQkJCQkvLyBza2lwIHRoaXMgamFyDQotCQkJCWNvbnRpbnVlOw0KLQkJCX0NCi0JCQlmbG9hdCBhcHByb3hpbWF0ZUxlbmd0aCA9IG1vLmdldEFwcHJveGltYXRlTGVuZ3RoKGphcik7DQotCQkJU3RyaW5nIG1hdmVuVVJMID0gbWF2ZW5Sb290ICsgbW8uZ2V0UmVwb3NpdG9yeVBhdGgoamFyKTsNCi0JCQlpZiAoIXRhcmdldEZpbGUuZ2V0QWJzb2x1dGVGaWxlKCkuZ2V0UGFyZW50RmlsZSgpLmV4aXN0cygpKSB7DQotCQkJCWJvb2xlYW4gc3VjY2VzcyA9IHRhcmdldEZpbGUuZ2V0QWJzb2x1dGVGaWxlKCkuZ2V0UGFyZW50RmlsZSgpLm1rZGlycygpOw0KLQkJCQlpZiAoIXN1Y2Nlc3MpIHsNCi0JCQkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJGYWlsZWQgdG8gY3JlYXRlIGRlc3RpbmF0aW9uIGZvbGRlciBzdHJ1Y3R1cmUhIik7DQotCQkJCX0NCi0JCQl9DQotCQkJaWYgKGRvd25sb2FkTGlzdGVuZXIgIT0gbnVsbCkgew0KLQkJCQlkb3dubG9hZExpc3RlbmVyLmRvd25sb2FkaW5nKG1vLm5hbWUgKyAiLi4uIik7DQotCQkJfQ0KLQkJCUJ5dGVBcnJheU91dHB1dFN0cmVhbSBidWZmID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOw0KLQkJCXRyeSB7DQotCQkJCVVSTCB1cmwgPSBuZXcgVVJMKG1hdmVuVVJMKTsNCi0JCQkJSW5wdXRTdHJlYW0gaW4gPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbSh1cmwub3BlblN0cmVhbSgpKTsNCi0JCQkJYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWzQwOTZdOw0KLQkJCQlpbnQgZG93bmxvYWRlZExlbiA9IDA7DQotCQkJCWZsb2F0IGxhc3RQcm9ncmVzcyA9IDBmOw0KLQ0KLQkJCQl1cGRhdGVEb3dubG9hZCgwLCB0YXJnZXRGaWxlKTsNCi0JCQkJd2hpbGUgKHRydWUpIHsNCi0JCQkJCWludCBsZW4gPSBpbi5yZWFkKGJ1ZmZlcik7DQotCQkJCQlpZiAobGVuIDwgMCkgew0KLQkJCQkJCWJyZWFrOw0KLQkJCQkJfQ0KLQkJCQkJZG93bmxvYWRlZExlbiArPSBsZW47DQotCQkJCQlidWZmLndyaXRlKGJ1ZmZlciwgMCwgbGVuKTsNCi0JCQkJCWZsb2F0IHByb2dyZXNzID0gZG93bmxvYWRlZExlbiAvIGFwcHJveGltYXRlTGVuZ3RoOw0KLQkJCQkJaWYgKHByb2dyZXNzIC0gbGFzdFByb2dyZXNzID49IDAuMWYpIHsNCi0JCQkJCQlsYXN0UHJvZ3Jlc3MgPSBwcm9ncmVzczsNCi0JCQkJCQl1cGRhdGVEb3dubG9hZChwcm9ncmVzcywgdGFyZ2V0RmlsZSk7DQotCQkJCQkJaWYgKGRvd25sb2FkTGlzdGVuZXIgIT0gbnVsbCkgew0KLQkJCQkJCQlpbnQgcGVyY2VudCA9IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgxMDAgKiBwcm9ncmVzcykpOw0KLQkJCQkJCQlkb3dubG9hZExpc3RlbmVyLmRvd25sb2FkaW5nKG1vLm5hbWUgKyAiICgiICsgcGVyY2VudCArICIlKSIpOw0KLQkJCQkJCX0NCi0JCQkJCX0NCi0JCQkJfQ0KLQkJCQlpbi5jbG9zZSgpOw0KLQkJCQl1cGRhdGVEb3dubG9hZCgxZiwgdGFyZ2V0RmlsZSk7DQotCQkJCWlmIChkb3dubG9hZExpc3RlbmVyICE9IG51bGwpIHsNCi0JCQkJCWRvd25sb2FkTGlzdGVuZXIuZG93bmxvYWRpbmcobW8ubmFtZSArICIgKDEwMCUpIik7DQotCQkJCX0NCi0NCi0JCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQotCQkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJFcnJvciBkb3dubG9hZGluZyAiICsgbWF2ZW5VUkwgKyAiIHRvICIgKyB0YXJnZXRGaWxlLCBlKTsNCi0JCQl9DQotCQkJYnl0ZVtdIGRhdGEgPSBidWZmLnRvQnl0ZUFycmF5KCk7DQotCQkJU3RyaW5nIGNhbGN1bGF0ZWRTSEExID0gU3RyaW5nVXRpbHMuZ2V0U0hBMShkYXRhKTsNCi0NCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCi0NCi0JCQlpZiAoZXhwZWN0ZWRTSEExLmxlbmd0aCgpID09IDApIHsNCi0JCQkJdXBkYXRlUHJvZ3Jlc3MoMCwgInNoYTogIiArIGNhbGN1bGF0ZWRTSEExKTsNCi0JCQkJU3lzdGVtLm91dC5wcmludGxuKCk7DQotCQkJfSBlbHNlIHsNCi0JCQkJaWYgKCFjYWxjdWxhdGVkU0hBMS5lcXVhbHMoZXhwZWN0ZWRTSEExKSkgew0KLQkJCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlNIQTEgY2hlY2tzdW0gbWlzbWF0Y2g7IGdvdDogIiArIGNhbGN1bGF0ZWRTSEExKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCQl0cnkgew0KLQkJCQlSYW5kb21BY2Nlc3NGaWxlIHJhID0gbmV3IFJhbmRvbUFjY2Vzc0ZpbGUodGFyZ2V0RmlsZSwgInJ3Iik7DQotCQkJCXJhLndyaXRlKGRhdGEpOw0KLQkJCQlyYS5zZXRMZW5ndGgoZGF0YS5sZW5ndGgpOw0KLQkJCQlyYS5jbG9zZSgpOw0KLQkJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsNCi0JCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkVycm9yIHdyaXRpbmcgdG8gZmlsZSAiICsgdGFyZ2V0RmlsZSwgZSk7DQotCQkJfQ0KLQkJCWRvd25sb2Fkcy5hZGQodGFyZ2V0RmlsZSk7DQotCQkJDQotCQkJcmVtb3ZlT2Jzb2xldGVBcnRpZmFjdHMobW8sIHR5cGUsIHRhcmdldEZpbGUuZ2V0UGFyZW50RmlsZSgpKTsNCi0JCX0NCi0JCXJldHVybiBkb3dubG9hZHM7DQotCX0NCi0JDQotCS8qKg0KLQkgKiBEb3dubG9hZCBhIGZpbGUgZnJvbSB0aGUgb2ZmaWNpYWwgQXBhY2hlIE1hdmVuIHJlcG9zaXRvcnkuDQotCSAqIA0KLQkgKiBAcGFyYW0gbW8NCi0JICogICAgICAgICAgICB0aGUgbWF2ZW4gb2JqZWN0IHRvIGRvd25sb2FkLg0KLQkgKiBAcmV0dXJuDQotCSAqLw0KLQlwcml2YXRlIHN0YXRpYyBMaXN0PEZpbGU+IGRvd25sb2FkRnJvbUFwYWNoZVRvRXh0U2VsZW5pdW0oTWF2ZW5PYmplY3QgbW8sDQotCQkJQnVpbGRUeXBlIHR5cGUpIHsNCi0JCXJldHVybiBkb3dubG9hZEZyb21NYXZlbigiaHR0cDovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvIiwgbW8sIHR5cGUsDQotCQkJCSJleHQvc2VsZW5pdW1ocSIpOw0KLQl9DQotCQ0KLQkvKioNCi0JICogRG93bmxvYWQgYSBmaWxlIGZyb20gdGhlIG9mZmljaWFsIEFwYWNoZSBNYXZlbiByZXBvc2l0b3J5Lg0KLQkgKiANCi0JICogQHBhcmFtIG1vDQotCSAqICAgICAgICAgICAgdGhlIG1hdmVuIG9iamVjdCB0byBkb3dubG9hZC4NCi0JICogQHJldHVybg0KLQkgKi8NCi0JcHJpdmF0ZSBzdGF0aWMgTGlzdDxGaWxlPiBkb3dubG9hZEZyb21NYXZlbihTdHJpbmcgbWF2ZW5Sb290LA0KLQkJCU1hdmVuT2JqZWN0IG1vLCBCdWlsZFR5cGUgdHlwZSkgew0KLQkJcmV0dXJuIGRvd25sb2FkRnJvbU1hdmVuKG1hdmVuUm9vdCwgbW8sIHR5cGUsICJleHQiKTsNCi0JfQ0KLQkNCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCByZW1vdmVPYnNvbGV0ZUFydGlmYWN0cyhmaW5hbCBNYXZlbk9iamVjdCBtbywgZmluYWwgQnVpbGRUeXBlIHR5cGUsIEZpbGUgZm9sZGVyKSB7DQotCQlGaWxlIFtdIHJlbW92YWxzID0gZm9sZGVyLmxpc3RGaWxlcyhuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7DQotCQkJQE92ZXJyaWRlDQotCQkJcHVibGljIGJvb2xlYW4gYWNjZXB0KEZpbGUgZGlyLCBTdHJpbmcgbmFtZSkgew0KLQkJCQlTdHJpbmcgbiA9IG5hbWUudG9Mb3dlckNhc2UoKTsNCi0JCQkJU3RyaW5nIGRlcCA9IG1vLmFydGlmYWN0LnRvTG93ZXJDYXNlKCk7DQotCQkJCWlmIChuLnN0YXJ0c1dpdGgoZGVwKSkgew0KLQkJCQkJU3RyaW5nIHN1ZmZpeCA9ICItIiArIG1vLnZlcnNpb247DQotCQkJCQlpZiAodHlwZS5lcXVhbHMoQnVpbGRUeXBlLkNPTVBJTEVUSU1FKSkgew0KLQkJCQkJCXN1ZmZpeCArPSAiLXNvdXJjZXMuamFyIjsNCi0JCQkJCX0gZWxzZSB7DQotCQkJCQkJc3VmZml4ICs9ICIuamFyIjsNCi0JCQkJCX0NCi0JCQkJCWlmICghbi5lbmRzV2l0aChzdWZmaXgpKSB7DQotCQkJCQkJcmV0dXJuIHRydWU7DQotCQkJCQl9DQotCQkJCX0NCi0JCQkJcmV0dXJuIGZhbHNlOw0KLQkJCX0NCi0JCX0pOw0KLQkJDQotCQkvLyBkZWxldGUgYW55IG1hdGNoZXMNCi0JCWlmIChyZW1vdmFscyAhPSBudWxsKSB7DQotCQkJZm9yIChGaWxlIGZpbGUgOiByZW1vdmFscykgew0KLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oImRlbGV0aW5nICIgKyBmaWxlKTsNCi0JCQkJZmlsZS5kZWxldGUoKTsNCi0JCQl9DQotCQl9DQotCX0NCi0NCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCB1cGRhdGVEb3dubG9hZChmbG9hdCBwcm9ncmVzcywgRmlsZSBmaWxlKSB7DQotCQl1cGRhdGVQcm9ncmVzcyhwcm9ncmVzcywgImQvbDogIiArIGZpbGUuZ2V0TmFtZSgpKTsNCi0JfQ0KLQ0KLQlwcml2YXRlIHN0YXRpYyB2b2lkIHVwZGF0ZVByb2dyZXNzKGZsb2F0IHByb2dyZXNzLCBTdHJpbmcgdXJsKSB7DQotICAgICAgICBib29sZWFuIGlzV2luZG93cyA9IG9zTmFtZS5jb250YWlucygiV2luZG93cyIpOw0KLSAgICAgICAgU3RyaW5nIGFuaW0gPSAiPT09PT09PT09PSI7DQotCQlpbnQgd2lkdGggPSBNYXRoLnJvdW5kKGFuaW0ubGVuZ3RoKCkgKiBwcm9ncmVzcyk7DQotICAgICAgICBpZiAoaXNXaW5kb3dzKSBTeXN0ZW0ub3V0LnByaW50KCJcciIpOw0KLQkJU3lzdGVtLm91dC5wcmludCgiWyIpOw0KLQkJU3lzdGVtLm91dC5wcmludChhbmltLnN1YnN0cmluZygwLCBNYXRoLm1pbih3aWR0aCwgYW5pbS5sZW5ndGgoKSkpKTsNCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgYW5pbS5sZW5ndGgoKSAtIHdpZHRoOyBpKyspIHsNCi0JCQlTeXN0ZW0ub3V0LnByaW50KCcgJyk7DQotCQl9DQotCQlTeXN0ZW0ub3V0LnByaW50KCJdICIgKyB1cmwpOw0KLSAgICAgICAgaWYgKCFpc1dpbmRvd3MpIFN5c3RlbS5vdXQucHJpbnRsbigpOw0KLQl9DQotDQotCS8qKg0KLQkgKiBNYXZlbk9iamVjdCByZXByZXNlbnRzIGEgY29tcGxldGUgbWF2ZW4gYXJ0aWZhY3QgKGJpbmFyeSwgc291cmNlcywgYW5kDQotCSAqIGphdmFkb2MpLiBNYXZlbk9iamVjdHMgY2FuIGJlIGRvd25sb2FkZWQgYW5kIGNoZWNrc3VtbWVkIHRvIGNvbmZpcm0NCi0JICogYXV0aGVudGljaXR5Lg0KLQkgKi8NCi0JcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTWF2ZW5PYmplY3Qgew0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKQ09NTUFOREVSID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiakNvbW1hbmRlciIsICJjb20vYmV1c3QiLCAiamNvbW1hbmRlciIsICIxLjE3IiwNCi0gICAgICAgICAgICAgICAgMzQwMDAsIDMyMDAwLCAxNDEwMDAsDQotCQkJCSIyMTlhMzU0MGYzYjI3ZDdjYzNiMWQ5MWQ2ZWEwNDZjZDg3MjMyOTBlIiwNCi0JCQkJIjBiYjUwZWVjMTc3YWNmMGU5NGQ1OGUwY2YwNzI2MmZlNTE2NDMzMWQiLA0KLQkJCQkiYzdhZGM0NzVjYTQwYzI4OGM5MzA1NGUwZjRmZTU4ZjNhOThjMGNiNSIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKRVRUWSA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIkpldHR5IiwgIm9yZy9lY2xpcHNlL2pldHR5L2FnZ3JlZ2F0ZSIsICJqZXR0eS13ZWJhcHAiLCAiNy42LjgudjIwMTIxMTA2IiwNCi0gICAgICAgICAgICAgICAgMTAwMDAwMCwgNjgwMDAwLCAyNzIwMDAwLA0KLSAgICAgICAgICAgICAgICAiNjMzMzk2OWI0ZDUwOWM0YjY4MWUwNTMwMmNhN2ViY2NiOWMzZWZiNSIsDQotCQkJCSIzNTRmMjc1MmVkNjU0NDI5NmJjMGZjOTJlNTMzZDY4YTViMDMwNDViIiwNCi0JCQkJIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKRVRUWV9BSlAgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJKZXR0eS1BSlAiLCAib3JnL2VjbGlwc2UvamV0dHkiLCAiamV0dHktYWpwIiwgIjcuNi44LnYyMDEyMTEwNiIsDQotICAgICAgICAgICAgICAgIDMyMDAwLCAyMjAwMCwgOTcwMDAsDQotICAgICAgICAgICAgICAgICI5NWJkMWM4OWJiMmFmZDRlZWFhYmM2ZjRiMDE4M2E5ZjI2YTUyMmQ3IiwNCi0gICAgICAgICAgICAgICAgImUxZmMyNTM5MjAyZWJiMjQwYTg3YTA4MGJjNDRhMjRjOTNkNzMxOGIiLA0KLSAgICAgICAgICAgICAgICAiIik7DQotCQkNCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgU0VSVkxFVCA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIlNlcnZsZXQgMy4wIiwgImphdmF4L3NlcnZsZXQiLCAiamF2YXguc2VydmxldC1hcGkiLCAiMy4wLjEiLA0KLSAgICAgICAgICAgICAgICA4NDAwMCwgMjExMDAwLCAwLA0KLQkJCQkiNmJmMGViYjdlZmQ5OTNlMjIyZmMxMTEyMzc3YjVlOTJhMTNiMzhkZCIsDQotCQkJCSIwMTk1MmY5MWQ4NDAxNmEzOWUzMTM0NmM5ZDE4YmQ4YzljNGExMjhhIiwNCi0gICAgICAgICAgICAgICAgbnVsbCk7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFNMRjRKQVBJID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiU0xGNEogQVBJIiwgIm9yZy9zbGY0aiIsICJzbGY0ai1hcGkiLCAiMS42LjYiLA0KLSAgICAgICAgICAgICAgICAyNTUwMCwgNDUwMDAsIDE4MjAwMCwNCi0JCQkJImNlNTNiMGEwZTJjZmJiMjdlOGE1OWQzOGY3OWExOGE1YzZhOGQyYjAiLA0KLQkJCQkiYmNkMGUyMWIxNTcyOTYwY2VmZDQ0OWY4YTE2ZWZhYjViNmI4ZTY0NCIsDQotCQkJCSI0MjUzYjUyYWFiZjFjNWE1ZjIwYzE5MWEyNjFlNmFkYTBmY2Y2MjFkIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFNMRjRMT0c0SiA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIlNMRjRKIExPRzRKIiwgIm9yZy9zbGY0aiIsICJzbGY0ai1sb2c0ajEyIiwgIjEuNi42IiwNCi0gICAgICAgICAgICAgICAgOTgwMCwgOTUwMCwgNTI0MDAsDQotCQkJCSI1Y2Q5YjRmYmMzZmY2YTk3YmVhYWRlMzIwNjEzN2Q3NmY2NWRmODA1IiwNCi0JCQkJIjQ5N2JmYWM5YTY3ODExOGU3ZmY3NWQxZjNiOGMzYmNjMDZkYzljOGMiLA0KLQkJCQkiNjk4NTVlMmE4NWQ5MjQ5YmI1NzdkZjNjNTA3NmJjMmNiMzQ5NzVkNyIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBMT0c0SiA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIkFwYWNoZSBMT0c0SiIsICJsb2c0aiIsICJsb2c0aiIsICIxLjIuMTciLA0KLSAgICAgICAgICAgICAgICA0ODEwMDAsIDQ3MTAwMCwgMTQ1NTAwMCwNCi0gICAgICAgICAgICAgICAgIjVhZjM1MDU2YjRkMjU3ZTRiNjRiOWU4MDY5YzA3NDZlOGIwODYyOWYiLA0KLQkJCQkiNjc3YWJlMjc5YjY4YzVlNzQ5MGQ2ZDUwYzY5NTEzNzYyMzhkN2QzZSIsDQotCQkJCSJjMTBjMjAxNjgyMDY4OTY0NDJmMzE5MmQ1NDE3ODE1ZGY3ZmNiZjlhIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFdJQ0tFVCA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIkFwYWNoZSBXaWNrZXQiLCAib3JnL2FwYWNoZS93aWNrZXQiLCAid2lja2V0IiwgIjEuNC4yMSIsDQotICAgICAgICAgICAgICAgIDE5NjAwMDAsIDE5MDYwMDAsIDY4MTgwMDAsDQotCQkJCSJjY2U5ZGZkMzA4OGUxOGEzY2RjZjliZTMzYjViNzZjYWE0OGRjNGM2IiwNCi0JCQkJImU4YzJiZmUyYzk2YTJkYTdhMGVjYTk0N2EyZjYwZGMzMjQyZTcyMjkiLA0KLQkJCQkiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFdJQ0tFVF9FWFQgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJBcGFjaGUgV2lja2V0IEV4dGVuc2lvbnMiLCAib3JnL2FwYWNoZS93aWNrZXQiLCAid2lja2V0LWV4dGVuc2lvbnMiLCAiMS40LjIxIiwNCi0gICAgICAgICAgICAgICAgMTE4MDAwMCwgMTExODAwMCwgMTQ1ODAwMCwNCi0JCQkJImZhYzUxMGM3ZWU0Mzk5YTI5YjkyNzQwNWVjM2RlNDBiNjdkMTA1ZDgiLA0KLQkJCQkiZWUzNDA5Y2U5ZWQ2NGFkOGNjOGQ2OWFiYmQ3ZDYzZjA3ZTEwODUxYSIsDQotCQkJCSIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgV0lDS0VUX0FVVEhfUk9MRVMgPSBuZXcgTWF2ZW5PYmplY3QoDQotCQkJCSJBcGFjaGUgV2lja2V0IEF1dGggUm9sZXMiLCAib3JnL2FwYWNoZS93aWNrZXQiLCAid2lja2V0LWF1dGgtcm9sZXMiLCAiMS40LjIxIiwNCi0JCQkJNDQwMDAsIDQ1MDAwLCAxNjYwMDAsDQotICAgICAgICAgICAgICAgICJlNzhkZjcwY2E5NDJlMmUxNTI4N2MzOTNmMjM2YjMyZmJlNmY5YTMwIiwNCi0JCQkJIjQ3YzMwMTIxMmNjZTQzYTcwY2FhNzJmNDFhOWExYWVmY2YyNmE1MzMiLA0KLQkJCQkiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFdJQ0tFVF9HT09HTEVfQ0hBUlRTID0gbmV3IE1hdmVuT2JqZWN0KA0KLQkJCQkiQXBhY2hlIFdpY2tldCBHb29nbGUgQ2hhcnRzIEFkZC1PbiIsICJvcmcvd2lja2V0c3R1ZmYiLCAiZ29vZ2xlY2hhcnRzIiwgIjEuNC4yMSIsDQotCQkJCTM0MDAwLCAxODc1MCwgMTYxMDAwLA0KLSAgICAgICAgICAgICAgICAiNzNkNzU0MDI2N2FmYzNhMGU5MWNhNjE0OGQzMDczZTA1MGRiYTE4MCIsDQotCQkJCSI2MjdiMTI1Y2M2MDI5ZDRkNWM1OWMzYTkxMGMxYmVmMzQ3Mzg0ZDk3IiwNCi0JCQkJIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKVU5JVCA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIkpVbml0IiwgImp1bml0IiwgImp1bml0IiwgIjQuMTAiLA0KLQkJCQkyNTMwMDAsIDE0MTAwMCwgMCwgImU0ZjE3NjZjZTc0MDRhMDhmNDVkODU5ZmI5YzIyNmZjOWU0MWE4NjEiLA0KLSAgICAgICAgICAgICAgICAiNmM5OGQ2NzY2ZTcyZDU1NzVmOTZjOTQ3OWQxYzFkM2I4NjVjNmUyNSIsICIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgSEFNQ1JFU1QgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJIYW1jcmVzdCBDb3JlIiwgIm9yZy9oYW1jcmVzdCIsICJoYW1jcmVzdC1jb3JlIiwgIjEuMSIsDQotCQkJCTc3MDAwLCAwLCAwLA0KLSAgICAgICAgICAgICAgICAiODYwMzQwNTYyMjUwNjc4ZDFhMzQ0OTA3YWM3NTc1NGUyNTljZGIxNCIsDQotICAgICAgICAgICAgICAgIG51bGwsDQotICAgICAgICAgICAgICAgICIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgTUFSS0RPV05QQVBFUlMgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJNYXJrZG93blBhcGVycyIsICJvcmcvdGF1dHVhL21hcmtkb3ducGFwZXJzIiwgIm1hcmtkb3ducGFwZXJzLWNvcmUiLCAiMS4zLjIiLA0KLSAgICAgICAgICAgICAgICA5MjAwMCwgNjAwMDAsIDI2ODAwMCwNCi0JCQkJImRhMjJkYjY2NjBlOTBiOWE2NzdiYmRmYzJjNTExYzYxOWVhNWMyNDkiLA0KLQkJCQkiNmE3MjI4MjgwYTIyOTE0NGFmZTZjMDEzNTFhOGY0NDY3NWQ4NTI0ZCIsDQotCQkJCSIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgQk9VTkNZQ0FTVExFID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiQm91bmN5Q2FzdGxlIiwgIm9yZy9ib3VuY3ljYXN0bGUiLCAiYmNwcm92LWpkazE1b24iLCAiMS40NyIsDQotICAgICAgICAgICAgICAgIDE5MDAwMDAsIDE0MDAwMDAsIDQ2NzAwMDAsDQotCQkJCSJiNmY1ZDk5MjZiMGFmYmRlOWY0ZGJlM2RiODhjNTI0N2JlNzc5NGJiIiwNCi0JCQkJIjg1ZTZlMWFkNDQ5ZDVhM2YwOTYyNGJmNDAzOGZjOGQyYjAyZGU4MWMiLA0KLQkJCQkiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IEJPVU5DWUNBU1RMRV9NQUlMID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiQm91bmN5Q2FzdGxlIE1haWwiLCAib3JnL2JvdW5jeWNhc3RsZSIsICJiY21haWwtamRrMTVvbiIsICIxLjQ3IiwNCi0gICAgICAgICAgICAgICAgNTAyMDAwLCA0MjAwMDAsIDQ4MjAwMCwNCi0JCQkJImEzNWNjZWM2NDAxNzdkMGRlNTgxNTU2ODUyOTAyMWFmNTU0NmQ2YTciLA0KLQkJCQkiZjc0MjMzMGNmZTFlNzM2NWRiZGY3NzNjMjRiOTIzODIxNzIxNjRhNyIsDQotCQkJCSIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgQk9VTkNZQ0FTVExFX1BLSVggPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJCb3VuY3lDYXN0bGUgUEtJWCIsICJvcmcvYm91bmN5Y2FzdGxlIiwgImJjcGtpeC1qZGsxNW9uIiwgIjEuNDciLA0KLSAgICAgICAgICAgICAgICA1MDIwMDAsIDQyMDAwMCwgNDgyMDAwLA0KLQkJCQkiY2QyMDRlNmYyNmQyYmJmNjVmZjNhMzBkZTg4MzFkM2ExMzQ0ZTg1MSIsDQotCQkJCSI4MGU3NzRhNzNkMGU2YTZiNDBkZGYzNWZmZjYxM2Y5ZjMwZmUyYTk4IiwNCi0JCQkJIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKR0lUID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiSkdpdCIsICJvcmcvZWNsaXBzZS9qZ2l0IiwgIm9yZy5lY2xpcHNlLmpnaXQiLCAiMi4yLjAuMjAxMjEyMTkxODUwLXIiLA0KLSAgICAgICAgICAgICAgICAxNjAwMDAwLCAxNTY1MDAwLCAzNDYwMDAwLA0KLQkJCQkiOTdkMDc2MWI5ZGQ2MThkMWY5ZjZjMTZjMzVjM2RkZjA0NWJhNTM2YyIsDQotCQkJCSIwOGRjZjk1NDZmNGQ2MWUxYjhhNTBkZjVkYTU1MTMwMDYwMjNiNjRiIiwNCi0JCQkJIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKR0lUX0hUVFAgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJKR2l0IiwgIm9yZy9lY2xpcHNlL2pnaXQiLCAib3JnLmVjbGlwc2UuamdpdC5odHRwLnNlcnZlciIsICIyLjIuMC4yMDEyMTIxOTE4NTAtciIsDQotICAgICAgICAgICAgICAgIDY4MDAwLCA2MjAwMCwgMTEwMDAwLA0KLQkJCQkiOGFkNGZjNGZiOTUyOWQ2NDUyNDliYjQ2YWQ3ZTU0ZDk4NDM2Y2I2NSIsDQotCQkJCSIzMzg1Y2YyOTQ5NTdkMWQzNGMxMjcwYjQ2ODg1M2FlYTM0N2IzNmNhIiwNCi0JCQkJIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBKU0NIID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiSlNjaCIsICJjb20vamNyYWZ0IiwgImpzY2giLCAiMC4xLjQ0LTEiLA0KLSAgICAgICAgICAgICAgICAyMTQwMDAsIDIxMTAwMCwgNDEzMDAwLA0KLSAgICAgICAgICAgICAgICAiMmU5YWUwOGRlNWE3MWJkMGUwZDNiYTI1NTg1OTgxODFiZmE3MWQ0ZSIsDQotCQkJCSJlNTI4ZjU5M2IxOWIwNGQ1MDA5OTI2MDZmNThiODdmY2ZkZWQ4ODgzIiwNCi0JCQkJImQwZmZhZGQwYTRhYjkwOWQ5NGE1NzdiNWFhZDQzYzEzYjYxN2RkY2IiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgQ09NTU9OU05FVCA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgImNvbW1vbnMtbmV0IiwgImNvbW1vbnMtbmV0IiwgImNvbW1vbnMtbmV0IiwgIjEuNC4wIiwNCi0gICAgICAgICAgICAgICAgMTgxMDAwLCAwLCAwLA0KLSAgICAgICAgICAgICAgICAiZWI0N2U4Y2FkMmRkN2Y5MmZkN2U3N2RmMWQxNTI5Y2FlODczNjFmNyIsDQotCQkJCSIiLA0KLSAgICAgICAgICAgICAgICAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFJPTUUgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJyb21lIiwgInJvbWUiLCAicm9tZSIsICIwLjkiLA0KLQkJCQkyMDgwMDAsIDE5NjAwMCwgNDA3MDAwLA0KLSAgICAgICAgICAgICAgICAiZGVlMjcwNWRkMDFlNzlhNWE5NmExNzIyNWY1YTFhZTMwNDcwYmIxOCIsDQotCQkJCSIyMjZmODUxZGM0NGZkOTRmZTcwYjljNDcxODgxYjcxZjg4OTQ5Y2JmIiwNCi0JCQkJIjhkN2Q4NjdiOTdlZWIzYTkxOTZjMzkyNmRhNTUwYWQwNDI5NDFjMWIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgSkRPTSA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgImpkb20iLCAiamRvbSIsICJqZG9tIiwgIjEuMCIsDQotCQkJCTE1MzAwMCwgMjM1MDAwLCA0NDUwMDAsDQotICAgICAgICAgICAgICAgICJhMmFjMWNkNjkwYWI0YzgwZGVmZTdmOWJjZTE0ZDM1OTM0YzM1Y2VjIiwNCi0JCQkJIjY2MmFiZTAxOTZjZjU1NGQ0ZDczNzRmNWQ2MzgyMDM0MTcxYjY1MmMiLA0KLQkJCQkiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IEdTT04gPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJnc29uIiwgImNvbS9nb29nbGUvY29kZS9nc29uIiwgImdzb24iLCAiMS43LjIiLA0KLSAgICAgICAgICAgICAgICAxNzQwMDAsIDE0MjAwMCwgMjQ3MDAwLA0KLQkJCQkiMTEyMzY2ZDgxNTg3NDllMjU1MzJlYmNlMTYyMjMyYzZlMGZiMjBhNSIsDQotCQkJCSJhNmZlMzAwNmRmNDYxNzRhOWMxYzU2YjNjNTEzNTdiOWJmZGU1ODc0IiwNCi0JCQkJIjUzN2Y3MjlhYzYzYjYxMzJhNzk1YTNjMWYyZTEzYjMyN2U4NzIzMzMiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgTUFJTCA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgImphdmF4Lm1haWwiLCAiamF2YXgvbWFpbCIsICJtYWlsIiwgIjEuNC4zIiwNCi0gICAgICAgICAgICAgICAgNDYyMDAwLCA2NDIwMDAsIDAsDQotICAgICAgICAgICAgICAgICI4MTU0YmY4ZDY2NmU2ZGIxNTRjNTQ4ZGMzMWE4ZDUxMmMyNzNmNWVlIiwNCi0JCQkJIjU4NzVlMjcyOWRlODNhNGU0NjM5MWY4Zjk3OWVjOGJkMDM4MTBjMTAiLCBudWxsKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgR1JPT1ZZID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiZ3Jvb3Z5IiwgIm9yZy9jb2RlaGF1cy9ncm9vdnkiLCAiZ3Jvb3Z5LWFsbCIsICIxLjguOCIsDQotICAgICAgICAgICAgICAgIDYxNDMwMDAsIDIyOTAwMDAsIDQ2MDgwMDAsDQotICAgICAgICAgICAgICAgICI5OGE0ODkzNDNkM2MzMGRhODE3ZDM2Y2JlYTVkZTExZWQwN2JlZjMxIiwNCi0JCQkJIjVmODQ3ZWQxODAwOWY4YTAzNGJhZDM5MDZlMzlmNzcxYzAxNzI4YzEiLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IExVQ0VORSA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgImx1Y2VuZSIsICJvcmcvYXBhY2hlL2x1Y2VuZSIsICJsdWNlbmUtY29yZSIsICIzLjYuMSIsDQotICAgICAgICAgICAgICAgIDE1NDAwMDAsIDE0MzEwMDAsIDM2MDgwMDAsDQotICAgICAgICAgICAgICAgICI2YWUyYzgzYzc3YTFmZmE1ODQwYjkxNTFhMjcxYWIzZjQ1MWY2ZTBjIiwNCi0JCQkJIjY5MjVkZWI2Yjc4ZTYzYmJjYWMzODIwMDRmMDBiOTgxMzMzMjcwNTciLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IExVQ0VORV9ISUdITElHSFRFUiA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgImx1Y2VuZSBoaWdobGlnaHRlciIsICJvcmcvYXBhY2hlL2x1Y2VuZSIsICJsdWNlbmUtaGlnaGxpZ2h0ZXIiLCAiMy42LjEiLA0KLSAgICAgICAgICAgICAgICA4OTIwMCwgODUwMDAsIDAsDQotICAgICAgICAgICAgICAgICIyYmQ0OTY5NWU5ODkxNjk3YzVmMjkwYWE5NGMzNDEyZGZiOTViMDk2IiwNCi0JCQkJIjIwYWU4MTgxNmNlOWMyNzE4NmVmMGYyZTkyYTU3ODEyYzllZTNiNmMiLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IExVQ0VORV9NRU1PUlkgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJsdWNlbmUgbWVtb3J5IiwgIm9yZy9hcGFjaGUvbHVjZW5lIiwgImx1Y2VuZS1tZW1vcnkiLCAiMy42LjEiLA0KLSAgICAgICAgICAgICAgICAzMDAwMCwgMjMwMDAsIDAsDQotICAgICAgICAgICAgICAgICI4YzdjYTU1NzJlZGVhNTA5NzNkYzBkMjZjZjc1YzI3MDQ3ZWViZTdlIiwNCi0JCQkJIjJlMjkxZTk2ZDI1MTMyZTAwMmIxYzgyNDBlMzYxZDEyNzJkMTEzZTEiLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IExVQ0VORV9RVUVSSUVTID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAibHVjZW5lIHF1ZXJpZXMiLCAib3JnL2FwYWNoZS9sdWNlbmUiLCAibHVjZW5lLXF1ZXJpZXMiLCAiMy42LjEiLA0KLSAgICAgICAgICAgICAgICA0NzQwMCwgNDg2MDAsIDAsDQotICAgICAgICAgICAgICAgICI0ZWQ2MDIyZGQ0YWE4MGI5MzJhMTU0NmU3ZTM5ZTNiOGJiZTdhY2I3IiwNCi0JCQkJImRjNDI1Yzc1ZDk4OGU0OTc1ZDMxNDc3MjAzNWE0NmI2YTE3ZGNjOGQiLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IEpBS0FSVEFfUkVHRVhQID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiamFrYXJ0YSByZWdleHAiLCAiamFrYXJ0YS1yZWdleHAiLCAiamFrYXJ0YS1yZWdleHAiLCAiMS40IiwNCi0gICAgICAgICAgICAgICAgMjg1MDAsIDAsIDAsDQotICAgICAgICAgICAgICAgICIwZWE1MTRhMTc5YWMxZGQ3ZTgxYzdlNjU5NDQ2OGI5Yjk5MTBkMjk4IiwNCi0JCQkJbnVsbCwgIiIpOw0KLQkJDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFVOQk9VTkRfSUQgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJ1bmJvdW5kIGlkIiwgImNvbS91bmJvdW5kaWQiLCAidW5ib3VuZGlkLWxkYXBzZGsiLCAiMi4zLjAiLA0KLSAgICAgICAgICAgICAgICAxMzgzNDE3LCAxNDM5NzIxLCAwLA0KLSAgICAgICAgICAgICAgICAiNmZkZThkOWZiNGVlM2U3ZTNkN2U3NjRlM2VhNTcxOTU5NzFlMmViMiIsDQotCQkJCSI1Mjc2ZDNkMjk2MzA2OTNkYmE5OWFiOWY3ZWE1NGY0YzQ3MWQzYWYxIiwNCi0gICAgICAgICAgICAgICAgIiIpOw0KLQkJDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IElWWSA9IG5ldyBNYXZlbk9iamVjdCgNCi0gICAgICAgICAgICAgICAgIml2eSIsICJvcmcvYXBhY2hlL2l2eSIsICJpdnkiLAkiMi4yLjAiLA0KLSAgICAgICAgICAgICAgICA5NDgwMDAsIDc0NDAwMCwgMCwNCi0gICAgICAgICAgICAgICAgImY5ZDFlODNlODJmYzA4NTA5MzUxMGY3ZDJlNzdkODFkNTJiYzIwODEiLA0KLQkJCQkiMDMxMjUyNzk1MGFkMGU4ZmJhYjM3MjI4ZmJlZDNiZjQxYTZmZTBhMSIsICIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgSkNBTEVOREFSID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAiamNhbGVuZGFyIiwgImNvbS90b2VkdGVyIiwgImpjYWxlbmRhciIsICIxLjMuMiIsDQotICAgICAgICAgICAgICAgIDEyNzAwMCwgMCwgMCwNCi0gICAgICAgICAgICAgICAgIjMyM2E2NzJhZWFjYjVmNWY0NDYxYmUzYjdmN2Q5ZDNlNGJkYTgwZDQiLA0KLQkJCQludWxsLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IENPTU1PTlNfQ09NUFJFU1MgPSBuZXcgTWF2ZW5PYmplY3QoDQotICAgICAgICAgICAgICAgICJjb21tb25zLWNvbXByZXNzIiwgIm9yZy9hcGFjaGUvY29tbW9ucyIsICJjb21tb25zLWNvbXByZXNzIiwgIjEuNC4xIiwNCi0gICAgICAgICAgICAgICAgMjQyMDAwLCAyNjUwMDAsIDAsDQotICAgICAgICAgICAgICAgICJiMDJlODRhOTkzZDg4NTY4NDE3NTM2MjQwZTk3MGM0YjgwOTEyNmZkIiwNCi0JCQkJIjI3N2QzOTI2NzQwMzk2NWE3YTE5MjQ3NDc5NGEyOWJhYzY3NjBhMjUiLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFhaID0gbmV3IE1hdmVuT2JqZWN0KA0KLSAgICAgICAgICAgICAgICAieHoiLCAib3JnL3R1a2FhbmkiLCAieHoiLCAiMS4wIiwNCi0gICAgICAgICAgICAgICAgOTUwMDAsIDEyMDAwMCwgMCwNCi0gICAgICAgICAgICAgICAgImVjZmY1Y2I4YjExODk1MTRjOWQxZDhkNjhlYjc3YWMzNzJlMDAwYzkiLA0KLQkJCQkiZjk1ZTMyYTVkMmRkOGRhNjQzYzQ0MTk4MTQ0MTViOTcwNDMxMjk5MyIsICIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgU0VMX0pBVkEgPSBuZXcgTWF2ZW5PYmplY3QoDQotCQkJCSJzZWxlbml1bS1qYXZhIiwgIm9yZy9zZWxlbml1bWhxL3NlbGVuaXVtIiwgInNlbGVuaXVtLWphdmEiLA0KLQkJCQkiMi4yOC4wIiwgOTg0MDk4LCAwLCAwLA0KLQkJCQkiNzYwNjI4Njk4OWFjOWNiOTQyY2MyMDZkOTc1ZmZlMTg3YzE4ZDYwNSIsICI0ZWRlMDhkMjkzZGMxNTM5ODlhMzM3Y2QwZDMxZDI2NDIxNDMzYWY1IiwgIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBTRUxfQVBJID0gbmV3IE1hdmVuT2JqZWN0KA0KLQkJCQkic2VsZW5pdW0tYXBpIiwgIm9yZy9zZWxlbml1bWhxL3NlbGVuaXVtIiwgInNlbGVuaXVtLWFwaSIsDQotCQkJCSIyLjI4LjAiLCA5ODQwOTgsIDAsIDAsDQotCQkJCSJjNDA0NGM0MGZmZjY1Y2QyNTEzNWE1ZjQ0MzYzOGEyYjFjY2FlYWM1IiwgIjM1ZmM2ZWMwODA0YWUzMmIxNmE1NjYyN2U2OWJkY2I2OTk5NWM1MTUiLCAiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFNFTF9SRU1PVEUgPSBuZXcgTWF2ZW5PYmplY3QoDQotCQkJCSJzZWxlbml1bS1yZW1vdGUtZHJpdmVyIiwgIm9yZy9zZWxlbml1bWhxL3NlbGVuaXVtIiwNCi0JCQkJInNlbGVuaXVtLXJlbW90ZS1kcml2ZXIiLCAiMi4yOC4wIiwgOTg0MDk4LCAwLCAwLA0KLQkJCQkiYzY3Zjk3Y2Q5NGUwMmFmZWM5MmIwYWM4ODE4NDRmZWJiNGZjOTBiZSIsICI1MWE5YzMwZGUzYzhjMjAzY2I3YTQ3NGExMDg0MjQ0MzAwNWE1ZmI0IiwgIiIpOw0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBTRUxfU1VQUE9SVCA9IG5ldyBNYXZlbk9iamVjdCgNCi0JCQkJInNlbGVuaXVtLXN1cHBvcnQiLCAib3JnL3NlbGVuaXVtaHEvc2VsZW5pdW0iLA0KLQkJCQkic2VsZW5pdW0tc3VwcG9ydCIsICIyLjI4LjAiLCA5ODQwOTgsIDAsIDAsDQotCQkJCSJjYWY2OGQ2MzEwNDI1ZjU4M2JjNTkyYzA4ZTQzMDY2YjM1ZWI5NGY2IiwgImNlMzgzMWE2MDFmNWY1MGZkYTJmNDYwNGRlY2RlNDA5YjZjNzM1YTciLCAiIik7DQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IFNFTF9GRiA9IG5ldyBNYXZlbk9iamVjdCgNCi0JCQkJInNlbGVuaXVtLWZpcmVmb3gtZHJpdmVyIiwgIm9yZy9zZWxlbml1bWhxL3NlbGVuaXVtIiwNCi0JCQkJInNlbGVuaXVtLWZpcmVmb3gtZHJpdmVyIiwgIjIuMjguMCIsIDk4NDA5OCwgMCwgMCwNCi0JCQkJImE3YzM0ZTQ1ZGJhMzllNjU0NjdiOTAwYWE2NzYxMWFhYTAzOTY5MmQiLCAiYWE4Y2Q1ZmI0OWNhNzVhNTNkNWIxNDM0MDZlYTNkODFhYjNlZGRmZCIsICIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgR1VBVkEgPSBuZXcgTWF2ZW5PYmplY3QoImd1YXZhIiwNCi0JCQkJImNvbS9nb29nbGUvZ3VhdmEiLCAiZ3VhdmEiLCAiMTIuMCIsIDk4NDA5OCwgMCwgMCwNCi0JCQkJIjViYzY2ZGQ5NWI3OWRiMWU0MzdlYjA4YWRiYTEyNGEzZTQwODhkYzAiLCAiZjhiOThlNjE4NjViZWQzYzM5Yjk3OGVlM2JmNWM3ZmI5OTBjNDAzMiIsICIiKTsNCi0NCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgSlNPTiA9IG5ldyBNYXZlbk9iamVjdCgianNvbiIsDQotCQkJCSJvcmcvanNvbiIsICJqc29uIiwgIjIwMDgwNzAxIiwgOTg0MDk4LCAwLCAwLA0KLQkJCQkiZDY1MmYxMDIxODU1MzBjOTNiNjYxNThiMTg1OWYzNWQ0NTY4NzI1OCIsICI3MWJkNTQyMjFlNzAxZGY5ZDExMmJmOWJhMjkxOGUxM2IwNjcxZjNhIiwgIiIpOw0KLQ0KLQkJcHVibGljIHN0YXRpYyBmaW5hbCBNYXZlbk9iamVjdCBDT01NT05TX0VYRUMgPSBuZXcgTWF2ZW5PYmplY3QoDQotCQkJCSJjb21tb25zLWV4ZWMiLCAib3JnL2FwYWNoZS9jb21tb25zIiwgImNvbW1vbnMtZXhlYyIsICIxLjEiLA0KLQkJCQk5ODQwOTgsIDAsIDAsICIwN2RmZGYxNmZhZGU3MjYwMDA1NjQzODY4MjVlZDZkOTExYTQ0YmExIiwgImY2MGJlYTg5OGUxOGIzMDgwOTk4NjJlODYzNGQ1ODliMDZhOGIwYmUiLA0KLQkJCQkiIik7DQotDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IEhUVFBDT1JFID0gbmV3IE1hdmVuT2JqZWN0KCJodHRwY29yZSIsDQotCQkJCSJvcmcvYXBhY2hlL2h0dHBjb21wb25lbnRzIiwgImh0dHBjb3JlIiwgIjQuMi4xIiwgOTg0MDk4LCAwLCAwLA0KLQkJCQkiMmQ1MDMyNzJiZjBhOGI1ZjkyZDY0ZGI3OGI0YmE5YWJiYWNjYzZmZCIsICIzZjZjYWY1MzM0ZmE4MzYwN2I4MmUyZjMyZGQxMjhhOWQ4YTBlYTVlIiwgIiIpOw0KLQkJDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IEhUVFBNSU1FID0gbmV3IE1hdmVuT2JqZWN0KCJodHRwbWltZSIsDQotCQkJCSJvcmcvYXBhY2hlL2h0dHBjb21wb25lbnRzIiwgImh0dHBtaW1lIiwgIjQuMi4xIiwgOTg0MDk4LCAwLCAwLA0KLQkJCQkiN2M3NzJiYWNlOWFhMzFhNzI4YzM5YTg4YzZmZjY2YTdjZDE3N2U4OSIsICIiLCAiNGU0NTM4NDNhZTQ3ZjFjMmQ3MGUyZWIyYzEzYzAzN2RlNGI2MTRjNCIpOw0KLQkJDQotCQlwdWJsaWMgc3RhdGljIGZpbmFsIE1hdmVuT2JqZWN0IEhUVFBDTElFTlQgPSBuZXcgTWF2ZW5PYmplY3QoDQotCQkJCSJodHRwY2xpZW50IiwgIm9yZy9hcGFjaGUvaHR0cGNvbXBvbmVudHMiLCAiaHR0cGNsaWVudCIsDQotCQkJCSI0LjIuMSIsIDk4NDA5OCwgMCwgMCwNCi0JCQkJImI2OWJkMDNhZjYwYmY0ODdiM2FlMTIwOWE2NDRlY2FjNTg3YmY2ZmMiLCAiNmIyNzMxMmI5YzI4YjU5YWFlYjZjMjFmMzQ5MDA0NTY5MGM3MDNkMyIsICIiKTsNCi0JCXB1YmxpYyBzdGF0aWMgZmluYWwgTWF2ZW5PYmplY3QgQ09NTU9OU19MT0dHSU5HID0gbmV3IE1hdmVuT2JqZWN0KA0KLQkJCQkiY29tbW9ucy1sb2dnaW5nIiwgImNvbW1vbnMtbG9nZ2luZyIsICJjb21tb25zLWxvZ2dpbmciLA0KLQkJCQkiMS4xLjEiLCA5ODQwOTgsIDAsIDAsDQotCQkJCSI1MDQzYmZlYmMzZGIwNzJlZDgwZmJkMzYyZTdjYWYwMGU4ODVkOGFlIiwgImYzZjE1NmNiZmYwZTBmYjBkNjRiZmNlMzFhMzUyY2NlNGEzM2JjMTkiLCAiIik7DQotCQkNCi0JCXB1YmxpYyBmaW5hbCBTdHJpbmcgbmFtZTsNCi0JCXB1YmxpYyBmaW5hbCBTdHJpbmcgZ3JvdXA7DQotCQlwdWJsaWMgZmluYWwgU3RyaW5nIGFydGlmYWN0Ow0KLQkJcHVibGljIGZpbmFsIFN0cmluZyB2ZXJzaW9uOw0KLQkJcHVibGljIGZpbmFsIGludCBhcHByb3hMaWJyYXJ5TGVuOw0KLQkJcHVibGljIGZpbmFsIGludCBhcHByb3hTb3VyY2VzTGVuOw0KLQkJcHVibGljIGZpbmFsIGludCBhcHByb3hKYXZhZG9jTGVuOw0KLQkJcHVibGljIGZpbmFsIFN0cmluZyBsaWJyYXJ5U0hBMTsNCi0JCXB1YmxpYyBmaW5hbCBTdHJpbmcgc291cmNlc1NIQTE7DQotCQlwdWJsaWMgZmluYWwgU3RyaW5nIGphdmFkb2NTSEExOw0KLQ0KLQkJcHJpdmF0ZSBNYXZlbk9iamVjdChTdHJpbmcgbmFtZSwgU3RyaW5nIGdyb3VwLCBTdHJpbmcgYXJ0aWZhY3QsIFN0cmluZyB2ZXJzaW9uLA0KLQkJCQlpbnQgYXBwcm94TGlicmFyeUxlbiwgaW50IGFwcHJveFNvdXJjZXNMZW4sIGludCBhcHByb3hKYXZhZG9jTGVuLA0KLQkJCQlTdHJpbmcgbGlicmFyeVNIQTEsIFN0cmluZyBzb3VyY2VzU0hBMSwgU3RyaW5nIGphdmFkb2NTSEExKSB7DQotCQkJdGhpcy5uYW1lID0gbmFtZTsNCi0JCQl0aGlzLmdyb3VwID0gZ3JvdXA7DQotCQkJdGhpcy5hcnRpZmFjdCA9IGFydGlmYWN0Ow0KLQkJCXRoaXMudmVyc2lvbiA9IHZlcnNpb247DQotCQkJdGhpcy5hcHByb3hMaWJyYXJ5TGVuID0gYXBwcm94TGlicmFyeUxlbjsNCi0JCQl0aGlzLmFwcHJveFNvdXJjZXNMZW4gPSBhcHByb3hTb3VyY2VzTGVuOw0KLQkJCXRoaXMuYXBwcm94SmF2YWRvY0xlbiA9IGFwcHJveEphdmFkb2NMZW47DQotCQkJdGhpcy5saWJyYXJ5U0hBMSA9IGxpYnJhcnlTSEExOw0KLQkJCXRoaXMuc291cmNlc1NIQTEgPSBzb3VyY2VzU0hBMTsNCi0JCQl0aGlzLmphdmFkb2NTSEExID0gamF2YWRvY1NIQTE7DQotCQl9DQotDQotCQlwcml2YXRlIFN0cmluZyBnZXRSZXBvc2l0b3J5UGF0aChTdHJpbmcgamFyKSB7DQotCQkJcmV0dXJuIGdyb3VwICsgIi8iICsgYXJ0aWZhY3QgKyAiLyIgKyB2ZXJzaW9uICsgIi8iICsgYXJ0aWZhY3QgKyAiLSIgKyB2ZXJzaW9uICsgamFyDQotCQkJCQkrICIuamFyIjsNCi0JCX0NCi0NCi0JCXByaXZhdGUgRmlsZSBnZXRMb2NhbEZpbGUoU3RyaW5nIGJhc2VQYXRoLCBTdHJpbmcgamFyKSB7DQotCQkJcmV0dXJuIG5ldyBGaWxlKGJhc2VQYXRoLCBhcnRpZmFjdCArICItIiArIHZlcnNpb24gKyBqYXIgKyAiLmphciIpOw0KLQkJfQ0KLQ0KLQkJcHJpdmF0ZSBTdHJpbmcgZ2V0U0hBMShTdHJpbmcgamFyKSB7DQotCQkJaWYgKGphci5lcXVhbHMoIiIpKSB7DQotCQkJCXJldHVybiBsaWJyYXJ5U0hBMTsNCi0JCQl9IGVsc2UgaWYgKGphci5lcXVhbHMoIi1zb3VyY2VzIikpIHsNCi0JCQkJcmV0dXJuIHNvdXJjZXNTSEExOw0KLQkJCX0gZWxzZSBpZiAoamFyLmVxdWFscygiLWphdmFkb2MiKSkgew0KLQkJCQlyZXR1cm4gamF2YWRvY1NIQTE7DQotCQkJfQ0KLQkJCXJldHVybiBsaWJyYXJ5U0hBMTsNCi0JCX0NCi0NCi0JCXByaXZhdGUgaW50IGdldEFwcHJveGltYXRlTGVuZ3RoKFN0cmluZyBqYXIpIHsNCi0JCQlpZiAoamFyLmVxdWFscygiIikpIHsNCi0JCQkJcmV0dXJuIGFwcHJveExpYnJhcnlMZW47DQotCQkJfSBlbHNlIGlmIChqYXIuZXF1YWxzKCItc291cmNlcyIpKSB7DQotCQkJCXJldHVybiBhcHByb3hTb3VyY2VzTGVuOw0KLQkJCX0gZWxzZSBpZiAoamFyLmVxdWFscygiLWphdmFkb2MiKSkgew0KLQkJCQlyZXR1cm4gYXBwcm94SmF2YWRvY0xlbjsNCi0JCQl9DQotCQkJcmV0dXJuIGFwcHJveExpYnJhcnlMZW47DQotCQl9DQotDQotCQlAT3ZlcnJpZGUNCi0JCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7DQotCQkJcmV0dXJuIG5hbWU7DQotCQl9DQotCX0NCi19DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2J1aWxkL0J1aWxkR2hQYWdlcy5qYXZhIGIvc3JjL2NvbS9naXRibGl0L2J1aWxkL0J1aWxkR2hQYWdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTgyYWMzLi4wMDAwMDAwCi0tLSBhL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZEdoUGFnZXMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vKg0KLSAqIENvcHlyaWdodCAyMDEyIGdpdGJsaXQuY29tLg0KLSAqDQotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KLSAqDQotICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KLSAqDQotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KLSAqLw0KLXBhY2thZ2UgY29tLmdpdGJsaXQuYnVpbGQ7DQotDQotaW1wb3J0IGphdmEuaW8uRmlsZTsNCi1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07DQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07DQotaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0Ow0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCi1pbXBvcnQgamF2YS51dGlsLlNldDsNCi1pbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7DQotDQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQuYXBpLmVycm9ycy5Db25jdXJyZW50UmVmVXBkYXRlRXhjZXB0aW9uOw0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmFwaS5lcnJvcnMuSkdpdEludGVybmFsRXhjZXB0aW9uOw0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmRpcmNhY2hlLkRpckNhY2hlOw0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmRpcmNhY2hlLkRpckNhY2hlQnVpbGRlcjsNCi1pbXBvcnQgb3JnLmVjbGlwc2UuamdpdC5kaXJjYWNoZS5EaXJDYWNoZUVudHJ5Ow0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmludGVybmFsLkpHaXRUZXh0Ow0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmxpYi5Db21taXRCdWlsZGVyOw0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmxpYi5Db25zdGFudHM7DQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQubGliLkZpbGVNb2RlOw0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmxpYi5PYmplY3RJZDsNCi1pbXBvcnQgb3JnLmVjbGlwc2UuamdpdC5saWIuT2JqZWN0SW5zZXJ0ZXI7DQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQubGliLlBlcnNvbklkZW50Ow0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LmxpYi5SZWZVcGRhdGU7DQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQubGliLlJlZlVwZGF0ZS5SZXN1bHQ7DQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQubGliLlJlcG9zaXRvcnk7DQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQubGliLlJlcG9zaXRvcnlDYWNoZS5GaWxlS2V5Ow0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LnJldndhbGsuUmV2Q29tbWl0Ow0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZ2l0LnJldndhbGsuUmV2V2FsazsNCi1pbXBvcnQgb3JnLmVjbGlwc2UuamdpdC5zdG9yYWdlLmZpbGUuRmlsZVJlcG9zaXRvcnk7DQotaW1wb3J0IG9yZy5lY2xpcHNlLmpnaXQudHJlZXdhbGsuQ2Fub25pY2FsVHJlZVBhcnNlcjsNCi1pbXBvcnQgb3JnLmVjbGlwc2UuamdpdC50cmVld2Fsay5UcmVlV2FsazsNCi1pbXBvcnQgb3JnLmVjbGlwc2UuamdpdC51dGlsLkZTOw0KLQ0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5KQ29tbWFuZGVyOw0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5QYXJhbWV0ZXI7DQotaW1wb3J0IGNvbS5iZXVzdC5qY29tbWFuZGVyLlBhcmFtZXRlckV4Y2VwdGlvbjsNCi1pbXBvcnQgY29tLmJldXN0Lmpjb21tYW5kZXIuUGFyYW1ldGVyczsNCi1pbXBvcnQgY29tLmdpdGJsaXQubW9kZWxzLlJlZk1vZGVsOw0KLWltcG9ydCBjb20uZ2l0YmxpdC51dGlscy5KR2l0VXRpbHM7DQotaW1wb3J0IGNvbS5naXRibGl0LnV0aWxzLlN0cmluZ1V0aWxzOw0KLQ0KLS8qKg0KLSAqIENyZWF0ZXMgb3IgdXBkYXRlcyBhIGdoLXBhZ2VzIGJyYW5jaCB3aXRoIHRoZSBzcGVjaWZpZWQgY29udGVudC4NCi0gKiANCi0gKiBAYXV0aG9yIEphbWVzIE1vZ2VyDQotICogDQotICovDQotcHVibGljIGNsYXNzIEJ1aWxkR2hQYWdlcyB7DQotDQotCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCi0JCVBhcmFtcyBwYXJhbXMgPSBuZXcgUGFyYW1zKCk7DQotCQlKQ29tbWFuZGVyIGpjID0gbmV3IEpDb21tYW5kZXIocGFyYW1zKTsNCi0JCXRyeSB7DQotCQkJamMucGFyc2UoYXJncyk7DQotCQl9IGNhdGNoIChQYXJhbWV0ZXJFeGNlcHRpb24gdCkgew0KLQkJCVN5c3RlbS5lcnIucHJpbnRsbih0LmdldE1lc3NhZ2UoKSk7DQotCQkJamMudXNhZ2UoKTsNCi0JCX0NCi0NCi0JCUZpbGUgc291cmNlID0gbmV3IEZpbGUocGFyYW1zLnNvdXJjZUZvbGRlcik7DQotCQlTdHJpbmcgZ2hwYWdlcyA9ICJyZWZzL2hlYWRzL2doLXBhZ2VzIjsNCi0JCXRyeSB7CQkJDQotCQkJRmlsZSBnaXREaXIgPSBGaWxlS2V5LnJlc29sdmUobmV3IEZpbGUocGFyYW1zLnJlcG9zaXRvcnlGb2xkZXIpLCBGUy5ERVRFQ1RFRCk7DQotCQkJUmVwb3NpdG9yeSByZXBvc2l0b3J5ID0gbmV3IEZpbGVSZXBvc2l0b3J5KGdpdERpcik7DQotDQotCQkJUmVmTW9kZWwgaXNzdWVzQnJhbmNoID0gSkdpdFV0aWxzLmdldFBhZ2VzQnJhbmNoKHJlcG9zaXRvcnkpOw0KLQkJCWlmIChpc3N1ZXNCcmFuY2ggPT0gbnVsbCkgew0KLQkJCQlKR2l0VXRpbHMuY3JlYXRlT3JwaGFuQnJhbmNoKHJlcG9zaXRvcnksICJnaC1wYWdlcyIsIG51bGwpOw0KLQkJCX0NCi0NCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlVwZGF0aW5nIGdoLXBhZ2VzIGJyYW5jaC4uLiIpOw0KLQkJCU9iamVjdElkIGhlYWRJZCA9IHJlcG9zaXRvcnkucmVzb2x2ZShnaHBhZ2VzICsgIl57Y29tbWl0fSIpOw0KLQkJCU9iamVjdEluc2VydGVyIG9kaSA9IHJlcG9zaXRvcnkubmV3T2JqZWN0SW5zZXJ0ZXIoKTsNCi0JCQl0cnkgew0KLQkJCQkvLyBDcmVhdGUgdGhlIGluLW1lbW9yeSBpbmRleCBvZiB0aGUgbmV3L3VwZGF0ZWQgaXNzdWUuDQotCQkJCURpckNhY2hlIGluZGV4ID0gY3JlYXRlSW5kZXgocmVwb3NpdG9yeSwgaGVhZElkLCBzb3VyY2UsIHBhcmFtcy5vYmxpdGVyYXRlKTsNCi0JCQkJT2JqZWN0SWQgaW5kZXhUcmVlSWQgPSBpbmRleC53cml0ZVRyZWUob2RpKTsNCi0NCi0JCQkJLy8gQ3JlYXRlIGEgY29tbWl0IG9iamVjdA0KLQkJCQlQZXJzb25JZGVudCBhdXRob3IgPSBuZXcgUGVyc29uSWRlbnQoIkdpdGJsaXQiLCAiZ2l0YmxpdEBsb2NhbGhvc3QiKTsNCi0JCQkJQ29tbWl0QnVpbGRlciBjb21taXQgPSBuZXcgQ29tbWl0QnVpbGRlcigpOw0KLQkJCQljb21taXQuc2V0QXV0aG9yKGF1dGhvcik7DQotCQkJCWNvbW1pdC5zZXRDb21taXR0ZXIoYXV0aG9yKTsNCi0JCQkJY29tbWl0LnNldEVuY29kaW5nKENvbnN0YW50cy5DSEFSQUNURVJfRU5DT0RJTkcpOw0KLQkJCQljb21taXQuc2V0TWVzc2FnZSgidXBkYXRlZCBwYWdlcyIpOw0KLQkJCQljb21taXQuc2V0UGFyZW50SWQoaGVhZElkKTsNCi0JCQkJY29tbWl0LnNldFRyZWVJZChpbmRleFRyZWVJZCk7DQotDQotCQkJCS8vIEluc2VydCB0aGUgY29tbWl0IGludG8gdGhlIHJlcG9zaXRvcnkNCi0JCQkJT2JqZWN0SWQgY29tbWl0SWQgPSBvZGkuaW5zZXJ0KGNvbW1pdCk7DQotCQkJCW9kaS5mbHVzaCgpOw0KLQ0KLQkJCQlSZXZXYWxrIHJldldhbGsgPSBuZXcgUmV2V2FsayhyZXBvc2l0b3J5KTsNCi0JCQkJdHJ5IHsNCi0JCQkJCVJldkNvbW1pdCByZXZDb21taXQgPSByZXZXYWxrLnBhcnNlQ29tbWl0KGNvbW1pdElkKTsNCi0JCQkJCVJlZlVwZGF0ZSBydSA9IHJlcG9zaXRvcnkudXBkYXRlUmVmKGdocGFnZXMpOw0KLQkJCQkJcnUuc2V0TmV3T2JqZWN0SWQoY29tbWl0SWQpOw0KLQkJCQkJcnUuc2V0RXhwZWN0ZWRPbGRPYmplY3RJZChoZWFkSWQpOw0KLQkJCQkJcnUuc2V0UmVmTG9nTWVzc2FnZSgiY29tbWl0OiAiICsgcmV2Q29tbWl0LmdldFNob3J0TWVzc2FnZSgpLCBmYWxzZSk7DQotCQkJCQlSZXN1bHQgcmMgPSBydS5mb3JjZVVwZGF0ZSgpOw0KLQkJCQkJc3dpdGNoIChyYykgew0KLQkJCQkJY2FzZSBORVc6DQotCQkJCQljYXNlIEZPUkNFRDoNCi0JCQkJCWNhc2UgRkFTVF9GT1JXQVJEOg0KLQkJCQkJCWJyZWFrOw0KLQkJCQkJY2FzZSBSRUpFQ1RFRDoNCi0JCQkJCWNhc2UgTE9DS19GQUlMVVJFOg0KLQkJCQkJCXRocm93IG5ldyBDb25jdXJyZW50UmVmVXBkYXRlRXhjZXB0aW9uKEpHaXRUZXh0LmdldCgpLmNvdWxkTm90TG9ja0hFQUQsDQotCQkJCQkJCQlydS5nZXRSZWYoKSwgcmMpOw0KLQkJCQkJZGVmYXVsdDoNCi0JCQkJCQl0aHJvdyBuZXcgSkdpdEludGVybmFsRXhjZXB0aW9uKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KA0KLQkJCQkJCQkJSkdpdFRleHQuZ2V0KCkudXBkYXRpbmdSZWZGYWlsZWQsIGdocGFnZXMsIGNvbW1pdElkLnRvU3RyaW5nKCksIHJjKSk7DQotCQkJCQl9DQotCQkJCX0gZmluYWxseSB7DQotCQkJCQlyZXZXYWxrLnJlbGVhc2UoKTsNCi0JCQkJfQ0KLQkJCX0gZmluYWxseSB7DQotCQkJCW9kaS5yZWxlYXNlKCk7DQotCQkJfQ0KLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiZ2gtcGFnZXMgdXBkYXRlZC4iKTsNCi0JCX0gY2F0Y2ggKFRocm93YWJsZSB0KSB7DQotCQkJdC5wcmludFN0YWNrVHJhY2UoKTsNCi0JCX0NCi0JfQ0KLQ0KLQkvKioNCi0JICogQ3JlYXRlcyBhbiBpbi1tZW1vcnkgaW5kZXggb2YgdGhlIGlzc3VlIGNoYW5nZS4NCi0JICogDQotCSAqIEBwYXJhbSByZXBvDQotCSAqIEBwYXJhbSBoZWFkSWQNCi0JICogQHBhcmFtIHNvdXJjZUZvbGRlcg0KLQkgKiBAcGFyYW0gb2JsaXRlcmF0ZQ0KLQkgKiAgICAgICAgICAgIGlmIHRydWUgdGhlIHNvdXJjZSBmb2xkZXIgdHJlZSBpcyB1c2VkIGFzIHRoZSBuZXcgdHJlZSBmb3INCi0JICogICAgICAgICAgICBnaC1wYWdlcyBhbmQgbm9uLWV4aXN0ZW50IGZpbGVzIGFyZSBjb25zaWRlcmVkIGRlbGV0ZWQNCi0JICogQHJldHVybiBhbiBpbi1tZW1vcnkgaW5kZXgNCi0JICogQHRocm93cyBJT0V4Y2VwdGlvbg0KLQkgKi8NCi0JcHJpdmF0ZSBzdGF0aWMgRGlyQ2FjaGUgY3JlYXRlSW5kZXgoUmVwb3NpdG9yeSByZXBvLCBPYmplY3RJZCBoZWFkSWQsIEZpbGUgc291cmNlRm9sZGVyLA0KLQkJCWJvb2xlYW4gb2JsaXRlcmF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCi0NCi0JCURpckNhY2hlIGluQ29yZUluZGV4ID0gRGlyQ2FjaGUubmV3SW5Db3JlKCk7DQotCQlEaXJDYWNoZUJ1aWxkZXIgZGNCdWlsZGVyID0gaW5Db3JlSW5kZXguYnVpbGRlcigpOw0KLQkJT2JqZWN0SW5zZXJ0ZXIgaW5zZXJ0ZXIgPSByZXBvLm5ld09iamVjdEluc2VydGVyKCk7DQotDQotCQl0cnkgew0KLQkJCS8vIEFkZCBhbGwgZmlsZXMgdG8gdGhlIHRlbXBvcmFyeSBpbmRleA0KLQkJCVNldDxTdHJpbmc+IGlnbm9yZVBhdGhzID0gbmV3IFRyZWVTZXQ8U3RyaW5nPigpOw0KLQkJCUxpc3Q8RmlsZT4gZmlsZXMgPSBsaXN0RmlsZXMoc291cmNlRm9sZGVyKTsNCi0JCQlmb3IgKEZpbGUgZmlsZSA6IGZpbGVzKSB7DQotCQkJCS8vIGNyZWF0ZSBhbiBpbmRleCBlbnRyeSBmb3IgdGhlIGZpbGUNCi0JCQkJZmluYWwgRGlyQ2FjaGVFbnRyeSBkY0VudHJ5ID0gbmV3IERpckNhY2hlRW50cnkoU3RyaW5nVXRpbHMuZ2V0UmVsYXRpdmVQYXRoKA0KLQkJCQkJCXNvdXJjZUZvbGRlci5nZXRQYXRoKCksIGZpbGUuZ2V0UGF0aCgpKSk7DQotCQkJCWRjRW50cnkuc2V0TGVuZ3RoKGZpbGUubGVuZ3RoKCkpOw0KLQkJCQlkY0VudHJ5LnNldExhc3RNb2RpZmllZChmaWxlLmxhc3RNb2RpZmllZCgpKTsNCi0JCQkJZGNFbnRyeS5zZXRGaWxlTW9kZShGaWxlTW9kZS5SRUdVTEFSX0ZJTEUpOw0KLQ0KLQkJCQkvLyBhZGQgdGhpcyBlbnRyeSB0byB0aGUgaWdub3JlIHBhdGhzIHNldA0KLQkJCQlpZ25vcmVQYXRocy5hZGQoZGNFbnRyeS5nZXRQYXRoU3RyaW5nKCkpOw0KLQ0KLQkJCQkvLyBpbnNlcnQgb2JqZWN0DQotCQkJCUlucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsNCi0JCQkJdHJ5IHsNCi0JCQkJCWRjRW50cnkuc2V0T2JqZWN0SWQoaW5zZXJ0ZXIuaW5zZXJ0KENvbnN0YW50cy5PQkpfQkxPQiwgZmlsZS5sZW5ndGgoKSwNCi0JCQkJCQkJaW5wdXRTdHJlYW0pKTsNCi0JCQkJfSBmaW5hbGx5IHsNCi0JCQkJCWlucHV0U3RyZWFtLmNsb3NlKCk7DQotCQkJCX0NCi0NCi0JCQkJLy8gYWRkIHRvIHRlbXBvcmFyeSBpbi1jb3JlIGluZGV4DQotCQkJCWRjQnVpbGRlci5hZGQoZGNFbnRyeSk7DQotCQkJfQ0KLQ0KLQkJCWlmICghb2JsaXRlcmF0ZSkgew0KLQkJCQkvLyBUcmF2ZXJzZSBIRUFEIHRvIGFkZCBhbGwgb3RoZXIgcGF0aHMNCi0JCQkJVHJlZVdhbGsgdHJlZVdhbGsgPSBuZXcgVHJlZVdhbGsocmVwbyk7DQotCQkJCWludCBoSWR4ID0gLTE7DQotCQkJCWlmIChoZWFkSWQgIT0gbnVsbCkNCi0JCQkJCWhJZHggPSB0cmVlV2Fsay5hZGRUcmVlKG5ldyBSZXZXYWxrKHJlcG8pLnBhcnNlVHJlZShoZWFkSWQpKTsNCi0JCQkJdHJlZVdhbGsuc2V0UmVjdXJzaXZlKHRydWUpOw0KLQ0KLQkJCQl3aGlsZSAodHJlZVdhbGsubmV4dCgpKSB7DQotCQkJCQlTdHJpbmcgcGF0aCA9IHRyZWVXYWxrLmdldFBhdGhTdHJpbmcoKTsNCi0JCQkJCUNhbm9uaWNhbFRyZWVQYXJzZXIgaFRyZWUgPSBudWxsOw0KLQkJCQkJaWYgKGhJZHggIT0gLTEpDQotCQkJCQkJaFRyZWUgPSB0cmVlV2Fsay5nZXRUcmVlKGhJZHgsIENhbm9uaWNhbFRyZWVQYXJzZXIuY2xhc3MpOw0KLQkJCQkJaWYgKCFpZ25vcmVQYXRocy5jb250YWlucyhwYXRoKSkgew0KLQkJCQkJCS8vIGFkZCBlbnRyaWVzIGZyb20gSEVBRCBmb3IgYWxsIG90aGVyIHBhdGhzDQotCQkJCQkJaWYgKGhUcmVlICE9IG51bGwpIHsNCi0JCQkJCQkJLy8gY3JlYXRlIGEgbmV3IERpckNhY2hlRW50cnkgd2l0aCBkYXRhIHJldHJpZXZlZA0KLQkJCQkJCQkvLyBmcm9tDQotCQkJCQkJCS8vIEhFQUQNCi0JCQkJCQkJZmluYWwgRGlyQ2FjaGVFbnRyeSBkY0VudHJ5ID0gbmV3IERpckNhY2hlRW50cnkocGF0aCk7DQotCQkJCQkJCWRjRW50cnkuc2V0T2JqZWN0SWQoaFRyZWUuZ2V0RW50cnlPYmplY3RJZCgpKTsNCi0JCQkJCQkJZGNFbnRyeS5zZXRGaWxlTW9kZShoVHJlZS5nZXRFbnRyeUZpbGVNb2RlKCkpOw0KLQ0KLQkJCQkJCQkvLyBhZGQgdG8gdGVtcG9yYXJ5IGluLWNvcmUgaW5kZXgNCi0JCQkJCQkJZGNCdWlsZGVyLmFkZChkY0VudHJ5KTsNCi0JCQkJCQl9DQotCQkJCQl9DQotCQkJCX0NCi0NCi0JCQkJLy8gcmVsZWFzZSB0aGUgdHJlZXdhbGsNCi0JCQkJdHJlZVdhbGsucmVsZWFzZSgpOw0KLQkJCX0NCi0JCQkNCi0JCQkvLyBmaW5pc2ggdGVtcG9yYXJ5IGluLWNvcmUgaW5kZXggdXNlZCBmb3IgdGhpcyBjb21taXQNCi0JCQlkY0J1aWxkZXIuZmluaXNoKCk7DQotCQl9IGZpbmFsbHkgew0KLQkJCWluc2VydGVyLnJlbGVhc2UoKTsNCi0JCX0NCi0JCXJldHVybiBpbkNvcmVJbmRleDsNCi0JfQ0KLQ0KLQlwcml2YXRlIHN0YXRpYyBMaXN0PEZpbGU+IGxpc3RGaWxlcyhGaWxlIGZvbGRlcikgew0KLQkJTGlzdDxGaWxlPiBmaWxlcyA9IG5ldyBBcnJheUxpc3Q8RmlsZT4oKTsNCi0JCWZvciAoRmlsZSBmaWxlIDogZm9sZGVyLmxpc3RGaWxlcygpKSB7DQotCQkJaWYgKGZpbGUuaXNEaXJlY3RvcnkoKSkgew0KLQkJCQlmaWxlcy5hZGRBbGwobGlzdEZpbGVzKGZpbGUpKTsNCi0JCQl9IGVsc2Ugew0KLQkJCQlmaWxlcy5hZGQoZmlsZSk7DQotCQkJfQ0KLQkJfQ0KLQkJcmV0dXJuIGZpbGVzOw0KLQl9DQotDQotCS8qKg0KLQkgKiBKQ29tbWFuZGVyIFBhcmFtZXRlcnMgY2xhc3MgZm9yIEJ1aWxkR2hQYWdlcy4NCi0JICovDQotCUBQYXJhbWV0ZXJzKHNlcGFyYXRvcnMgPSAiICIpDQotCXByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFtcyB7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1zb3VyY2VGb2xkZXIiIH0sIGRlc2NyaXB0aW9uID0gIlNvdXJjZSBmb2xkZXIgZm9yIHBhZ2VzIiwgcmVxdWlyZWQgPSB0cnVlKQ0KLQkJcHVibGljIFN0cmluZyBzb3VyY2VGb2xkZXI7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1yZXBvc2l0b3J5IiB9LCBkZXNjcmlwdGlvbiA9ICJSZXBvc2l0b3J5IGZvbGRlciIsIHJlcXVpcmVkID0gdHJ1ZSkNCi0JCXB1YmxpYyBTdHJpbmcgcmVwb3NpdG9yeUZvbGRlcjsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLW9ibGl0ZXJhdGUiIH0sIGRlc2NyaXB0aW9uID0gIlJlcGxhY2UgZ2gtcGFnZXMgdHJlZSB3aXRoIG9ubHkgdGhlIGNvbnRlbnQgaW4geW91ciBzb3VyY2Vmb2xkZXIiKQ0KLQkJcHVibGljIGJvb2xlYW4gb2JsaXRlcmF0ZTsNCi0NCi0JfQ0KLX0NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYnVpbGQvQnVpbGRTaXRlLmphdmEgYi9zcmMvY29tL2dpdGJsaXQvYnVpbGQvQnVpbGRTaXRlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZmY1YTMuLjAwMDAwMDAKLS0tIGEvc3JjL2NvbS9naXRibGl0L2J1aWxkL0J1aWxkU2l0ZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzg1ICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IDIwMTEgZ2l0YmxpdC5jb20uDQotICoNCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICoNCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQotICoNCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotICovDQotcGFja2FnZSBjb20uZ2l0YmxpdC5idWlsZDsNCi0NCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsNCi1pbXBvcnQgamF2YS5pby5GaWxlOw0KLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07DQotaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsNCi1pbXBvcnQgamF2YS5pby5GaWxlbmFtZUZpbHRlcjsNCi1pbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXI7DQotaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldDsNCi1pbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQotaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsNCi1pbXBvcnQgamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7DQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQotaW1wb3J0IGphdmEudXRpbC5EYXRlOw0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsNCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7DQotaW1wb3J0IGphdmEudXRpbC5NYXA7DQotaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7DQotDQotaW1wb3J0IGNvbS5iZXVzdC5qY29tbWFuZGVyLkpDb21tYW5kZXI7DQotaW1wb3J0IGNvbS5iZXVzdC5qY29tbWFuZGVyLlBhcmFtZXRlcjsNCi1pbXBvcnQgY29tLmJldXN0Lmpjb21tYW5kZXIuUGFyYW1ldGVyRXhjZXB0aW9uOw0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5QYXJhbWV0ZXJzOw0KLWltcG9ydCBjb20uZ2l0YmxpdC5Db25zdGFudHM7DQotaW1wb3J0IGNvbS5naXRibGl0LnV0aWxzLkZpbGVVdGlsczsNCi1pbXBvcnQgY29tLmdpdGJsaXQudXRpbHMuTWFya2Rvd25VdGlsczsNCi1pbXBvcnQgY29tLmdpdGJsaXQudXRpbHMuU3RyaW5nVXRpbHM7DQotDQotLyoqDQotICogQnVpbGRzIHRoZSB3ZWIgc2l0ZSBvciBkZXBsb3ltZW50IGRvY3VtZW50YXRpb24gZnJvbSBNYXJrZG93biBzb3VyY2UgZmlsZXMuDQotICogDQotICogQWxsIE1hcmtkb3duIHNvdXJjZSBmaWxlcyBtdXN0IGhhdmUgdGhlIC5ta2QgZXh0ZW5zaW9uLg0KLSAqIA0KLSAqIE5hdHVyYWwgc3RyaW5nIHNvcnQgb3JkZXIgb2YgdGhlIE1hcmtkb3duIHNvdXJjZSBmaWxlbmFtZXMgaXMgdGhlIG9yZGVyIG9mDQotICogcGFnZSBsaW5rcy4gIiMjXyIgcHJlZml4ZXMgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgc29ydCBvcmRlci4NCi0gKiANCi0gKiBAYXV0aG9yIEphbWVzIE1vZ2VyDQotICogDQotICovDQotcHVibGljIGNsYXNzIEJ1aWxkU2l0ZSB7DQotDQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTUEFDRV9ERUxJTUlURUQgPSAiU1BBQ0UtREVMSU1JVEVEIjsNCi0NCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENBU0VfU0VOU0lUSVZFID0gIkNBU0UtU0VOU0lUSVZFIjsNCi0NCi0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFJFU1RBUlRfUkVRVUlSRUQgPSAiUkVTVEFSVCBSRVFVSVJFRCI7DQotDQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSU5DRSA9ICJTSU5DRSI7DQotDQotCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmdzKSB7DQotCQlQYXJhbXMgcGFyYW1zID0gbmV3IFBhcmFtcygpOw0KLQkJSkNvbW1hbmRlciBqYyA9IG5ldyBKQ29tbWFuZGVyKHBhcmFtcyk7DQotCQl0cnkgew0KLQkJCWpjLnBhcnNlKGFyZ3MpOw0KLQkJfSBjYXRjaCAoUGFyYW1ldGVyRXhjZXB0aW9uIHQpIHsNCi0JCQl1c2FnZShqYywgdCk7DQotCQl9DQotDQotCQlGaWxlIHNvdXJjZUZvbGRlciA9IG5ldyBGaWxlKHBhcmFtcy5zb3VyY2VGb2xkZXIpOw0KLQkJRmlsZSBkZXN0aW5hdGlvbkZvbGRlciA9IG5ldyBGaWxlKHBhcmFtcy5vdXRwdXRGb2xkZXIpOw0KLQkJRmlsZVtdIG1hcmtkb3duRmlsZXMgPSBzb3VyY2VGb2xkZXIubGlzdEZpbGVzKG5ldyBGaWxlbmFtZUZpbHRlcigpIHsNCi0NCi0JCQlAT3ZlcnJpZGUNCi0JCQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQoRmlsZSBkaXIsIFN0cmluZyBuYW1lKSB7DQotCQkJCXJldHVybiBuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoIi5ta2QiKTsNCi0JCQl9DQotCQl9KTsNCi0JCUFycmF5cy5zb3J0KG1hcmtkb3duRmlsZXMpOw0KLQ0KLQkJTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc01hcCA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOw0KLQkJZm9yIChTdHJpbmcgYWxpYXMgOiBwYXJhbXMuYWxpYXNlcykgew0KLQkJCVN0cmluZ1tdIHZhbHVlcyA9IGFsaWFzLnNwbGl0KCI9Iik7DQotCQkJYWxpYXNNYXAucHV0KHZhbHVlc1swXSwgdmFsdWVzWzFdKTsNCi0JCX0NCi0NCi0JCVN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlRm9ybWF0LmZvcm1hdCgiR2VuZXJhdGluZyBzaXRlIGZyb20gezB9IE1hcmtkb3duIERvY3MgaW4gezF9ICIsDQotCQkJCW1hcmtkb3duRmlsZXMubGVuZ3RoLCBzb3VyY2VGb2xkZXIuZ2V0QWJzb2x1dGVQYXRoKCkpKTsNCi0NCi0JCVN0cmluZyBodG1sSGVhZGVyID0gRmlsZVV0aWxzLnJlYWRDb250ZW50KG5ldyBGaWxlKHBhcmFtcy5wYWdlSGVhZGVyKSwgIlxuIik7DQotDQotCQlTdHJpbmcgaHRtbEFkU25pcHBldCA9IG51bGw7DQotCQlpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkocGFyYW1zLmFkU25pcHBldCkpIHsNCi0JCQlGaWxlIHNuaXBwZXQgPSBuZXcgRmlsZShwYXJhbXMuYWRTbmlwcGV0KTsNCi0JCQlpZiAoc25pcHBldC5leGlzdHMoKSkgew0KLQkJCQlodG1sQWRTbmlwcGV0ID0gRmlsZVV0aWxzLnJlYWRDb250ZW50KHNuaXBwZXQsICJcbiIpOw0KLQkJCX0NCi0JCX0NCi0JCVN0cmluZyBodG1sRm9vdGVyID0gRmlsZVV0aWxzLnJlYWRDb250ZW50KG5ldyBGaWxlKHBhcmFtcy5wYWdlRm9vdGVyKSwgIlxuIik7DQotCQlmaW5hbCBTdHJpbmcgZGF0ZSA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5LU1NLWRkIikuZm9ybWF0KG5ldyBEYXRlKCkpOw0KLQkJZmluYWwgU3RyaW5nIGZvb3RlciA9IE1lc3NhZ2VGb3JtYXQuZm9ybWF0KGh0bWxGb290ZXIsICJnZW5lcmF0ZWQgIiArIGRhdGUpOw0KLQkJZm9yIChGaWxlIGZpbGUgOiBtYXJrZG93bkZpbGVzKSB7DQotCQkJU3RyaW5nIGRvY3VtZW50TmFtZSA9IGdldERvY3VtZW50TmFtZShmaWxlKTsNCi0JCQlpZiAocGFyYW1zLnNraXBzLmNvbnRhaW5zKGRvY3VtZW50TmFtZSkpIHsNCi0JCQkJY29udGludWU7DQotCQkJfQ0KLQkJCXRyeSB7DQotCQkJCVN0cmluZyBsaW5rcyA9IGNyZWF0ZUxpbmtzKGZpbGUsIG1hcmtkb3duRmlsZXMsIGFsaWFzTWFwLCBwYXJhbXMuc2tpcHMpOw0KLQkJCQlTdHJpbmcgaGVhZGVyID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQoaHRtbEhlYWRlciwgQ29uc3RhbnRzLkZVTExfTkFNRSwgbGlua3MpOw0KLQkJCQlpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkocGFyYW1zLmFuYWx5dGljc1NuaXBwZXQpKSB7DQotCQkJCQlGaWxlIHNuaXBwZXQgPSBuZXcgRmlsZShwYXJhbXMuYW5hbHl0aWNzU25pcHBldCk7DQotCQkJCQlpZiAoc25pcHBldC5leGlzdHMoKSkgew0KLQkJCQkJCVN0cmluZyBodG1sU25pcHBldCA9IEZpbGVVdGlscy5yZWFkQ29udGVudChzbmlwcGV0LCAiXG4iKTsNCi0JCQkJCQloZWFkZXIgPSBoZWFkZXIucmVwbGFjZSgiPCEtLSBBTkFMWVRJQ1MgLS0+IiwgaHRtbFNuaXBwZXQpOw0KLQkJCQkJfQ0KLQkJCQl9DQotDQotCQkJCVN0cmluZyBmaWxlTmFtZSA9IGRvY3VtZW50TmFtZSArICIuaHRtbCI7DQotCQkJCVN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlRm9ybWF0LmZvcm1hdCgiICB7MH0gPT4gezF9IiwgZmlsZS5nZXROYW1lKCksIGZpbGVOYW1lKSk7DQotCQkJCVN0cmluZyByYXdDb250ZW50ID0gRmlsZVV0aWxzLnJlYWRDb250ZW50KGZpbGUsICJcbiIpOw0KLQkJCQlTdHJpbmcgbWFya2Rvd25Db250ZW50ID0gcmF3Q29udGVudDsNCi0NCi0JCQkJTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+PiBub21hcmtkb3duTWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+KCk7DQotDQotCQkJCS8vIGV4dHJhY3Qgc2VjdGlvbnMgbWFya2VkIGFzIG5vLW1hcmtkb3duDQotCQkJCWludCBubWQgPSAwOw0KLQkJCQlmb3IgKFN0cmluZyB0b2tlbiA6IHBhcmFtcy5ub21hcmtkb3duKSB7DQotCQkJCQlTdHJpbmdCdWlsZGVyIHN0cmlwcGVkQ29udGVudCA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQotDQotCQkJCQlTdHJpbmcgbm9tYXJrZG93bktleSA9ICIlTk9NQVJLRE9XTiIgKyBubWQgKyAiJSI7DQotCQkJCQlTdHJpbmdbXSBrdiA9IHRva2VuLnNwbGl0KCI6IiwgMik7DQotCQkJCQlTdHJpbmcgYmVnaW5Ub2tlbiA9IGt2WzBdOw0KLQkJCQkJU3RyaW5nIGVuZFRva2VuID0ga3ZbMV07DQotDQotCQkJCQkvLyBzdHJpcCBub21hcmtkb3duIGNodW5rcyBmcm9tIG1hcmtkb3duIGFuZCBjYWNoZSB0aGVtDQotCQkJCQlMaXN0PFN0cmluZz4gY2h1bmtzID0gbmV3IFZlY3RvcjxTdHJpbmc+KCk7DQotCQkJCQlpbnQgYmVnaW5Db2RlID0gMDsNCi0JCQkJCWludCBlbmRDb2RlID0gMDsNCi0JCQkJCXdoaWxlICgoYmVnaW5Db2RlID0gbWFya2Rvd25Db250ZW50LmluZGV4T2YoYmVnaW5Ub2tlbiwgZW5kQ29kZSkpID4gLTEpIHsNCi0JCQkJCQlpZiAoZW5kQ29kZSA9PSAwKSB7DQotCQkJCQkJCXN0cmlwcGVkQ29udGVudC5hcHBlbmQobWFya2Rvd25Db250ZW50LnN1YnN0cmluZygwLCBiZWdpbkNvZGUpKTsNCi0JCQkJCQl9IGVsc2Ugew0KLQkJCQkJCQlzdHJpcHBlZENvbnRlbnQuYXBwZW5kKG1hcmtkb3duQ29udGVudC5zdWJzdHJpbmcoZW5kQ29kZSwgYmVnaW5Db2RlKSk7DQotCQkJCQkJfQ0KLQkJCQkJCXN0cmlwcGVkQ29udGVudC5hcHBlbmQobm9tYXJrZG93bktleSk7DQotCQkJCQkJZW5kQ29kZSA9IG1hcmtkb3duQ29udGVudC5pbmRleE9mKGVuZFRva2VuLCBiZWdpbkNvZGUpOw0KLQkJCQkJCWNodW5rcy5hZGQobWFya2Rvd25Db250ZW50LnN1YnN0cmluZyhiZWdpbkNvZGUsIGVuZENvZGUpKTsNCi0JCQkJCQlub21hcmtkb3duTWFwLnB1dChub21hcmtkb3duS2V5LCBjaHVua3MpOw0KLQkJCQkJfQ0KLQ0KLQkJCQkJLy8gZ2V0IHJlbWFpbmRlciBvZiB0ZXh0DQotCQkJCQlpZiAoZW5kQ29kZSA8IG1hcmtkb3duQ29udGVudC5sZW5ndGgoKSkgew0KLQkJCQkJCXN0cmlwcGVkQ29udGVudC5hcHBlbmQobWFya2Rvd25Db250ZW50LnN1YnN0cmluZyhlbmRDb2RlLA0KLQkJCQkJCQkJbWFya2Rvd25Db250ZW50Lmxlbmd0aCgpKSk7DQotCQkJCQl9DQotCQkJCQltYXJrZG93bkNvbnRlbnQgPSBzdHJpcHBlZENvbnRlbnQudG9TdHJpbmcoKTsNCi0JCQkJCW5tZCsrOw0KLQkJCQl9DQotDQotCQkJCS8vIHRyYW5zZm9ybSBtYXJrZG93biB0byBodG1sDQotCQkJCVN0cmluZyBjb250ZW50ID0gdHJhbnNmb3JtTWFya2Rvd24obWFya2Rvd25Db250ZW50LnRvU3RyaW5nKCkpOw0KLQ0KLQkJCQkvLyByZWluc2VydCBub21hcmtkb3duIGNodW5rcw0KLQkJCQlmb3IgKE1hcC5FbnRyeTxTdHJpbmcsIExpc3Q8U3RyaW5nPj4gbm9tYXJrZG93biA6IG5vbWFya2Rvd25NYXAuZW50cnlTZXQoKSkgew0KLQkJCQkJZm9yIChTdHJpbmcgY2h1bmsgOiBub21hcmtkb3duLmdldFZhbHVlKCkpIHsNCi0JCQkJCQljb250ZW50ID0gY29udGVudC5yZXBsYWNlRmlyc3Qobm9tYXJrZG93bi5nZXRLZXkoKSwgY2h1bmspOw0KLQkJCQkJfQ0KLQkJCQl9DQotDQotCQkJCWZvciAoU3RyaW5nIHRva2VuIDogcGFyYW1zLnN1YnN0aXR1dGlvbnMpIHsNCi0JCQkJCVN0cmluZ1tdIGt2ID0gdG9rZW4uc3BsaXQoIj0iLCAyKTsNCi0JCQkJCWNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2Uoa3ZbMF0sIGt2WzFdKTsNCi0JCQkJfQ0KLQkJCQlmb3IgKFN0cmluZyB0b2tlbiA6IHBhcmFtcy5yZWdleCkgew0KLQkJCQkJU3RyaW5nW10ga3YgPSB0b2tlbi5zcGxpdCgiISEhIiwgMik7DQotCQkJCQljb250ZW50ID0gY29udGVudC5yZXBsYWNlQWxsKGt2WzBdLCBrdlsxXSk7DQotCQkJCX0NCi0JCQkJZm9yIChTdHJpbmcgYWxpYXMgOiBwYXJhbXMucHJvcGVydGllcykgew0KLQkJCQkJU3RyaW5nW10ga3YgPSBhbGlhcy5zcGxpdCgiPSIsIDIpOw0KLQkJCQkJU3RyaW5nIGxvYWRlZENvbnRlbnQgPSBnZW5lcmF0ZVByb3BlcnRpZXNDb250ZW50KG5ldyBGaWxlKGt2WzFdKSk7DQotCQkJCQljb250ZW50ID0gY29udGVudC5yZXBsYWNlKGt2WzBdLCBsb2FkZWRDb250ZW50KTsNCi0JCQkJfQ0KLQkJCQlmb3IgKFN0cmluZyBhbGlhcyA6IHBhcmFtcy5sb2Fkcykgew0KLQkJCQkJU3RyaW5nW10ga3YgPSBhbGlhcy5zcGxpdCgiPSIsIDIpOw0KLQkJCQkJU3RyaW5nIGxvYWRlZENvbnRlbnQgPSBGaWxlVXRpbHMucmVhZENvbnRlbnQobmV3IEZpbGUoa3ZbMV0pLCAiXG4iKTsNCi0JCQkJCWxvYWRlZENvbnRlbnQgPSBTdHJpbmdVdGlscy5lc2NhcGVGb3JIdG1sKGxvYWRlZENvbnRlbnQsIGZhbHNlKTsNCi0JCQkJCWxvYWRlZENvbnRlbnQgPSBTdHJpbmdVdGlscy5icmVha0xpbmVzRm9ySHRtbChsb2FkZWRDb250ZW50KTsNCi0JCQkJCWNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2Uoa3ZbMF0sIGxvYWRlZENvbnRlbnQpOw0KLQkJCQl9DQotCQkJCU91dHB1dFN0cmVhbVdyaXRlciB3cml0ZXIgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG5ldyBGaWxlKA0KLQkJCQkJCWRlc3RpbmF0aW9uRm9sZGVyLCBmaWxlTmFtZSkpLCBDaGFyc2V0LmZvck5hbWUoIlVURi04IikpOw0KLQkJCQl3cml0ZXIud3JpdGUoaGVhZGVyKTsNCi0JCQkJaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KGh0bWxBZFNuaXBwZXQpKSB7DQotCQkJCQl3cml0ZXIud3JpdGUoaHRtbEFkU25pcHBldCk7DQotCQkJCX0NCi0JCQkJd3JpdGVyLndyaXRlKGNvbnRlbnQpOw0KLQkJCQl3cml0ZXIud3JpdGUoZm9vdGVyKTsNCi0JCQkJd3JpdGVyLmNsb3NlKCk7DQotCQkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCi0JCQkJU3lzdGVtLmVyci5wcmludGxuKCJGYWlsZWQgdG8gdHJhbnNmb3JtICIgKyBmaWxlLmdldE5hbWUoKSk7DQotCQkJCXQucHJpbnRTdGFja1RyYWNlKCk7DQotCQkJfQ0KLQkJfQ0KLQl9DQotDQotCXByaXZhdGUgc3RhdGljIFN0cmluZyBnZXREb2N1bWVudE5hbWUoRmlsZSBmaWxlKSB7DQotCQlTdHJpbmcgZGlzcGxheU5hbWUgPSBmaWxlLmdldE5hbWUoKS5zdWJzdHJpbmcoMCwgZmlsZS5nZXROYW1lKCkubGFzdEluZGV4T2YoJy4nKSkNCi0JCQkJLnRvTG93ZXJDYXNlKCk7DQotCQlpbnQgdW5kZXJzY29yZSA9IGRpc3BsYXlOYW1lLmluZGV4T2YoJ18nKSArIDE7DQotCQlpZiAodW5kZXJzY29yZSA+IC0xKSB7DQotCQkJLy8gdHJpbSBsZWFkaW5nICMjXyB3aGljaCBpcyB0byBjb250cm9sIGRpc3BsYXkgb3JkZXINCi0JCQlyZXR1cm4gZGlzcGxheU5hbWUuc3Vic3RyaW5nKHVuZGVyc2NvcmUpOw0KLQkJfQ0KLQkJcmV0dXJuIGRpc3BsYXlOYW1lOw0KLQl9DQotDQotCXByaXZhdGUgc3RhdGljIFN0cmluZyBjcmVhdGVMaW5rcyhGaWxlIGN1cnJlbnRGaWxlLCBGaWxlW10gbWFya2Rvd25GaWxlcywNCi0JCQlNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzTWFwLCBMaXN0PFN0cmluZz4gc2tpcHMpIHsNCi0JCVN0cmluZyBsaW5rUGF0dGVybiA9ICI8bGk+PGEgaHJlZj0nJ3swfScnPnsxfTwvYT48L2xpPiI7DQotCQlTdHJpbmcgY3VycmVudExpbmtQYXR0ZXJuID0gIjxsaSBjbGFzcz0nJ2FjdGl2ZScnPjxhIGhyZWY9Jyd7MH0nJz57MX08L2E+PC9saT4iOw0KLQkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQotCQlmb3IgKEZpbGUgZmlsZSA6IG1hcmtkb3duRmlsZXMpIHsNCi0JCQlTdHJpbmcgZG9jdW1lbnROYW1lID0gZ2V0RG9jdW1lbnROYW1lKGZpbGUpOw0KLQkJCWlmICghc2tpcHMuY29udGFpbnMoZG9jdW1lbnROYW1lKSkgew0KLQkJCQlTdHJpbmcgZGlzcGxheU5hbWUgPSBkb2N1bWVudE5hbWU7DQotCQkJCWlmIChhbGlhc01hcC5jb250YWluc0tleShkb2N1bWVudE5hbWUpKSB7DQotCQkJCQlkaXNwbGF5TmFtZSA9IGFsaWFzTWFwLmdldChkb2N1bWVudE5hbWUpOw0KLQkJCQl9IGVsc2Ugew0KLQkJCQkJZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZS5yZXBsYWNlKCdfJywgJyAnKTsNCi0JCQkJfQ0KLQkJCQlTdHJpbmcgZmlsZU5hbWUgPSBkb2N1bWVudE5hbWUgKyAiLmh0bWwiOw0KLQkJCQlpZiAoY3VycmVudEZpbGUuZ2V0TmFtZSgpLmVxdWFscyhmaWxlLmdldE5hbWUoKSkpIHsNCi0JCQkJCXNiLmFwcGVuZChNZXNzYWdlRm9ybWF0LmZvcm1hdChjdXJyZW50TGlua1BhdHRlcm4sIGZpbGVOYW1lLCBkaXNwbGF5TmFtZSkpOw0KLQkJCQl9IGVsc2Ugew0KLQkJCQkJc2IuYXBwZW5kKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KGxpbmtQYXR0ZXJuLCBmaWxlTmFtZSwgZGlzcGxheU5hbWUpKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCX0NCi0JCXNiLnNldExlbmd0aChzYi5sZW5ndGgoKSAtIDMpOw0KLQkJc2IudHJpbVRvU2l6ZSgpOw0KLQkJcmV0dXJuIHNiLnRvU3RyaW5nKCk7DQotCX0NCi0NCi0JcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUHJvcGVydGllc0NvbnRlbnQoRmlsZSBwcm9wZXJ0aWVzRmlsZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQotCQkvLyBSZWFkIHRoZSBjdXJyZW50IEdpdGJsaXQgcHJvcGVydGllcw0KLQkJQnVmZmVyZWRSZWFkZXIgcHJvcGVydGllc1JlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgRmlsZVJlYWRlcihwcm9wZXJ0aWVzRmlsZSkpOw0KLQ0KLQkJVmVjdG9yPFNldHRpbmc+IHNldHRpbmdzID0gbmV3IFZlY3RvcjxTZXR0aW5nPigpOw0KLQkJTGlzdDxTdHJpbmc+IGNvbW1lbnRzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQotCQlTdHJpbmcgbGluZSA9IG51bGw7DQotCQl3aGlsZSAoKGxpbmUgPSBwcm9wZXJ0aWVzUmVhZGVyLnJlYWRMaW5lKCkpICE9IG51bGwpIHsNCi0JCQlpZiAobGluZS5sZW5ndGgoKSA9PSAwKSB7DQotCQkJCVNldHRpbmcgcyA9IG5ldyBTZXR0aW5nKCIiLCAiIiwgY29tbWVudHMpOw0KLQkJCQlzZXR0aW5ncy5hZGQocyk7DQotCQkJCWNvbW1lbnRzLmNsZWFyKCk7DQotCQkJfSBlbHNlIHsNCi0JCQkJaWYgKGxpbmUuY2hhckF0KDApID09ICcjJykgew0KLQkJCQkJY29tbWVudHMuYWRkKGxpbmUuc3Vic3RyaW5nKDEpLnRyaW0oKSk7DQotCQkJCX0gZWxzZSB7DQotCQkJCQlTdHJpbmdbXSBrdnAgPSBsaW5lLnNwbGl0KCI9IiwgMik7DQotCQkJCQlTdHJpbmcga2V5ID0ga3ZwWzBdLnRyaW0oKTsNCi0JCQkJCVNldHRpbmcgcyA9IG5ldyBTZXR0aW5nKGtleSwga3ZwWzFdLnRyaW0oKSwgY29tbWVudHMpOw0KLQkJCQkJc2V0dGluZ3MuYWRkKHMpOw0KLQkJCQkJY29tbWVudHMuY2xlYXIoKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCX0NCi0JCXByb3BlcnRpZXNSZWFkZXIuY2xvc2UoKTsNCi0NCi0JCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KLQkJZm9yIChTZXR0aW5nIHNldHRpbmcgOiBzZXR0aW5ncykgew0KLQkJCWZvciAoU3RyaW5nIGNvbW1lbnQgOiBzZXR0aW5nLmNvbW1lbnRzKSB7DQotCQkJCWlmIChjb21tZW50LmNvbnRhaW5zKFNJTkNFKSB8fCBjb21tZW50LmNvbnRhaW5zKFJFU1RBUlRfUkVRVUlSRUQpDQotCQkJCQkJfHwgY29tbWVudC5jb250YWlucyhDQVNFX1NFTlNJVElWRSkgfHwgY29tbWVudC5jb250YWlucyhTUEFDRV9ERUxJTUlURUQpKSB7DQotCQkJCQlzYi5hcHBlbmQoTWVzc2FnZUZvcm1hdC5mb3JtYXQoDQotCQkJCQkJCSI8c3BhbiBzdHlsZT1cImNvbG9yOiMwMDQwMDA7XCI+IyA8aT57MH08L2k+PC9zcGFuPiIsDQotCQkJCQkJCXRyYW5zZm9ybU1hcmtkb3duKGNvbW1lbnQpKSk7DQotCQkJCX0gZWxzZSB7DQotCQkJCQlzYi5hcHBlbmQoTWVzc2FnZUZvcm1hdC5mb3JtYXQoIjxzcGFuIHN0eWxlPVwiY29sb3I6IzAwNDAwMDtcIj4jIHswfTwvc3Bhbj4iLA0KLQkJCQkJCQl0cmFuc2Zvcm1NYXJrZG93bihjb21tZW50KSkpOw0KLQkJCQl9DQotCQkJCXNiLmFwcGVuZCgiPGJyLz5cbiIpOw0KLQkJCX0NCi0JCQlpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkoc2V0dGluZy5uYW1lKSkgew0KLQkJCQlzYi5hcHBlbmQoTWVzc2FnZUZvcm1hdA0KLQkJCQkJCS5mb3JtYXQoIjxzcGFuIHN0eWxlPVwiY29sb3I6IzAwMDA4MDtcIj57MH08L3NwYW4+ID0gPHNwYW4gc3R5bGU9XCJjb2xvcjojODAwMDAwO1wiPnsxfTwvc3Bhbj4iLA0KLQkJCQkJCQkJc2V0dGluZy5uYW1lLCBTdHJpbmdVdGlscy5lc2NhcGVGb3JIdG1sKHNldHRpbmcudmFsdWUsIGZhbHNlKSkpOw0KLQkJCX0NCi0JCQlzYi5hcHBlbmQoIjxici8+XG4iKTsNCi0JCX0NCi0NCi0JCXJldHVybiBzYi50b1N0cmluZygpOw0KLQl9DQotDQotCXByaXZhdGUgc3RhdGljIFN0cmluZyB0cmFuc2Zvcm1NYXJrZG93bihTdHJpbmcgY29tbWVudCkgdGhyb3dzIFBhcnNlRXhjZXB0aW9uIHsNCi0JCVN0cmluZyBtZCA9IE1hcmtkb3duVXRpbHMudHJhbnNmb3JtTWFya2Rvd24oY29tbWVudCk7DQotCQlpZiAobWQuc3RhcnRzV2l0aCgiPHA+IikpIHsNCi0JCQltZCA9IG1kLnN1YnN0cmluZygzKTsNCi0JCX0NCi0JCWlmIChtZC5lbmRzV2l0aCgiPC9wPiIpKSB7DQotCQkJbWQgPSBtZC5zdWJzdHJpbmcoMCwgbWQubGVuZ3RoKCkgLSA0KTsNCi0JCX0NCi0JCXJldHVybiBtZDsNCi0JfQ0KLQ0KLQlwcml2YXRlIHN0YXRpYyB2b2lkIHVzYWdlKEpDb21tYW5kZXIgamMsIFBhcmFtZXRlckV4Y2VwdGlvbiB0KSB7DQotCQlTeXN0ZW0ub3V0LnByaW50bG4oQ29uc3RhbnRzLmdldEdpdEJsaXRWZXJzaW9uKCkpOw0KLQkJU3lzdGVtLm91dC5wcmludGxuKCk7DQotCQlpZiAodCAhPSBudWxsKSB7DQotCQkJU3lzdGVtLm91dC5wcmludGxuKHQuZ2V0TWVzc2FnZSgpKTsNCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsNCi0JCX0NCi0JCWlmIChqYyAhPSBudWxsKSB7DQotCQkJamMudXNhZ2UoKTsNCi0JCX0NCi0JCVN5c3RlbS5leGl0KDApOw0KLQl9DQotDQotCS8qKg0KLQkgKiBTZXR0aW5nIHJlcHJlc2VudHMgYSBzZXR0aW5nIHdpdGggaXRzIGNvbW1lbnRzIGZyb20gdGhlIHByb3BlcnRpZXMgZmlsZS4NCi0JICovDQotCXByaXZhdGUgc3RhdGljIGNsYXNzIFNldHRpbmcgew0KLQkJZmluYWwgU3RyaW5nIG5hbWU7DQotCQlmaW5hbCBTdHJpbmcgdmFsdWU7DQotCQlmaW5hbCBMaXN0PFN0cmluZz4gY29tbWVudHM7DQotDQotCQlTZXR0aW5nKFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUsIExpc3Q8U3RyaW5nPiBjb21tZW50cykgew0KLQkJCXRoaXMubmFtZSA9IG5hbWU7DQotCQkJdGhpcy52YWx1ZSA9IHZhbHVlOw0KLQkJCXRoaXMuY29tbWVudHMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oY29tbWVudHMpOw0KLQkJfQ0KLQl9DQotDQotCS8qKg0KLQkgKiBKQ29tbWFuZGVyIFBhcmFtZXRlcnMgY2xhc3MgZm9yIEJ1aWxkU2l0ZS4NCi0JICovDQotCUBQYXJhbWV0ZXJzKHNlcGFyYXRvcnMgPSAiICIpDQotCXByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFtcyB7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1zb3VyY2VGb2xkZXIiIH0sIGRlc2NyaXB0aW9uID0gIk1hcmtkb3duIFNvdXJjZSBGb2xkZXIiLCByZXF1aXJlZCA9IHRydWUpDQotCQlwdWJsaWMgU3RyaW5nIHNvdXJjZUZvbGRlcjsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLW91dHB1dEZvbGRlciIgfSwgZGVzY3JpcHRpb24gPSAiSFRNTCBPdXB0dXQgRm9sZGVyIiwgcmVxdWlyZWQgPSB0cnVlKQ0KLQkJcHVibGljIFN0cmluZyBvdXRwdXRGb2xkZXI7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1wYWdlSGVhZGVyIiB9LCBkZXNjcmlwdGlvbiA9ICJQYWdlIEhlYWRlciBIVE1MIFNuaXBwZXQiLCByZXF1aXJlZCA9IHRydWUpDQotCQlwdWJsaWMgU3RyaW5nIHBhZ2VIZWFkZXI7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1wYWdlRm9vdGVyIiB9LCBkZXNjcmlwdGlvbiA9ICJQYWdlIEZvb3RlciBIVE1MIFNuaXBwZXQiLCByZXF1aXJlZCA9IHRydWUpDQotCQlwdWJsaWMgU3RyaW5nIHBhZ2VGb290ZXI7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1hZFNuaXBwZXQiIH0sIGRlc2NyaXB0aW9uID0gIkFkIEhUTUwgU25pcHBldCIsIHJlcXVpcmVkID0gZmFsc2UpDQotCQlwdWJsaWMgU3RyaW5nIGFkU25pcHBldDsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLWFuYWx5dGljc1NuaXBwZXQiIH0sIGRlc2NyaXB0aW9uID0gIkFuYWx5dGljcyBIVE1MIFNuaXBwZXQiLCByZXF1aXJlZCA9IGZhbHNlKQ0KLQkJcHVibGljIFN0cmluZyBhbmFseXRpY3NTbmlwcGV0Ow0KLQ0KLQkJQFBhcmFtZXRlcihuYW1lcyA9IHsgIi0tc2tpcCIgfSwgZGVzY3JpcHRpb24gPSAiRmlsZW5hbWUgdG8gc2tpcCIsIHJlcXVpcmVkID0gZmFsc2UpDQotCQlwdWJsaWMgTGlzdDxTdHJpbmc+IHNraXBzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1hbGlhcyIgfSwgZGVzY3JpcHRpb24gPSAiRmlsZW5hbWU9TGlua25hbWUgYWxpYXNlcyIsIHJlcXVpcmVkID0gZmFsc2UpDQotCQlwdWJsaWMgTGlzdDxTdHJpbmc+IGFsaWFzZXMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLXN1YnN0aXR1dGUiIH0sIGRlc2NyaXB0aW9uID0gIiVUT0tFTiU9dmFsdWUiLCByZXF1aXJlZCA9IGZhbHNlKQ0KLQkJcHVibGljIExpc3Q8U3RyaW5nPiBzdWJzdGl0dXRpb25zID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1sb2FkIiB9LCBkZXNjcmlwdGlvbiA9ICIlVE9LRU4lPWZpbGVuYW1lIiwgcmVxdWlyZWQgPSBmYWxzZSkNCi0JCXB1YmxpYyBMaXN0PFN0cmluZz4gbG9hZHMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLXByb3BlcnRpZXMiIH0sIGRlc2NyaXB0aW9uID0gIiVUT0tFTiU9ZmlsZW5hbWUiLCByZXF1aXJlZCA9IGZhbHNlKQ0KLQkJcHVibGljIExpc3Q8U3RyaW5nPiBwcm9wZXJ0aWVzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1ub21hcmtkb3duIiB9LCBkZXNjcmlwdGlvbiA9ICIlU1RBUlRUT0tFTiU6JUVORFRPS0VOJSIsIHJlcXVpcmVkID0gZmFsc2UpDQotCQlwdWJsaWMgTGlzdDxTdHJpbmc+IG5vbWFya2Rvd24gPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLXJlZ2V4IiB9LCBkZXNjcmlwdGlvbiA9ICJzZWFyY2hQYXR0ZXJuISEhcmVwbGFjZVBhdHRlcm4iLCByZXF1aXJlZCA9IGZhbHNlKQ0KLQkJcHVibGljIExpc3Q8U3RyaW5nPiByZWdleCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOw0KLQ0KLQl9DQotfQ0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZFRodW1ibmFpbHMuamF2YSBiL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZFRodW1ibmFpbHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUwNmM2Yy4uMDAwMDAwMAotLS0gYS9zcmMvY29tL2dpdGJsaXQvYnVpbGQvQnVpbGRUaHVtYm5haWxzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoNCi0gKiBDb3B5cmlnaHQgMjAxMSBnaXRibGl0LmNvbS4NCi0gKg0KLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCi0gKg0KLSAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCi0gKg0KLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCi0gKi8NCi1wYWNrYWdlIGNvbS5naXRibGl0LmJ1aWxkOw0KLQ0KLWltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247DQotaW1wb3J0IGphdmEuYXd0LkltYWdlOw0KLWltcG9ydCBqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlOw0KLWltcG9ydCBqYXZhLmlvLkZpbGU7DQotaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsNCi1pbXBvcnQgamF2YS5pby5GaWxlbmFtZUZpbHRlcjsNCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCi1pbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsNCi0NCi1pbXBvcnQgamF2YXguaW1hZ2Vpby5JbWFnZUlPOw0KLWltcG9ydCBqYXZheC5pbWFnZWlvLkltYWdlUmVhZGVyOw0KLWltcG9ydCBqYXZheC5pbWFnZWlvLnN0cmVhbS5JbWFnZUlucHV0U3RyZWFtOw0KLQ0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5KQ29tbWFuZGVyOw0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5QYXJhbWV0ZXI7DQotaW1wb3J0IGNvbS5iZXVzdC5qY29tbWFuZGVyLlBhcmFtZXRlckV4Y2VwdGlvbjsNCi1pbXBvcnQgY29tLmJldXN0Lmpjb21tYW5kZXIuUGFyYW1ldGVyczsNCi0NCi0vKioNCi0gKiBHZW5lcmF0ZXMgUE5HIHRodW1ibmFpbHMgb2YgdGhlIFBORyBpbWFnZXMgZnJvbSB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmb2xkZXIuDQotICogDQotICogQGF1dGhvciBKYW1lcyBNb2dlcg0KLSAqIA0KLSAqLw0KLXB1YmxpYyBjbGFzcyBCdWlsZFRodW1ibmFpbHMgew0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7DQotCQlQYXJhbXMgcGFyYW1zID0gbmV3IFBhcmFtcygpOw0KLQkJSkNvbW1hbmRlciBqYyA9IG5ldyBKQ29tbWFuZGVyKHBhcmFtcyk7DQotCQl0cnkgew0KLQkJCWpjLnBhcnNlKGFyZ3MpOw0KLQkJfSBjYXRjaCAoUGFyYW1ldGVyRXhjZXB0aW9uIHQpIHsNCi0JCQlTeXN0ZW0uZXJyLnByaW50bG4odC5nZXRNZXNzYWdlKCkpOw0KLQkJCWpjLnVzYWdlKCk7DQotCQl9DQotCQljcmVhdGVJbWFnZVRodW1ibmFpbChwYXJhbXMuc291cmNlRm9sZGVyLCBwYXJhbXMuZGVzdGluYXRpb25Gb2xkZXIsIHBhcmFtcy5tYXhpbXVtRGltZW5zaW9uKTsNCi0JfQ0KLQ0KLQkvKioNCi0JICogR2VuZXJhdGVzIHRodW1ibmFpbHMgZnJvbSBhbGwgUE5HIGltYWdlcyBpbiB0aGUgc291cmNlIGZvbGRlciBhbmQgc2F2ZXMNCi0JICogdGhlbSB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyLg0KLQkgKiANCi0JICogQHBhcmFtIHNvdXJjZUZvbGRlcg0KLQkgKiBAcGFyYW0gZGVzdGluYXRpb25Gb2xkZXINCi0JICogQHBhcmFtIG1heERpbWVuc2lvbg0KLQkgKiAgICAgICAgICAgIHRoZSBtYXhpbXVtIGhlaWdodCBvciB3aWR0aCBvZiB0aGUgaW1hZ2UuDQotCSAqLw0KLQlwdWJsaWMgc3RhdGljIHZvaWQgY3JlYXRlSW1hZ2VUaHVtYm5haWwoU3RyaW5nIHNvdXJjZUZvbGRlciwgU3RyaW5nIGRlc3RpbmF0aW9uRm9sZGVyLA0KLQkJCWludCBtYXhEaW1lbnNpb24pIHsNCi0JCWlmIChtYXhEaW1lbnNpb24gPD0gMCkgew0KLQkJCXJldHVybjsNCi0JCX0NCi0JCUZpbGUgc291cmNlID0gbmV3IEZpbGUoc291cmNlRm9sZGVyKTsNCi0JCUZpbGUgZGVzdGluYXRpb24gPSBuZXcgRmlsZShkZXN0aW5hdGlvbkZvbGRlcik7DQotCQlkZXN0aW5hdGlvbi5ta2RpcnMoKTsNCi0JCUZpbGVbXSBzb3VyY2VGaWxlcyA9IHNvdXJjZS5saXN0RmlsZXMobmV3IEZpbGVuYW1lRmlsdGVyKCkgew0KLQkJCUBPdmVycmlkZQ0KLQkJCXB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIGRpciwgU3RyaW5nIG5hbWUpIHsNCi0JCQkJcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgiLnBuZyIpOw0KLQkJCX0NCi0JCX0pOw0KLQ0KLQkJZm9yIChGaWxlIHNvdXJjZUZpbGUgOiBzb3VyY2VGaWxlcykgew0KLQkJCUZpbGUgZGVzdGluYXRpb25GaWxlID0gbmV3IEZpbGUoZGVzdGluYXRpb24sIHNvdXJjZUZpbGUuZ2V0TmFtZSgpKTsNCi0JCQl0cnkgew0KLQkJCQlEaW1lbnNpb24gc3ogPSBnZXRJbWFnZURpbWVuc2lvbnMoc291cmNlRmlsZSk7DQotCQkJCWludCB3ID0gMDsNCi0JCQkJaW50IGggPSAwOw0KLQkJCQlpZiAoc3oud2lkdGggPiBtYXhEaW1lbnNpb24pIHsNCi0JCQkJCS8vIFNjYWxlIHRvIFdpZHRoDQotCQkJCQl3ID0gbWF4RGltZW5zaW9uOw0KLQkJCQkJZmxvYXQgZiA9IG1heERpbWVuc2lvbjsNCi0JCQkJCS8vIG5vcm1hbGl6ZSBoZWlnaHQNCi0JCQkJCWggPSAoaW50KSAoKGYgLyBzei53aWR0aCkgKiBzei5oZWlnaHQpOw0KLQkJCQl9IGVsc2UgaWYgKHN6LmhlaWdodCA+IG1heERpbWVuc2lvbikgew0KLQkJCQkJLy8gU2NhbGUgdG8gSGVpZ2h0DQotCQkJCQloID0gbWF4RGltZW5zaW9uOw0KLQkJCQkJZmxvYXQgZiA9IG1heERpbWVuc2lvbjsNCi0JCQkJCS8vIG5vcm1hbGl6ZSB3aWR0aA0KLQkJCQkJdyA9IChpbnQpICgoZiAvIHN6LmhlaWdodCkgKiBzei53aWR0aCk7DQotCQkJCX0NCi0JCQkJU3lzdGVtLm91dC5wcmludGxuKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KA0KLQkJCQkJCSJHZW5lcmF0aW5nIHRodW1ibmFpbCBmb3IgezB9IGFzICh7MSxudW1iZXIsI30sIHsyLG51bWJlciwjfSkiLA0KLQkJCQkJCXNvdXJjZUZpbGUuZ2V0TmFtZSgpLCB3LCBoKSk7DQotCQkJCUJ1ZmZlcmVkSW1hZ2UgaW1hZ2UgPSBJbWFnZUlPLnJlYWQoc291cmNlRmlsZSk7DQotCQkJCUltYWdlIHNjYWxlZEltYWdlID0gaW1hZ2UuZ2V0U2NhbGVkSW5zdGFuY2UodywgaCwgQnVmZmVyZWRJbWFnZS5TQ0FMRV9TTU9PVEgpOw0KLQkJCQlCdWZmZXJlZEltYWdlIGRlc3RJbWFnZSA9IG5ldyBCdWZmZXJlZEltYWdlKHcsIGgsIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfUkdCKTsNCi0JCQkJZGVzdEltYWdlLmNyZWF0ZUdyYXBoaWNzKCkuZHJhd0ltYWdlKHNjYWxlZEltYWdlLCAwLCAwLCBudWxsKTsNCi0JCQkJRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShkZXN0aW5hdGlvbkZpbGUpOw0KLQkJCQlJbWFnZUlPLndyaXRlKGRlc3RJbWFnZSwgInBuZyIsIGZvcyk7DQotCQkJCWZvcy5mbHVzaCgpOw0KLQkJCQlmb3MuZ2V0RkQoKS5zeW5jKCk7DQotCQkJCWZvcy5jbG9zZSgpOw0KLQkJCX0gY2F0Y2ggKFRocm93YWJsZSB0KSB7DQotCQkJCXQucHJpbnRTdGFja1RyYWNlKCk7DQotCQkJfQ0KLQkJfQ0KLQl9DQotDQotCS8qKg0KLQkgKiBSZXR1cm4gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHNwZWNpZmllZCBpbWFnZSBmaWxlLg0KLQkgKiANCi0JICogQHBhcmFtIGZpbGUNCi0JICogQHJldHVybiBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZQ0KLQkgKiBAdGhyb3dzIElPRXhjZXB0aW9uDQotCSAqLw0KLQlwdWJsaWMgc3RhdGljIERpbWVuc2lvbiBnZXRJbWFnZURpbWVuc2lvbnMoRmlsZSBmaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KLQkJSW1hZ2VJbnB1dFN0cmVhbSBpbiA9IEltYWdlSU8uY3JlYXRlSW1hZ2VJbnB1dFN0cmVhbShmaWxlKTsNCi0JCXRyeSB7DQotCQkJZmluYWwgSXRlcmF0b3I8SW1hZ2VSZWFkZXI+IHJlYWRlcnMgPSBJbWFnZUlPLmdldEltYWdlUmVhZGVycyhpbik7DQotCQkJaWYgKHJlYWRlcnMuaGFzTmV4dCgpKSB7DQotCQkJCUltYWdlUmVhZGVyIHJlYWRlciA9IHJlYWRlcnMubmV4dCgpOw0KLQkJCQl0cnkgew0KLQkJCQkJcmVhZGVyLnNldElucHV0KGluKTsNCi0JCQkJCXJldHVybiBuZXcgRGltZW5zaW9uKHJlYWRlci5nZXRXaWR0aCgwKSwgcmVhZGVyLmdldEhlaWdodCgwKSk7DQotCQkJCX0gZmluYWxseSB7DQotCQkJCQlyZWFkZXIuZGlzcG9zZSgpOw0KLQkJCQl9DQotCQkJfQ0KLQkJfSBmaW5hbGx5IHsNCi0JCQlpZiAoaW4gIT0gbnVsbCkgew0KLQkJCQlpbi5jbG9zZSgpOw0KLQkJCX0NCi0JCX0NCi0JCXJldHVybiBudWxsOw0KLQl9DQotDQotCS8qKg0KLQkgKiBKQ29tbWFuZGVyIFBhcmFtZXRlcnMgY2xhc3MgZm9yIEJ1aWxkVGh1bWJuYWlscy4NCi0JICovDQotCUBQYXJhbWV0ZXJzKHNlcGFyYXRvcnMgPSAiICIpDQotCXByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFtcyB7DQotDQotCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1zb3VyY2VGb2xkZXIiIH0sIGRlc2NyaXB0aW9uID0gIlNvdXJjZSBmb2xkZXIgZm9yIHJhdyBpbWFnZXMiLCByZXF1aXJlZCA9IHRydWUpDQotCQlwdWJsaWMgU3RyaW5nIHNvdXJjZUZvbGRlcjsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLWRlc3RpbmF0aW9uRm9sZGVyIiB9LCBkZXNjcmlwdGlvbiA9ICJEZXN0aW5hdGlvbiBmb2xkZXIgZm9yIHRodW1ibmFpbHMiLCByZXF1aXJlZCA9IHRydWUpDQotCQlwdWJsaWMgU3RyaW5nIGRlc3RpbmF0aW9uRm9sZGVyOw0KLQ0KLQkJQFBhcmFtZXRlcihuYW1lcyA9IHsgIi0tbWF4aW11bURpbWVuc2lvbiIgfSwgZGVzY3JpcHRpb24gPSAiTWF4aW11bSB3aWR0aCBvciBoZWlnaHQgZm9yIHRodW1ibmFpbCIsIHJlcXVpcmVkID0gdHJ1ZSkNCi0JCXB1YmxpYyBpbnQgbWF4aW11bURpbWVuc2lvbjsNCi0NCi0JfQ0KLX0NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYnVpbGQvQnVpbGRXZWJYbWwuamF2YSBiL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZFdlYlhtbC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWExMmFiLi4wMDAwMDAwCi0tLSBhL3NyYy9jb20vZ2l0YmxpdC9idWlsZC9CdWlsZFdlYlhtbC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IDIwMTEgZ2l0YmxpdC5jb20uDQotICoNCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICoNCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQotICoNCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotICovDQotcGFja2FnZSBjb20uZ2l0YmxpdC5idWlsZDsNCi0NCi1pbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsNCi1pbXBvcnQgamF2YS5pby5GaWxlOw0KLWltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07DQotaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsNCi1pbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQotaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOw0KLQ0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5KQ29tbWFuZGVyOw0KLWltcG9ydCBjb20uYmV1c3QuamNvbW1hbmRlci5QYXJhbWV0ZXI7DQotaW1wb3J0IGNvbS5iZXVzdC5qY29tbWFuZGVyLlBhcmFtZXRlckV4Y2VwdGlvbjsNCi1pbXBvcnQgY29tLmJldXN0Lmpjb21tYW5kZXIuUGFyYW1ldGVyczsNCi1pbXBvcnQgY29tLmdpdGJsaXQuS2V5czsNCi1pbXBvcnQgY29tLmdpdGJsaXQudXRpbHMuU3RyaW5nVXRpbHM7DQotDQotLyoqDQotICogQnVpbGRzIHRoZSBHaXRibGl0IFdBUiB3ZWIueG1sIGZpbGUgYnkgbWVyZ2luZyB0aGUgR2l0YmxpdCBHTyB3ZWIueG1sIGZpbGUNCi0gKiB3aXRoIHRoZSBnaXRibGl0LnByb3BlcnRpZXMgY29tbWVudHMsIHNldHRpbmdzLCBhbmQgdmFsdWVzLg0KLSAqIA0KLSAqIEBhdXRob3IgSmFtZXMgTW9nZXINCi0gKiANCi0gKi8NCi1wdWJsaWMgY2xhc3MgQnVpbGRXZWJYbWwgew0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSQU1TID0gIjwhLS0gUEFSQU1TIC0tPiI7DQotDQotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIFNUUklQX1RPS0VOUyA9IHsgIjwhLS0gU1RSSVAiLCAiU1RSSVAgLS0+IiB9Ow0KLQ0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09NTUVOVF9QQVRURVJOID0gIlxuXHQ8IS0tIHswfSAtLT4iOw0KLQ0KLQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFSQU1fUEFUVEVSTiA9ICJcblx0PGNvbnRleHQtcGFyYW0+XG5cdFx0PHBhcmFtLW5hbWU+ezB9PC9wYXJhbS1uYW1lPlxuXHRcdDxwYXJhbS12YWx1ZT57MX08L3BhcmFtLXZhbHVlPlxuXHQ8L2NvbnRleHQtcGFyYW0+XG4iOw0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsNCi0JCVBhcmFtcyBwYXJhbXMgPSBuZXcgUGFyYW1zKCk7DQotCQlKQ29tbWFuZGVyIGpjID0gbmV3IEpDb21tYW5kZXIocGFyYW1zKTsNCi0JCXRyeSB7DQotCQkJamMucGFyc2UoYXJncyk7DQotCQl9IGNhdGNoIChQYXJhbWV0ZXJFeGNlcHRpb24gdCkgew0KLQkJCVN5c3RlbS5lcnIucHJpbnRsbih0LmdldE1lc3NhZ2UoKSk7DQotCQkJamMudXNhZ2UoKTsNCi0JCX0NCi0JCWdlbmVyYXRlV2ViWG1sKHBhcmFtcyk7DQotCX0NCi0NCi0JcHJpdmF0ZSBzdGF0aWMgdm9pZCBnZW5lcmF0ZVdlYlhtbChQYXJhbXMgcGFyYW1zKSB0aHJvd3MgRXhjZXB0aW9uIHsNCi0JCVN0cmluZ0J1aWxkZXIgcGFyYW1ldGVycyA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQotCQkvLyBSZWFkIHRoZSBjdXJyZW50IEdpdGJsaXQgcHJvcGVydGllcw0KLQkJaWYgKHBhcmFtcy5wcm9wZXJ0aWVzRmlsZSAhPSBudWxsKSB7DQotCQkJQnVmZmVyZWRSZWFkZXIgcHJvcGVydGllc1JlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgRmlsZVJlYWRlcihuZXcgRmlsZSgNCi0JCQkJCXBhcmFtcy5wcm9wZXJ0aWVzRmlsZSkpKTsNCi0NCi0JCQlWZWN0b3I8U2V0dGluZz4gc2V0dGluZ3MgPSBuZXcgVmVjdG9yPFNldHRpbmc+KCk7DQotCQkJTGlzdDxTdHJpbmc+IGNvbW1lbnRzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7DQotCQkJU3RyaW5nIGxpbmUgPSBudWxsOw0KLQkJCXdoaWxlICgobGluZSA9IHByb3BlcnRpZXNSZWFkZXIucmVhZExpbmUoKSkgIT0gbnVsbCkgew0KLQkJCQlpZiAobGluZS5sZW5ndGgoKSA9PSAwKSB7DQotCQkJCQljb21tZW50cy5jbGVhcigpOw0KLQkJCQl9IGVsc2Ugew0KLQkJCQkJaWYgKGxpbmUuY2hhckF0KDApID09ICcjJykgew0KLQkJCQkJCWlmIChsaW5lLmxlbmd0aCgpID4gMSkgew0KLQkJCQkJCQljb21tZW50cy5hZGQobGluZS5zdWJzdHJpbmcoMSkudHJpbSgpKTsNCi0JCQkJCQl9DQotCQkJCQl9IGVsc2Ugew0KLQkJCQkJCVN0cmluZ1tdIGt2cCA9IGxpbmUuc3BsaXQoIj0iLCAyKTsNCi0JCQkJCQlTdHJpbmcga2V5ID0ga3ZwWzBdLnRyaW0oKTsNCi0JCQkJCQlpZiAoIXNraXBLZXkoa2V5KSkgew0KLQkJCQkJCQlTZXR0aW5nIHMgPSBuZXcgU2V0dGluZyhrZXksIGt2cFsxXS50cmltKCksIGNvbW1lbnRzKTsNCi0JCQkJCQkJc2V0dGluZ3MuYWRkKHMpOw0KLQkJCQkJCX0NCi0JCQkJCQljb21tZW50cy5jbGVhcigpOw0KLQkJCQkJfQ0KLQkJCQl9DQotCQkJfQ0KLQkJCXByb3BlcnRpZXNSZWFkZXIuY2xvc2UoKTsNCi0NCi0JCQlmb3IgKFNldHRpbmcgc2V0dGluZyA6IHNldHRpbmdzKSB7DQotCQkJCWZvciAoU3RyaW5nIGNvbW1lbnQgOiBzZXR0aW5nLmNvbW1lbnRzKSB7DQotCQkJCQlwYXJhbWV0ZXJzLmFwcGVuZChNZXNzYWdlRm9ybWF0LmZvcm1hdChDT01NRU5UX1BBVFRFUk4sIGNvbW1lbnQpKTsNCi0JCQkJfQ0KLQkJCQlwYXJhbWV0ZXJzLmFwcGVuZChNZXNzYWdlRm9ybWF0LmZvcm1hdChQQVJBTV9QQVRURVJOLCBzZXR0aW5nLm5hbWUsDQotCQkJCQkJU3RyaW5nVXRpbHMuZXNjYXBlRm9ySHRtbChzZXR0aW5nLnZhbHVlLCBmYWxzZSkpKTsNCi0JCQl9DQotCQl9DQotCQkvLyBSZWFkIHRoZSBwcm90b3R5cGUgd2ViLnhtbCBmaWxlDQotCQlGaWxlIHdlYnhtbCA9IG5ldyBGaWxlKHBhcmFtcy5zb3VyY2VGaWxlKTsNCi0JCWNoYXJbXSBidWZmZXIgPSBuZXcgY2hhclsoaW50KSB3ZWJ4bWwubGVuZ3RoKCldOw0KLQkJRmlsZVJlYWRlciB3ZWJ4bWxSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcih3ZWJ4bWwpOw0KLQkJd2VieG1sUmVhZGVyLnJlYWQoYnVmZmVyKTsNCi0JCXdlYnhtbFJlYWRlci5jbG9zZSgpOw0KLQkJU3RyaW5nIHdlYlhtbENvbnRlbnQgPSBuZXcgU3RyaW5nKGJ1ZmZlcik7DQotDQotCQkvLyBJbnNlcnQgdGhlIEdpdGJsaXQgcHJvcGVydGllcyBpbnRvIHRoZSBwcm90b3R5cGUgd2ViLnhtbA0KLQkJZm9yIChTdHJpbmcgc3RyaXBUb2tlbiA6IFNUUklQX1RPS0VOUykgew0KLQkJCXdlYlhtbENvbnRlbnQgPSB3ZWJYbWxDb250ZW50LnJlcGxhY2Uoc3RyaXBUb2tlbiwgIiIpOw0KLQkJfQ0KLQkJaW50IGlkeCA9IHdlYlhtbENvbnRlbnQuaW5kZXhPZihQQVJBTVMpOw0KLQkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQotCQlzYi5hcHBlbmQod2ViWG1sQ29udGVudC5zdWJzdHJpbmcoMCwgaWR4KSk7DQotCQlzYi5hcHBlbmQocGFyYW1ldGVycy50b1N0cmluZygpKTsNCi0JCXNiLmFwcGVuZCh3ZWJYbWxDb250ZW50LnN1YnN0cmluZyhpZHggKyBQQVJBTVMubGVuZ3RoKCkpKTsNCi0NCi0JCS8vIFNhdmUgdGhlIG1lcmdlZCB3ZWIueG1sIHRvIHRoZSB3YXIgYnVpbGQgZm9sZGVyDQotCQlGaWxlT3V0cHV0U3RyZWFtIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0obmV3IEZpbGUocGFyYW1zLmRlc3RpbmF0aW9uRmlsZSksIGZhbHNlKTsNCi0JCW9zLndyaXRlKHNiLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoKSk7DQotCQlvcy5jbG9zZSgpOw0KLQl9DQotDQotCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gc2tpcEtleShTdHJpbmcga2V5KSB7DQotCQlyZXR1cm4ga2V5LnN0YXJ0c1dpdGgoS2V5cy5zZXJ2ZXIuX1JPT1QpOw0KLQl9DQotDQotCS8qKg0KLQkgKiBTZXR0aW5nIHJlcHJlc2VudHMgYSBzZXR0aW5nIGFuZCBpdHMgY29tbWVudHMgZnJvbSB0aGUgcHJvcGVydGllcyBmaWxlLg0KLQkgKi8NCi0JcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU2V0dGluZyB7DQotCQlmaW5hbCBTdHJpbmcgbmFtZTsNCi0JCWZpbmFsIFN0cmluZyB2YWx1ZTsNCi0JCWZpbmFsIExpc3Q8U3RyaW5nPiBjb21tZW50czsNCi0NCi0JCVNldHRpbmcoU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSwgTGlzdDxTdHJpbmc+IGNvbW1lbnRzKSB7DQotCQkJdGhpcy5uYW1lID0gbmFtZTsNCi0JCQl0aGlzLnZhbHVlID0gdmFsdWU7DQotCQkJdGhpcy5jb21tZW50cyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPihjb21tZW50cyk7DQotCQl9DQotCX0NCi0NCi0JLyoqDQotCSAqIEpDb21tYW5kZXIgUGFyYW1ldGVycyBjbGFzcyBmb3IgQnVpbGRXZWJYbWwuDQotCSAqLw0KLQlAUGFyYW1ldGVycyhzZXBhcmF0b3JzID0gIiAiKQ0KLQlwcml2YXRlIHN0YXRpYyBjbGFzcyBQYXJhbXMgew0KLQ0KLQkJQFBhcmFtZXRlcihuYW1lcyA9IHsgIi0tc291cmNlRmlsZSIgfSwgZGVzY3JpcHRpb24gPSAiU291cmNlIHdlYi54bWwgZmlsZSIsIHJlcXVpcmVkID0gdHJ1ZSkNCi0JCXB1YmxpYyBTdHJpbmcgc291cmNlRmlsZTsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLXByb3BlcnRpZXNGaWxlIiB9LCBkZXNjcmlwdGlvbiA9ICJQcm9wZXJ0aWVzIHNldHRpbmdzIGZpbGUiKQ0KLQkJcHVibGljIFN0cmluZyBwcm9wZXJ0aWVzRmlsZTsNCi0NCi0JCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLWRlc3RpbmF0aW9uRmlsZSIgfSwgZGVzY3JpcHRpb24gPSAiRGVzdGluYXRpb24gd2ViLnhtbCBmaWxlIiwgcmVxdWlyZWQgPSB0cnVlKQ0KLQkJcHVibGljIFN0cmluZyBkZXN0aW5hdGlvbkZpbGU7DQotCQkNCi0JfQ0KLX0NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0dpdGJsaXRNYW5hZ2VyTGF1bmNoZXIuamF2YSBiL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdE1hbmFnZXJMYXVuY2hlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjZlZTk2Li4wMDAwMDAwCi0tLSBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdE1hbmFnZXJMYXVuY2hlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IDIwMTEgZ2l0YmxpdC5jb20uDQotICoNCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICoNCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQotICoNCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotICovDQotcGFja2FnZSBjb20uZ2l0YmxpdC5jbGllbnQ7DQotDQotaW1wb3J0IGphdmEuYXd0LkNvbG9yOw0KLWltcG9ydCBqYXZhLmF3dC5FdmVudFF1ZXVlOw0KLWltcG9ydCBqYXZhLmF3dC5Gb250TWV0cmljczsNCi1pbXBvcnQgamF2YS5hd3QuR3JhcGhpY3MyRDsNCi1pbXBvcnQgamF2YS5hd3QuU3BsYXNoU2NyZWVuOw0KLWltcG9ydCBqYXZhLmlvLkZpbGU7DQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7DQotDQotaW1wb3J0IGNvbS5naXRibGl0LkNvbnN0YW50czsNCi1pbXBvcnQgY29tLmdpdGJsaXQuTGF1bmNoZXI7DQotaW1wb3J0IGNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkOw0KLWltcG9ydCBjb20uZ2l0YmxpdC5idWlsZC5CdWlsZC5Eb3dubG9hZExpc3RlbmVyOw0KLQ0KLS8qKg0KLSAqIERvd25sb2FkcyBkZXBlbmRlbmNpZXMgYW5kIGxhdW5jaGVzIEdpdGJsaXQgTWFuYWdlci4NCi0gKiANCi0gKiBAYXV0aG9yIEphbWVzIE1vZ2VyDQotICogDQotICovDQotcHVibGljIGNsYXNzIEdpdGJsaXRNYW5hZ2VyTGF1bmNoZXIgew0KLQ0KLQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7DQotCQlmaW5hbCBTcGxhc2hTY3JlZW4gc3BsYXNoID0gU3BsYXNoU2NyZWVuLmdldFNwbGFzaFNjcmVlbigpOw0KLQkJDQotCQlEb3dubG9hZExpc3RlbmVyIGRvd25sb2FkTGlzdGVuZXIgPSBuZXcgRG93bmxvYWRMaXN0ZW5lcigpIHsNCi0JCQlAT3ZlcnJpZGUNCi0JCQlwdWJsaWMgdm9pZCBkb3dubG9hZGluZyhTdHJpbmcgbmFtZSkgew0KLQkJCQl1cGRhdGVTcGxhc2goc3BsYXNoLCBUcmFuc2xhdGlvbi5nZXQoImdiLmRvd25sb2FkaW5nIikgKyAiICIgKyBuYW1lKTsJCQkJDQotCQkJfQ0KLQkJfTsNCi0JCQ0KLQkJLy8gZG93bmxvYWQgcnBjIGNsaWVudCBydW50aW1lIGRlcGVuZGVuY2llcw0KLQkJQnVpbGQubWFuYWdlcihkb3dubG9hZExpc3RlbmVyKTsNCi0NCi0JCUZpbGUgbGliRm9sZGVyID0gbmV3IEZpbGUoImV4dCIpOw0KLQkJTGlzdDxGaWxlPiBqYXJzID0gTGF1bmNoZXIuZmluZEphcnMobGliRm9sZGVyLmdldEFic29sdXRlRmlsZSgpKTsNCi0JCQ0KLQkJLy8gc29ydCB0aGUgamFycyBieSBuYW1lIGFuZCB0aGVuIHJldmVyc2UgdGhlIG9yZGVyIHNvIHRoZSBuZXdlciB2ZXJzaW9uDQotCQkvLyBvZiB0aGUgbGlicmFyeSBnZXRzIGxvYWRlZCBpbiB0aGUgZXZlbnQgdGhhdCB0aGlzIGlzIGFuIHVwZ3JhZGUNCi0JCUNvbGxlY3Rpb25zLnNvcnQoamFycyk7DQotCQlDb2xsZWN0aW9ucy5yZXZlcnNlKGphcnMpOw0KLQkJZm9yIChGaWxlIGphciA6IGphcnMpIHsNCi0JCQl0cnkgew0KLQkJCQl1cGRhdGVTcGxhc2goc3BsYXNoLCBUcmFuc2xhdGlvbi5nZXQoImdiLmxvYWRpbmciKSArICIgIiArIGphci5nZXROYW1lKCkgKyAiLi4uIik7DQotCQkJCUxhdW5jaGVyLmFkZEphckZpbGUoamFyKTsNCi0JCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQotDQotCQkJfQ0KLQkJfQ0KLQkJDQotCQl1cGRhdGVTcGxhc2goc3BsYXNoLCBUcmFuc2xhdGlvbi5nZXQoImdiLnN0YXJ0aW5nIikgKyAiIEdpdGJsaXQgTWFuYWdlci4uLiIpOw0KLQkJR2l0YmxpdE1hbmFnZXIubWFpbihhcmdzKTsNCi0JfQ0KLQ0KLQlwcml2YXRlIHN0YXRpYyB2b2lkIHVwZGF0ZVNwbGFzaChmaW5hbCBTcGxhc2hTY3JlZW4gc3BsYXNoLCBmaW5hbCBTdHJpbmcgc3RyaW5nKSB7DQotCQlpZiAoc3BsYXNoID09IG51bGwpIHsNCi0JCQlyZXR1cm47DQotCQl9DQotCQl0cnkgew0KLQkJCUV2ZW50UXVldWUuaW52b2tlQW5kV2FpdChuZXcgUnVubmFibGUoKSB7DQotCQkJCXB1YmxpYyB2b2lkIHJ1bigpIHsNCi0JCQkJCUdyYXBoaWNzMkQgZyA9IHNwbGFzaC5jcmVhdGVHcmFwaGljcygpOw0KLQkJCQkJaWYgKGcgIT0gbnVsbCkgew0KLQkJCQkJCS8vIFNwbGFzaCBpcyAzMjB4MTIwDQotCQkJCQkJRm9udE1ldHJpY3MgZm0gPSBnLmdldEZvbnRNZXRyaWNzKCk7DQotCQkJCQkJDQotCQkJCQkJLy8gcGFpbnQgc3RhcnR1cCBzdGF0dXMNCi0JCQkJCQlnLnNldENvbG9yKENvbG9yLmRhcmtHcmF5KTsNCi0JCQkJCQlpbnQgaCA9IGZtLmdldEhlaWdodCgpICsgZm0uZ2V0TWF4RGVzY2VudCgpOw0KLQkJCQkJCWludCB4ID0gNTsNCi0JCQkJCQlpbnQgeSA9IDExNTsNCi0JCQkJCQlpbnQgdyA9IDMyMCAtIDIgKiB4Ow0KLQkJCQkJCWcuZmlsbFJlY3QoeCwgeSAtIGgsIHcsIGgpOw0KLQkJCQkJCWcuc2V0Q29sb3IoQ29sb3IubGlnaHRHcmF5KTsNCi0JCQkJCQlnLmRyYXdSZWN0KHgsIHkgLSBoLCB3LCBoKTsNCi0JCQkJCQlnLnNldENvbG9yKENvbG9yLldISVRFKTsNCi0JCQkJCQlpbnQgeHcgPSBmbS5zdHJpbmdXaWR0aChzdHJpbmcpOw0KLQkJCQkJCWcuZHJhd1N0cmluZyhzdHJpbmcsIHggKyAoKHcgLSB4dykgLyAyKSwgeSAtIDUpOw0KLQkJCQkJCQ0KLQkJCQkJCS8vIHBhaW50IHZlcnNpb24NCi0JCQkJCQlTdHJpbmcgdmVyID0gInYiICsgQ29uc3RhbnRzLlZFUlNJT047DQotCQkJCQkJaW50IHZ3ID0gZy5nZXRGb250TWV0cmljcygpLnN0cmluZ1dpZHRoKHZlcik7DQotCQkJCQkJZy5kcmF3U3RyaW5nKHZlciwgMzIwIC0gdncgLSA1LCAzNCk7DQotCQkJCQkJZy5kaXNwb3NlKCk7DQotCQkJCQkJc3BsYXNoLnVwZGF0ZSgpOw0KLQkJCQkJfQ0KLQkJCQl9DQotCQkJfSk7DQotCQl9IGNhdGNoIChUaHJvd2FibGUgdCkgew0KLQkJCXQucHJpbnRTdGFja1RyYWNlKCk7DQotCQl9DQotCX0NCi19DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Mb2dvdXRQYWdlLmphdmEgYi9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ291dFBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY5MGFkMS4uMDAwMDAwMAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ291dFBhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qDQotICogQ29weXJpZ2h0IDIwMTEgZ2l0YmxpdC5jb20uDQotICoNCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQotICoNCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQotICoNCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotICovDQotcGFja2FnZSBjb20uZ2l0YmxpdC53aWNrZXQucGFnZXM7DQotDQotaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLldlYlBhZ2U7DQotaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnByb3RvY29sLmh0dHAuV2ViUmVzcG9uc2U7DQotDQotaW1wb3J0IGNvbS5naXRibGl0LkdpdEJsaXQ7DQotaW1wb3J0IGNvbS5naXRibGl0Lm1vZGVscy5Vc2VyTW9kZWw7DQotaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5HaXRCbGl0V2ViU2Vzc2lvbjsNCi0NCi1wdWJsaWMgY2xhc3MgTG9nb3V0UGFnZSBleHRlbmRzIFdlYlBhZ2Ugew0KLQ0KLQlwdWJsaWMgTG9nb3V0UGFnZSgpIHsNCi0JCUdpdEJsaXRXZWJTZXNzaW9uIHNlc3Npb24gPSBHaXRCbGl0V2ViU2Vzc2lvbi5nZXQoKTsNCi0JCVVzZXJNb2RlbCB1c2VyID0gc2Vzc2lvbi5nZXRVc2VyKCk7DQotCQlHaXRCbGl0LnNlbGYoKS5zZXRDb29raWUoKFdlYlJlc3BvbnNlKSBnZXRSZXNwb25zZSgpLCBudWxsKTsNCi0JCUdpdEJsaXQuc2VsZigpLmxvZ291dCh1c2VyKTsNCi0JCXNlc3Npb24uaW52YWxpZGF0ZSgpOwkJDQotCQlzZXRSZWRpcmVjdCh0cnVlKTsNCi0JCXNldFJlc3BvbnNlUGFnZShnZXRBcHBsaWNhdGlvbigpLmdldEhvbWVQYWdlKCkpOw0KLQl9DQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NoZWNrc3R5bGUueG1sIGIvc3JjL21haW4vY29uZmlnL2NoZWNrc3R5bGUueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjaGVja3N0eWxlLnhtbApyZW5hbWUgdG8gc3JjL21haW4vY29uZmlnL2NoZWNrc3R5bGUueG1sCmRpZmYgLS1naXQgYS9kaXN0cmliL2F1dGhvcml0eS5jb25mIGIvc3JjL21haW4vZGlzdHJpYi9kYXRhL2NlcnRzL2F1dGhvcml0eS5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2F1dGhvcml0eS5jb25mCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2RhdGEvY2VydHMvYXV0aG9yaXR5LmNvbmYKZGlmZiAtLWdpdCBhL2Rpc3RyaWIvaW5zdHJ1Y3Rpb25zLnRtcGwgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvY2VydHMvaW5zdHJ1Y3Rpb25zLnRtcGwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvaW5zdHJ1Y3Rpb25zLnRtcGwKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvZGF0YS9jZXJ0cy9pbnN0cnVjdGlvbnMudG1wbApkaWZmIC0tZ2l0IGEvZGlzdHJpYi9tYWlsLnRtcGwgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvY2VydHMvbWFpbC50bXBsCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL21haWwudG1wbApyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9kYXRhL2NlcnRzL21haWwudG1wbApkaWZmIC0tZ2l0IGEvZGlzdHJpYi9naXRibGl0LnByb3BlcnRpZXMgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ2l0YmxpdC5wcm9wZXJ0aWVzCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2RhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzCmluZGV4IDgwNzkwZDMuLjhjOTAyNTggMTAwNjQ0Ci0tLSBhL2Rpc3RyaWIvZ2l0YmxpdC5wcm9wZXJ0aWVzCisrKyBiL3NyYy9tYWluL2Rpc3RyaWIvZGF0YS9naXRibGl0LnByb3BlcnRpZXMKQEAgLTQ0MCw2ICs0NDAsMTIgQEAKICMgUkVTVEFSVCBSRVFVSVJFRA0KIHdlYi5hdXRoZW50aWNhdGVWaWV3UGFnZXMgPSBmYWxzZQ0KIA0KKyMgSWYgd2ViLmF1dGhlbnRpY2F0ZVZpZXdQYWdlcz10cnVlIHlvdSBtYXkgb3B0aW9uYWxseSByZXF1aXJlIGEgY2xpZW50LXNpZGUNCisjIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHByb21wdCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBmb3JtLWJhc2VkIGxvZ2luLiANCisjDQorIyBTSU5DRSAxLjMuMA0KK3dlYi5lbmZvcmNlSHR0cEJhc2ljQXV0aGVudGljYXRpb24gPSBmYWxzZQ0KKw0KICMgUmVxdWlyZSBhZG1pbiBhdXRoZW50aWNhdGlvbiBmb3IgdGhlIGFkbWluIGZ1bmN0aW9ucyBhbmQgcGFnZXMNCiAjDQogIyBTSU5DRSAwLjUuMA0KQEAgLTcxNyw5ICs3MjMsMTYgQEAKIHdlYi5mb3J3YXJkU2xhc2hDaGFyYWN0ZXIgPSAvDQogDQogIyBTaG93IG90aGVyIFVSTHMgb24gdGhlIHN1bW1hcnkgcGFnZSBmb3IgYWNjZXNzaW5nIHlvdXIgZ2l0IHJlcG9zaXRvcmllcw0KLSMgVXNlIHNwYWNlcyB0byBzZXBhcmF0ZSB1cmxzLiB7MH0gaXMgdGhlIHRva2VuIGZvciB0aGUgcmVwb3NpdG9yeSBuYW1lLg0KKyMgVXNlIHNwYWNlcyB0byBzZXBhcmF0ZSB1cmxzLg0KKyMNCisjIHswfSBpcyB0aGUgdG9rZW4gZm9yIHRoZSByZXBvc2l0b3J5IG5hbWUNCisjIHsxfSBpcyB0aGUgdG9rZW4gZm9yIHRoZSB1c2VybmFtZQ0KKyMNCisjIFRoZSB1c2VybmFtZSBpcyBvbmx5IHByYWN0aWNhbCBpZiB5b3UgaGF2ZSBzZXR1cCB5b3VyIG90aGVyIGdpdCBzZXJ2aW5nDQorIyBzb2x1dGlvbnMgYWNjb3VudHMgdG8gaGF2ZSB0aGUgc2FtZSB1c2VybmFtZSBhcyB0aGUgR2l0YmxpdCBhY2NvdW50Lg0KKyMNCiAjIGUuZy4NCi0jIHdlYi5vdGhlclVybHMgPSBzc2g6Ly9sb2NhbGhvc3QvZ2l0L3swfSBnaXQ6Ly9sb2NhbGhvc3QvZ2l0L3swfQ0KKyMgd2ViLm90aGVyVXJscyA9IHNzaDovL2xvY2FsaG9zdC9naXQvezB9IGdpdDovL2xvY2FsaG9zdC9naXQvezB9IGh0dHBzOi8vezF9QGxvY2FsaG9zdC9yL3swfQ0KICMNCiAjIFNQQUNFLURFTElNSVRFRA0KICMgU0lOQ0UgMC41LjANCkBAIC04MDMsNyArODE2LDcgQEAKICMNCiAjIFNQQUNFLURFTElNSVRFRA0KICMgU0lOQ0UgMC41LjANCi13ZWIucHJldHR5UHJpbnRFeHRlbnNpb25zID0gYyBjcHAgY3MgY3NzIGZybSBncm9vdnkgaHRtIGh0bWwgamF2YSBqcyBwaHAgcGwgcHJlZnMgcHJvcGVydGllcyBweSByYiBzY2FsYSBzaCBzcWwgeG1sIHZiDQord2ViLnByZXR0eVByaW50RXh0ZW5zaW9ucyA9IGMgY3BwIGNzIGNzcyBmcm0gZ3Jvb3Z5IGh0bSBodG1sIGphdmEganMgbW94aWUgcGhwIHBsIHByZWZzIHByb3BlcnRpZXMgcHkgcmIgc2NhbGEgc2ggc3FsIHhtbCB2YiB5YW1sIHltbA0KIA0KICMgUmVnaXN0ZXJlZCBleHRlbnNpb25zIGZvciBtYXJrZG93biB0cmFuc2Zvcm1hdGlvbg0KICMNCmRpZmYgLS1naXQgYS9kaXN0cmliL2dyb292eS8uZ2l0aWdub3JlIGIvc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS8uZ2l0aWdub3JlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2dyb292eS8uZ2l0aWdub3JlCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5Ly5naXRpZ25vcmUKZGlmZiAtLWdpdCBhL2Rpc3RyaWIvZ3Jvb3Z5L2Jsb2NrcHVzaC5ncm9vdnkgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L2Jsb2NrcHVzaC5ncm9vdnkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ3Jvb3Z5L2Jsb2NrcHVzaC5ncm9vdnkKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvZGF0YS9ncm9vdnkvYmxvY2twdXNoLmdyb292eQpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9ncm9vdnkvZm9nYnVnei5ncm9vdnkgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L2ZvZ2J1Z3ouZ3Jvb3Z5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2dyb292eS9mb2didWd6Lmdyb292eQpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS9mb2didWd6Lmdyb292eQpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9ncm9vdnkvamVua2lucy5ncm9vdnkgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L2plbmtpbnMuZ3Jvb3Z5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2dyb292eS9qZW5raW5zLmdyb292eQpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS9qZW5raW5zLmdyb292eQpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9ncm9vdnkvbG9jYWxjbG9uZS5ncm9vdnkgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L2xvY2FsY2xvbmUuZ3Jvb3Z5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2dyb292eS9sb2NhbGNsb25lLmdyb292eQpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS9sb2NhbGNsb25lLmdyb292eQpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9ncm9vdnkvcHJvdGVjdC1yZWZzLmdyb292eSBiL3NyYy9tYWluL2Rpc3RyaWIvZGF0YS9ncm9vdnkvcHJvdGVjdC1yZWZzLmdyb292eQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi9ncm9vdnkvcHJvdGVjdC1yZWZzLmdyb292eQpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS9wcm90ZWN0LXJlZnMuZ3Jvb3Z5CmRpZmYgLS1naXQgYS9kaXN0cmliL2dyb292eS9zZW5kbWFpbC1odG1sLmdyb292eSBiL3NyYy9tYWluL2Rpc3RyaWIvZGF0YS9ncm9vdnkvc2VuZG1haWwtaHRtbC5ncm9vdnkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ3Jvb3Z5L3NlbmRtYWlsLWh0bWwuZ3Jvb3Z5CnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L3NlbmRtYWlsLWh0bWwuZ3Jvb3Z5CmRpZmYgLS1naXQgYS9kaXN0cmliL2dyb292eS9zZW5kbWFpbC5ncm9vdnkgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L3NlbmRtYWlsLmdyb292eQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi9ncm9vdnkvc2VuZG1haWwuZ3Jvb3Z5CnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2RhdGEvZ3Jvb3Z5L3NlbmRtYWlsLmdyb292eQpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9ncm9vdnkvdGhlYnVnZ2VuaWUuZ3Jvb3Z5IGIvc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS90aGVidWdnZW5pZS5ncm9vdnkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ3Jvb3Z5L3RoZWJ1Z2dlbmllLmdyb292eQpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9kYXRhL2dyb292eS90aGVidWdnZW5pZS5ncm9vdnkKZGlmZiAtLWdpdCBhL2Rpc3RyaWIvcHJvamVjdHMuY29uZiBiL3NyYy9tYWluL2Rpc3RyaWIvZGF0YS9wcm9qZWN0cy5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL3Byb2plY3RzLmNvbmYKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvZGF0YS9wcm9qZWN0cy5jb25mCmRpZmYgLS1naXQgYS9kaXN0cmliL3VzZXJzLmNvbmYgYi9zcmMvbWFpbi9kaXN0cmliL2RhdGEvdXNlcnMuY29uZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi91c2Vycy5jb25mCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2RhdGEvdXNlcnMuY29uZgpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9mZWRlcmF0aW9uLnByb3BlcnRpZXMgYi9zcmMvbWFpbi9kaXN0cmliL2ZlZGVyYXRpb24ucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBkaXN0cmliL2ZlZGVyYXRpb24ucHJvcGVydGllcwpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9mZWRlcmF0aW9uLnByb3BlcnRpZXMKaW5kZXggYzc2MmI0NS4uNzIwNThmMCAxMDA2NDQKLS0tIGEvZGlzdHJpYi9mZWRlcmF0aW9uLnByb3BlcnRpZXMKKysrIGIvc3JjL21haW4vZGlzdHJpYi9mZWRlcmF0aW9uLnByb3BlcnRpZXMKQEAgLTgsNyArOCw3IEBACiAjDQogIyBTSU5DRSAwLjUuMA0KICMgUkVTVEFSVCBSRVFVSVJFRA0KLWdpdC5yZXBvc2l0b3JpZXNGb2xkZXIgPSBnaXQNCitnaXQucmVwb3NpdG9yaWVzRm9sZGVyID0gJHtiYXNlRm9sZGVyfS9naXQNCiANCiAjIFNlYXJjaCB0aGUgcmVwb3NpdG9yaWVzIGZvbGRlciBzdWJmb2xkZXJzIGZvciBvdGhlciByZXBvc2l0b3JpZXMuDQogIyBSZXBvc2l0b3JpZXMgTUFZIE5PVCBiZSBuZXN0ZWQgKGkuZS4gb25lIHJlcG9zaXRvcnkgd2l0aGluIGFub3RoZXIpDQpkaWZmIC0tZ2l0IGEvc3JjL21haW4vZGlzdHJpYi9saW51eC9hZGQtaW5kZXhlZC1icmFuY2guc2ggYi9zcmMvbWFpbi9kaXN0cmliL2xpbnV4L2FkZC1pbmRleGVkLWJyYW5jaC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzFmNDNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21haW4vZGlzdHJpYi9saW51eC9hZGQtaW5kZXhlZC1icmFuY2guc2gKQEAgLTAsMCArMSwyMSBAQAorIyEvYmluL2Jhc2gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhpcyBpcyBmb3IgTHVjZW5lIHNlYXJjaCBpbnRlZ3JhdGlvbi4KKyMKKyMgQWxsb3dzIHlvdSB0byBhZGQgYW4gaW5kZXhlZCBicmFuY2ggc3BlY2lmaWNhdGlvbiB0byB0aGUgcmVwb3NpdG9yeSBjb25maWcKKyMgZm9yIGFsbCBtYXRjaGluZyByZXBvc2l0b3JpZXMgaW4gdGhlIHNwZWNpZmllZCBmb2xkZXIuCisjCisjIEFsbCByZXBvc2l0b3JpZXMgYXJlIGluY2x1ZGVkIHVubGVzcyBleGNsdWRlZCB1c2luZyBhIC0tc2tpcCBwYXJhbWV0ZXIuCisjIC0tc2tpcCBzdXBwb3J0cyBzaW1wbGUgd2lsZGNhcmQgZnV6enkgbWF0Y2hpbmcgaG93ZXZlciBvbmx5IDEgYXN0ZXJpc2sgaXMKKyMgYWxsb3dlZCBwZXIgcGFyYW1ldGVyLgorIworIyBBbHdheXMgdXNlIGZvcndhcmQtc2xhc2hlcyBmb3IgdGhlIHBhdGggc2VwYXJhdG9yIGluIHlvdXIgcGFyYW1ldGVycyEhCisjCisjIFNldCBGT0xERVIgdG8gdGhlIHNlcnZlcidzIGdpdC5yZXBvc2l0b3JpZXNGb2xkZXIKKyMgU2V0IEJSQU5DSCAoImRlZmF1bHQiIG9yIGZ1bGx5IHF1YWxpZmllZCByZWYgLSBpLmUuIHJlZnMvaGVhZHMvbWFzdGVyKQorIyBTZXQgRVhDTFVTSU9OUyBmb3IgYW55IHJlcG9zaXRvcmllcyB0aGF0IHlvdSBkbyBub3Qgd2FudCB0byBjaGFuZ2UKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBGT0xERVI9Z2l0CitTRVQgRVhDTFVTSU9OUz0tLXNraXAgdGVzdC5naXQgLS1za2lwIGdyb3VwL3Rlc3QqCitTRVQgQlJBTkNIPWRlZmF1bHQKK2phdmEgLWNwIGdpdGJsaXQuamFyOyIlQ0QlXGV4dFwqIiBjb20uZ2l0YmxpdC5BZGRJbmRleGVkQnJhbmNoIC0tcmVwb3NpdG9yaWVzRm9sZGVyICVGT0xERVIlIC0tYnJhbmNoICVCUkFOQ0glICVFWENMVVNJT05TJQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9tYWluL2Rpc3RyaWIvbGludXgvYXV0aG9yaXR5LnNoIGIvc3JjL21haW4vZGlzdHJpYi9saW51eC9hdXRob3JpdHkuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U1YzIzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9tYWluL2Rpc3RyaWIvbGludXgvYXV0aG9yaXR5LnNoCkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL2Jhc2gKK2phdmEgLWNwIGdpdGJsaXQuamFyIGNvbS5naXRibGl0LmF1dGhvcml0eS5MYXVuY2hlciAtLWJhc2VGb2xkZXIgZGF0YQpkaWZmIC0tZ2l0IGEvc3JjL21haW4vZGlzdHJpYi9saW51eC9naXRibGl0LXN0b3Auc2ggYi9zcmMvbWFpbi9kaXN0cmliL2xpbnV4L2dpdGJsaXQtc3RvcC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmVmMjAzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21haW4vZGlzdHJpYi9saW51eC9naXRibGl0LXN0b3Auc2gKQEAgLTAsMCArMSwyIEBACisjIS9iaW4vYmFzaAoramF2YSAtamFyIGdpdGJsaXQuamFyIC0tYmFzZUZvbGRlciBkYXRhIC0tc3RvcApkaWZmIC0tZ2l0IGEvc3JjL21haW4vZGlzdHJpYi9saW51eC9naXRibGl0LnNoIGIvc3JjL21haW4vZGlzdHJpYi9saW51eC9naXRibGl0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNjMxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWFpbi9kaXN0cmliL2xpbnV4L2dpdGJsaXQuc2gKQEAgLTAsMCArMSwyIEBACisjIS9iaW4vYmFzaAoramF2YSAtamFyIGdpdGJsaXQuamFyIC0tYmFzZUZvbGRlciBkYXRhCmRpZmYgLS1naXQgYS9zcmMvbWFpbi9kaXN0cmliL2xpbnV4L2luc3RhbGwtc2VydmljZS1jZW50b3Muc2ggYi9zcmMvbWFpbi9kaXN0cmliL2xpbnV4L2luc3RhbGwtc2VydmljZS1jZW50b3Muc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlkMjhjNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9tYWluL2Rpc3RyaWIvbGludXgvaW5zdGFsbC1zZXJ2aWNlLWNlbnRvcy5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9iYXNoCitzdWRvIGNwIHNlcnZpY2UtY2VudG9zLnNoIC9ldGMvaW5pdC5kL2dpdGJsaXQKK3N1ZG8gY2hrY29uZmlnIC0tYWRkIGdpdGJsaXQKZGlmZiAtLWdpdCBhL3NyYy9tYWluL2Rpc3RyaWIvbGludXgvaW5zdGFsbC1zZXJ2aWNlLXVidW50dS5zaCBiL3NyYy9tYWluL2Rpc3RyaWIvbGludXgvaW5zdGFsbC1zZXJ2aWNlLXVidW50dS5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmM0ZTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21haW4vZGlzdHJpYi9saW51eC9pbnN0YWxsLXNlcnZpY2UtdWJ1bnR1LnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL2Jhc2gKK3N1ZG8gY3Agc2VydmljZS11YnVudHUuc2ggL2V0Yy9pbml0LmQvZ2l0YmxpdAorc3VkbyB1cGRhdGUtcmMuZCBnaXRibGl0IGRlZmF1bHRzCmRpZmYgLS1naXQgYS9kaXN0cmliL2phdmEtcHJveHktY29uZmlnLnNoIGIvc3JjL21haW4vZGlzdHJpYi9saW51eC9qYXZhLXByb3h5LWNvbmZpZy5zaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi9qYXZhLXByb3h5LWNvbmZpZy5zaApyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi9saW51eC9qYXZhLXByb3h5LWNvbmZpZy5zaApkaWZmIC0tZ2l0IGEvZGlzdHJpYi9naXRibGl0LWNlbnRvcyBiL3NyYy9tYWluL2Rpc3RyaWIvbGludXgvc2VydmljZS1jZW50b3Muc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ2l0YmxpdC1jZW50b3MKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvbGludXgvc2VydmljZS1jZW50b3Muc2gKZGlmZiAtLWdpdCBhL2Rpc3RyaWIvZ2l0YmxpdC11YnVudHUgYi9zcmMvbWFpbi9kaXN0cmliL2xpbnV4L3NlcnZpY2UtdWJ1bnR1LnNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2dpdGJsaXQtdWJ1bnR1CnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL2xpbnV4L3NlcnZpY2UtdWJ1bnR1LnNoCmRpZmYgLS1naXQgYS9kaXN0cmliL2FkZC1pbmRleGVkLWJyYW5jaC5jbWQgYi9zcmMvbWFpbi9kaXN0cmliL3dpbi9hZGQtaW5kZXhlZC1icmFuY2guY21kCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2FkZC1pbmRleGVkLWJyYW5jaC5jbWQKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvd2luL2FkZC1pbmRleGVkLWJyYW5jaC5jbWQKZGlmZiAtLWdpdCBhL2Rpc3RyaWIvYW1kNjQvZ2l0YmxpdC5leGUgYi9zcmMvbWFpbi9kaXN0cmliL3dpbi9hbWQ2NC9naXRibGl0LmV4ZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi9hbWQ2NC9naXRibGl0LmV4ZQpyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi93aW4vYW1kNjQvZ2l0YmxpdC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL21haW4vZGlzdHJpYi93aW4vYXV0aG9yaXR5LmNtZCBiL3NyYy9tYWluL2Rpc3RyaWIvd2luL2F1dGhvcml0eS5jbWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhMTg2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9tYWluL2Rpc3RyaWIvd2luL2F1dGhvcml0eS5jbWQKQEAgLTAsMCArMSBAQAorQGphdmEgLWNwIGdpdGJsaXQuamFyIGNvbS5naXRibGl0LmF1dGhvcml0eS5MYXVuY2hlciAtLWJhc2VGb2xkZXIgZGF0YSAlKg0KZGlmZiAtLWdpdCBhL2Rpc3RyaWIvZ2l0YmxpdC1zdG9wLmNtZCBiL3NyYy9tYWluL2Rpc3RyaWIvd2luL2dpdGJsaXQtc3RvcC5jbWQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ2l0YmxpdC1zdG9wLmNtZApyZW5hbWUgdG8gc3JjL21haW4vZGlzdHJpYi93aW4vZ2l0YmxpdC1zdG9wLmNtZApkaWZmIC0tZ2l0IGEvZGlzdHJpYi9naXRibGl0LmNtZCBiL3NyYy9tYWluL2Rpc3RyaWIvd2luL2dpdGJsaXQuY21kCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL2dpdGJsaXQuY21kCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL3dpbi9naXRibGl0LmNtZApkaWZmIC0tZ2l0IGEvZGlzdHJpYi9naXRibGl0dy5leGUgYi9zcmMvbWFpbi9kaXN0cmliL3dpbi9naXRibGl0dy5leGUKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvZ2l0YmxpdHcuZXhlCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL3dpbi9naXRibGl0dy5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9pYTY0L2dpdGJsaXQuZXhlIGIvc3JjL21haW4vZGlzdHJpYi93aW4vaWE2NC9naXRibGl0LmV4ZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi9pYTY0L2dpdGJsaXQuZXhlCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL3dpbi9pYTY0L2dpdGJsaXQuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2Rpc3RyaWIvaW5zdGFsbFNlcnZpY2UuY21kIGIvc3JjL21haW4vZGlzdHJpYi93aW4vaW5zdGFsbFNlcnZpY2UuY21kCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIGRpc3RyaWIvaW5zdGFsbFNlcnZpY2UuY21kCnJlbmFtZSB0byBzcmMvbWFpbi9kaXN0cmliL3dpbi9pbnN0YWxsU2VydmljZS5jbWQKaW5kZXggZDI1NGQ2Ny4uYTY4NGFiMiAxMDA2NDQKLS0tIGEvZGlzdHJpYi9pbnN0YWxsU2VydmljZS5jbWQKKysrIGIvc3JjL21haW4vZGlzdHJpYi93aW4vaW5zdGFsbFNlcnZpY2UuY21kCkBAIC0yMywxMiArMjMsMTIgQEAKIAkJIC0tU3RkT3V0cHV0PWF1dG8gXg0KIAkJIC0tU3RkRXJyb3I9YXV0byBeDQogCQkgLS1TdGFydFBhdGg9IiVDRCUiIF4NCi0JCSAtLVN0YXJ0Q2xhc3M9Y29tLmdpdGJsaXQuTGF1bmNoZXIgXg0KKwkJIC0tU3RhcnRDbGFzcz1vcmcubW94aWUuTXhMYXVuY2hlciBeDQogCQkgLS1TdGFydE1ldGhvZD1tYWluIF4NCiAJCSAtLVN0YXJ0UGFyYW1zPSItLXN0b3JlUGFzc3dvcmQ7Z2l0YmxpdDstLWJhc2VGb2xkZXI7JUNEJVxkYXRhIiBeDQogCQkgLS1TdGFydE1vZGU9anZtIF4NCiAJCSAtLVN0b3BQYXRoPSIlQ0QlIiBeDQotCQkgLS1TdG9wQ2xhc3M9Y29tLmdpdGJsaXQuTGF1bmNoZXIgXg0KKwkJIC0tU3RvcENsYXNzPW9yZy5tb3hpZS5NeExhdW5jaGVyIF4NCiAJCSAtLVN0b3BNZXRob2Q9bWFpbiBeDQogCQkgLS1TdG9wUGFyYW1zPSItLXN0b3A7LS1iYXNlRm9sZGVyOyVDRCVcZGF0YSIgXg0KIAkJIC0tU3RvcE1vZGU9anZtIF4NCmRpZmYgLS1naXQgYS9kaXN0cmliL3VuaW5zdGFsbFNlcnZpY2UuY21kIGIvc3JjL21haW4vZGlzdHJpYi93aW4vdW5pbnN0YWxsU2VydmljZS5jbWQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRpc3RyaWIvdW5pbnN0YWxsU2VydmljZS5jbWQKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvd2luL3VuaW5zdGFsbFNlcnZpY2UuY21kCmRpZmYgLS1naXQgYS9kaXN0cmliL3g4Ni9naXRibGl0LmV4ZSBiL3NyYy9tYWluL2Rpc3RyaWIvd2luL3g4Ni9naXRibGl0LmV4ZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZGlzdHJpYi94ODYvZ2l0YmxpdC5leGUKcmVuYW1lIHRvIHNyYy9tYWluL2Rpc3RyaWIvd2luL3g4Ni9naXRibGl0LmV4ZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9zcmMvV0VCLUlORi93ZWIueG1sIGIvc3JjL21haW4vamF2YS9XRUItSU5GL3dlYi54bWwKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gc3JjL1dFQi1JTkYvd2ViLnhtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9XRUItSU5GL3dlYi54bWwKaW5kZXggYmRjODgyYS4uYTk0MzY4OCAxMDA2NDQKLS0tIGEvc3JjL1dFQi1JTkYvd2ViLnhtbAorKysgYi9zcmMvbWFpbi9qYXZhL1dFQi1JTkYvd2ViLnhtbApAQCAtMjE0LDYgKzIxNCwxNSBAQAogCQk8ZmlsdGVyLW5hbWU+UGFnZXNGaWx0ZXI8L2ZpbHRlci1uYW1lPg0KIAkJPHVybC1wYXR0ZXJuPi9wYWdlcy8qPC91cmwtcGF0dGVybj4NCiAJPC9maWx0ZXItbWFwcGluZz4NCisJDQorCTxmaWx0ZXI+DQorCQk8ZmlsdGVyLW5hbWU+RW5mb3JjZUF1dGhlbnRpY2F0aW9uRmlsdGVyPC9maWx0ZXItbmFtZT4NCisJCTxmaWx0ZXItY2xhc3M+Y29tLmdpdGJsaXQuRW5mb3JjZUF1dGhlbnRpY2F0aW9uRmlsdGVyPC9maWx0ZXItY2xhc3M+DQorCTwvZmlsdGVyPg0KKwk8ZmlsdGVyLW1hcHBpbmc+DQorICAgICAgICA8ZmlsdGVyLW5hbWU+RW5mb3JjZUF1dGhlbnRpY2F0aW9uRmlsdGVyPC9maWx0ZXItbmFtZT4NCisgICAgICAgIDx1cmwtcGF0dGVybj4vKjwvdXJsLXBhdHRlcm4+DQorICAgIDwvZmlsdGVyLW1hcHBpbmc+DQogDQogDQogCTwhLS0gV2lja2V0IEZpbHRlciAtLT4NCmRpZmYgLS1naXQgYS9zcmMvbWFpbi9qYXZhL1dFQi1JTkYvd2VibG9naWMueG1sIGIvc3JjL21haW4vamF2YS9XRUItSU5GL3dlYmxvZ2ljLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDA4MTExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21haW4vamF2YS9XRUItSU5GL3dlYmxvZ2ljLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHdsczp3ZWJsb2dpYy13ZWItYXBwIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOndscz0iaHR0cDovL3d3dy5iZWEuY29tL25zL3dlYmxvZ2ljLzkwIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL2oyZWUgaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvajJlZS93ZWItYXBwXzJfNC54c2QgaHR0cDovL3d3dy5iZWEuY29tL25zL3dlYmxvZ2ljLzkwIGh0dHA6Ly93d3cuYmVhLmNvbS9ucy93ZWJsb2dpYy85MC93ZWJsb2dpYy13ZWItYXBwLnhzZCI+DQorICAgIDx3bHM6d2VibG9naWMtdmVyc2lvbj4xMi4xLjE8L3dsczp3ZWJsb2dpYy12ZXJzaW9uPg0KKyAgICA8d2xzOmNvbnRleHQtcm9vdD5naXRibGl0PC93bHM6Y29udGV4dC1yb290Pg0KKyAgICA8d2xzOmNvbnRhaW5lci1kZXNjcmlwdG9yPg0KKyAgICAgICAgIDx3bHM6c2hvdy1hcmNoaXZlZC1yZWFsLXBhdGgtZW5hYmxlZD50cnVlPC93bHM6c2hvdy1hcmNoaXZlZC1yZWFsLXBhdGgtZW5hYmxlZD4NCisgICAgICAgICA8d2xzOnByZWZlci13ZWItaW5mLWNsYXNzZXM+dHJ1ZTwvd2xzOnByZWZlci13ZWItaW5mLWNsYXNzZXM+DQorICAgIDwvd2xzOmNvbnRhaW5lci1kZXNjcmlwdG9yPg0KKzwvd2xzOndlYmxvZ2ljLXdlYi1hcHA+IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC8uZ2l0aWdub3JlIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC8uZ2l0aWdub3JlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvLmdpdGlnbm9yZQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC8uZ2l0aWdub3JlCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvQWNjZXNzUmVzdHJpY3Rpb25GaWx0ZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQWNjZXNzUmVzdHJpY3Rpb25GaWx0ZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0FjY2Vzc1Jlc3RyaWN0aW9uRmlsdGVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQWNjZXNzUmVzdHJpY3Rpb25GaWx0ZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0FkZEluZGV4ZWRCcmFuY2guamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQWRkSW5kZXhlZEJyYW5jaC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvQWRkSW5kZXhlZEJyYW5jaC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0FkZEluZGV4ZWRCcmFuY2guamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0F1dGhlbnRpY2F0aW9uRmlsdGVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0F1dGhlbnRpY2F0aW9uRmlsdGVyLmphdmEKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0F1dGhlbnRpY2F0aW9uRmlsdGVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQXV0aGVudGljYXRpb25GaWx0ZXIuamF2YQppbmRleCBlYjZlOTViLi41MzE5YmYzIDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvQXV0aGVudGljYXRpb25GaWx0ZXIuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0F1dGhlbnRpY2F0aW9uRmlsdGVyLmphdmEKQEAgLTI4LDYgKzI4LDcgQEAKIGltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0Ow0KIGltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXNwb25zZTsNCiBpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsNCitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdFdyYXBwZXI7DQogaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOw0KIGltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlc3Npb247DQogDQpAQCAtMTA1LDcgKzEwNiw2IEBACiAJLyoqDQogCSAqIFRha2VuIGZyb20gSmV0dHkncyBMb2dpbkF1dGhlbnRpY2F0b3IucmVuZXdTZXNzaW9uT25BdXRoZW50aWNhdGlvbigpDQogCSAqLw0KLQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikNCiAJcHJvdGVjdGVkIHZvaWQgbmV3U2Vzc2lvbihIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSkgew0KIAkJSHR0cFNlc3Npb24gb2xkU2Vzc2lvbiA9IHJlcXVlc3QuZ2V0U2Vzc2lvbihmYWxzZSk7DQogCQlpZiAob2xkU2Vzc2lvbiAhPSBudWxsICYmIG9sZFNlc3Npb24uZ2V0QXR0cmlidXRlKFNFU1NJT05fU0VDVVJFRCkgPT0gbnVsbCkgew0KQEAgLTE0NSw3ICsxNDUsNyBAQAogCS8qKg0KIAkgKiBXcmFwcyBhIHN0YW5kYXJkIEh0dHBTZXJ2bGV0UmVxdWVzdCBhbmQgb3ZlcnJpZGVzIHVzZXIgcHJpbmNpcGFsIG1ldGhvZHMuDQogCSAqLw0KLQlwdWJsaWMgc3RhdGljIGNsYXNzIEF1dGhlbnRpY2F0ZWRSZXF1ZXN0IGV4dGVuZHMgU2VydmxldFJlcXVlc3RXcmFwcGVyIHsNCisJcHVibGljIHN0YXRpYyBjbGFzcyBBdXRoZW50aWNhdGVkUmVxdWVzdCBleHRlbmRzIEh0dHBTZXJ2bGV0UmVxdWVzdFdyYXBwZXIgew0KIA0KIAkJcHJpdmF0ZSBVc2VyTW9kZWwgdXNlcjsNCiANCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvQ29uZmlnVXNlclNlcnZpY2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQ29uZmlnVXNlclNlcnZpY2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0NvbmZpZ1VzZXJTZXJ2aWNlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQ29uZmlnVXNlclNlcnZpY2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0NvbnN0YW50cy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9Db25zdGFudHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvQ29uc3RhbnRzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQ29uc3RhbnRzLmphdmEKaW5kZXggYmNjYThjNy4uNzY2M2Y4YiAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L0NvbnN0YW50cy5qYXZhCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvQ29uc3RhbnRzLmphdmEKQEAgLTE4LDcgKzE4LDkgQEAKIGltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Eb2N1bWVudGVkOw0KIGltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb247DQogaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeTsNCi0NCitpbXBvcnQgamF2YS5uZXQuVVJMOw0KK2ltcG9ydCBqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXM7DQoraW1wb3J0IGphdmEudXRpbC5qYXIuTWFuaWZlc3Q7DQogDQogLyoqDQogICogQ29uc3RhbnQgdmFsdWVzIHVzZWQgYnkgR2l0YmxpdC4NCkBAIC0zMiwxOCArMzQsNiBAQAogDQogCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZVTExfTkFNRSA9ICJHaXRibGl0IC0gYSBwdXJlIEphdmEgR2l0IHNvbHV0aW9uIjsNCiANCi0JLy8gVGhlIGJ1aWxkIHNjcmlwdCBleHRyYWN0cyB0aGlzIGV4YWN0IGxpbmUgc28gYmUgY2FyZWZ1bCBlZGl0aW5nIGl0DQotCS8vIGFuZCBvbmx5IHVzZSBBLVogYS16IDAtOSAuLV8gaW4gdGhlIHN0cmluZy4NCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVkVSU0lPTiA9ICIxLjMuMC1TTkFQU0hPVCI7DQotDQotCS8vIFRoZSBidWlsZCBzY3JpcHQgZXh0cmFjdHMgdGhpcyBleGFjdCBsaW5lIHNvIGJlIGNhcmVmdWwgZWRpdGluZyBpdA0KLQkvLyBhbmQgb25seSB1c2UgQS1aIGEteiAwLTkgLi1fIGluIHRoZSBzdHJpbmcuDQotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFZFUlNJT05fREFURSA9ICJQRU5ESU5HIjsNCi0NCi0JLy8gVGhlIGJ1aWxkIHNjcmlwdCBleHRyYWN0cyB0aGlzIGV4YWN0IGxpbmUgc28gYmUgY2FyZWZ1bCBlZGl0aW5nIGl0DQotCS8vIGFuZCBvbmx5IHVzZSBBLVogYS16IDAtOSAuLV8gaW4gdGhlIHN0cmluZy4NCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSkdJVF9WRVJTSU9OID0gIkpHaXQgMi4yLjAgKDIwMTIxMjE5MTg1MC1yKSI7DQotDQogCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFETUlOX1JPTEUgPSAiI2FkbWluIjsNCiAJDQogCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPUktfUk9MRSA9ICIjZm9yayI7DQpAQCAtOTUsOSArODUsNDAgQEAKIAlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBiYXNlRm9sZGVyJCA9ICIkeyIgKyBiYXNlRm9sZGVyICsgIn0iOw0KIAkNCiAJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29udGV4dEZvbGRlciQgPSAiJHtjb250ZXh0Rm9sZGVyfSI7DQotCQ0KKw0KKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRWZXJzaW9uKCkgew0KKwkJU3RyaW5nIHYgPSBDb25zdGFudHMuY2xhc3MuZ2V0UGFja2FnZSgpLmdldEltcGxlbWVudGF0aW9uVmVyc2lvbigpOw0KKwkJaWYgKHYgPT0gbnVsbCkgew0KKwkJCXJldHVybiAiMC4wLjAtU05BUFNIT1QiOw0KKwkJfQ0KKwkJcmV0dXJuIHY7DQorCX0NCisNCiAJcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0R2l0QmxpdFZlcnNpb24oKSB7DQotCQlyZXR1cm4gTkFNRSArICIgdiIgKyBWRVJTSU9OOw0KKwkJcmV0dXJuIE5BTUUgKyAiIHYiICsgZ2V0VmVyc2lvbigpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRCdWlsZERhdGUoKSB7DQorCQlyZXR1cm4gZ2V0TWFuaWZlc3RWYWx1ZSgiYnVpbGQtZGF0ZSIsICJQRU5ESU5HIik7DQorCX0NCisJDQorCXByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRNYW5pZmVzdFZhbHVlKFN0cmluZyBhdHRyaWIsIFN0cmluZyBkZWZhdWx0VmFsdWUpIHsNCisJCUNsYXNzPD8+IGNsYXp6ID0gQ29uc3RhbnRzLmNsYXNzOw0KKwkJU3RyaW5nIGNsYXNzTmFtZSA9IGNsYXp6LmdldFNpbXBsZU5hbWUoKSArICIuY2xhc3MiOw0KKwkJU3RyaW5nIGNsYXNzUGF0aCA9IGNsYXp6LmdldFJlc291cmNlKGNsYXNzTmFtZSkudG9TdHJpbmcoKTsNCisJCWlmICghY2xhc3NQYXRoLnN0YXJ0c1dpdGgoImphciIpKSB7DQorCQkJLy8gQ2xhc3Mgbm90IGZyb20gSkFSDQorCQkJcmV0dXJuIGRlZmF1bHRWYWx1ZTsNCisJCX0NCisJCXRyeSB7DQorCQkJU3RyaW5nIG1hbmlmZXN0UGF0aCA9IGNsYXNzUGF0aC5zdWJzdHJpbmcoMCwgY2xhc3NQYXRoLmxhc3RJbmRleE9mKCIhIikgKyAxKSArICIvTUVUQS1JTkYvTUFOSUZFU1QuTUYiOw0KKwkJCU1hbmlmZXN0IG1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0KG5ldyBVUkwobWFuaWZlc3RQYXRoKS5vcGVuU3RyZWFtKCkpOw0KKwkJCUF0dHJpYnV0ZXMgYXR0ciA9IG1hbmlmZXN0LmdldE1haW5BdHRyaWJ1dGVzKCk7DQorCQkJU3RyaW5nIHZhbHVlID0gYXR0ci5nZXRWYWx1ZShhdHRyaWIpOw0KKwkJCXJldHVybiB2YWx1ZTsNCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQl9DQorCQlyZXR1cm4gZGVmYXVsdFZhbHVlOw0KIAl9DQogCQ0KIAkvKioNCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvRG93bmxvYWRaaXBGaWx0ZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRG93bmxvYWRaaXBGaWx0ZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0Rvd25sb2FkWmlwRmlsdGVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRG93bmxvYWRaaXBGaWx0ZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0Rvd25sb2FkWmlwU2VydmxldC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9Eb3dubG9hZFppcFNlcnZsZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvRG93bmxvYWRaaXBTZXJ2bGV0LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRG93bmxvYWRaaXBTZXJ2bGV0LmphdmEKaW5kZXggMGZlZWU4Ny4uOGE0YTcxMCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L0Rvd25sb2FkWmlwU2VydmxldC5qYXZhCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRG93bmxvYWRaaXBTZXJ2bGV0LmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIHBhY2thZ2UgY29tLmdpdGJsaXQ7DQogDQogaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEubmV0LlNvY2tldEV4Y2VwdGlvbjsNCiBpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQogaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsNCiBpbXBvcnQgamF2YS51dGlsLkRhdGU7DQpAQCAtMTc2LDYgKzE3NywxMyBAQAogCQkJCX0NCiAJCQkJDQogCQkJCXJlc3BvbnNlLmZsdXNoQnVmZmVyKCk7DQorCQkJfSBjYXRjaCAoU29ja2V0RXhjZXB0aW9uIHQpIHsNCisJCQkJU3RyaW5nIG1lc3NhZ2UgPSB0LmdldE1lc3NhZ2UoKSA9PSBudWxsID8gIiIgOiB0LmdldE1lc3NhZ2UoKS50b0xvd2VyQ2FzZSgpOw0KKwkJCQlpZiAobWVzc2FnZS5jb250YWlucygicmVzZXQiKSB8fCBtZXNzYWdlLmNvbnRhaW5zKCJicm9rZW4gcGlwZSIpKSB7DQorCQkJCQlsb2dnZXIuZXJyb3IoIkNsaWVudCBhYm9ydGVkIHppcCBkb3dubG9hZDogIiArIG1lc3NhZ2UpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gd3JpdGUgYXR0YWNobWVudCB0byBjbGllbnQiLCB0KTsJDQorCQkJCX0NCiAJCQl9IGNhdGNoIChUaHJvd2FibGUgdCkgew0KIAkJCQlsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byB3cml0ZSBhdHRhY2htZW50IHRvIGNsaWVudCIsIHQpOw0KIAkJCX0NCmRpZmYgLS1naXQgYS9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0VuZm9yY2VBdXRoZW50aWNhdGlvbkZpbHRlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9FbmZvcmNlQXV0aGVudGljYXRpb25GaWx0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTE3OTk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9FbmZvcmNlQXV0aGVudGljYXRpb25GaWx0ZXIuamF2YQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEzIExhdXJlbnMgVnJpam5zZW4KKyAqIENvcHlyaWdodCAyMDEzIGdpdGJsaXQuY29tLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovcGFja2FnZSBjb20uZ2l0YmxpdDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7CisKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LkZpbHRlcjsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LkZpbHRlckNoYWluOworaW1wb3J0IGphdmF4LnNlcnZsZXQuRmlsdGVyQ29uZmlnOworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZXF1ZXN0OworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlOworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OworCitpbXBvcnQgY29tLmdpdGJsaXQubW9kZWxzLlVzZXJNb2RlbDsKKworLyoqCisgKiBUaGlzIGZpbHRlciBlbmZvcmNlcyBhdXRoZW50aWNhdGlvbiB2aWEgSFRUUCBCYXNpYyBBdXRoZW50aWNhdGlvbiwgaWYgdGhlIHNldHRpbmdzIGluZGljYXRlIHNvLgorICogSXQgbG9va3MgYXQgdGhlIHNldHRpbmdzICJ3ZWIuYXV0aGVudGljYXRlVmlld1BhZ2VzIiBhbmQgIndlYi5lbmZvcmNlSHR0cEJhc2ljQXV0aGVudGljYXRpb24iOyBpZgorICogYm90aCBhcmUgdHJ1ZSwgYW55IHVuYXV0aG9yaXplZCBhY2Nlc3Mgd2lsbCBiZSBtZXQgd2l0aCBhIEhUVFAgQmFzaWMgQXV0aGVudGljYXRpb24gaGVhZGVyLgorICoKKyAqIEBhdXRob3IgTGF1cmVucyBWcmlqbnNlbgorICoKKyAqLworcHVibGljIGNsYXNzIEVuZm9yY2VBdXRoZW50aWNhdGlvbkZpbHRlciBpbXBsZW1lbnRzIEZpbHRlciB7CisJCisJcHJvdGVjdGVkIHRyYW5zaWVudCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoZ2V0Q2xhc3MoKSk7CisKKwkvKiAKKwkgKiBAc2VlIGphdmF4LnNlcnZsZXQuRmlsdGVyI2luaXQoamF2YXguc2VydmxldC5GaWx0ZXJDb25maWcpCisJICovCisJQE92ZXJyaWRlCisJcHVibGljIHZvaWQgaW5pdChGaWx0ZXJDb25maWcgZmlsdGVyQ29uZmlnKSB0aHJvd3MgU2VydmxldEV4Y2VwdGlvbiB7CisJCS8vIG5vdGhpbmcgdG8gYmUgZG9uZQorCisJfSAvL2luaXQKKwkKKworCS8qIAorCSAqIFRoaXMgZG9lcyB0aGUgYWN0dWFsIGZpbHRlcmluZzogaXMgdGhlIHVzZXIgYXV0aGVudGljYXRlZD8gSWYgbm90LCBlbmZvcmNlIEhUVFAgYXV0aGVudGljYXRpb24gKDQwMSkKKwkgKiAKKwkgKiBAc2VlIGphdmF4LnNlcnZsZXQuRmlsdGVyI2RvRmlsdGVyKGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3QsIGphdmF4LnNlcnZsZXQuU2VydmxldFJlc3BvbnNlLCBqYXZheC5zZXJ2bGV0LkZpbHRlckNoYWluKQorCSAqLworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGRvRmlsdGVyKFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsIFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSwgRmlsdGVyQ2hhaW4gY2hhaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwgU2VydmxldEV4Y2VwdGlvbiB7CisJCQorCQkvKgorCQkgKiBEZXRlcm1pbmUgd2hldGhlciB0byBlbmZvcmNlIHRoZSBCQVNJQyBhdXRoZW50aWNhdGlvbjoKKwkJICovCisJCUBTdXBwcmVzc1dhcm5pbmdzKCJzdGF0aWMtYWNjZXNzIikKKwkJQm9vbGVhbiBtdXN0Rm9yY2VBdXRoID0gR2l0QmxpdC5zZWxmKCkuZ2V0Qm9vbGVhbihLZXlzLndlYi5hdXRoZW50aWNhdGVWaWV3UGFnZXMsIGZhbHNlKQorCQkJCQkJCQkmJiBHaXRCbGl0LnNlbGYoKS5nZXRCb29sZWFuKEtleXMud2ViLmVuZm9yY2VIdHRwQmFzaWNBdXRoZW50aWNhdGlvbiwgZmFsc2UpOworCQkKKwkJSHR0cFNlcnZsZXRSZXF1ZXN0ICBIdHRwUmVxdWVzdCAgPSAoSHR0cFNlcnZsZXRSZXF1ZXN0KXJlcXVlc3Q7CisJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgSHR0cFJlc3BvbnNlID0gKEh0dHBTZXJ2bGV0UmVzcG9uc2UpcmVzcG9uc2U7IAorCQlVc2VyTW9kZWwgdXNlciA9IEdpdEJsaXQuc2VsZigpLmF1dGhlbnRpY2F0ZShIdHRwUmVxdWVzdCk7CisJCQorCQlpZiAobXVzdEZvcmNlQXV0aCAmJiAodXNlciA9PSBudWxsKSkgeworCQkJLy8gbm90IGF1dGhlbnRpY2F0ZWQsIGVuZm9yY2Ugbm93OgorCQkJbG9nZ2VyLmRlYnVnKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJFbmZvcmNlQXV0aEZpbHRlcjogdXNlciBub3QgYXV0aGVudGljYXRlZCBmb3IgVVJMIHswfSEiLCByZXF1ZXN0LnRvU3RyaW5nKCkpKTsKKwkJCUBTdXBwcmVzc1dhcm5pbmdzKCJzdGF0aWMtYWNjZXNzIikKKwkJCVN0cmluZyBDSEFMTEVOR0UgPSBNZXNzYWdlRm9ybWF0LmZvcm1hdCgiQmFzaWMgcmVhbG09XCJ7MH1cIiIsIEdpdEJsaXQuc2VsZigpLmdldFN0cmluZygid2ViLnNpdGVOYW1lIiwiIikpOworCQkJSHR0cFJlc3BvbnNlLnNldEhlYWRlcigiV1dXLUF1dGhlbnRpY2F0ZSIsIENIQUxMRU5HRSk7CisJCQlIdHRwUmVzcG9uc2Uuc2VuZEVycm9yKEh0dHBTZXJ2bGV0UmVzcG9uc2UuU0NfVU5BVVRIT1JJWkVEKTsKKwkJCXJldHVybjsKKworCQl9IGVsc2UgeworCQkJLy8gdXNlciBpcyBhdXRoZW50aWNhdGVkLCBvciBkb24ndCBjYXJlLCBjb250aW51ZSBoYW5kbGluZworCQkJY2hhaW4uZG9GaWx0ZXIoIHJlcXVlc3QsIHJlc3BvbnNlICk7CisJCQkKKwkJfSAvLyBhdXRoZW50aWNhdGVkCisJfSAvLyBkb0ZpbHRlcgorCisJCisJLyogCisJICogQHNlZSBqYXZheC5zZXJ2bGV0LkZpbHRlciNkZXN0cm95KCkKKwkgKi8KKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCBkZXN0cm95KCkgeworCQkvLyBOb3RoaW5nIHRvIGJlIGRvbmUKKworCX0gLy8gZGVzdHJveQorCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvRmVkZXJhdGlvbkNsaWVudC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uQ2xpZW50LmphdmEKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0ZlZGVyYXRpb25DbGllbnQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uQ2xpZW50LmphdmEKaW5kZXggZjY2NjEzOS4uZDM0YWFkYiAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L0ZlZGVyYXRpb25DbGllbnQuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0ZlZGVyYXRpb25DbGllbnQuamF2YQpAQCAtNDQsNyArNDQsMTYgQEAKIAkJCXVzYWdlKGpjLCB0KTsNCiAJCX0NCiANCi0JCUlTdG9yZWRTZXR0aW5ncyBzZXR0aW5ncyA9IG5ldyBGaWxlU2V0dGluZ3MocGFyYW1zLnJlZ2lzdHJhdGlvbnNGaWxlKTsNCisJCVN5c3RlbS5vdXQucHJpbnRsbigiR2l0YmxpdCBGZWRlcmF0aW9uIENsaWVudCB2IiArIENvbnN0YW50cy5nZXRWZXJzaW9uKCkgKyAiICgiICsgQ29uc3RhbnRzLmdldEJ1aWxkRGF0ZSgpICsgIikiKTsNCisNCisJCS8vIGNvbW1hbmQtbGluZSBzcGVjaWZpZWQgYmFzZSBmb2xkZXINCisJCUZpbGUgYmFzZUZvbGRlciA9IG5ldyBGaWxlKFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci5kaXIiKSk7DQorCQlpZiAoIVN0cmluZ1V0aWxzLmlzRW1wdHkocGFyYW1zLmJhc2VGb2xkZXIpKSB7DQorCQkJYmFzZUZvbGRlciA9IG5ldyBGaWxlKHBhcmFtcy5iYXNlRm9sZGVyKTsNCisJCX0NCisNCisJCUZpbGUgcmVnRmlsZSA9IGNvbS5naXRibGl0LnV0aWxzLkZpbGVVdGlscy5yZXNvbHZlUGFyYW1ldGVyKENvbnN0YW50cy5iYXNlRm9sZGVyJCwgYmFzZUZvbGRlciwgcGFyYW1zLnJlZ2lzdHJhdGlvbnNGaWxlKTsNCisJCUlTdG9yZWRTZXR0aW5ncyBzZXR0aW5ncyA9IG5ldyBGaWxlU2V0dGluZ3MocmVnRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSk7DQogCQlMaXN0PEZlZGVyYXRpb25Nb2RlbD4gcmVnaXN0cmF0aW9ucyA9IG5ldyBBcnJheUxpc3Q8RmVkZXJhdGlvbk1vZGVsPigpOw0KIAkJaWYgKFN0cmluZ1V0aWxzLmlzRW1wdHkocGFyYW1zLnVybCkpIHsNCiAJCQlyZWdpc3RyYXRpb25zLmFkZEFsbChGZWRlcmF0aW9uVXRpbHMuZ2V0RmVkZXJhdGlvblJlZ2lzdHJhdGlvbnMoc2V0dGluZ3MpKTsNCkBAIC02Nyw4ICs3Niw2IEBACiAJCQlTeXN0ZW0uZXhpdCgwKTsNCiAJCX0NCiAJCQ0KLQkJU3lzdGVtLm91dC5wcmludGxuKCJHaXRibGl0IEZlZGVyYXRpb24gQ2xpZW50IHYiICsgQ29uc3RhbnRzLlZFUlNJT04gKyAiICgiICsgQ29uc3RhbnRzLlZFUlNJT05fREFURSArICIpIik7DQotDQogCQkvLyBjb21tYW5kLWxpbmUgc3BlY2lmaWVkIHJlcG9zaXRvcmllcyBmb2xkZXINCiAJCWlmICghU3RyaW5nVXRpbHMuaXNFbXB0eShwYXJhbXMucmVwb3NpdG9yaWVzRm9sZGVyKSkgew0KIAkJCXNldHRpbmdzLm92ZXJyaWRlU2V0dGluZyhLZXlzLmdpdC5yZXBvc2l0b3JpZXNGb2xkZXIsIG5ldyBGaWxlKA0KQEAgLTc2LDcgKzgzLDcgQEAKIAkJfQ0KIA0KIAkJLy8gY29uZmlndXJlIHRoZSBHaXRibGl0IHNpbmdsZXRvbiBmb3IgbWluaW1hbCwgbm9uLXNlcnZlciBvcGVyYXRpb24NCi0JCUdpdEJsaXQuc2VsZigpLmNvbmZpZ3VyZUNvbnRleHQoc2V0dGluZ3MsIG51bGwsIGZhbHNlKTsNCisJCUdpdEJsaXQuc2VsZigpLmNvbmZpZ3VyZUNvbnRleHQoc2V0dGluZ3MsIGJhc2VGb2xkZXIsIGZhbHNlKTsNCiAJCUZlZGVyYXRpb25QdWxsRXhlY3V0b3IgZXhlY3V0b3IgPSBuZXcgRmVkZXJhdGlvblB1bGxFeGVjdXRvcihyZWdpc3RyYXRpb25zLCBwYXJhbXMuaXNEYWVtb24pOw0KIAkJZXhlY3V0b3IucnVuKCk7DQogCQlpZiAoIXBhcmFtcy5pc0RhZW1vbikgew0KQEAgLTEwNiw3ICsxMTMsNyBAQAogCXByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFtcyB7DQogDQogCQlAUGFyYW1ldGVyKG5hbWVzID0geyAiLS1yZWdpc3RyYXRpb25zIiB9LCBkZXNjcmlwdGlvbiA9ICJHaXRibGl0IEZlZGVyYXRpb24gUmVnaXN0cmF0aW9ucyBGaWxlIiwgcmVxdWlyZWQgPSBmYWxzZSkNCi0JCXB1YmxpYyBTdHJpbmcgcmVnaXN0cmF0aW9uc0ZpbGUgPSAiZmVkZXJhdGlvbi5wcm9wZXJ0aWVzIjsNCisJCXB1YmxpYyBTdHJpbmcgcmVnaXN0cmF0aW9uc0ZpbGUgPSAiJHtiYXNlRm9sZGVyfS9mZWRlcmF0aW9uLnByb3BlcnRpZXMiOw0KIA0KIAkJQFBhcmFtZXRlcihuYW1lcyA9IHsgIi0tZGFlbW9uIiB9LCBkZXNjcmlwdGlvbiA9ICJSdW5zIGluIGRhZW1vbiBtb2RlIHRvIHNjaGVkdWxlIGFuZCBwdWxsIHJlcG9zaXRvcmllcyIsIHJlcXVpcmVkID0gZmFsc2UpDQogCQlwdWJsaWMgYm9vbGVhbiBpc0RhZW1vbjsNCkBAIC0xMjYsNiArMTMzLDkgQEAKIAkJQFBhcmFtZXRlcihuYW1lcyA9IHsgIi0tZnJlcXVlbmN5IiB9LCBkZXNjcmlwdGlvbiA9ICJQZXJpb2QgdG8gd2FpdCBiZXR3ZWVuIHB1bGwgYXR0ZW1wdHMgKHJlcXVpcmVzIC0tZGFlbW9uKSIsIHJlcXVpcmVkID0gZmFsc2UpDQogCQlwdWJsaWMgU3RyaW5nIGZyZXF1ZW5jeSA9ICI2MCBtaW5zIjsNCiANCisJCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLWJhc2VGb2xkZXIiIH0sIGRlc2NyaXB0aW9uID0gIkJhc2UgZm9sZGVyIGZvciByZWNlaXZlZCBkYXRhIiwgcmVxdWlyZWQgPSBmYWxzZSkNCisJCXB1YmxpYyBTdHJpbmcgYmFzZUZvbGRlcjsNCisNCiAJCUBQYXJhbWV0ZXIobmFtZXMgPSB7ICItLXJlcG9zaXRvcmllc0ZvbGRlciIgfSwgZGVzY3JpcHRpb24gPSAiRGVzdGluYXRpb24gZm9sZGVyIGZvciBjbG9uZWQgcmVwb3NpdG9yaWVzIiwgcmVxdWlyZWQgPSBmYWxzZSkNCiAJCXB1YmxpYyBTdHJpbmcgcmVwb3NpdG9yaWVzRm9sZGVyOw0KIA0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uUHVsbEV4ZWN1dG9yLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0ZlZGVyYXRpb25QdWxsRXhlY3V0b3IuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvRmVkZXJhdGlvblB1bGxFeGVjdXRvci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0ZlZGVyYXRpb25QdWxsRXhlY3V0b3IuamF2YQppbmRleCBhZDEwMjJjLi4yNWNkMzJhIDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvRmVkZXJhdGlvblB1bGxFeGVjdXRvci5qYXZhCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRmVkZXJhdGlvblB1bGxFeGVjdXRvci5qYXZhCkBAIC0xNTMsNyArMTUzLDcgQEAKIAkJCQkJCQljLCByZWdpc3RyYXRpb25Gb2xkZXIsIHJlZ2lzdHJhdGlvbi5uYW1lKSk7DQogCQkJcmV0dXJuOw0KIAkJfQ0KLQkJRmlsZSByZXBvc2l0b3JpZXNGb2xkZXIgPSBuZXcgRmlsZShHaXRCbGl0LmdldFN0cmluZyhLZXlzLmdpdC5yZXBvc2l0b3JpZXNGb2xkZXIsICJnaXQiKSk7DQorCQlGaWxlIHJlcG9zaXRvcmllc0ZvbGRlciA9IEdpdEJsaXQuZ2V0UmVwb3NpdG9yaWVzRm9sZGVyKCk7DQogCQlGaWxlIHJlZ2lzdHJhdGlvbkZvbGRlckZpbGUgPSBuZXcgRmlsZShyZXBvc2l0b3JpZXNGb2xkZXIsIHJlZ2lzdHJhdGlvbkZvbGRlcik7DQogCQlyZWdpc3RyYXRpb25Gb2xkZXJGaWxlLm1rZGlycygpOw0KIA0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uU2VydmxldC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uU2VydmxldC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvRmVkZXJhdGlvblNlcnZsZXQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9GZWRlcmF0aW9uU2VydmxldC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvRmlsZVNldHRpbmdzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0ZpbGVTZXR0aW5ncy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvRmlsZVNldHRpbmdzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRmlsZVNldHRpbmdzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9GaWxlVXNlclNlcnZpY2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvRmlsZVVzZXJTZXJ2aWNlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9GaWxlVXNlclNlcnZpY2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9GaWxlVXNlclNlcnZpY2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0dDRXhlY3V0b3IuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR0NFeGVjdXRvci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvR0NFeGVjdXRvci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0dDRXhlY3V0b3IuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0dpdEJsaXQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0QmxpdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9HaXRCbGl0LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0QmxpdC5qYXZhCmluZGV4IDNhYzhkMTcuLjZkNDRmNDYgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC9HaXRCbGl0LmphdmEKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9HaXRCbGl0LmphdmEKQEAgLTU0LDYgKzU0LDggQEAKIA0KIGltcG9ydCBqYXZheC5tYWlsLk1lc3NhZ2U7DQogaW1wb3J0IGphdmF4Lm1haWwuTWVzc2FnaW5nRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZheC5tYWlsLmludGVybmV0Lk1pbWVCb2R5UGFydDsNCitpbXBvcnQgamF2YXgubWFpbC5pbnRlcm5ldC5NaW1lTXVsdGlwYXJ0Ow0KIGltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb250ZXh0Ow0KIGltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb250ZXh0RXZlbnQ7DQogaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHRMaXN0ZW5lcjsNCkBAIC00NTIsMTIgKzQ1NCwxMyBAQAogCSAqIGFkdmVydGlzZSBhbHRlcm5hdGl2ZSB1cmxzIGZvciBHaXQgY2xpZW50IHJlcG9zaXRvcnkgYWNjZXNzLg0KIAkgKiANCiAJICogQHBhcmFtIHJlcG9zaXRvcnlOYW1lDQorCSAqIEBwYXJhbSB1c2VyTmFtZQ0KIAkgKiBAcmV0dXJuIGxpc3Qgb2Ygbm9uLWdpdGJsaXQgY2xvbmUgdXJscw0KIAkgKi8NCi0JcHVibGljIExpc3Q8U3RyaW5nPiBnZXRPdGhlckNsb25lVXJscyhTdHJpbmcgcmVwb3NpdG9yeU5hbWUpIHsNCisJcHVibGljIExpc3Q8U3RyaW5nPiBnZXRPdGhlckNsb25lVXJscyhTdHJpbmcgcmVwb3NpdG9yeU5hbWUsIFN0cmluZyB1c2VybmFtZSkgew0KIAkJTGlzdDxTdHJpbmc+IGNsb25lVXJscyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOw0KIAkJZm9yIChTdHJpbmcgdXJsIDogc2V0dGluZ3MuZ2V0U3RyaW5ncyhLZXlzLndlYi5vdGhlclVybHMpKSB7DQotCQkJY2xvbmVVcmxzLmFkZChNZXNzYWdlRm9ybWF0LmZvcm1hdCh1cmwsIHJlcG9zaXRvcnlOYW1lKSk7DQorCQkJY2xvbmVVcmxzLmFkZChNZXNzYWdlRm9ybWF0LmZvcm1hdCh1cmwsIHJlcG9zaXRvcnlOYW1lLCB1c2VybmFtZSkpOw0KIAkJfQ0KIAkJcmV0dXJuIGNsb25lVXJsczsNCiAJfQ0KQEAgLTYxMyw3ICs2MTYsNyBAQAogCQkJWDUwOU1ldGFkYXRhIG1ldGFkYXRhID0gSHR0cFV0aWxzLmdldENlcnRpZmljYXRlTWV0YWRhdGEoaHR0cFJlcXVlc3QpOw0KIAkJCWlmICh1c2VyICE9IG51bGwpIHsNCiAJCQkJZmxhZ1dpY2tldFNlc3Npb24oQXV0aGVudGljYXRpb25UeXBlLkNFUlRJRklDQVRFKTsNCi0JCQkJbG9nZ2VyLmluZm8oTWVzc2FnZUZvcm1hdC5mb3JtYXQoInswfSBhdXRoZW50aWNhdGVkIGJ5IGNsaWVudCBjZXJ0aWZpY2F0ZSB7MX0gZnJvbSB7Mn0iLA0KKwkJCQlsb2dnZXIuZGVidWcoTWVzc2FnZUZvcm1hdC5mb3JtYXQoInswfSBhdXRoZW50aWNhdGVkIGJ5IGNsaWVudCBjZXJ0aWZpY2F0ZSB7MX0gZnJvbSB7Mn0iLA0KIAkJCQkJCXVzZXIudXNlcm5hbWUsIG1ldGFkYXRhLnNlcmlhbE51bWJlciwgaHR0cFJlcXVlc3QuZ2V0UmVtb3RlQWRkcigpKSk7DQogCQkJCXJldHVybiB1c2VyOw0KIAkJCX0gZWxzZSB7DQpAQCAtNjMzLDcgKzYzNiw3IEBACiAJCQlVc2VyTW9kZWwgdXNlciA9IGdldFVzZXJNb2RlbChwcmluY2lwYWwuZ2V0TmFtZSgpKTsNCiAJCQlpZiAodXNlciAhPSBudWxsKSB7DQogCQkJCWZsYWdXaWNrZXRTZXNzaW9uKEF1dGhlbnRpY2F0aW9uVHlwZS5DT05UQUlORVIpOw0KLQkJCQlsb2dnZXIuaW5mbyhNZXNzYWdlRm9ybWF0LmZvcm1hdCgiezB9IGF1dGhlbnRpY2F0ZWQgYnkgc2VydmxldCBjb250YWluZXIgcHJpbmNpcGFsIGZyb20gezF9IiwNCisJCQkJbG9nZ2VyLmRlYnVnKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJ7MH0gYXV0aGVudGljYXRlZCBieSBzZXJ2bGV0IGNvbnRhaW5lciBwcmluY2lwYWwgZnJvbSB7MX0iLA0KIAkJCQkJCXVzZXIudXNlcm5hbWUsIGh0dHBSZXF1ZXN0LmdldFJlbW90ZUFkZHIoKSkpOw0KIAkJCQlyZXR1cm4gdXNlcjsNCiAJCQl9IGVsc2Ugew0KQEAgLTY0Nyw3ICs2NTAsNyBAQAogCQkJVXNlck1vZGVsIHVzZXIgPSBhdXRoZW50aWNhdGUoaHR0cFJlcXVlc3QuZ2V0Q29va2llcygpKTsNCiAJCQlpZiAodXNlciAhPSBudWxsKSB7DQogCQkJCWZsYWdXaWNrZXRTZXNzaW9uKEF1dGhlbnRpY2F0aW9uVHlwZS5DT09LSUUpOw0KLQkJCQlsb2dnZXIuaW5mbyhNZXNzYWdlRm9ybWF0LmZvcm1hdCgiezB9IGF1dGhlbnRpY2F0ZWQgYnkgY29va2llIGZyb20gezF9IiwNCisJCQkJbG9nZ2VyLmRlYnVnKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJ7MH0gYXV0aGVudGljYXRlZCBieSBjb29raWUgZnJvbSB7MX0iLA0KIAkJCQkJCXVzZXIudXNlcm5hbWUsIGh0dHBSZXF1ZXN0LmdldFJlbW90ZUFkZHIoKSkpOw0KIAkJCQlyZXR1cm4gdXNlcjsNCiAJCQl9DQpAQCAtNjY5LDcgKzY3Miw3IEBACiAJCQkJVXNlck1vZGVsIHVzZXIgPSBhdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkKTsNCiAJCQkJaWYgKHVzZXIgIT0gbnVsbCkgew0KIAkJCQkJZmxhZ1dpY2tldFNlc3Npb24oQXV0aGVudGljYXRpb25UeXBlLkNSRURFTlRJQUxTKTsNCi0JCQkJCWxvZ2dlci5pbmZvKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJ7MH0gYXV0aGVudGljYXRlZCBieSBCQVNJQyByZXF1ZXN0IGhlYWRlciBmcm9tIHsxfSIsDQorCQkJCQlsb2dnZXIuZGVidWcoTWVzc2FnZUZvcm1hdC5mb3JtYXQoInswfSBhdXRoZW50aWNhdGVkIGJ5IEJBU0lDIHJlcXVlc3QgaGVhZGVyIGZyb20gezF9IiwNCiAJCQkJCQkJdXNlci51c2VybmFtZSwgaHR0cFJlcXVlc3QuZ2V0UmVtb3RlQWRkcigpKSk7DQogCQkJCQlyZXR1cm4gdXNlcjsNCiAJCQkJfSBlbHNlIHsNCkBAIC0xNjU2LDYgKzE2NTksMTEgQEAKIAkJfSBlbHNlIHsNCiAJCQltb2RlbC5uYW1lID0gY29tLmdpdGJsaXQudXRpbHMuRmlsZVV0aWxzLmdldFJlbGF0aXZlUGF0aChiYXNlUGF0aCwgci5nZXREaXJlY3RvcnkoKS5nZXRQYXJlbnRGaWxlKCkpOw0KIAkJfQ0KKwkJaWYgKFN0cmluZ1V0aWxzLmlzRW1wdHkobW9kZWwubmFtZSkpIHsNCisJCQkvLyBSZXBvc2l0b3J5IGlzIE5PVCBsb2NhdGVkIHJlbGF0aXZlIHRvIHRoZSBiYXNlIGZvbGRlciBiZWNhdXNlIGl0DQorCQkJLy8gaXMgc3ltbGlua2VkLiAgVXNlIHRoZSBwcm92aWRlZCByZXBvc2l0b3J5IG5hbWUuDQorCQkJbW9kZWwubmFtZSA9IHJlcG9zaXRvcnlOYW1lOw0KKwkJfQ0KIAkJbW9kZWwuaGFzQ29tbWl0cyA9IEpHaXRVdGlscy5oYXNDb21taXRzKHIpOw0KIAkJbW9kZWwubGFzdENoYW5nZSA9IEpHaXRVdGlscy5nZXRMYXN0Q2hhbmdlKHIpOw0KIAkJbW9kZWwucHJvamVjdFBhdGggPSBTdHJpbmdVdGlscy5nZXRGaXJzdFBhdGhFbGVtZW50KHJlcG9zaXRvcnlOYW1lKTsNCkBAIC0xODI4LDYgKzE4MzYsOSBAQAogCQl9IGVsc2Ugew0KIAkJCS8vIG5vdCBjYWNoaW5nDQogCQkJUHJvamVjdE1vZGVsIHByb2plY3QgPSBnZXRQcm9qZWN0TW9kZWwodXNlclByb2plY3QpOw0KKwkJCWlmIChwcm9qZWN0ID09IG51bGwpIHsNCisJCQkJcmV0dXJuIG51bGw7DQorCQkJfQ0KIAkJCWZvciAoU3RyaW5nIHJlcG9zaXRvcnkgOiBwcm9qZWN0LnJlcG9zaXRvcmllcykgew0KIAkJCQlpZiAocmVwb3NpdG9yeS5zdGFydHNXaXRoKHVzZXJQcm9qZWN0KSkgew0KIAkJCQkJUmVwb3NpdG9yeU1vZGVsIG1vZGVsID0gZ2V0UmVwb3NpdG9yeU1vZGVsKHJlcG9zaXRvcnkpOw0KQEAgLTI1NzQsMTcgKzI1ODUsOCBAQAogCQl9DQogDQogCQkvLyBzZW5kIGFuIGVtYWlsLCBpZiBwb3NzaWJsZQ0KLQkJdHJ5IHsNCi0JCQlNZXNzYWdlIG1lc3NhZ2UgPSBtYWlsRXhlY3V0b3IuY3JlYXRlTWVzc2FnZUZvckFkbWluaXN0cmF0b3JzKCk7DQotCQkJaWYgKG1lc3NhZ2UgIT0gbnVsbCkgew0KLQkJCQltZXNzYWdlLnNldFN1YmplY3QoIkZlZGVyYXRpb24gcHJvcG9zYWwgZnJvbSAiICsgcHJvcG9zYWwudXJsKTsNCi0JCQkJbWVzc2FnZS5zZXRUZXh0KCJQbGVhc2UgcmV2aWV3IHRoZSBwcm9wb3NhbCBAICIgKyBnaXRibGl0VXJsICsgIi9wcm9wb3NhbC8iDQotCQkJCQkJKyBwcm9wb3NhbC50b2tlbik7DQotCQkJCW1haWxFeGVjdXRvci5xdWV1ZShtZXNzYWdlKTsNCi0JCQl9DQotCQl9IGNhdGNoIChUaHJvd2FibGUgdCkgew0KLQkJCWxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIG5vdGlmeSBhZG1pbmlzdHJhdG9ycyBvZiBwcm9wb3NhbCIsIHQpOw0KLQkJfQ0KKwkJc2VuZE1haWxUb0FkbWluaXN0cmF0b3JzKCJGZWRlcmF0aW9uIHByb3Bvc2FsIGZyb20gIiArIHByb3Bvc2FsLnVybCwNCisJCQkJIlBsZWFzZSByZXZpZXcgdGhlIHByb3Bvc2FsIEAgIiArIGdpdGJsaXRVcmwgKyAiL3Byb3Bvc2FsLyIgKyBwcm9wb3NhbC50b2tlbik7DQogCQlyZXR1cm4gdHJ1ZTsNCiAJfQ0KIA0KQEAgLTI4NzEsMTYgKzI4NzMsOCBAQAogCSAqIEBwYXJhbSBtZXNzYWdlDQogCSAqLw0KIAlwdWJsaWMgdm9pZCBzZW5kTWFpbFRvQWRtaW5pc3RyYXRvcnMoU3RyaW5nIHN1YmplY3QsIFN0cmluZyBtZXNzYWdlKSB7DQotCQl0cnkgew0KLQkJCU1lc3NhZ2UgbWFpbCA9IG1haWxFeGVjdXRvci5jcmVhdGVNZXNzYWdlRm9yQWRtaW5pc3RyYXRvcnMoKTsNCi0JCQlpZiAobWFpbCAhPSBudWxsKSB7DQotCQkJCW1haWwuc2V0U3ViamVjdChzdWJqZWN0KTsNCi0JCQkJbWFpbC5zZXRUZXh0KG1lc3NhZ2UpOw0KLQkJCQltYWlsRXhlY3V0b3IucXVldWUobWFpbCk7DQotCQkJfQ0KLQkJfSBjYXRjaCAoTWVzc2FnaW5nRXhjZXB0aW9uIGUpIHsNCi0JCQlsb2dnZXIuZXJyb3IoIk1lc3NhZ2luZyBlcnJvciIsIGUpOw0KLQkJfQ0KKwkJTGlzdDxTdHJpbmc+IHRvQWRkcmVzc2VzID0gc2V0dGluZ3MuZ2V0U3RyaW5ncyhLZXlzLm1haWwuYWRtaW5BZGRyZXNzZXMpOw0KKwkJc2VuZE1haWwoc3ViamVjdCwgbWVzc2FnZSwgdG9BZGRyZXNzZXMpOw0KIAl9DQogDQogCS8qKg0KQEAgLTI5MDIsMTEgKzI4OTYsMjQgQEAKIAkgKiBAcGFyYW0gdG9BZGRyZXNzZXMNCiAJICovDQogCXB1YmxpYyB2b2lkIHNlbmRNYWlsKFN0cmluZyBzdWJqZWN0LCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nLi4uIHRvQWRkcmVzc2VzKSB7DQorCQlpZiAodG9BZGRyZXNzZXMgPT0gbnVsbCB8fCB0b0FkZHJlc3Nlcy5sZW5ndGggPT0gMCkgew0KKwkJCWxvZ2dlci5kZWJ1ZyhNZXNzYWdlRm9ybWF0LmZvcm1hdCgiRHJvcHBpbmcgbWVzc2FnZSB7MH0gYmVjYXVzZSB0aGVyZSBhcmUgbm8gcmVjaXBpZW50cyIsIHN1YmplY3QpKTsNCisJCQlyZXR1cm47DQorCQl9DQogCQl0cnkgew0KIAkJCU1lc3NhZ2UgbWFpbCA9IG1haWxFeGVjdXRvci5jcmVhdGVNZXNzYWdlKHRvQWRkcmVzc2VzKTsNCiAJCQlpZiAobWFpbCAhPSBudWxsKSB7DQogCQkJCW1haWwuc2V0U3ViamVjdChzdWJqZWN0KTsNCi0JCQkJbWFpbC5zZXRUZXh0KG1lc3NhZ2UpOw0KKwkJCQkNCisJCQkJTWltZUJvZHlQYXJ0IG1lc3NhZ2VQYXJ0ID0gbmV3IE1pbWVCb2R5UGFydCgpOwkJCQkNCisJCQkJbWVzc2FnZVBhcnQuc2V0VGV4dChtZXNzYWdlLCAidXRmLTgiKTsNCisJCQkJbWVzc2FnZVBhcnQuc2V0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAidGV4dC9wbGFpbjsgY2hhcnNldD1cInV0Zi04XCIiKTsNCisJCQkJbWVzc2FnZVBhcnQuc2V0SGVhZGVyKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIiwgInF1b3RlZC1wcmludGFibGUiKTsNCisJCQkJDQorCQkJCU1pbWVNdWx0aXBhcnQgbXVsdGlQYXJ0ID0gbmV3IE1pbWVNdWx0aXBhcnQoKTsNCisJCQkJbXVsdGlQYXJ0LmFkZEJvZHlQYXJ0KG1lc3NhZ2VQYXJ0KTsNCisJCQkJbWFpbC5zZXRDb250ZW50KG11bHRpUGFydCk7DQorCQkJCQ0KIAkJCQltYWlsRXhlY3V0b3IucXVldWUobWFpbCk7DQogCQkJfQ0KIAkJfSBjYXRjaCAoTWVzc2FnaW5nRXhjZXB0aW9uIGUpIHsNCkBAIC0yOTMzLDExICsyOTQwLDI0IEBACiAJICogQHBhcmFtIHRvQWRkcmVzc2VzDQogCSAqLw0KIAlwdWJsaWMgdm9pZCBzZW5kSHRtbE1haWwoU3RyaW5nIHN1YmplY3QsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcuLi4gdG9BZGRyZXNzZXMpIHsNCisJCWlmICh0b0FkZHJlc3NlcyA9PSBudWxsIHx8IHRvQWRkcmVzc2VzLmxlbmd0aCA9PSAwKSB7DQorCQkJbG9nZ2VyLmRlYnVnKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJEcm9wcGluZyBtZXNzYWdlIHswfSBiZWNhdXNlIHRoZXJlIGFyZSBubyByZWNpcGllbnRzIiwgc3ViamVjdCkpOw0KKwkJCXJldHVybjsNCisJCX0NCiAJCXRyeSB7DQogCQkJTWVzc2FnZSBtYWlsID0gbWFpbEV4ZWN1dG9yLmNyZWF0ZU1lc3NhZ2UodG9BZGRyZXNzZXMpOw0KIAkJCWlmIChtYWlsICE9IG51bGwpIHsNCiAJCQkJbWFpbC5zZXRTdWJqZWN0KHN1YmplY3QpOw0KLQkJCQltYWlsLnNldENvbnRlbnQobWVzc2FnZSwgInRleHQvaHRtbCIpOw0KKwkJCQkNCisJCQkJTWltZUJvZHlQYXJ0IG1lc3NhZ2VQYXJ0ID0gbmV3IE1pbWVCb2R5UGFydCgpOwkJCQkNCisJCQkJbWVzc2FnZVBhcnQuc2V0VGV4dChtZXNzYWdlLCAidXRmLTgiKTsNCisJCQkJbWVzc2FnZVBhcnQuc2V0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sOyBjaGFyc2V0PVwidXRmLThcIiIpOw0KKwkJCQltZXNzYWdlUGFydC5zZXRIZWFkZXIoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmciLCAicXVvdGVkLXByaW50YWJsZSIpOw0KKwkJCQkNCisJCQkJTWltZU11bHRpcGFydCBtdWx0aVBhcnQgPSBuZXcgTWltZU11bHRpcGFydCgpOw0KKwkJCQltdWx0aVBhcnQuYWRkQm9keVBhcnQobWVzc2FnZVBhcnQpOw0KKwkJCQltYWlsLnNldENvbnRlbnQobXVsdGlQYXJ0KTsNCisNCiAJCQkJbWFpbEV4ZWN1dG9yLnF1ZXVlKG1haWwpOw0KIAkJCX0NCiAJCX0gY2F0Y2ggKE1lc3NhZ2luZ0V4Y2VwdGlvbiBlKSB7DQpAQCAtMzIyNywxMyArMzI0NywxNSBAQAogCQkJaWYgKCFTdHJpbmdVdGlscy5pc0VtcHR5KG9wZW5TaGlmdCkpIHsNCiAJCQkJLy8gR2l0YmxpdCBpcyBydW5uaW5nIGluIE9wZW5TaGlmdC9KQm9zcw0KIAkJCQlGaWxlIGJhc2UgPSBuZXcgRmlsZShvcGVuU2hpZnQpOw0KKwkJCQlsb2dnZXIuaW5mbygiRVhQUkVTUyBjb250ZXh0Rm9sZGVyIGlzICIgKyBjb250ZXh0Rm9sZGVyLmdldEFic29sdXRlUGF0aCgpKTsNCiANCiAJCQkJLy8gZ2l0YmxpdC5wcm9wZXJ0aWVzIHNldHRpbmcgb3ZlcnJpZGVzDQogCQkJCUZpbGUgb3ZlcnJpZGVGaWxlID0gbmV3IEZpbGUoYmFzZSwgImdpdGJsaXQucHJvcGVydGllcyIpOw0KIAkJCQl3ZWJ4bWxTZXR0aW5ncy5hcHBseU92ZXJyaWRlcyhvdmVycmlkZUZpbGUpOw0KIAkJCQkNCiAJCQkJLy8gQ29weSB0aGUgaW5jbHVkZWQgc2NyaXB0cyB0byB0aGUgY29uZmlndXJlZCBncm9vdnkgZm9sZGVyDQotCQkJCUZpbGUgbG9jYWxTY3JpcHRzID0gbmV3IEZpbGUoYmFzZSwgd2VieG1sU2V0dGluZ3MuZ2V0U3RyaW5nKEtleXMuZ3Jvb3Z5LnNjcmlwdHNGb2xkZXIsICJncm9vdnkiKSk7DQorCQkJCVN0cmluZyBwYXRoID0gd2VieG1sU2V0dGluZ3MuZ2V0U3RyaW5nKEtleXMuZ3Jvb3Z5LnNjcmlwdHNGb2xkZXIsICJncm9vdnkiKTsNCisJCQkJRmlsZSBsb2NhbFNjcmlwdHMgPSBjb20uZ2l0YmxpdC51dGlscy5GaWxlVXRpbHMucmVzb2x2ZVBhcmFtZXRlcihDb25zdGFudHMuYmFzZUZvbGRlciQsIGJhc2UsIHBhdGgpOw0KIAkJCQlpZiAoIWxvY2FsU2NyaXB0cy5leGlzdHMoKSkgew0KIAkJCQkJRmlsZSB3YXJTY3JpcHRzID0gbmV3IEZpbGUoY29udGV4dEZvbGRlciwgIi9XRUItSU5GL2RhdGEvZ3Jvb3Z5Iik7DQogCQkJCQlpZiAoIXdhclNjcmlwdHMuZXF1YWxzKGxvY2FsU2NyaXB0cykpIHsNCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvR2l0QmxpdEV4Y2VwdGlvbi5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9HaXRCbGl0RXhjZXB0aW9uLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9HaXRCbGl0RXhjZXB0aW9uLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0QmxpdEV4Y2VwdGlvbi5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvR2l0QmxpdFNlcnZlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9HaXRCbGl0U2VydmVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9HaXRCbGl0U2VydmVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0QmxpdFNlcnZlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvR2l0RmlsdGVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0dpdEZpbHRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvR2l0RmlsdGVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0RmlsdGVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9HaXRTZXJ2bGV0LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0dpdFNlcnZsZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0dpdFNlcnZsZXQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9HaXRTZXJ2bGV0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9HaXRibGl0U3NsQ29udGV4dEZhY3RvcnkuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0YmxpdFNzbENvbnRleHRGYWN0b3J5LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9HaXRibGl0U3NsQ29udGV4dEZhY3RvcnkuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9HaXRibGl0U3NsQ29udGV4dEZhY3RvcnkuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0dpdGJsaXRUcnVzdE1hbmFnZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvR2l0YmxpdFRydXN0TWFuYWdlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvR2l0YmxpdFRydXN0TWFuYWdlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0dpdGJsaXRUcnVzdE1hbmFnZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0dpdGJsaXRVc2VyU2VydmljZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9HaXRibGl0VXNlclNlcnZpY2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L0dpdGJsaXRVc2VyU2VydmljZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0dpdGJsaXRVc2VyU2VydmljZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvSVN0b3JlZFNldHRpbmdzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0lTdG9yZWRTZXR0aW5ncy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvSVN0b3JlZFNldHRpbmdzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvSVN0b3JlZFNldHRpbmdzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9JVXNlclNlcnZpY2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvSVVzZXJTZXJ2aWNlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9JVXNlclNlcnZpY2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9JVXNlclNlcnZpY2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0pzb25TZXJ2bGV0LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0pzb25TZXJ2bGV0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9Kc29uU2VydmxldC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0pzb25TZXJ2bGV0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9MZGFwVXNlclNlcnZpY2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvTGRhcFVzZXJTZXJ2aWNlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9MZGFwVXNlclNlcnZpY2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9MZGFwVXNlclNlcnZpY2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0x1Y2VuZUV4ZWN1dG9yLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0x1Y2VuZUV4ZWN1dG9yLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9MdWNlbmVFeGVjdXRvci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L0x1Y2VuZUV4ZWN1dG9yLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9NYWlsRXhlY3V0b3IuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvTWFpbEV4ZWN1dG9yLmphdmEKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L01haWxFeGVjdXRvci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L01haWxFeGVjdXRvci5qYXZhCmluZGV4IDkwMDFlODMuLjU0ZmY4YjggMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC9NYWlsRXhlY3V0b3IuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L01haWxFeGVjdXRvci5qYXZhCkBAIC0xMTAsMTkgKzExMCw2IEBACiAJCXJldHVybiBzZXNzaW9uICE9IG51bGw7DQogCX0NCiANCi0JLyoqDQotCSAqIENyZWF0ZXMgYSBtZXNzYWdlIGZvciB0aGUgYWRtaW5pc3RyYXRvcnMuDQotCSAqIA0KLQkgKiBAcmV0dXJuYSBtZXNzYWdlDQotCSAqLw0KLQlwdWJsaWMgTWVzc2FnZSBjcmVhdGVNZXNzYWdlRm9yQWRtaW5pc3RyYXRvcnMoKSB7DQotCQlMaXN0PFN0cmluZz4gdG9BZGRyZXNzZXMgPSBzZXR0aW5ncy5nZXRTdHJpbmdzKEtleXMubWFpbC5hZG1pbkFkZHJlc3Nlcyk7DQotCQlpZiAodG9BZGRyZXNzZXMuc2l6ZSgpID09IDApIHsNCi0JCQlsb2dnZXIud2FybigiQ2FuIG5vdCBub3RpZnkgYWRtaW5pc3RyYXRvcnMgYmVjYXVzZSBubyBlbWFpbCBhZGRyZXNzZXMgYXJlIGRlZmluZWQhIik7DQotCQkJcmV0dXJuIG51bGw7DQotCQl9DQotCQlyZXR1cm4gY3JlYXRlTWVzc2FnZSh0b0FkZHJlc3Nlcyk7DQotCX0NCiANCiAJLyoqDQogCSAqIENyZWF0ZSBhIG1lc3NhZ2UuDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L1BhZ2VzRmlsdGVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L1BhZ2VzRmlsdGVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9QYWdlc0ZpbHRlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L1BhZ2VzRmlsdGVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9QYWdlc1NlcnZsZXQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvUGFnZXNTZXJ2bGV0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9QYWdlc1NlcnZsZXQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9QYWdlc1NlcnZsZXQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L1JlZG1pbmVVc2VyU2VydmljZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9SZWRtaW5lVXNlclNlcnZpY2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvUmVkbWluZVVzZXJTZXJ2aWNlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvUmVkbWluZVVzZXJTZXJ2aWNlLmphdmEKaW5kZXggOWQ1NzFlMy4uMjcyOGUwMCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L1JlZG1pbmVVc2VyU2VydmljZS5qYXZhCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvUmVkbWluZVVzZXJTZXJ2aWNlLmphdmEKQEAgLTE1OCw3ICsxNTgsNyBAQAogDQogICAgICAgICBTdHJpbmcgdXJsID0gdGhpcy5zZXR0aW5ncy5nZXRTdHJpbmcoS2V5cy5yZWFsbS5yZWRtaW5lLnVybCwgIiIpOw0KICAgICAgICAgaWYgKCF1cmwuZW5kc1dpdGgoIi8iKSkgew0KLSAgICAgICAgCXVybC5jb25jYXQoIi8iKTsNCisgICAgICAgIAl1cmwgPSB1cmwuY29uY2F0KCIvIik7DQogICAgICAgICB9DQogICAgICAgICBIdHRwVVJMQ29ubmVjdGlvbiBodHRwOw0KICAgICAgICAgaWYgKHVzZXJuYW1lID09IG51bGwpIHsNCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvUm9ib3RzVHh0U2VydmxldC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9Sb2JvdHNUeHRTZXJ2bGV0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9Sb2JvdHNUeHRTZXJ2bGV0LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvUm9ib3RzVHh0U2VydmxldC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvUnBjRmlsdGVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L1JwY0ZpbHRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvUnBjRmlsdGVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvUnBjRmlsdGVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9ScGNTZXJ2bGV0LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L1JwY1NlcnZsZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L1JwY1NlcnZsZXQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9ScGNTZXJ2bGV0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9TeW5kaWNhdGlvbkZpbHRlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9TeW5kaWNhdGlvbkZpbHRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvU3luZGljYXRpb25GaWx0ZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9TeW5kaWNhdGlvbkZpbHRlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvU3luZGljYXRpb25TZXJ2bGV0LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L1N5bmRpY2F0aW9uU2VydmxldC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvU3luZGljYXRpb25TZXJ2bGV0LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvU3luZGljYXRpb25TZXJ2bGV0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9XZWJYbWxTZXR0aW5ncy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9XZWJYbWxTZXR0aW5ncy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvV2ViWG1sU2V0dGluZ3MuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9XZWJYbWxTZXR0aW5ncy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0F1dGhvcml0eVdvcmtlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvQXV0aG9yaXR5V29ya2VyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvQXV0aG9yaXR5V29ya2VyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0F1dGhvcml0eVdvcmtlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlU3RhdHVzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9DZXJ0aWZpY2F0ZVN0YXR1cy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlU3RhdHVzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlU3RhdHVzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvQ2VydGlmaWNhdGVTdGF0dXNSZW5kZXJlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvQ2VydGlmaWNhdGVTdGF0dXNSZW5kZXJlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlU3RhdHVzUmVuZGVyZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvQ2VydGlmaWNhdGVTdGF0dXNSZW5kZXJlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlc1RhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlc1RhYmxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9DZXJ0aWZpY2F0ZXNUYWJsZU1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0NlcnRpZmljYXRlc1RhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9EZWZhdWx0T2lkc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9EZWZhdWx0T2lkc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvRGVmYXVsdE9pZHNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9EZWZhdWx0T2lkc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvR2l0YmxpdEF1dGhvcml0eS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvR2l0YmxpdEF1dGhvcml0eS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvR2l0YmxpdEF1dGhvcml0eS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9HaXRibGl0QXV0aG9yaXR5LmphdmEKaW5kZXggYzNkODE4NC4uMWExZjk2ZCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9HaXRibGl0QXV0aG9yaXR5LmphdmEKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvR2l0YmxpdEF1dGhvcml0eS5qYXZhCkBAIC0xNzUsNyArMTc1LDcgQEAKIAkNCiAJcHVibGljIHZvaWQgaW5pdGlhbGl6ZShTdHJpbmcgYmFzZUZvbGRlcikgew0KIAkJc2V0SWNvbkltYWdlKG5ldyBJbWFnZUljb24oZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZSgiL2dpdGJsdC1mYXZpY29uLnBuZyIpKS5nZXRJbWFnZSgpKTsNCi0JCXNldFRpdGxlKCJHaXRibGl0IENlcnRpZmljYXRlIEF1dGhvcml0eSB2IiArIENvbnN0YW50cy5WRVJTSU9OICsgIiAoIiArIENvbnN0YW50cy5WRVJTSU9OX0RBVEUgKyAiKSIpOw0KKwkJc2V0VGl0bGUoIkdpdGJsaXQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHYiICsgQ29uc3RhbnRzLmdldFZlcnNpb24oKSArICIgKCIgKyBDb25zdGFudHMuZ2V0QnVpbGREYXRlKCkgKyAiKSIpOw0KIAkJc2V0Q29udGVudFBhbmUoZ2V0VUkoKSk7DQogCQlzZXREZWZhdWx0Q2xvc2VPcGVyYXRpb24oSkZyYW1lLkVYSVRfT05fQ0xPU0UpOw0KIAkJYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L0xhdW5jaGVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9MYXVuY2hlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggNjAlCmNvcHkgZnJvbSBzcmMvY29tL2dpdGJsaXQvTGF1bmNoZXIuamF2YQpjb3B5IHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L0xhdW5jaGVyLmphdmEKaW5kZXggYTQzMzMxYi4uMWRhOTcxNCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L0xhdW5jaGVyLmphdmEKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvTGF1bmNoZXIuamF2YQpAQCAtMSw1ICsxLDUgQEAKIC8qDQotICogQ29weXJpZ2h0IDIwMTEgZ2l0YmxpdC5jb20uDQorICogQ29weXJpZ2h0IDIwMTIgZ2l0YmxpdC5jb20uDQogICoNCiAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQpAQCAtMTMsMzAgKzEzLDMwIEBACiAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogICovDQotcGFja2FnZSBjb20uZ2l0YmxpdDsNCitwYWNrYWdlIGNvbS5naXRibGl0LmF1dGhvcml0eTsNCiANCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7DQoraW1wb3J0IGphdmEuYXd0LkV2ZW50UXVldWU7DQoraW1wb3J0IGphdmEuYXd0LkZvbnRNZXRyaWNzOw0KK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOw0KK2ltcG9ydCBqYXZhLmF3dC5TcGxhc2hTY3JlZW47DQogaW1wb3J0IGphdmEuaW8uRmlsZTsNCiBpbXBvcnQgamF2YS5pby5GaWxlRmlsdGVyOw0KIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7DQogaW1wb3J0IGphdmEubmV0LlVSTDsNCiBpbXBvcnQgamF2YS5uZXQuVVJMQ2xhc3NMb2FkZXI7DQotaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbjsNCiBpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7DQogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQogDQotaW1wb3J0IGNvbS5naXRibGl0LmJ1aWxkLkJ1aWxkOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5Db25zdGFudHM7DQoraW1wb3J0IGNvbS5naXRibGl0LmNsaWVudC5UcmFuc2xhdGlvbjsNCiANCiAvKioNCi0gKiBMYXVuY2ggaGVscGVyIGNsYXNzIHRoYXQgYWRkcyBhbGwgamFycyBmb3VuZCBpbiB0aGUgbG9jYWwgImxpYiIgJiAiZXh0Ig0KLSAqIGZvbGRlcnMgYW5kIHRoZW4gY2FsbHMgdGhlIGFwcGxpY2F0aW9uIG1haW4uIFVzaW5nIHRoaXMgdGVjaG5pcXVlIHdlIGRvIG5vdA0KLSAqIGhhdmUgdG8gc3BlY2lmeSBhIGNsYXNzcGF0aCBhbmQgd2UgY2FuIGR5bmFtaWNhbGx5IGFkZCBqYXJzIHRvIHRoZQ0KLSAqIGRpc3RyaWJ1dGlvbi4NCi0gKiANCi0gKiBUaGlzIGNsYXNzIGFsc28gZG93bmxvYWRzIGFsbCBydW50aW1lIGRlcGVuZGVuY2llcywgaWYgdGhleSBhcmUgbm90IGZvdW5kLg0KKyAqIERvd25sb2FkcyBkZXBlbmRlbmNpZXMgYW5kIGxhdW5jaGVzIEdpdGJsaXQgQXV0aG9yaXR5Lg0KICAqIA0KICAqIEBhdXRob3IgSmFtZXMgTW9nZXINCiAgKiANCkBAIC01MCw1OSArNTAsNjkgQEAKIAkgKi8NCiAJcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ2xhc3M8Pz5bXSBQQVJBTUVURVJTID0gbmV3IENsYXNzW10geyBVUkwuY2xhc3MgfTsNCiANCisNCiAJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgew0KLQkJaWYgKERFQlVHKSB7DQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJqY3A9IiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5jbGFzcy5wYXRoIikpOw0KLQkJCVByb3RlY3Rpb25Eb21haW4gcHJvdGVjdGlvbkRvbWFpbiA9IExhdW5jaGVyLmNsYXNzLmdldFByb3RlY3Rpb25Eb21haW4oKTsNCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oImxhdW5jaGVyPSINCi0JCQkJCSsgcHJvdGVjdGlvbkRvbWFpbi5nZXRDb2RlU291cmNlKCkuZ2V0TG9jYXRpb24oKS50b0V4dGVybmFsRm9ybSgpKTsNCi0JCX0NCi0NCi0JCS8vIGRvd25sb2FkIGFsbCBydW50aW1lIGRlcGVuZGVuY2llcw0KLQkJQnVpbGQucnVudGltZSgpOw0KLQ0KLQkJLy8gTG9hZCB0aGUgSkFScyBpbiB0aGUgbGliIGFuZCBleHQgZm9sZGVyDQotCQlTdHJpbmdbXSBmb2xkZXJzID0gbmV3IFN0cmluZ1tdIHsgImxpYiIsICJleHQiIH07DQotCQlMaXN0PEZpbGU+IGphcnMgPSBuZXcgQXJyYXlMaXN0PEZpbGU+KCk7DQotCQlmb3IgKFN0cmluZyBmb2xkZXIgOiBmb2xkZXJzKSB7DQotCQkJaWYgKGZvbGRlciA9PSBudWxsKSB7DQotCQkJCWNvbnRpbnVlOw0KLQkJCX0NCi0JCQlGaWxlIGxpYkZvbGRlciA9IG5ldyBGaWxlKGZvbGRlcik7DQotCQkJaWYgKCFsaWJGb2xkZXIuZXhpc3RzKCkpIHsNCi0JCQkJY29udGludWU7DQotCQkJfQ0KLQkJCUxpc3Q8RmlsZT4gZm91bmQgPSBmaW5kSmFycyhsaWJGb2xkZXIuZ2V0QWJzb2x1dGVGaWxlKCkpOw0KLQkJCWphcnMuYWRkQWxsKGZvdW5kKTsNCi0JCX0NCisJCWZpbmFsIFNwbGFzaFNjcmVlbiBzcGxhc2ggPSBTcGxhc2hTY3JlZW4uZ2V0U3BsYXNoU2NyZWVuKCk7DQorCQkNCisJCUZpbGUgbGliRm9sZGVyID0gbmV3IEZpbGUoImV4dCIpOw0KKwkJTGlzdDxGaWxlPiBqYXJzID0gZmluZEphcnMobGliRm9sZGVyLmdldEFic29sdXRlRmlsZSgpKTsNCisJCQ0KIAkJLy8gc29ydCB0aGUgamFycyBieSBuYW1lIGFuZCB0aGVuIHJldmVyc2UgdGhlIG9yZGVyIHNvIHRoZSBuZXdlciB2ZXJzaW9uDQogCQkvLyBvZiB0aGUgbGlicmFyeSBnZXRzIGxvYWRlZCBpbiB0aGUgZXZlbnQgdGhhdCB0aGlzIGlzIGFuIHVwZ3JhZGUNCiAJCUNvbGxlY3Rpb25zLnNvcnQoamFycyk7DQogCQlDb2xsZWN0aW9ucy5yZXZlcnNlKGphcnMpOw0KKwkJZm9yIChGaWxlIGphciA6IGphcnMpIHsNCisJCQl0cnkgew0KKwkJCQl1cGRhdGVTcGxhc2goc3BsYXNoLCBUcmFuc2xhdGlvbi5nZXQoImdiLmxvYWRpbmciKSArICIgIiArIGphci5nZXROYW1lKCkgKyAiLi4uIik7DQorCQkJCWFkZEphckZpbGUoamFyKTsNCisJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQogDQotCQlpZiAoamFycy5zaXplKCkgPT0gMCkgew0KLQkJCWZvciAoU3RyaW5nIGZvbGRlciA6IGZvbGRlcnMpIHsNCi0JCQkJRmlsZSBsaWJGb2xkZXIgPSBuZXcgRmlsZShmb2xkZXIpOw0KLQkJCQkvLyB0aGlzIGlzIGEgdGVzdCBvZiBhZGRpbmcgYSBjb21tZW50DQotCQkJCS8vIG1vcmUgcmVhbGx5IGludGVyZXN0aW5nIHRoaW5ncw0KLQkJCQlTeXN0ZW0uZXJyLnByaW50bG4oIkZhaWxlZCB0byBmaW5kIGFueSByZWFsbHkgY29vbCBKQVJzIGluICIgKyBsaWJGb2xkZXIuZ2V0UGF0aCgpKTsNCi0JCQl9DQotCQkJU3lzdGVtLmV4aXQoLTEpOw0KLQkJfSBlbHNlIHsNCi0JCQlmb3IgKEZpbGUgamFyIDogamFycykgew0KLQkJCQl0cnkgew0KLQkJCQkJamFyLmNhblJlYWQoKTsNCi0JCQkJCWFkZEphckZpbGUoamFyKTsNCi0JCQkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCi0JCQkJCXQucHJpbnRTdGFja1RyYWNlKCk7DQotCQkJCX0NCiAJCQl9DQogCQl9DQotDQotCQkvLyBTdGFydCBTZXJ2ZXINCi0JCUdpdEJsaXRTZXJ2ZXIubWFpbihhcmdzKTsNCisJCQ0KKwkJdXBkYXRlU3BsYXNoKHNwbGFzaCwgVHJhbnNsYXRpb24uZ2V0KCJnYi5zdGFydGluZyIpICsgIiBHaXRibGl0IEF1dGhvcml0eS4uLiIpOw0KKwkJR2l0YmxpdEF1dGhvcml0eS5tYWluKGFyZ3MpOw0KIAl9DQogDQorCXByaXZhdGUgc3RhdGljIHZvaWQgdXBkYXRlU3BsYXNoKGZpbmFsIFNwbGFzaFNjcmVlbiBzcGxhc2gsIGZpbmFsIFN0cmluZyBzdHJpbmcpIHsNCisJCWlmIChzcGxhc2ggPT0gbnVsbCkgew0KKwkJCXJldHVybjsNCisJCX0NCisJCXRyeSB7DQorCQkJRXZlbnRRdWV1ZS5pbnZva2VBbmRXYWl0KG5ldyBSdW5uYWJsZSgpIHsNCisJCQkJcHVibGljIHZvaWQgcnVuKCkgew0KKwkJCQkJR3JhcGhpY3MyRCBnID0gc3BsYXNoLmNyZWF0ZUdyYXBoaWNzKCk7DQorCQkJCQlpZiAoZyAhPSBudWxsKSB7DQorCQkJCQkJLy8gU3BsYXNoIGlzIDMyMHgxMjANCisJCQkJCQlGb250TWV0cmljcyBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsNCisJCQkJCQkNCisJCQkJCQkvLyBwYWludCBzdGFydHVwIHN0YXR1cw0KKwkJCQkJCWcuc2V0Q29sb3IoQ29sb3IuZGFya0dyYXkpOw0KKwkJCQkJCWludCBoID0gZm0uZ2V0SGVpZ2h0KCkgKyBmbS5nZXRNYXhEZXNjZW50KCk7DQorCQkJCQkJaW50IHggPSA1Ow0KKwkJCQkJCWludCB5ID0gMTE1Ow0KKwkJCQkJCWludCB3ID0gMzIwIC0gMiAqIHg7DQorCQkJCQkJZy5maWxsUmVjdCh4LCB5IC0gaCwgdywgaCk7DQorCQkJCQkJZy5zZXRDb2xvcihDb2xvci5saWdodEdyYXkpOw0KKwkJCQkJCWcuZHJhd1JlY3QoeCwgeSAtIGgsIHcsIGgpOw0KKwkJCQkJCWcuc2V0Q29sb3IoQ29sb3IuV0hJVEUpOw0KKwkJCQkJCWludCB4dyA9IGZtLnN0cmluZ1dpZHRoKHN0cmluZyk7DQorCQkJCQkJZy5kcmF3U3RyaW5nKHN0cmluZywgeCArICgodyAtIHh3KSAvIDIpLCB5IC0gNSk7DQorCQkJCQkJDQorCQkJCQkJLy8gcGFpbnQgdmVyc2lvbg0KKwkJCQkJCVN0cmluZyB2ZXIgPSAidiIgKyBDb25zdGFudHMuZ2V0VmVyc2lvbigpOw0KKwkJCQkJCWludCB2dyA9IGcuZ2V0Rm9udE1ldHJpY3MoKS5zdHJpbmdXaWR0aCh2ZXIpOw0KKwkJCQkJCWcuZHJhd1N0cmluZyh2ZXIsIDMyMCAtIHZ3IC0gNSwgMzQpOw0KKwkJCQkJCWcuZGlzcG9zZSgpOw0KKwkJCQkJCXNwbGFzaC51cGRhdGUoKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0pOw0KKwkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCisJCQl0LnByaW50U3RhY2tUcmFjZSgpOw0KKwkJfQ0KKwl9DQorCQ0KIAlwdWJsaWMgc3RhdGljIExpc3Q8RmlsZT4gZmluZEphcnMoRmlsZSBmb2xkZXIpIHsNCiAJCUxpc3Q8RmlsZT4gamFycyA9IG5ldyBBcnJheUxpc3Q8RmlsZT4oKTsNCiAJCWlmIChmb2xkZXIuZXhpc3RzKCkpIHsNCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L05ld0NlcnRpZmljYXRlQ29uZmlnLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9OZXdDZXJ0aWZpY2F0ZUNvbmZpZy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L05ld0NlcnRpZmljYXRlQ29uZmlnLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L05ld0NlcnRpZmljYXRlQ29uZmlnLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvTmV3Q2xpZW50Q2VydGlmaWNhdGVEaWFsb2cuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L05ld0NsaWVudENlcnRpZmljYXRlRGlhbG9nLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvTmV3Q2xpZW50Q2VydGlmaWNhdGVEaWFsb2cuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvTmV3Q2xpZW50Q2VydGlmaWNhdGVEaWFsb2cuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9OZXdTU0xDZXJ0aWZpY2F0ZURpYWxvZy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvTmV3U1NMQ2VydGlmaWNhdGVEaWFsb2cuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9OZXdTU0xDZXJ0aWZpY2F0ZURpYWxvZy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9OZXdTU0xDZXJ0aWZpY2F0ZURpYWxvZy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1JlcXVlc3RGb2N1c0xpc3RlbmVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9SZXF1ZXN0Rm9jdXNMaXN0ZW5lci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1JlcXVlc3RGb2N1c0xpc3RlbmVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1JlcXVlc3RGb2N1c0xpc3RlbmVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlckNlcnRpZmljYXRlQ29uZmlnLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyQ2VydGlmaWNhdGVDb25maWcuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyQ2VydGlmaWNhdGVDb25maWcuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlckNlcnRpZmljYXRlQ29uZmlnLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlckNlcnRpZmljYXRlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1VzZXJDZXJ0aWZpY2F0ZU1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlckNlcnRpZmljYXRlTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlckNlcnRpZmljYXRlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyQ2VydGlmaWNhdGVQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlckNlcnRpZmljYXRlUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyQ2VydGlmaWNhdGVQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyQ2VydGlmaWNhdGVQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1VzZXJDZXJ0aWZpY2F0ZVRhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1VzZXJDZXJ0aWZpY2F0ZVRhYmxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyQ2VydGlmaWNhdGVUYWJsZU1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1VzZXJDZXJ0aWZpY2F0ZVRhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyT2lkc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyT2lkc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXNlck9pZHNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9Vc2VyT2lkc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1V0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9hdXRob3JpdHkvVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2F1dGhvcml0eS9YNTA5Q2VydGlmaWNhdGVWaWV3ZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1g1MDlDZXJ0aWZpY2F0ZVZpZXdlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvYXV0aG9yaXR5L1g1MDlDZXJ0aWZpY2F0ZVZpZXdlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2F1dGhvcml0eS9YNTA5Q2VydGlmaWNhdGVWaWV3ZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9Cb29sZWFuQ2VsbFJlbmRlcmVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9Cb29sZWFuQ2VsbFJlbmRlcmVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvQm9vbGVhbkNlbGxSZW5kZXJlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9Cb29sZWFuQ2VsbFJlbmRlcmVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvQnJhbmNoUmVuZGVyZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0JyYW5jaFJlbmRlcmVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvQnJhbmNoUmVuZGVyZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvQnJhbmNoUmVuZGVyZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9DbG9zYWJsZVRhYkNvbXBvbmVudC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvQ2xvc2FibGVUYWJDb21wb25lbnQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9DbG9zYWJsZVRhYkNvbXBvbmVudC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9DbG9zYWJsZVRhYkNvbXBvbmVudC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0RhdGVDZWxsUmVuZGVyZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0RhdGVDZWxsUmVuZGVyZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9EYXRlQ2VsbFJlbmRlcmVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0RhdGVDZWxsUmVuZGVyZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9FZGl0UmVnaXN0cmF0aW9uRGlhbG9nLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9FZGl0UmVnaXN0cmF0aW9uRGlhbG9nLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvRWRpdFJlZ2lzdHJhdGlvbkRpYWxvZy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9FZGl0UmVnaXN0cmF0aW9uRGlhbG9nLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvRWRpdFJlcG9zaXRvcnlEaWFsb2cuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0VkaXRSZXBvc2l0b3J5RGlhbG9nLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvRWRpdFJlcG9zaXRvcnlEaWFsb2cuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvRWRpdFJlcG9zaXRvcnlEaWFsb2cuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9FZGl0VGVhbURpYWxvZy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvRWRpdFRlYW1EaWFsb2cuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9FZGl0VGVhbURpYWxvZy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9FZGl0VGVhbURpYWxvZy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0VkaXRVc2VyRGlhbG9nLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9FZGl0VXNlckRpYWxvZy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L0VkaXRVc2VyRGlhbG9nLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0VkaXRVc2VyRGlhbG9nLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvRmVlZEVudHJ5VGFibGVNb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvRmVlZEVudHJ5VGFibGVNb2RlbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L0ZlZWRFbnRyeVRhYmxlTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvRmVlZEVudHJ5VGFibGVNb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0ZlZWRzUGFuZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0ZlZWRzUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9GZWVkc1BhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0ZlZWRzUGFuZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9GZWVkc1RhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0ZlZWRzVGFibGVNb2RlbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L0ZlZWRzVGFibGVNb2RlbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9GZWVkc1RhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0Q2xpZW50LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0Q2xpZW50LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdENsaWVudC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0Q2xpZW50LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdE1hbmFnZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0dpdGJsaXRNYW5hZ2VyLmphdmEKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0TWFuYWdlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0TWFuYWdlci5qYXZhCmluZGV4IGRkMDMxNWYuLmQyZmQ3ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdE1hbmFnZXIuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0TWFuYWdlci5qYXZhCkBAIC05Niw3ICs5Niw3IEBACiAJcHJpdmF0ZSB2b2lkIGluaXRpYWxpemUoKSB7DQogCQlzZXRDb250ZW50UGFuZShnZXRDZW50ZXJQYW5lbCgpKTsNCiAJCXNldEljb25JbWFnZShuZXcgSW1hZ2VJY29uKGdldENsYXNzKCkuZ2V0UmVzb3VyY2UoIi9naXRibHQtZmF2aWNvbi5wbmciKSkuZ2V0SW1hZ2UoKSk7DQotCQlzZXRUaXRsZSgiR2l0YmxpdCBNYW5hZ2VyIHYiICsgQ29uc3RhbnRzLlZFUlNJT04gKyAiICgiICsgQ29uc3RhbnRzLlZFUlNJT05fREFURSArICIpIik7DQorCQlzZXRUaXRsZSgiR2l0YmxpdCBNYW5hZ2VyIHYiICsgQ29uc3RhbnRzLmdldFZlcnNpb24oKSArICIgKCIgKyBDb25zdGFudHMuZ2V0QnVpbGREYXRlKCkgKyAiKSIpOw0KIAkJc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKEpGcmFtZS5FWElUX09OX0NMT1NFKTsNCiAJCWFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgew0KIAkJCUBPdmVycmlkZQ0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9MYXVuY2hlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdE1hbmFnZXJMYXVuY2hlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggNjElCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9MYXVuY2hlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0TWFuYWdlckxhdW5jaGVyLmphdmEKaW5kZXggYTQzMzMxYi4uZDBjYzgzOSAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L0xhdW5jaGVyLmphdmEKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdE1hbmFnZXJMYXVuY2hlci5qYXZhCkBAIC0xMywzNSArMTMsMzQgQEAKICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCiAgKi8NCi1wYWNrYWdlIGNvbS5naXRibGl0Ow0KK3BhY2thZ2UgY29tLmdpdGJsaXQuY2xpZW50Ow0KIA0KK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsNCitpbXBvcnQgamF2YS5hd3QuRXZlbnRRdWV1ZTsNCitpbXBvcnQgamF2YS5hd3QuRm9udE1ldHJpY3M7DQoraW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzMkQ7DQoraW1wb3J0IGphdmEuYXd0LlNwbGFzaFNjcmVlbjsNCiBpbXBvcnQgamF2YS5pby5GaWxlOw0KIGltcG9ydCBqYXZhLmlvLkZpbGVGaWx0ZXI7DQogaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQogaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsNCiBpbXBvcnQgamF2YS5uZXQuVVJMOw0KIGltcG9ydCBqYXZhLm5ldC5VUkxDbGFzc0xvYWRlcjsNCi1pbXBvcnQgamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluOw0KIGltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsNCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsNCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOw0KIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCiANCi1pbXBvcnQgY29tLmdpdGJsaXQuYnVpbGQuQnVpbGQ7DQoraW1wb3J0IGNvbS5naXRibGl0LkNvbnN0YW50czsNCiANCiAvKioNCi0gKiBMYXVuY2ggaGVscGVyIGNsYXNzIHRoYXQgYWRkcyBhbGwgamFycyBmb3VuZCBpbiB0aGUgbG9jYWwgImxpYiIgJiAiZXh0Ig0KLSAqIGZvbGRlcnMgYW5kIHRoZW4gY2FsbHMgdGhlIGFwcGxpY2F0aW9uIG1haW4uIFVzaW5nIHRoaXMgdGVjaG5pcXVlIHdlIGRvIG5vdA0KLSAqIGhhdmUgdG8gc3BlY2lmeSBhIGNsYXNzcGF0aCBhbmQgd2UgY2FuIGR5bmFtaWNhbGx5IGFkZCBqYXJzIHRvIHRoZQ0KLSAqIGRpc3RyaWJ1dGlvbi4NCi0gKiANCi0gKiBUaGlzIGNsYXNzIGFsc28gZG93bmxvYWRzIGFsbCBydW50aW1lIGRlcGVuZGVuY2llcywgaWYgdGhleSBhcmUgbm90IGZvdW5kLg0KKyAqIERvd25sb2FkcyBkZXBlbmRlbmNpZXMgYW5kIGxhdW5jaGVzIEdpdGJsaXQgTWFuYWdlci4NCiAgKiANCiAgKiBAYXV0aG9yIEphbWVzIE1vZ2VyDQogICogDQogICovDQotcHVibGljIGNsYXNzIExhdW5jaGVyIHsNCitwdWJsaWMgY2xhc3MgR2l0YmxpdE1hbmFnZXJMYXVuY2hlciB7DQogDQogCXB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOw0KIA0KQEAgLTUxLDU4ICs1MCw2NyBAQAogCXByaXZhdGUgc3RhdGljIGZpbmFsIENsYXNzPD8+W10gUEFSQU1FVEVSUyA9IG5ldyBDbGFzc1tdIHsgVVJMLmNsYXNzIH07DQogDQogCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCi0JCWlmIChERUJVRykgew0KLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiamNwPSIgKyBTeXN0ZW0uZ2V0UHJvcGVydHkoImphdmEuY2xhc3MucGF0aCIpKTsNCi0JCQlQcm90ZWN0aW9uRG9tYWluIHByb3RlY3Rpb25Eb21haW4gPSBMYXVuY2hlci5jbGFzcy5nZXRQcm90ZWN0aW9uRG9tYWluKCk7DQotCQkJU3lzdGVtLm91dC5wcmludGxuKCJsYXVuY2hlcj0iDQotCQkJCQkrIHByb3RlY3Rpb25Eb21haW4uZ2V0Q29kZVNvdXJjZSgpLmdldExvY2F0aW9uKCkudG9FeHRlcm5hbEZvcm0oKSk7DQotCQl9DQotDQotCQkvLyBkb3dubG9hZCBhbGwgcnVudGltZSBkZXBlbmRlbmNpZXMNCi0JCUJ1aWxkLnJ1bnRpbWUoKTsNCi0NCi0JCS8vIExvYWQgdGhlIEpBUnMgaW4gdGhlIGxpYiBhbmQgZXh0IGZvbGRlcg0KLQkJU3RyaW5nW10gZm9sZGVycyA9IG5ldyBTdHJpbmdbXSB7ICJsaWIiLCAiZXh0IiB9Ow0KLQkJTGlzdDxGaWxlPiBqYXJzID0gbmV3IEFycmF5TGlzdDxGaWxlPigpOw0KLQkJZm9yIChTdHJpbmcgZm9sZGVyIDogZm9sZGVycykgew0KLQkJCWlmIChmb2xkZXIgPT0gbnVsbCkgew0KLQkJCQljb250aW51ZTsNCi0JCQl9DQotCQkJRmlsZSBsaWJGb2xkZXIgPSBuZXcgRmlsZShmb2xkZXIpOw0KLQkJCWlmICghbGliRm9sZGVyLmV4aXN0cygpKSB7DQotCQkJCWNvbnRpbnVlOw0KLQkJCX0NCi0JCQlMaXN0PEZpbGU+IGZvdW5kID0gZmluZEphcnMobGliRm9sZGVyLmdldEFic29sdXRlRmlsZSgpKTsNCi0JCQlqYXJzLmFkZEFsbChmb3VuZCk7DQotCQl9DQorCQlmaW5hbCBTcGxhc2hTY3JlZW4gc3BsYXNoID0gU3BsYXNoU2NyZWVuLmdldFNwbGFzaFNjcmVlbigpOw0KKwkJDQorCQlGaWxlIGxpYkZvbGRlciA9IG5ldyBGaWxlKCJleHQiKTsNCisJCUxpc3Q8RmlsZT4gamFycyA9IGZpbmRKYXJzKGxpYkZvbGRlci5nZXRBYnNvbHV0ZUZpbGUoKSk7DQorCQkNCiAJCS8vIHNvcnQgdGhlIGphcnMgYnkgbmFtZSBhbmQgdGhlbiByZXZlcnNlIHRoZSBvcmRlciBzbyB0aGUgbmV3ZXIgdmVyc2lvbg0KIAkJLy8gb2YgdGhlIGxpYnJhcnkgZ2V0cyBsb2FkZWQgaW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBpcyBhbiB1cGdyYWRlDQogCQlDb2xsZWN0aW9ucy5zb3J0KGphcnMpOw0KIAkJQ29sbGVjdGlvbnMucmV2ZXJzZShqYXJzKTsNCisJCWZvciAoRmlsZSBqYXIgOiBqYXJzKSB7DQorCQkJdHJ5IHsNCisJCQkJdXBkYXRlU3BsYXNoKHNwbGFzaCwgVHJhbnNsYXRpb24uZ2V0KCJnYi5sb2FkaW5nIikgKyAiICIgKyBqYXIuZ2V0TmFtZSgpICsgIi4uLiIpOw0KKwkJCQlhZGRKYXJGaWxlKGphcik7DQorCQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KIA0KLQkJaWYgKGphcnMuc2l6ZSgpID09IDApIHsNCi0JCQlmb3IgKFN0cmluZyBmb2xkZXIgOiBmb2xkZXJzKSB7DQotCQkJCUZpbGUgbGliRm9sZGVyID0gbmV3IEZpbGUoZm9sZGVyKTsNCi0JCQkJLy8gdGhpcyBpcyBhIHRlc3Qgb2YgYWRkaW5nIGEgY29tbWVudA0KLQkJCQkvLyBtb3JlIHJlYWxseSBpbnRlcmVzdGluZyB0aGluZ3MNCi0JCQkJU3lzdGVtLmVyci5wcmludGxuKCJGYWlsZWQgdG8gZmluZCBhbnkgcmVhbGx5IGNvb2wgSkFScyBpbiAiICsgbGliRm9sZGVyLmdldFBhdGgoKSk7DQotCQkJfQ0KLQkJCVN5c3RlbS5leGl0KC0xKTsNCi0JCX0gZWxzZSB7DQotCQkJZm9yIChGaWxlIGphciA6IGphcnMpIHsNCi0JCQkJdHJ5IHsNCi0JCQkJCWphci5jYW5SZWFkKCk7DQotCQkJCQlhZGRKYXJGaWxlKGphcik7DQotCQkJCX0gY2F0Y2ggKFRocm93YWJsZSB0KSB7DQotCQkJCQl0LnByaW50U3RhY2tUcmFjZSgpOw0KLQkJCQl9DQogCQkJfQ0KIAkJfQ0KLQ0KLQkJLy8gU3RhcnQgU2VydmVyDQotCQlHaXRCbGl0U2VydmVyLm1haW4oYXJncyk7DQorCQkNCisJCXVwZGF0ZVNwbGFzaChzcGxhc2gsIFRyYW5zbGF0aW9uLmdldCgiZ2Iuc3RhcnRpbmciKSArICIgR2l0YmxpdCBNYW5hZ2VyLi4uIik7DQorCQlHaXRibGl0TWFuYWdlci5tYWluKGFyZ3MpOw0KIAl9DQogDQorCXByaXZhdGUgc3RhdGljIHZvaWQgdXBkYXRlU3BsYXNoKGZpbmFsIFNwbGFzaFNjcmVlbiBzcGxhc2gsIGZpbmFsIFN0cmluZyBzdHJpbmcpIHsNCisJCWlmIChzcGxhc2ggPT0gbnVsbCkgew0KKwkJCXJldHVybjsNCisJCX0NCisJCXRyeSB7DQorCQkJRXZlbnRRdWV1ZS5pbnZva2VBbmRXYWl0KG5ldyBSdW5uYWJsZSgpIHsNCisJCQkJcHVibGljIHZvaWQgcnVuKCkgew0KKwkJCQkJR3JhcGhpY3MyRCBnID0gc3BsYXNoLmNyZWF0ZUdyYXBoaWNzKCk7DQorCQkJCQlpZiAoZyAhPSBudWxsKSB7DQorCQkJCQkJLy8gU3BsYXNoIGlzIDMyMHgxMjANCisJCQkJCQlGb250TWV0cmljcyBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsNCisJCQkJCQkNCisJCQkJCQkvLyBwYWludCBzdGFydHVwIHN0YXR1cw0KKwkJCQkJCWcuc2V0Q29sb3IoQ29sb3IuZGFya0dyYXkpOw0KKwkJCQkJCWludCBoID0gZm0uZ2V0SGVpZ2h0KCkgKyBmbS5nZXRNYXhEZXNjZW50KCk7DQorCQkJCQkJaW50IHggPSA1Ow0KKwkJCQkJCWludCB5ID0gMTE1Ow0KKwkJCQkJCWludCB3ID0gMzIwIC0gMiAqIHg7DQorCQkJCQkJZy5maWxsUmVjdCh4LCB5IC0gaCwgdywgaCk7DQorCQkJCQkJZy5zZXRDb2xvcihDb2xvci5saWdodEdyYXkpOw0KKwkJCQkJCWcuZHJhd1JlY3QoeCwgeSAtIGgsIHcsIGgpOw0KKwkJCQkJCWcuc2V0Q29sb3IoQ29sb3IuV0hJVEUpOw0KKwkJCQkJCWludCB4dyA9IGZtLnN0cmluZ1dpZHRoKHN0cmluZyk7DQorCQkJCQkJZy5kcmF3U3RyaW5nKHN0cmluZywgeCArICgodyAtIHh3KSAvIDIpLCB5IC0gNSk7DQorCQkJCQkJDQorCQkJCQkJLy8gcGFpbnQgdmVyc2lvbg0KKwkJCQkJCVN0cmluZyB2ZXIgPSAidiIgKyBDb25zdGFudHMuZ2V0VmVyc2lvbigpOw0KKwkJCQkJCWludCB2dyA9IGcuZ2V0Rm9udE1ldHJpY3MoKS5zdHJpbmdXaWR0aCh2ZXIpOw0KKwkJCQkJCWcuZHJhd1N0cmluZyh2ZXIsIDMyMCAtIHZ3IC0gNSwgMzQpOw0KKwkJCQkJCWcuZGlzcG9zZSgpOw0KKwkJCQkJCXNwbGFzaC51cGRhdGUoKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0pOw0KKwkJfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsNCisJCQl0LnByaW50U3RhY2tUcmFjZSgpOw0KKwkJfQ0KKwl9DQorCQ0KIAlwdWJsaWMgc3RhdGljIExpc3Q8RmlsZT4gZmluZEphcnMoRmlsZSBmb2xkZXIpIHsNCiAJCUxpc3Q8RmlsZT4gamFycyA9IG5ldyBBcnJheUxpc3Q8RmlsZT4oKTsNCiAJCWlmIChmb2xkZXIuZXhpc3RzKCkpIHsNCkBAIC0xNTIsNCArMTYwLDUgQEAKIAkJCQkJIkVycm9yLCBjb3VsZCBub3QgYWRkIHswfSB0byBzeXN0ZW0gY2xhc3Nsb2FkZXIiLCBmLmdldFBhdGgoKSksIHQpOw0KIAkJfQ0KIAl9DQorDQogfQ0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdFBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0UGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0UGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdFBhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdFJlZ2lzdHJhdGlvbi5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdFJlZ2lzdHJhdGlvbi5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L0dpdGJsaXRSZWdpc3RyYXRpb24uamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvR2l0YmxpdFJlZ2lzdHJhdGlvbi5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0dpdGJsaXRXb3JrZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0dpdGJsaXRXb3JrZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9HaXRibGl0V29ya2VyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0dpdGJsaXRXb3JrZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9IZWFkZXJQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvSGVhZGVyUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9IZWFkZXJQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9IZWFkZXJQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0luZGljYXRvcnNSZW5kZXJlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvSW5kaWNhdG9yc1JlbmRlcmVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvSW5kaWNhdG9yc1JlbmRlcmVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0luZGljYXRvcnNSZW5kZXJlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L0pQYWxldHRlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9KUGFsZXR0ZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L0pQYWxldHRlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L0pQYWxldHRlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvTWVzc2FnZVJlbmRlcmVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9NZXNzYWdlUmVuZGVyZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9NZXNzYWdlUmVuZGVyZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvTWVzc2FnZVJlbmRlcmVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvTmFtZVJlbmRlcmVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9OYW1lUmVuZGVyZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9OYW1lUmVuZGVyZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvTmFtZVJlbmRlcmVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvUHJvcGVydGllc1RhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1Byb3BlcnRpZXNUYWJsZU1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvUHJvcGVydGllc1RhYmxlTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvUHJvcGVydGllc1RhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvUmVnaXN0cmFudFBlcm1pc3Npb25zUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1RhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1RhYmxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYW50UGVybWlzc2lvbnNUYWJsZU1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1RhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYXRpb25zRGlhbG9nLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYXRpb25zRGlhbG9nLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvUmVnaXN0cmF0aW9uc0RpYWxvZy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9SZWdpc3RyYXRpb25zRGlhbG9nLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvUmVnaXN0cmF0aW9uc1RhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1JlZ2lzdHJhdGlvbnNUYWJsZU1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvUmVnaXN0cmF0aW9uc1RhYmxlTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvUmVnaXN0cmF0aW9uc1RhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZXBvc2l0b3JpZXNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvUmVwb3NpdG9yaWVzUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZXBvc2l0b3JpZXNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9SZXBvc2l0b3JpZXNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L1JlcG9zaXRvcmllc1RhYmxlTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1JlcG9zaXRvcmllc1RhYmxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9SZXBvc2l0b3JpZXNUYWJsZU1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1JlcG9zaXRvcmllc1RhYmxlTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9TZWFyY2hEaWFsb2cuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1NlYXJjaERpYWxvZy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L1NlYXJjaERpYWxvZy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9TZWFyY2hEaWFsb2cuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9TZXR0aW5nQ2VsbFJlbmRlcmVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9TZXR0aW5nQ2VsbFJlbmRlcmVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ0NlbGxSZW5kZXJlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9TZXR0aW5nQ2VsbFJlbmRlcmVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9TZXR0aW5nUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9TZXR0aW5nUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ3NQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ3NQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L1NldHRpbmdzUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ3NQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L1NldHRpbmdzVGFibGVNb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ3NUYWJsZU1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvU2V0dGluZ3NUYWJsZU1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1NldHRpbmdzVGFibGVNb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L1N0YXR1c1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9TdGF0dXNQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L1N0YXR1c1BhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1N0YXR1c1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvU3Vic2NyaWJlZFJlcG9zaXRvcnlSZW5kZXJlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvU3Vic2NyaWJlZFJlcG9zaXRvcnlSZW5kZXJlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvY2xpZW50L1N1YnNjcmliZWRSZXBvc2l0b3J5UmVuZGVyZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvU3Vic2NyaWJlZFJlcG9zaXRvcnlSZW5kZXJlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvY2xpZW50L1N1YnNjcmlwdGlvbnNEaWFsb2cuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1N1YnNjcmlwdGlvbnNEaWFsb2cuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9TdWJzY3JpcHRpb25zRGlhbG9nLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1N1YnNjcmlwdGlvbnNEaWFsb2cuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9UZWFtc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9UZWFtc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvVGVhbXNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9UZWFtc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvVGVhbXNUYWJsZU1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9UZWFtc1RhYmxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9UZWFtc1RhYmxlTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvVGVhbXNUYWJsZU1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvVHJhbnNsYXRpb24uamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1RyYW5zbGF0aW9uLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvVHJhbnNsYXRpb24uamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvVHJhbnNsYXRpb24uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9Vc2Vyc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9Vc2Vyc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvVXNlcnNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9Vc2Vyc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvVXNlcnNUYWJsZU1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9Vc2Vyc1RhYmxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9Vc2Vyc1RhYmxlTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvVXNlcnNUYWJsZU1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9jbGllbnQvVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvY2xpZW50L1V0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9jbGllbnQvVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2NsaWVudC9zcGxhc2gucG5nIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9jbGllbnQvc3BsYXNoLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2NsaWVudC9zcGxhc2gucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2NsaWVudC9zcGxhc2gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0Q2xpZW50LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRDbGllbnQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRDbGllbnQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0Q2xpZW50LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0Q29uc3RhbnRzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRDb25zdGFudHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRDb25zdGFudHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0Q29uc3RhbnRzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0TmlvU2VydmljZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0TmlvU2VydmljZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dE5pb1NlcnZpY2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0TmlvU2VydmljZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dFNlcnZpY2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dFNlcnZpY2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTZXJ2aWNlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dFNlcnZpY2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTZXJ2aWNlQ29ubmVjdGlvbi5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0U2VydmljZUNvbm5lY3Rpb24uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTZXJ2aWNlQ29ubmVjdGlvbi5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTZXJ2aWNlQ29ubmVjdGlvbi5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dFNvY2tldFNlcnZpY2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dFNvY2tldFNlcnZpY2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTb2NrZXRTZXJ2aWNlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvZmFub3V0L0Zhbm91dFNvY2tldFNlcnZpY2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTdGF0cy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9mYW5vdXQvRmFub3V0U3RhdHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTdGF0cy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L2Zhbm91dC9GYW5vdXRTdGF0cy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0FjdGl2aXR5LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9BY3Rpdml0eS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL0FjdGl2aXR5LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0FjdGl2aXR5LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvQW5ub3RhdGVkTGluZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvQW5ub3RhdGVkTGluZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL0Fubm90YXRlZExpbmUuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvQW5ub3RhdGVkTGluZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25Nb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvRmVkZXJhdGlvbk1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvRmVkZXJhdGlvbk1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25Nb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25Qcm9wb3NhbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvRmVkZXJhdGlvblByb3Bvc2FsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvRmVkZXJhdGlvblByb3Bvc2FsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25Qcm9wb3NhbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25TZXQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25TZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9GZWRlcmF0aW9uU2V0LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZGVyYXRpb25TZXQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9GZWVkRW50cnlNb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvRmVlZEVudHJ5TW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9GZWVkRW50cnlNb2RlbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9GZWVkRW50cnlNb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZWRNb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvRmVlZE1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvRmVlZE1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0ZlZWRNb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0ZvcmtNb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvRm9ya01vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvRm9ya01vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0ZvcmtNb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL0dpdE5vdGUuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0dpdE5vdGUuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9HaXROb3RlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0dpdE5vdGUuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9HcmF2YXRhclByb2ZpbGUuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL0dyYXZhdGFyUHJvZmlsZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL0dyYXZhdGFyUHJvZmlsZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9HcmF2YXRhclByb2ZpbGUuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9Jc3N1ZU1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9Jc3N1ZU1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvSXNzdWVNb2RlbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9Jc3N1ZU1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvTWV0cmljLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9NZXRyaWMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9NZXRyaWMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvTWV0cmljLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvUGF0aE1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9QYXRoTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9QYXRoTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvUGF0aE1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvUHJvamVjdE1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9Qcm9qZWN0TW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9Qcm9qZWN0TW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvUHJvamVjdE1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvUHVzaExvZ0VudHJ5LmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9QdXNoTG9nRW50cnkuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9QdXNoTG9nRW50cnkuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvUHVzaExvZ0VudHJ5LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvUmVmTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1JlZk1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvUmVmTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvUmVmTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9SZWdpc3RyYW50QWNjZXNzUGVybWlzc2lvbi5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvUmVnaXN0cmFudEFjY2Vzc1Blcm1pc3Npb24uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9SZWdpc3RyYW50QWNjZXNzUGVybWlzc2lvbi5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9SZWdpc3RyYW50QWNjZXNzUGVybWlzc2lvbi5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL1JlcG9zaXRvcnlDb21taXQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1JlcG9zaXRvcnlDb21taXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9SZXBvc2l0b3J5Q29tbWl0LmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1JlcG9zaXRvcnlDb21taXQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9SZXBvc2l0b3J5TW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1JlcG9zaXRvcnlNb2RlbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL1JlcG9zaXRvcnlNb2RlbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9SZXBvc2l0b3J5TW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9TZWFyY2hSZXN1bHQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1NlYXJjaFJlc3VsdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL1NlYXJjaFJlc3VsdC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9TZWFyY2hSZXN1bHQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9TZXJ2ZXJTZXR0aW5ncy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvU2VydmVyU2V0dGluZ3MuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9TZXJ2ZXJTZXR0aW5ncy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9TZXJ2ZXJTZXR0aW5ncy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL1NlcnZlclN0YXR1cy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvU2VydmVyU3RhdHVzLmphdmEKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9TZXJ2ZXJTdGF0dXMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvU2VydmVyU3RhdHVzLmphdmEKaW5kZXggZjE2NTBjOC4uM2ExZTAzMCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9TZXJ2ZXJTdGF0dXMuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9TZXJ2ZXJTdGF0dXMuamF2YQpAQCAtNTMsOCArNTMsOCBAQAogDQogCXB1YmxpYyBTZXJ2ZXJTdGF0dXMoYm9vbGVhbiBpc0dPKSB7DQogCQl0aGlzLmJvb3REYXRlID0gbmV3IERhdGUoKTsNCi0JCXRoaXMudmVyc2lvbiA9IENvbnN0YW50cy5WRVJTSU9OOw0KLQkJdGhpcy5yZWxlYXNlRGF0ZSA9IENvbnN0YW50cy5WRVJTSU9OX0RBVEU7DQorCQl0aGlzLnZlcnNpb24gPSBDb25zdGFudHMuZ2V0VmVyc2lvbigpOw0KKwkJdGhpcy5yZWxlYXNlRGF0ZSA9IENvbnN0YW50cy5nZXRCdWlsZERhdGUoKTsNCiAJCXRoaXMuaXNHTyA9IGlzR087DQogDQogCQl0aGlzLmhlYXBNYXhpbXVtID0gUnVudGltZS5nZXRSdW50aW1lKCkubWF4TWVtb3J5KCk7DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9TZXR0aW5nTW9kZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1NldHRpbmdNb2RlbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL1NldHRpbmdNb2RlbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9TZXR0aW5nTW9kZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L21vZGVscy9TdWJtb2R1bGVNb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvU3VibW9kdWxlTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9TdWJtb2R1bGVNb2RlbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9TdWJtb2R1bGVNb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL1RlYW1Nb2RlbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvVGVhbU1vZGVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC9tb2RlbHMvVGVhbU1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1RlYW1Nb2RlbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvbW9kZWxzL1RpY2tldE1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9UaWNrZXRNb2RlbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvbW9kZWxzL1RpY2tldE1vZGVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvbW9kZWxzL1RpY2tldE1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC9tb2RlbHMvVXNlck1vZGVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L21vZGVscy9Vc2VyTW9kZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L21vZGVscy9Vc2VyTW9kZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC9tb2RlbHMvVXNlck1vZGVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9BY3Rpdml0eVV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0FjdGl2aXR5VXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0FjdGl2aXR5VXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9BY3Rpdml0eVV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9BcnJheVV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0FycmF5VXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0FycmF5VXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9BcnJheVV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9CYXNlNjQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvQmFzZTY0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9CYXNlNjQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9CYXNlNjQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL0J5dGVGb3JtYXQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvQnl0ZUZvcm1hdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvQnl0ZUZvcm1hdC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0J5dGVGb3JtYXQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL0NsaWVudExvZ2dlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9DbGllbnRMb2dnZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0NsaWVudExvZ2dlci5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0NsaWVudExvZ2dlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvQ29tcHJlc3Npb25VdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9Db21wcmVzc2lvblV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9Db21wcmVzc2lvblV0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvQ29tcHJlc3Npb25VdGlscy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvQ29ubmVjdGlvblV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0Nvbm5lY3Rpb25VdGlscy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9Db25uZWN0aW9uVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9Db25uZWN0aW9uVXRpbHMuamF2YQppbmRleCBmMGI0MTExLi5mZWVlZGQyIDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvQ29ubmVjdGlvblV0aWxzLmphdmEKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9Db25uZWN0aW9uVXRpbHMuamF2YQpAQCAtNjEsNiArNjEsMTAgQEAKIAkJU1NMX0NPTlRFWFQgPSBjb250ZXh0Ow0KIAkJSE9TVE5BTUVfVkVSSUZJRVIgPSBuZXcgRHVtbXlIb3N0bmFtZVZlcmlmaWVyKCk7DQogCQlDSEFSU0VUID0gIlVURi04IjsNCisJCQ0KKwkJLy8gRGlzYWJsZSBKYXZhIDcgU05JIGNoZWNrcw0KKwkJLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NjE1NjQ1L3NzbC1oYW5kc2hha2UtYWxlcnQtdW5yZWNvZ25pemVkLW5hbWUtZXJyb3Itc2luY2UtdXBncmFkZS10by1qYXZhLTEtNy0wDQorCQlTeXN0ZW0uc2V0UHJvcGVydHkoImpzc2UuZW5hYmxlU05JRXh0ZW5zaW9uIiwgImZhbHNlIik7DQogCX0NCiANCiAJcHVibGljIHN0YXRpYyB2b2lkIHNldEF1dGhvcml6YXRpb24oVVJMQ29ubmVjdGlvbiBjb25uLCBTdHJpbmcgdXNlcm5hbWUsIGNoYXJbXSBwYXNzd29yZCkgew0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9Db250YWluZXJVdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9Db250YWluZXJVdGlscy5qYXZhCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9Db250YWluZXJVdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0NvbnRhaW5lclV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9EZWVwQ29waWVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0RlZXBDb3BpZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0RlZXBDb3BpZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9EZWVwQ29waWVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9EaWZmVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvRGlmZlV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9EaWZmVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9EaWZmVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL0ZlZGVyYXRpb25VdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9GZWRlcmF0aW9uVXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0ZlZGVyYXRpb25VdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0ZlZGVyYXRpb25VdGlscy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvRmlsZVV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0ZpbGVVdGlscy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvRmlsZVV0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvRmlsZVV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9HaXRCbGl0RGlmZkZvcm1hdHRlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9HaXRCbGl0RGlmZkZvcm1hdHRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvR2l0QmxpdERpZmZGb3JtYXR0ZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9HaXRCbGl0RGlmZkZvcm1hdHRlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvR2l0V2ViRGlmZkZvcm1hdHRlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9HaXRXZWJEaWZmRm9ybWF0dGVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9HaXRXZWJEaWZmRm9ybWF0dGVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvR2l0V2ViRGlmZkZvcm1hdHRlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvSHR0cFV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0h0dHBVdGlscy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvSHR0cFV0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvSHR0cFV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9Jc3N1ZVV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0lzc3VlVXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0lzc3VlVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9Jc3N1ZVV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9KR2l0VXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvSkdpdFV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9KR2l0VXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9KR2l0VXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL0pzb25VdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9Kc29uVXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL0pzb25VdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL0pzb25VdGlscy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvTWFya2Rvd25VdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9NYXJrZG93blV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9NYXJrZG93blV0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvTWFya2Rvd25VdGlscy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvTWV0cmljVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvTWV0cmljVXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL01ldHJpY1V0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvTWV0cmljVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL09iamVjdENhY2hlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL09iamVjdENhY2hlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9PYmplY3RDYWNoZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL09iamVjdENhY2hlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9QYXRjaEZvcm1hdHRlci5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9QYXRjaEZvcm1hdHRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvUGF0Y2hGb3JtYXR0ZXIuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9QYXRjaEZvcm1hdHRlci5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvUHVzaExvZ1V0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL1B1c2hMb2dVdGlscy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvUHVzaExvZ1V0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvUHVzaExvZ1V0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9ScGNVdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9ScGNVdGlscy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvUnBjVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9ScGNVdGlscy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvdXRpbHMvU3RyaW5nVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvU3RyaW5nVXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL1N0cmluZ1V0aWxzLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvU3RyaW5nVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL1N5bmRpY2F0aW9uVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvU3luZGljYXRpb25VdGlscy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvdXRpbHMvU3luZGljYXRpb25VdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL1N5bmRpY2F0aW9uVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL1RpY2dpdFV0aWxzLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL1RpY2dpdFV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9UaWNnaXRVdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL1RpY2dpdFV0aWxzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC91dGlscy9UaW1lVXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvdXRpbHMvVGltZVV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC91dGlscy9UaW1lVXRpbHMuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9UaW1lVXRpbHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3V0aWxzL1g1MDlVdGlscy5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC91dGlscy9YNTA5VXRpbHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3V0aWxzL1g1MDlVdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3V0aWxzL1g1MDlVdGlscy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0F1dGhvcml6YXRpb25TdHJhdGVneS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvQXV0aG9yaXphdGlvblN0cmF0ZWd5LmphdmEKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9BdXRob3JpemF0aW9uU3RyYXRlZ3kuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvQXV0aG9yaXphdGlvblN0cmF0ZWd5LmphdmEKaW5kZXggMjFiZDFiNy4uNzY1ZDg2MCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9BdXRob3JpemF0aW9uU3RyYXRlZ3kuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9BdXRob3JpemF0aW9uU3RyYXRlZ3kuamF2YQpAQCAtNzgsNiArNzgsNyBAQAogDQogCUBPdmVycmlkZQ0KIAlwdWJsaWMgdm9pZCBvblVuYXV0aG9yaXplZEluc3RhbnRpYXRpb24oQ29tcG9uZW50IGNvbXBvbmVudCkgew0KKwkJDQogCQlpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgQmFzZVBhZ2UpIHsNCiAJCQl0aHJvdyBuZXcgUmVzdGFydFJlc3BvbnNlRXhjZXB0aW9uKFJlcG9zaXRvcmllc1BhZ2UuY2xhc3MpOw0KIAkJfQ0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvRXh0ZXJuYWxJbWFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvRXh0ZXJuYWxJbWFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L0V4dGVybmFsSW1hZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvRXh0ZXJuYWxJbWFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcC5qYXZhCmluZGV4IDRlMzJkYWEuLjIzMDBkMGYgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcC5qYXZhCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAuamF2YQpAQCAtNDAsNiArNDAsNyBAQAogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5wYWdlcy5HcmF2YXRhclByb2ZpbGVQYWdlOw0KIGltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQucGFnZXMuSGlzdG9yeVBhZ2U7DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5wYWdlcy5Mb2dQYWdlOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQucGFnZXMuTG9nb3V0UGFnZTsNCiBpbXBvcnQgY29tLmdpdGJsaXQud2lja2V0LnBhZ2VzLkx1Y2VuZVNlYXJjaFBhZ2U7DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5wYWdlcy5NYXJrZG93blBhZ2U7DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5wYWdlcy5NZXRyaWNzUGFnZTsNCkBAIC0xMDEsNiArMTAyLDcgQEAKIAkJbW91bnQoIi9tZXRyaWNzIiwgTWV0cmljc1BhZ2UuY2xhc3MsICJyIik7DQogCQltb3VudCgiL2JsYW1lIiwgQmxhbWVQYWdlLmNsYXNzLCAiciIsICJoIiwgImYiKTsNCiAJCW1vdW50KCIvdXNlcnMiLCBVc2Vyc1BhZ2UuY2xhc3MpOw0KKwkJbW91bnQoIi9sb2dvdXQiLCBMb2dvdXRQYWdlLmNsYXNzKTsNCiANCiAJCS8vIHNldHVwIHRpY2tldCB1cmxzDQogCQltb3VudCgiL3RpY2tldHMiLCBUaWNrZXRzUGFnZS5jbGFzcywgInIiKTsNCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAucHJvcGVydGllcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAucHJvcGVydGllcwpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcC5wcm9wZXJ0aWVzCmluZGV4IGI2YjU5YWMuLjgxZWVjYjIgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcC5wcm9wZXJ0aWVzCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHAucHJvcGVydGllcwpAQCAtNDQ0LDQgKzQ0NCw3IEBACiBnYi5zaXRlTmFtZURlc2NyaXB0aW9uID0gc2hvcnQsIGRlc2NyaXB0aXZlIG5hbWUgb2YgeW91ciBzZXJ2ZXIgDQogZ2IuZXhjbHVkZUZyb21BY3Rpdml0eSA9IGV4Y2x1ZGUgZnJvbSBhY3Rpdml0eSBwYWdlDQogZ2IuaXNTcGFya2xlc2hhcmVkID0gcmVwb3NpdG9yeSBpcyBTcGFya2xlc2hhcmVkDQotZ2Iub3duZXJzID0gb3duZXJzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZ2Iub3duZXJzID0gb3duZXJzDQorZ2Iuc2Vzc2lvbkVuZGVkID0gU2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQNCitnYi5jbG9zZUJyb3dzZXIgPSBQbGVhc2UgY2xvc2UgdGhlIGJyb3dzZXIgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNzaW9uLg0KK2diLmRvZXNOb3RFeGlzdEluVHJlZSA9IHswfSBkb2VzIG5vdCBleGlzdCBpbiB0cmVlIHsxfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2VzLnByb3BlcnRpZXMgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2VzLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2VzLnByb3BlcnRpZXMKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfZXMucHJvcGVydGllcwppbmRleCA2NGM5Y2ExLi4yMTBhNzVmIDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfZXMucHJvcGVydGllcworKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2VzLnByb3BlcnRpZXMKQEAgLTQ0MCw0ICs0NDAsNiBAQAogZ2IudmFsaWRpdHkgPSBWaWdlbmNpYQ0KIGdiLnNpdGVOYW1lID0gTm9tYnJlIGRlbCBzaXRpbw0KIGdiLnNpdGVOYW1lRGVzY3JpcHRpb24gPSBOb21icmUgY29ydG8geSBkZXNjcmlwdGl2byBkZSB0dSBzZXJ2aWRvciANCi1nYi5leGNsdWRlRnJvbUFjdGl2aXR5ID0gRXhjbHVpciBkZSBsYSBwXHUwMEUxZ2luYSBkZSBhY3RpdmlkYWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitnYi5leGNsdWRlRnJvbUFjdGl2aXR5ID0gRXhjbHVpciBkZSBsYSBwXHUwMEUxZ2luYSBkZSBhY3RpdmlkYWQNCitnYi5zZXNzaW9uRW5kZWQgPSBMYSBzZXNpXHUwMEYzbiBoYSBzaWRvIGNlcnJhZGENCitnYi5jbG9zZUJyb3dzZXIgPSBQb3JmYXZvciBjaWVycmUgZWwgbmF2ZWdhZG9yIHBhcmEgdGVybWluYXIgY29ycmVjdGFtZW50ZSBsYSBzZXNpXHUwMEYzbi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfamEucHJvcGVydGllcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfamEucHJvcGVydGllcwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9qYS5wcm9wZXJ0aWVzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2phLnByb3BlcnRpZXMKaW5kZXggMDg2ZGY3Yi4uZDAyMzRmOAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfamEucHJvcGVydGllcworKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX2phLnByb3BlcnRpZXMKQEAgLTMxNCwzICszMTQsNSBAQAogZ2IuYWxsb3dBdXRoZW50aWNhdGVkRGVzY3JpcHRpb24gPSBcdTUxNjhcdTMwNjZcdTMwNmVcdThhOGRcdThhM2NcdTZlMDhcdTMwN2ZcdTMwZTZcdTMwZmNcdTMwYjZcdTMwZmNcdTMwNzhcdTMwYTJcdTMwYWZcdTMwYmJcdTMwYjlcdTMwOTJcdThhMzFcdTUzZWZcdTMwNTlcdTMwOGINCiBnYi5hbGxvd05hbWVkRGVzY3JpcHRpb24gPSBcdTYzMDdcdTViOWFcdTMwNTdcdTMwNWZcdTU0MGRcdTUyNGRcdTMwNmVcdTMwZTZcdTMwZmNcdTMwYjZcdTMwZmMvXHUzMGMxXHUzMGZjXHUzMGUwXHUzMDc4XHUzMGEyXHUzMGFmXHUzMGJiXHUzMGI5XHUzMDkyXHU4YTMxXHU1M2VmXHUzMDU5XHUzMDhiDQogZ2IubWFya2Rvd25GYWlsdXJlID0gTWFya2Rvd24gXHUzMDZlXHUzMGQxXHUzMGZjXHUzMGI5XHUzMDZiXHU1OTMxXHU2NTU3XHUzMDU3XHUzMDdlXHUzMDU3XHUzMDVmIQ0KK2diLnNlc3Npb25FbmRlZCA9IFNlc3Npb24gaGFzIGJlZW4gY2xvc2VkDQorZ2IuY2xvc2VCcm93c2VyID0gUGxlYXNlIGNsb3NlIHRoZSBicm93c2VyIHRvIHByb3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfa28ucHJvcGVydGllcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfa28ucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfa28ucHJvcGVydGllcwpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9rby5wcm9wZXJ0aWVzCmluZGV4IDE4ZWRhMjYuLjQyOTE1ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9rby5wcm9wZXJ0aWVzCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfa28ucHJvcGVydGllcwpAQCAtNDQwLDQgKzQ0MCw2IEBACiBnYi52YWxpZGl0eSA9IFx1QzcyMFx1RDZBOFx1QzEzMQogZ2Iuc2l0ZU5hbWUgPSBcdUMwQUNcdUM3NzRcdUQyQjggXHVDNzc0XHVCOTg0CiBnYi5zaXRlTmFtZURlc2NyaXB0aW9uID0gXHVDMTFDXHVCQzg0XHVDNzU4IFx1QzlFNlx1Qzc0MCBcdUMxMjRcdUJBODVcdUM3NzQgXHVEM0VDXHVENTY4XHVCNDFDIFx1Qzc3NFx1Qjk4NAotZ2IuZXhjbHVkZUZyb21BY3Rpdml0eSA9IFx1QzU2MVx1RDJGMFx1QkU0NFx1RDJGMCBcdUQzOThcdUM3NzRcdUM5QzBcdUM1RDBcdUMxMUMgXHVDODFDXHVDNjc4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZ2IuZXhjbHVkZUZyb21BY3Rpdml0eSA9IFx1QzU2MVx1RDJGMFx1QkU0NFx1RDJGMCBcdUQzOThcdUM3NzRcdUM5QzBcdUM1RDBcdUMxMUMgXHVDODFDXHVDNjc4CitnYi5zZXNzaW9uRW5kZWQgPSBTZXNzaW9uIGhhcyBiZWVuIGNsb3NlZAorZ2IuY2xvc2VCcm93c2VyID0gUGxlYXNlIGNsb3NlIHRoZSBicm93c2VyIHRvIHByb3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9ubC5wcm9wZXJ0aWVzIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9ubC5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9ubC5wcm9wZXJ0aWVzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX25sLnByb3BlcnRpZXMKaW5kZXggNTQ3MWFkOC4uZjEyODFlMSAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX25sLnByb3BlcnRpZXMKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9ubC5wcm9wZXJ0aWVzCkBAIC00NDEsMyArNDQxLDUgQEAKIGdiLnNpdGVOYW1lID0gc2l0ZSBuYWFtDQogZ2Iuc2l0ZU5hbWVEZXNjcmlwdGlvbiA9IGtvcnRlLCB2ZXJkdWlkZWxpamtlbmRlIG5hYW0gdmFuIGRlemUgc2VydmVyDQogZ2IuZXhjbHVkZUZyb21BY3Rpdml0eSA9IHNsdWl0IHVpdCB2YW4gYWN0aXZpdGVpdHNwYWdpbmENCitnYi5zZXNzaW9uRW5kZWQgPSBTZXNzaWUgaXMgYWZnZXNsb3Rlbg0KK2diLmNsb3NlQnJvd3NlciA9IFNsdWl0IGRlIGJyb3dzZXIgYWYgb20gZGUgc2Vzc2llIGhlbGVtYWFsIHRlIGJlZWluZGlnZW4uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3BsLnByb3BlcnRpZXMgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3BsLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3BsLnByb3BlcnRpZXMKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfcGwucHJvcGVydGllcwppbmRleCA4MmZmYTYzLi5iNzVlOGY4IDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfcGwucHJvcGVydGllcworKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3BsLnByb3BlcnRpZXMKQEAgLTMxOCw0ICszMTgsNiBAQAogZ2IucHJvamVjdHMgPSBQcm9qZWt0eQogZ2IucHJvamVjdCA9IFByb2pla3QKIGdiLmFsbFByb2plY3RzID0gV3N6eXN0a2llIHByb2pla3R5Ci1nYi5jb3B5VG9DbGlwYm9hcmQgPSBLb3BpdWogZG8gc2Nob3drYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2diLmNvcHlUb0NsaXBib2FyZCA9IEtvcGl1aiBkbyBzY2hvd2thCitnYi5zZXNzaW9uRW5kZWQgPSBTZXNzaW9uIGhhcyBiZWVuIGNsb3NlZAorZ2IuY2xvc2VCcm93c2VyID0gUGxlYXNlIGNsb3NlIHRoZSBicm93c2VyIHRvIHByb3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfcHRfQlIucHJvcGVydGllcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfcHRfQlIucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfcHRfQlIucHJvcGVydGllcwpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9wdF9CUi5wcm9wZXJ0aWVzCmluZGV4IGVmZTI4NmMuLmEwMmQyZmYgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF9wdF9CUi5wcm9wZXJ0aWVzCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJBcHBfcHRfQlIucHJvcGVydGllcwpAQCAtNDQyLDQgKzQ0Miw2IEBACiBnYi5zaXRlTmFtZURlc2NyaXB0aW9uID0gYnJldmUsIG1hcyBhaW5kYSBhc3NpbSB1bSBub21lIGRlc2NyaXRpdm8gcGFyYSBzZXUgc2Vydmlkb3INCiBnYi5leGNsdWRlRnJvbUFjdGl2aXR5ID0gZXhjbHVpciBkYSBw4WdpbmEgZGUgYXRpdmlkYWRlcw0KIGdiLmlzU3BhcmtsZXNoYXJlZCA9IHJlcG9zaXTzcmlvIOkgU3BhcmtsZXNoYXJlZA0KLWdiLm93bmVycyA9IHByb3ByaWV04XJpb3MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitnYi5vd25lcnMgPSBwcm9wcmlldOFyaW9zDQorZ2Iuc2Vzc2lvbkVuZGVkID0gU2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQNCitnYi5jbG9zZUJyb3dzZXIgPSBQbGVhc2UgY2xvc2UgdGhlIGJyb3dzZXIgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNzaW9uLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF96aF9DTi5wcm9wZXJ0aWVzIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF96aF9DTi5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF96aF9DTi5wcm9wZXJ0aWVzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3poX0NOLnByb3BlcnRpZXMKaW5kZXggYjU3MTU4NS4uOTZlMjA2NyAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRCbGl0V2ViQXBwX3poX0NOLnByb3BlcnRpZXMKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYkFwcF96aF9DTi5wcm9wZXJ0aWVzCkBAIC00NDEsNCArNDQxLDYgQEAKIGdiLnNpdGVOYW1lID0gXHU3ZjUxXHU3YWQ5XHU1NDBkXHU3OWYwCiBnYi5zaXRlTmFtZURlc2NyaXB0aW9uID0gXHU2MGE4XHU3Njg0XHU2NzBkXHU1MmExXHU1NjY4XHU3Njg0XHU3YjgwXHU4OTgxXHU2M2NmXHU4ZmYwCiBnYi5leGNsdWRlRnJvbUFjdGl2aXR5ID0gXHU0ZWNlXHU2ZDNiXHU1MmE4XHU5ODc1XHU5NzYyXHU2MzkyXHU5NjY0Ci1nYi5pc1NwYXJrbGVzaGFyZWQgPSByZXBvc2l0b3J5IGlzIFNwYXJrbGVzaGFyZWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitnYi5pc1NwYXJrbGVzaGFyZWQgPSByZXBvc2l0b3J5IGlzIFNwYXJrbGVzaGFyZWQKK2diLnNlc3Npb25FbmRlZCA9IFNlc3Npb24gaGFzIGJlZW4gY2xvc2VkCitnYi5jbG9zZUJyb3dzZXIgPSBQbGVhc2UgY2xvc2UgdGhlIGJyb3dzZXIgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNzaW9uLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYlNlc3Npb24uamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdEJsaXRXZWJTZXNzaW9uLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYlNlc3Npb24uamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0QmxpdFdlYlNlc3Npb24uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRibGl0UGFyYW1VcmxDb2RpbmdTdHJhdGVneS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0YmxpdFBhcmFtVXJsQ29kaW5nU3RyYXRlZ3kuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9HaXRibGl0UGFyYW1VcmxDb2RpbmdTdHJhdGVneS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9HaXRibGl0UGFyYW1VcmxDb2RpbmdTdHJhdGVneS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L0dpdGJsaXRSZWRpcmVjdEV4Y2VwdGlvbi5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvR2l0YmxpdFJlZGlyZWN0RXhjZXB0aW9uLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvR2l0YmxpdFJlZGlyZWN0RXhjZXB0aW9uLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L0dpdGJsaXRSZWRpcmVjdEV4Y2VwdGlvbi5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L1BhZ2VSZWdpc3RyYXRpb24uamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L1BhZ2VSZWdpc3RyYXRpb24uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9QYWdlUmVnaXN0cmF0aW9uLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L1BhZ2VSZWdpc3RyYXRpb24uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9SZXF1aXJlc0FkbWluUm9sZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvUmVxdWlyZXNBZG1pblJvbGUuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9SZXF1aXJlc0FkbWluUm9sZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9SZXF1aXJlc0FkbWluUm9sZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L1Nlc3Npb25sZXNzRm9ybS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvU2Vzc2lvbmxlc3NGb3JtLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvU2Vzc2lvbmxlc3NGb3JtLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L1Nlc3Npb25sZXNzRm9ybS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L1N0cmluZ0Nob2ljZVJlbmRlcmVyLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9TdHJpbmdDaG9pY2VSZW5kZXJlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L1N0cmluZ0Nob2ljZVJlbmRlcmVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L1N0cmluZ0Nob2ljZVJlbmRlcmVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvV2lja2V0VXRpbHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L1dpY2tldFV0aWxzLmphdmEKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9XaWNrZXRVdGlscy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9XaWNrZXRVdGlscy5qYXZhCmluZGV4IGU0ZWIyOWYuLjZlMDMwMzIgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvV2lja2V0VXRpbHMuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9XaWNrZXRVdGlscy5qYXZhCkBAIC0xNjUsNyArMTY1LDcgQEAKIAkJCQl8fCBmaWxlbmFtZS5lbmRzV2l0aCgiLnhsc3giKSkgew0KIAkJCXJldHVybiBuZXdJbWFnZSh3aWNrZXRJZCwgImZpbGVfZXhjZWxfMTZ4MTYucG5nIik7DQogCQl9IGVsc2UgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCIuZG9jIikgfHwgZmlsZW5hbWUuZW5kc1dpdGgoIi5kb2N4IikpIHsNCi0JCQlyZXR1cm4gbmV3SW1hZ2Uod2lja2V0SWQsICJmaWxlX3dvcmRfMTZ4MTYucG5nIik7DQorCQkJcmV0dXJuIG5ld0ltYWdlKHdpY2tldElkLCAiZmlsZV9kb2NfMTZ4MTYucG5nIik7DQogCQl9IGVsc2UgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCIucHB0IikpIHsNCiAJCQlyZXR1cm4gbmV3SW1hZ2Uod2lja2V0SWQsICJmaWxlX3BwdF8xNngxNi5wbmciKTsNCiAJCX0gZWxzZSBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoIi56aXAiKSkgew0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvY2hhcnRpbmcvR29vZ2xlQ2hhcnQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L2NoYXJ0aW5nL0dvb2dsZUNoYXJ0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvY2hhcnRpbmcvR29vZ2xlQ2hhcnQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvY2hhcnRpbmcvR29vZ2xlQ2hhcnQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVDaGFydHMuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L2NoYXJ0aW5nL0dvb2dsZUNoYXJ0cy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L2NoYXJ0aW5nL0dvb2dsZUNoYXJ0cy5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVDaGFydHMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVMaW5lQ2hhcnQuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L2NoYXJ0aW5nL0dvb2dsZUxpbmVDaGFydC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L2NoYXJ0aW5nL0dvb2dsZUxpbmVDaGFydC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVMaW5lQ2hhcnQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVQaWVDaGFydC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvY2hhcnRpbmcvR29vZ2xlUGllQ2hhcnQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVQaWVDaGFydC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9jaGFydGluZy9Hb29nbGVQaWVDaGFydC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0FjdGl2aXR5UGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQWN0aXZpdHlQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQWN0aXZpdHlQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0FjdGl2aXR5UGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0FjdGl2aXR5UGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQWN0aXZpdHlQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQWN0aXZpdHlQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0FjdGl2aXR5UGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jhc2VQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CYXNlUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jhc2VQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jhc2VQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmFzZVBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jhc2VQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CYXNlUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CYXNlUGFnZS5qYXZhCmluZGV4IGM3MzNjOTkuLmJiN2Q4YzkgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmFzZVBhZ2UuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CYXNlUGFnZS5qYXZhCkBAIC0zOCwxNSArMzgsMTIgQEAKIGltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5SZXF1ZXN0Q3ljbGU7DQogaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LlJlc3RhcnRSZXNwb25zZUV4Y2VwdGlvbjsNCiBpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuQ1NTUGFja2FnZVJlc291cmNlOw0KLWltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJQYWdlOw0KIGltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCiBpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwubGluay5Cb29rbWFya2FibGVQYWdlTGluazsNCiBpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwubGluay5FeHRlcm5hbExpbms7DQogaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLnBhbmVsLkZlZWRiYWNrUGFuZWw7DQogaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLnBhbmVsLkZyYWdtZW50Ow0KIGltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC5odHRwLlJlcXVlc3RVdGlsczsNCi1pbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wuaHR0cC5XZWJSZXF1ZXN0Ow0KLWltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC5odHRwLldlYlJlc3BvbnNlOw0KIGltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC5odHRwLnNlcnZsZXQuU2VydmxldFdlYlJlcXVlc3Q7DQogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KQEAgLTY4LDcgKzY1LDcgQEAKIGltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQuV2lja2V0VXRpbHM7DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5wYW5lbHMuTGlua1BhbmVsOw0KIA0KLXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlUGFnZSBleHRlbmRzIFdlYlBhZ2Ugew0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlUGFnZSBleHRlbmRzIFNlc3Npb25QYWdlIHsNCiANCiAJcHJpdmF0ZSBmaW5hbCBMb2dnZXIgbG9nZ2VyOw0KIAkNCkBAIC03OCwxNCArNzUsMTIgQEAKIAkJc3VwZXIoKTsNCiAJCWxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKGdldENsYXNzKCkpOw0KIAkJY3VzdG9taXplSGVhZGVyKCk7DQotCQlsb2dpbigpOw0KIAl9DQogDQogCXB1YmxpYyBCYXNlUGFnZShQYWdlUGFyYW1ldGVycyBwYXJhbXMpIHsNCiAJCXN1cGVyKHBhcmFtcyk7DQogCQlsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihnZXRDbGFzcygpKTsNCiAJCWN1c3RvbWl6ZUhlYWRlcigpOw0KLQkJbG9naW4oKTsNCiAJfQ0KIAkNCiAJcHJpdmF0ZSB2b2lkIGN1c3RvbWl6ZUhlYWRlcigpIHsNCkBAIC0xMzMsMzQgKzEyOCw2IEBACiAJCXN1cGVyLm9uQWZ0ZXJSZW5kZXIoKTsNCiAJfQkNCiANCi0JcHJpdmF0ZSB2b2lkIGxvZ2luKCkgew0KLQkJR2l0QmxpdFdlYlNlc3Npb24gc2Vzc2lvbiA9IEdpdEJsaXRXZWJTZXNzaW9uLmdldCgpOw0KLQkJaWYgKHNlc3Npb24uaXNMb2dnZWRJbigpICYmICFzZXNzaW9uLmlzU2Vzc2lvbkludmFsaWRhdGVkKCkpIHsNCi0JCQkvLyBhbHJlYWR5IGhhdmUgYSBzZXNzaW9uLCByZWZyZXNoIHVzZXJtb2RlbCB0byBwaWNrIHVwDQotCQkJLy8gYW55IGNoYW5nZXMgdG8gcGVybWlzc2lvbnMgb3Igcm9sZXMgKGlzc3VlLTE4NikNCi0JCQlVc2VyTW9kZWwgdXNlciA9IEdpdEJsaXQuc2VsZigpLmdldFVzZXJNb2RlbChzZXNzaW9uLmdldFVzZXIoKS51c2VybmFtZSk7DQotCQkJc2Vzc2lvbi5zZXRVc2VyKHVzZXIpOw0KLQkJCXJldHVybjsNCi0JCX0NCi0JCQ0KLQkJLy8gdHJ5IHRvIGF1dGhlbnRpY2F0ZSBieSBzZXJ2bGV0IHJlcXVlc3QNCi0JCUh0dHBTZXJ2bGV0UmVxdWVzdCBodHRwUmVxdWVzdCA9ICgoV2ViUmVxdWVzdCkgZ2V0UmVxdWVzdEN5Y2xlKCkuZ2V0UmVxdWVzdCgpKS5nZXRIdHRwU2VydmxldFJlcXVlc3QoKTsNCi0JCVVzZXJNb2RlbCB1c2VyID0gR2l0QmxpdC5zZWxmKCkuYXV0aGVudGljYXRlKGh0dHBSZXF1ZXN0KTsNCi0NCi0JCS8vIExvZ2luIHRoZSB1c2VyDQotCQlpZiAodXNlciAhPSBudWxsKSB7DQotCQkJLy8gaXNzdWUgNjI6IGZpeCBzZXNzaW9uIGZpeGF0aW9uIHZ1bG5lcmFiaWxpdHkNCi0JCQlzZXNzaW9uLnJlcGxhY2VTZXNzaW9uKCk7DQotCQkJc2Vzc2lvbi5zZXRVc2VyKHVzZXIpOw0KLQ0KLQkJCS8vIFNldCBDb29raWUNCi0JCQlXZWJSZXNwb25zZSByZXNwb25zZSA9IChXZWJSZXNwb25zZSkgZ2V0UmVxdWVzdEN5Y2xlKCkuZ2V0UmVzcG9uc2UoKTsNCi0JCQlHaXRCbGl0LnNlbGYoKS5zZXRDb29raWUocmVzcG9uc2UsIHVzZXIpOw0KLQkJCQ0KLQkJCXNlc3Npb24uY29udGludWVSZXF1ZXN0KCk7DQotCQl9DQotCX0NCi0NCiAJcHJvdGVjdGVkIHZvaWQgc2V0dXBQYWdlKFN0cmluZyByZXBvc2l0b3J5TmFtZSwgU3RyaW5nIHBhZ2VOYW1lKSB7DQogCQlpZiAocmVwb3NpdG9yeU5hbWUgIT0gbnVsbCAmJiByZXBvc2l0b3J5TmFtZS50cmltKCkubGVuZ3RoKCkgPiAwKSB7DQogCQkJYWRkKG5ldyBMYWJlbCgidGl0bGUiLCBnZXRTZXJ2ZXJOYW1lKCkgKyAiIC0gIiArIHJlcG9zaXRvcnlOYW1lKSk7DQpAQCAtMTg0LDcgKzE1MSw3IEBACiAJCQlhZGQobmV3IExhYmVsKCJ1c2VyUGFuZWwiLCAiIikpOw0KIAkJfQ0KIA0KLQkJYWRkKG5ldyBMYWJlbCgiZ2JWZXJzaW9uIiwgInYiICsgQ29uc3RhbnRzLlZFUlNJT04pKTsNCisJCWFkZChuZXcgTGFiZWwoImdiVmVyc2lvbiIsICJ2IiArIENvbnN0YW50cy5nZXRWZXJzaW9uKCkpKTsNCiAJCWlmIChHaXRCbGl0LmdldEJvb2xlYW4oS2V5cy53ZWIuYWdncmVzc2l2ZUhlYXBNYW5hZ2VtZW50LCBmYWxzZSkpIHsNCiAJCQlTeXN0ZW0uZ2MoKTsNCiAJCX0NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0JsYW1lUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxhbWVQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbGFtZVBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxhbWVQYWdlLmh0bWwKaW5kZXggOTM5MWVhZi4uNzIyY2YzZCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbGFtZVBhZ2UuaHRtbAorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbGFtZVBhZ2UuaHRtbApAQCAtMTcsNiArMTcsOCBAQAogDQogCTwhLS0gYnJlYWRjcnVtYnMgLS0+DQogCTxkaXYgd2lja2V0OmlkPSJicmVhZGNydW1icyI+W2JyZWFkY3J1bWJzXTwvZGl2Pg0KKwkNCisJPGRpdiB3aWNrZXQ6aWQ9Im1pc3NpbmdCbG9iIj5bbWlzc2luZyBibG9iXTwvZGl2Pg0KIAkJDQogCTwhLS0gIGJsYW1lIGNvbnRlbnQgLS0+DQogCTx0YWJsZSBjbGFzcz0iYW5ub3RhdGVkIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo1cHg7Ij4NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0JsYW1lUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxhbWVQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbGFtZVBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxhbWVQYWdlLmphdmEKaW5kZXggZDc2MTgxZC4uOWI0YzE1YyAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbGFtZVBhZ2UuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbGFtZVBhZ2UuamF2YQpAQCAtMzIsNyArMzIsOSBAQAogaW1wb3J0IGNvbS5naXRibGl0LkdpdEJsaXQ7DQogaW1wb3J0IGNvbS5naXRibGl0LktleXM7DQogaW1wb3J0IGNvbS5naXRibGl0Lm1vZGVscy5Bbm5vdGF0ZWRMaW5lOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5tb2RlbHMuUGF0aE1vZGVsOw0KIGltcG9ydCBjb20uZ2l0YmxpdC51dGlscy5EaWZmVXRpbHM7DQoraW1wb3J0IGNvbS5naXRibGl0LnV0aWxzLkpHaXRVdGlsczsNCiBpbXBvcnQgY29tLmdpdGJsaXQudXRpbHMuU3RyaW5nVXRpbHM7DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5XaWNrZXRVdGlsczsNCiBpbXBvcnQgY29tLmdpdGJsaXQud2lja2V0LnBhbmVscy5Db21taXRIZWFkZXJQYW5lbDsNCkBAIC02OSw2ICs3MSwyNCBAQAogCQkJCSJFRUVFLCBNTU1NIGQsIHl5eXkgSEg6bW0gWiIpOw0KIAkJZmluYWwgRGF0ZUZvcm1hdCBkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KGZvcm1hdCk7DQogCQlkZi5zZXRUaW1lWm9uZShnZXRUaW1lWm9uZSgpKTsNCisJCQ0KKwkJUGF0aE1vZGVsIHBhdGhNb2RlbCA9IG51bGw7DQorCQlMaXN0PFBhdGhNb2RlbD4gcGF0aHMgPSBKR2l0VXRpbHMuZ2V0RmlsZXNJblBhdGgoZ2V0UmVwb3NpdG9yeSgpLCBTdHJpbmdVdGlscy5nZXRSb290UGF0aChibG9iUGF0aCksIGNvbW1pdCk7DQorCQlmb3IgKFBhdGhNb2RlbCBwYXRoIDogcGF0aHMpIHsNCisJCQlpZiAocGF0aC5wYXRoLmVxdWFscyhibG9iUGF0aCkpIHsNCisJCQkJcGF0aE1vZGVsID0gcGF0aDsNCisJCQkJYnJlYWs7DQorCQkJfQ0KKwkJfQ0KKwkJDQorCQlpZiAocGF0aE1vZGVsID09IG51bGwpIHsNCisJCQlhZGQobmV3IExhYmVsKCJhbm5vdGF0aW9uIikuc2V0VmlzaWJsZShmYWxzZSkpOw0KKwkJCWFkZChuZXcgTGFiZWwoIm1pc3NpbmdCbG9iIiwgbWlzc2luZ0Jsb2IoYmxvYlBhdGgsIGNvbW1pdCkpLnNldEVzY2FwZU1vZGVsU3RyaW5ncyhmYWxzZSkpOw0KKwkJCXJldHVybjsNCisJCX0NCisJCQ0KKwkJYWRkKG5ldyBMYWJlbCgibWlzc2luZ0Jsb2IiKS5zZXRWaXNpYmxlKGZhbHNlKSk7DQorCQkNCiAJCUxpc3Q8QW5ub3RhdGVkTGluZT4gbGluZXMgPSBEaWZmVXRpbHMuYmxhbWUoZ2V0UmVwb3NpdG9yeSgpLCBibG9iUGF0aCwgb2JqZWN0SWQpOw0KIAkJTGlzdERhdGFQcm92aWRlcjxBbm5vdGF0ZWRMaW5lPiBibGFtZURwID0gbmV3IExpc3REYXRhUHJvdmlkZXI8QW5ub3RhdGVkTGluZT4obGluZXMpOw0KIAkJRGF0YVZpZXc8QW5ub3RhdGVkTGluZT4gYmxhbWVWaWV3ID0gbmV3IERhdGFWaWV3PEFubm90YXRlZExpbmU+KCJhbm5vdGF0aW9uIiwgYmxhbWVEcCkgew0KQEAgLTEyNiw0ICsxNDYsMTMgQEAKIAlwcm90ZWN0ZWQgU3RyaW5nIGdldFBhZ2VOYW1lKCkgew0KIAkJcmV0dXJuIGdldFN0cmluZygiZ2IuYmxhbWUiKTsNCiAJfQ0KKwkNCisJcHJvdGVjdGVkIFN0cmluZyBtaXNzaW5nQmxvYihTdHJpbmcgYmxvYlBhdGgsIFJldkNvbW1pdCBjb21taXQpIHsNCisJCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KKwkJc2IuYXBwZW5kKCI8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZXJyb3JcIj4iKTsNCisJCVN0cmluZyBwYXR0ZXJuID0gZ2V0U3RyaW5nKCJnYi5kb2VzTm90RXhpc3RJblRyZWUiKS5yZXBsYWNlKCJ7MH0iLCAiPGI+ezB9PC9iPiIpLnJlcGxhY2UoInsxfSIsICI8Yj57MX08L2I+Iik7DQorCQlzYi5hcHBlbmQoTWVzc2FnZUZvcm1hdC5mb3JtYXQocGF0dGVybiwgYmxvYlBhdGgsIGNvbW1pdC5nZXRUcmVlKCkuZ2V0SWQoKS5nZXROYW1lKCkpKTsNCisJCXNiLmFwcGVuZCgiPC9kaXY+Iik7DQorCQlyZXR1cm4gc2IudG9TdHJpbmcoKTsNCisJfQ0KIH0NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JEaWZmUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxvYkRpZmZQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxvYkRpZmZQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JEaWZmUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JEaWZmUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxvYkRpZmZQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxvYkRpZmZQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JEaWZmUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbG9iUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxvYlBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0Jsb2JQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbG9iUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbG9iUGFnZS5qYXZhCmluZGV4IGUyYjg1NDYuLmFiMGYwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQmxvYlBhZ2UuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9CbG9iUGFnZS5qYXZhCkBAIC0xMjQsMjAgKzEyNCwzOSBAQAogCQkJCWRlZmF1bHQ6DQogCQkJCQkvLyBwbGFpbiB0ZXh0DQogCQkJCQlTdHJpbmcgc291cmNlID0gSkdpdFV0aWxzLmdldFN0cmluZ0NvbnRlbnQociwgY29tbWl0LmdldFRyZWUoKSwgYmxvYlBhdGgsIGVuY29kaW5ncyk7DQotCQkJCQlTdHJpbmcgdGFibGUgPSBnZW5lcmF0ZVNvdXJjZVZpZXcoc291cmNlLCB0eXBlID09IDEpOw0KKwkJCQkJU3RyaW5nIHRhYmxlOw0KKwkJCQkJaWYgKHNvdXJjZSA9PSBudWxsKSB7DQorCQkJCQkJdGFibGUgPSBtaXNzaW5nQmxvYihibG9iUGF0aCwgY29tbWl0KTsNCisJCQkJCX0gZWxzZSB7DQorCQkJCQkJdGFibGUgPSBnZW5lcmF0ZVNvdXJjZVZpZXcoc291cmNlLCB0eXBlID09IDEpOw0KKwkJCQkJfQ0KIAkJCQkJYWRkKG5ldyBMYWJlbCgiYmxvYlRleHQiLCB0YWJsZSkuc2V0RXNjYXBlTW9kZWxTdHJpbmdzKGZhbHNlKSk7DQogCQkJCQlhZGQobmV3IEltYWdlKCJibG9iSW1hZ2UiKS5zZXRWaXNpYmxlKGZhbHNlKSk7DQogCQkJCX0NCiAJCQl9IGVsc2Ugew0KIAkJCQkvLyBwbGFpbiB0ZXh0DQogCQkJCVN0cmluZyBzb3VyY2UgPSBKR2l0VXRpbHMuZ2V0U3RyaW5nQ29udGVudChyLCBjb21taXQuZ2V0VHJlZSgpLCBibG9iUGF0aCwgZW5jb2RpbmdzKTsNCi0JCQkJU3RyaW5nIHRhYmxlID0gZ2VuZXJhdGVTb3VyY2VWaWV3KHNvdXJjZSwgZmFsc2UpOw0KKwkJCQlTdHJpbmcgdGFibGU7DQorCQkJCWlmIChzb3VyY2UgPT0gbnVsbCkgew0KKwkJCQkJdGFibGUgPSBtaXNzaW5nQmxvYihibG9iUGF0aCwgY29tbWl0KTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXRhYmxlID0gZ2VuZXJhdGVTb3VyY2VWaWV3KHNvdXJjZSwgZmFsc2UpOw0KKwkJCQl9DQogCQkJCWFkZChuZXcgTGFiZWwoImJsb2JUZXh0IiwgdGFibGUpLnNldEVzY2FwZU1vZGVsU3RyaW5ncyhmYWxzZSkpOw0KIAkJCQlhZGQobmV3IEltYWdlKCJibG9iSW1hZ2UiKS5zZXRWaXNpYmxlKGZhbHNlKSk7DQogCQkJfQ0KIAkJfQ0KIAl9DQogCQ0KKwlwcm90ZWN0ZWQgU3RyaW5nIG1pc3NpbmdCbG9iKFN0cmluZyBibG9iUGF0aCwgUmV2Q29tbWl0IGNvbW1pdCkgew0KKwkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQorCQlzYi5hcHBlbmQoIjxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1lcnJvclwiPiIpOw0KKwkJU3RyaW5nIHBhdHRlcm4gPSBnZXRTdHJpbmcoImdiLmRvZXNOb3RFeGlzdEluVHJlZSIpLnJlcGxhY2UoInswfSIsICI8Yj57MH08L2I+IikucmVwbGFjZSgiezF9IiwgIjxiPnsxfTwvYj4iKTsNCisJCXNiLmFwcGVuZChNZXNzYWdlRm9ybWF0LmZvcm1hdChwYXR0ZXJuLCBibG9iUGF0aCwgY29tbWl0LmdldFRyZWUoKS5nZXRJZCgpLmdldE5hbWUoKSkpOw0KKwkJc2IuYXBwZW5kKCI8L2Rpdj4iKTsNCisJCXJldHVybiBzYi50b1N0cmluZygpOw0KKwl9DQorCQ0KIAlwcm90ZWN0ZWQgU3RyaW5nIGdlbmVyYXRlU291cmNlVmlldyhTdHJpbmcgc291cmNlLCBib29sZWFuIHByZXR0eVByaW50KSB7DQogCQlTdHJpbmcgW10gbGluZXMgPSBzb3VyY2Uuc3BsaXQoIlxuIik7DQogCQkNCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0JyYW5jaGVzUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQnJhbmNoZXNQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQnJhbmNoZXNQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0JyYW5jaGVzUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0JyYW5jaGVzUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQnJhbmNoZXNQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQnJhbmNoZXNQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0JyYW5jaGVzUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NoYW5nZVBhc3N3b3JkUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ2hhbmdlUGFzc3dvcmRQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ2hhbmdlUGFzc3dvcmRQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NoYW5nZVBhc3N3b3JkUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NoYW5nZVBhc3N3b3JkUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ2hhbmdlUGFzc3dvcmRQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ2hhbmdlUGFzc3dvcmRQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NoYW5nZVBhc3N3b3JkUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NvbW1pdERpZmZQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Db21taXREaWZmUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NvbW1pdERpZmZQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NvbW1pdERpZmZQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0RGlmZlBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0NvbW1pdERpZmZQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0RGlmZlBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0RGlmZlBhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Db21taXRQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Db21taXRQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0UGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Db21taXRQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0UGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0UGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0UGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Db21taXRQYWdlLmphdmEKaW5kZXggYzVhMjRjOC4uNTQwZDJhMiAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Db21taXRQYWdlLmphdmEKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvQ29tbWl0UGFnZS5qYXZhCkBAIC0yMDAsMTAgKzIwMCwxMiBAQAogCQkJCQkJCS5zZXRFbmFibGVkKCFlbnRyeS5jaGFuZ2VUeXBlLmVxdWFscyhDaGFuZ2VUeXBlLkFERCkNCiAJCQkJCQkJCQkmJiAhZW50cnkuY2hhbmdlVHlwZS5lcXVhbHMoQ2hhbmdlVHlwZS5ERUxFVEUpKSk7DQogCQkJCQlpdGVtLmFkZChuZXcgQm9va21hcmthYmxlUGFnZUxpbms8Vm9pZD4oInZpZXciLCBCbG9iUGFnZS5jbGFzcywgV2lja2V0VXRpbHMNCi0JCQkJCQkJLm5ld1BhdGhQYXJhbWV0ZXIocmVwb3NpdG9yeU5hbWUsIGVudHJ5LmNvbW1pdElkLCBlbnRyeS5wYXRoKSkpOw0KKwkJCQkJCQkubmV3UGF0aFBhcmFtZXRlcihyZXBvc2l0b3J5TmFtZSwgZW50cnkuY29tbWl0SWQsIGVudHJ5LnBhdGgpKQ0KKwkJCQkJCQkuc2V0RW5hYmxlZCghZW50cnkuY2hhbmdlVHlwZS5lcXVhbHMoQ2hhbmdlVHlwZS5ERUxFVEUpKSk7DQogCQkJCQlpdGVtLmFkZChuZXcgQm9va21hcmthYmxlUGFnZUxpbms8Vm9pZD4oImJsYW1lIiwgQmxhbWVQYWdlLmNsYXNzLCBXaWNrZXRVdGlscw0KIAkJCQkJCQkubmV3UGF0aFBhcmFtZXRlcihyZXBvc2l0b3J5TmFtZSwgZW50cnkuY29tbWl0SWQsIGVudHJ5LnBhdGgpKQ0KLQkJCQkJCQkuc2V0RW5hYmxlZCghZW50cnkuY2hhbmdlVHlwZS5lcXVhbHMoQ2hhbmdlVHlwZS5BREQpKSk7DQorCQkJCQkJCS5zZXRFbmFibGVkKCFlbnRyeS5jaGFuZ2VUeXBlLmVxdWFscyhDaGFuZ2VUeXBlLkFERCkNCisJCQkJCQkJCQkmJiAhZW50cnkuY2hhbmdlVHlwZS5lcXVhbHMoQ2hhbmdlVHlwZS5ERUxFVEUpKSk7DQogCQkJCQlpdGVtLmFkZChuZXcgQm9va21hcmthYmxlUGFnZUxpbms8Vm9pZD4oImhpc3RvcnkiLCBIaXN0b3J5UGFnZS5jbGFzcywgV2lja2V0VXRpbHMNCiAJCQkJCQkJLm5ld1BhdGhQYXJhbWV0ZXIocmVwb3NpdG9yeU5hbWUsIGVudHJ5LmNvbW1pdElkLCBlbnRyeS5wYXRoKSkNCiAJCQkJCQkJLnNldEVuYWJsZWQoIWVudHJ5LmNoYW5nZVR5cGUuZXF1YWxzKENoYW5nZVR5cGUuQUREKSkpOw0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRG9jc1BhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0RvY3NQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRG9jc1BhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRG9jc1BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Eb2NzUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRG9jc1BhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Eb2NzUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Eb2NzUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRSZXBvc2l0b3J5UGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFJlcG9zaXRvcnlQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFJlcG9zaXRvcnlQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRSZXBvc2l0b3J5UGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRSZXBvc2l0b3J5UGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFJlcG9zaXRvcnlQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFJlcG9zaXRvcnlQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRSZXBvc2l0b3J5UGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRUZWFtUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFRlYW1QYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFRlYW1QYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRUZWFtUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRUZWFtUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFRlYW1QYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFRlYW1QYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRUZWFtUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRVc2VyUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFVzZXJQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFVzZXJQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRVc2VyUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRVc2VyUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFVzZXJQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRWRpdFVzZXJQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VkaXRVc2VyUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2UuamF2YQppbmRleCBiZTBkYWQ5Li5jY2NmOGE2IDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2UuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlLmphdmEKQEAgLTI1LDcgKzI1LDkgQEAKIGltcG9ydCBjb20uZ2l0YmxpdC5HaXRCbGl0Ow0KIGltcG9ydCBjb20uZ2l0YmxpdC5LZXlzOw0KIGltcG9ydCBjb20uZ2l0YmxpdC5tb2RlbHMuUmVwb3NpdG9yeU1vZGVsOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5tb2RlbHMuVXNlck1vZGVsOw0KIGltcG9ydCBjb20uZ2l0YmxpdC51dGlscy5BcnJheVV0aWxzOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQuR2l0QmxpdFdlYlNlc3Npb247DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5HaXRibGl0UmVkaXJlY3RFeGNlcHRpb247DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5XaWNrZXRVdGlsczsNCiBpbXBvcnQgY29tLmdpdGJsaXQud2lja2V0LnBhbmVscy5SZXBvc2l0b3J5VXJsUGFuZWw7DQpAQCAtNTYsNyArNTgsOCBAQAogCQkJLy8gYWRkIHRoZSBHaXRibGl0IHJlcG9zaXRvcnkgdXJsDQogCQkJcmVwb3NpdG9yeVVybHMuYWRkKGdldFJlcG9zaXRvcnlVcmwocmVwb3NpdG9yeSkpOw0KIAkJfQ0KLQkJcmVwb3NpdG9yeVVybHMuYWRkQWxsKEdpdEJsaXQuc2VsZigpLmdldE90aGVyQ2xvbmVVcmxzKHJlcG9zaXRvcnlOYW1lKSk7DQorCQlVc2VyTW9kZWwgdXNlciA9IEdpdEJsaXRXZWJTZXNzaW9uLmdldCgpLmdldFVzZXIoKTsNCisJCXJlcG9zaXRvcnlVcmxzLmFkZEFsbChHaXRCbGl0LnNlbGYoKS5nZXRPdGhlckNsb25lVXJscyhyZXBvc2l0b3J5TmFtZSwgdXNlciA9PSBudWxsID8gIiIgOiB1c2VyLnVzZXJuYW1lKSk7DQogCQkNCiAJCVN0cmluZyBwcmltYXJ5VXJsID0gQXJyYXlVdGlscy5pc0VtcHR5KHJlcG9zaXRvcnlVcmxzKSA/ICIiIDogcmVwb3NpdG9yeVVybHMuZ2V0KDApOw0KIAkJYWRkKG5ldyBMYWJlbCgicmVwb3NpdG9yeSIsIHJlcG9zaXRvcnlOYW1lKSk7DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX2VzLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX2VzLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9lcy5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX2VzLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9rby5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9rby5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2Vfa28uaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9rby5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfbmwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfbmwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX25sLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfbmwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX3BsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX3BsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9wbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX3BsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9wdF9CUi5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9wdF9CUi5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfcHRfQlIuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRW1wdHlSZXBvc2l0b3J5UGFnZV9wdF9CUi5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfemhfQ04uaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfemhfQ04uaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9FbXB0eVJlcG9zaXRvcnlQYWdlX3poX0NOLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0VtcHR5UmVwb3NpdG9yeVBhZ2VfemhfQ04uaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRmVkZXJhdGlvblBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZlZGVyYXRpb25QYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZlZGVyYXRpb25QYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZlZGVyYXRpb25QYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvblBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZlZGVyYXRpb25SZWdpc3RyYXRpb25QYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvblBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvblBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUmVnaXN0cmF0aW9uUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvblBhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUmVnaXN0cmF0aW9uUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9GZWRlcmF0aW9uUmVnaXN0cmF0aW9uUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Gb3JrUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRm9ya1BhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRm9ya1BhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvRm9ya1BhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Gb3Jrc1BhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtzUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtzUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Gb3Jrc1BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Gb3Jrc1BhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtzUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0ZvcmtzUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Gb3Jrc1BhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HaXRTZWFyY2hQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HaXRTZWFyY2hQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvR2l0U2VhcmNoUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HaXRTZWFyY2hQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvR2l0U2VhcmNoUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvR2l0U2VhcmNoUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0dpdFNlYXJjaFBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvR2l0U2VhcmNoUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0dyYXZhdGFyUHJvZmlsZVBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0dyYXZhdGFyUHJvZmlsZVBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HcmF2YXRhclByb2ZpbGVQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0dyYXZhdGFyUHJvZmlsZVBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HcmF2YXRhclByb2ZpbGVQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HcmF2YXRhclByb2ZpbGVQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvR3JhdmF0YXJQcm9maWxlUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9HcmF2YXRhclByb2ZpbGVQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvSGlzdG9yeVBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0hpc3RvcnlQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvSGlzdG9yeVBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvSGlzdG9yeVBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9IaXN0b3J5UGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvSGlzdG9yeVBhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9IaXN0b3J5UGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9IaXN0b3J5UGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ1BhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ1BhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Mb2dQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ1BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Mb2dQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Mb2dQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTG9nUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Mb2dQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ291dFBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0xvZ291dFBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDA3NzgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTG9nb3V0UGFnZS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiAgCisgICAgICB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZy9kdGRzLmRhdGEvd2lja2V0LXhodG1sMS4zLXN0cmljdC5kdGQiICAKKyAgICAgIHhtbDpsYW5nPSJlbiIgIAorICAgICAgbGFuZz0iZW4iPiAKKzxib2R5PgorPHdpY2tldDpleHRlbmQ+CisJPGRpdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1maXhlZC10b3AiPgorCQk8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgorCQkJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKwkJCQk8YSBjbGFzcz0iYnRuIGJ0bi1uYXZiYXIiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXYtY29sbGFwc2UiPgorICAgICAgICAgICAgCQkJPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CisgICAgICAgICAgICAJCQk8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KKyAgICAgICAgICAgIAkJCTxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgorICAgICAgICAgIAkJPC9hPgorCQkJCTxhIGNsYXNzPSJicmFuZCIgd2lja2V0OmlkPSJyb290TGluayI+CisJCQkJCTxpbWcgc3JjPSJnaXRibHRfMjVfd2hpdGUucG5nIiB3aWR0aD0iNzkiIGhlaWdodD0iMjUiIGFsdD0iZ2l0YmxpdCIgY2xhc3M9ImxvZ28iLz4KKwkJCQk8L2E+CisJCQkJCisJCQk8L2Rpdj4KKwkJPC9kaXY+CisJPC9kaXY+CisJCQkJCisJPCEtLSBzdWJjbGFzcyBjb250ZW50IC0tPgorCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisJCTxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIiB3aWNrZXQ6aWQ9ImZlZWRiYWNrIj5bRmVlZGJhY2sgUGFuZWxdPC9kaXY+CisJCQorCQk8aDE+PHdpY2tldDptZXNzYWdlIGtleT0iZ2Iuc2Vzc2lvbkVuZGVkIj5bU2Vzc2lvbiBoYXMgZW5kZWRdPC93aWNrZXQ6bWVzc2FnZT48L2gxPgorCQk8cD48d2lja2V0Om1lc3NhZ2Uga2V5PSJnYi5jbG9zZUJyb3dzZXIiPltQbGVhc2UgY2xvc2UgdGhlIGJyb3dzZXJdPC93aWNrZXQ6bWVzc2FnZT48L3A+CisJPC9kaXY+Cis8L3dpY2tldDpleHRlbmQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTG9nb3V0UGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTG9nb3V0UGFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MmRlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Mb2dvdXRQYWdlLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAxMSBnaXRibGl0LmNvbS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIGNvbS5naXRibGl0LndpY2tldC5wYWdlczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViUGFnZTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wuaHR0cC5XZWJSZXF1ZXN0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC5odHRwLldlYlJlc3BvbnNlOw0KKw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5HaXRCbGl0Ow0KK2ltcG9ydCBjb20uZ2l0YmxpdC5tb2RlbHMuVXNlck1vZGVsOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQuR2l0QmxpdFdlYlNlc3Npb247DQorDQorcHVibGljIGNsYXNzIExvZ291dFBhZ2UgZXh0ZW5kcyBCYXNlUGFnZSB7DQorDQorCXB1YmxpYyBMb2dvdXRQYWdlKCkgew0KKwkJc3VwZXIoKTsNCisJCUdpdEJsaXRXZWJTZXNzaW9uIHNlc3Npb24gPSBHaXRCbGl0V2ViU2Vzc2lvbi5nZXQoKTsNCisJCVVzZXJNb2RlbCB1c2VyID0gc2Vzc2lvbi5nZXRVc2VyKCk7DQorCQlHaXRCbGl0LnNlbGYoKS5zZXRDb29raWUoKFdlYlJlc3BvbnNlKSBnZXRSZXNwb25zZSgpLCBudWxsKTsNCisJCUdpdEJsaXQuc2VsZigpLmxvZ291dCh1c2VyKTsNCisJCXNlc3Npb24uaW52YWxpZGF0ZSgpOwkJDQorCQkNCisJCS8qDQorCQkgKiBOb3cgY2hlY2sgd2hldGhlciB0aGUgYXV0aGVudGljYXRpb24gd2FzIHJlYWxpemVkIHZpYSB0aGUgQXV0aG9yaXphdGlvbiBpbiB0aGUgaGVhZGVyLg0KKwkJICogSWYgc28sIGl0IGlzIGxpa2VseSB0byBiZSBjYWNoZWQgYnkgdGhlIGJyb3dzZXIsIGFuZCBjYW5ub3QgYmUgdW5kb25lLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFucw0KKwkJICogdGhhdCB5b3UgY2Fubm90IGxvZyBvdXQuLi4NCisJCSAqLw0KKwkJaWYgKCAoKFdlYlJlcXVlc3QpZ2V0UmVxdWVzdCgpKS5nZXRIdHRwU2VydmxldFJlcXVlc3QoKS5nZXRIZWFkZXIoIkF1dGhvcml6YXRpb24iKSAhPSBudWxsICkgew0KKwkJCS8vIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgZG9uZSB2aWEgdGhpcyByb3V0ZSBhbnl3YXksIHNob3cgYSBwYWdlIHRvIGNsb3NlIHRoZSBicm93c2VyOg0KKwkJCS8vIHRoaXMgd2lsbCBiZSBkb25lIGJ5IFdpY2tldC4NCisJCQlzZXR1cFBhZ2UobnVsbCwgZ2V0U3RyaW5nKCJnYi5sb2dvdXQiKSk7DQorCQkJDQorCQl9IGVsc2Ugew0KKwkJCXNldFJlZGlyZWN0KHRydWUpOw0KKwkJCXNldFJlc3BvbnNlUGFnZShnZXRBcHBsaWNhdGlvbigpLmdldEhvbWVQYWdlKCkpOw0KKwkJfSAvLyBub3QgdmlhIFdXVy1BdXRoDQorCX0gLy8gTG9nb3V0UGFnZQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0x1Y2VuZVNlYXJjaFBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0x1Y2VuZVNlYXJjaFBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9MdWNlbmVTZWFyY2hQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL0x1Y2VuZVNlYXJjaFBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9MdWNlbmVTZWFyY2hQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9MdWNlbmVTZWFyY2hQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTHVjZW5lU2VhcmNoUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9MdWNlbmVTZWFyY2hQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWFya2Rvd25QYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NYXJrZG93blBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NYXJrZG93blBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWFya2Rvd25QYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWFya2Rvd25QYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NYXJrZG93blBhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NYXJrZG93blBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWFya2Rvd25QYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWV0cmljc1BhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL01ldHJpY3NQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWV0cmljc1BhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWV0cmljc1BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NZXRyaWNzUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvTWV0cmljc1BhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NZXRyaWNzUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9NZXRyaWNzUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1BhdGNoUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUGF0Y2hQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUGF0Y2hQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1BhdGNoUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1BhdGNoUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUGF0Y2hQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUGF0Y2hQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1BhdGNoUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Qcm9qZWN0UGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUHJvamVjdFBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUHJvamVjdFBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUHJvamVjdFBhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Qcm9qZWN0c1BhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RzUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RzUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Qcm9qZWN0c1BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Qcm9qZWN0c1BhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RzUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Byb2plY3RzUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Qcm9qZWN0c1BhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SYXdQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SYXdQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SYXdQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jhd1BhZ2UuamF2YQppbmRleCAyOGU4YmFlLi4yN2EwMWY5IDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jhd1BhZ2UuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SYXdQYWdlLmphdmEKQEAgLTIyLDcgKzIyLDYgQEAKIGltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5JUmVxdWVzdFRhcmdldDsNCiBpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuUGFnZVBhcmFtZXRlcnM7DQogaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LlJlcXVlc3RDeWNsZTsNCi1pbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViUGFnZTsNCiBpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wuaHR0cC5XZWJSZXNwb25zZTsNCiBpbXBvcnQgb3JnLmVjbGlwc2UuamdpdC5saWIuUmVwb3NpdG9yeTsNCiBpbXBvcnQgb3JnLmVjbGlwc2UuamdpdC5yZXZ3YWxrLlJldkNvbW1pdDsNCkBAIC0zMSwxNyArMzAsMjAgQEAKIA0KIGltcG9ydCBjb20uZ2l0YmxpdC5HaXRCbGl0Ow0KIGltcG9ydCBjb20uZ2l0YmxpdC5LZXlzOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5tb2RlbHMuUmVwb3NpdG9yeU1vZGVsOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5tb2RlbHMuVXNlck1vZGVsOw0KIGltcG9ydCBjb20uZ2l0YmxpdC51dGlscy5KR2l0VXRpbHM7DQogaW1wb3J0IGNvbS5naXRibGl0LnV0aWxzLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQuR2l0QmxpdFdlYlNlc3Npb247DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5XaWNrZXRVdGlsczsNCiANCi1wdWJsaWMgY2xhc3MgUmF3UGFnZSBleHRlbmRzIFdlYlBhZ2Ugew0KK3B1YmxpYyBjbGFzcyBSYXdQYWdlIGV4dGVuZHMgU2Vzc2lvblBhZ2Ugew0KIA0KIAlwcml2YXRlIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihnZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKSk7DQogDQogCXB1YmxpYyBSYXdQYWdlKGZpbmFsIFBhZ2VQYXJhbWV0ZXJzIHBhcmFtcykgew0KIAkJc3VwZXIocGFyYW1zKTsNCi0NCisJCQ0KIAkJaWYgKCFwYXJhbXMuY29udGFpbnNLZXkoInIiKSkgew0KIAkJCWVycm9yKGdldFN0cmluZygiZ2IucmVwb3NpdG9yeU5vdFNwZWNpZmllZCIpKTsNCiAJCQlyZWRpcmVjdFRvSW50ZXJjZXB0UGFnZShuZXcgUmVwb3NpdG9yaWVzUGFnZSgpKTsNCkBAIC02MCw3ICs2MiwxNyBAQAogCQkJCWZpbmFsIFN0cmluZyBvYmplY3RJZCA9IFdpY2tldFV0aWxzLmdldE9iamVjdChwYXJhbXMpOw0KIAkJCQlmaW5hbCBTdHJpbmcgYmxvYlBhdGggPSBXaWNrZXRVdGlscy5nZXRQYXRoKHBhcmFtcyk7DQogCQkJCVN0cmluZ1tdIGVuY29kaW5ncyA9IEdpdEJsaXQuZ2V0RW5jb2RpbmdzKCk7DQotDQorCQkJCUdpdEJsaXRXZWJTZXNzaW9uIHNlc3Npb24gPSBHaXRCbGl0V2ViU2Vzc2lvbi5nZXQoKTsNCisJCQkJVXNlck1vZGVsIHVzZXIgPSBzZXNzaW9uLmdldFVzZXIoKTsNCisJCQkJDQorCQkJCVJlcG9zaXRvcnlNb2RlbCBtb2RlbCA9IEdpdEJsaXQuc2VsZigpLmdldFJlcG9zaXRvcnlNb2RlbCh1c2VyLCByZXBvc2l0b3J5TmFtZSk7DQorCQkJCWlmIChtb2RlbCA9PSBudWxsKSB7DQorCQkJCQkvLyB1c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbg0KKwkJCQkJZXJyb3IoZ2V0U3RyaW5nKCJnYi5jYW5Ob3RMb2FkUmVwb3NpdG9yeSIpICsgIiAiICsgcmVwb3NpdG9yeU5hbWUpOw0KKwkJCQkJcmVkaXJlY3RUb0ludGVyY2VwdFBhZ2UobmV3IFJlcG9zaXRvcmllc1BhZ2UoKSk7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisJCQkJDQogCQkJCVJlcG9zaXRvcnkgciA9IEdpdEJsaXQuc2VsZigpLmdldFJlcG9zaXRvcnkocmVwb3NpdG9yeU5hbWUpOw0KIAkJCQlpZiAociA9PSBudWxsKSB7DQogCQkJCQllcnJvcihnZXRTdHJpbmcoImdiLmNhbk5vdExvYWRSZXBvc2l0b3J5IikgKyAiICIgKyByZXBvc2l0b3J5TmFtZSk7DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXBvc2l0b3JpZXNQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXBvc2l0b3JpZXNQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yaWVzUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXBvc2l0b3JpZXNQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yaWVzUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yaWVzUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1JlcG9zaXRvcmllc1BhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yaWVzUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1JlcG9zaXRvcnlQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXBvc2l0b3J5UGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1JlcG9zaXRvcnlQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1JlcG9zaXRvcnlQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yeVBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1JlcG9zaXRvcnlQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yeVBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUmVwb3NpdG9yeVBhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXZpZXdQcm9wb3NhbFBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jldmlld1Byb3Bvc2FsUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jldmlld1Byb3Bvc2FsUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXZpZXdQcm9wb3NhbFBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXZpZXdQcm9wb3NhbFBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jldmlld1Byb3Bvc2FsUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jldmlld1Byb3Bvc2FsUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9SZXZpZXdQcm9wb3NhbFBhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290UGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUm9vdFBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290UGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290UGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jvb3RQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290UGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jvb3RQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jvb3RQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUm9vdFN1YlBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Jvb3RTdWJQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUm9vdFN1YlBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUm9vdFN1YlBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290U3ViUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvUm9vdFN1YlBhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290U3ViUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Sb290U3ViUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1NlbmRQcm9wb3NhbFBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1NlbmRQcm9wb3NhbFBhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TZW5kUHJvcG9zYWxQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1NlbmRQcm9wb3NhbFBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TZW5kUHJvcG9zYWxQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TZW5kUHJvcG9zYWxQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvU2VuZFByb3Bvc2FsUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TZW5kUHJvcG9zYWxQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1Nlc3Npb25QYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TZXNzaW9uUGFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjU1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TZXNzaW9uUGFnZS5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMTMgZ2l0YmxpdC5jb20uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBjb20uZ2l0YmxpdC53aWNrZXQucGFnZXM7DQorDQoraW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LlBhZ2VQYXJhbWV0ZXJzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJQYWdlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC5odHRwLldlYlJlcXVlc3Q7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnByb3RvY29sLmh0dHAuV2ViUmVzcG9uc2U7DQorDQoraW1wb3J0IGNvbS5naXRibGl0LkdpdEJsaXQ7DQoraW1wb3J0IGNvbS5naXRibGl0Lm1vZGVscy5Vc2VyTW9kZWw7DQoraW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5HaXRCbGl0V2ViU2Vzc2lvbjsNCisNCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2Vzc2lvblBhZ2UgZXh0ZW5kcyBXZWJQYWdlIHsNCisNCisJcHVibGljIFNlc3Npb25QYWdlKCkgew0KKwkJc3VwZXIoKTsNCisJCWxvZ2luKCk7DQorCX0NCisNCisJcHVibGljIFNlc3Npb25QYWdlKGZpbmFsIFBhZ2VQYXJhbWV0ZXJzIHBhcmFtcykgew0KKwkJc3VwZXIocGFyYW1zKTsNCisJCWxvZ2luKCk7DQorCX0NCisNCisJcHJpdmF0ZSB2b2lkIGxvZ2luKCkgew0KKwkJR2l0QmxpdFdlYlNlc3Npb24gc2Vzc2lvbiA9IEdpdEJsaXRXZWJTZXNzaW9uLmdldCgpOw0KKwkJaWYgKHNlc3Npb24uaXNMb2dnZWRJbigpICYmICFzZXNzaW9uLmlzU2Vzc2lvbkludmFsaWRhdGVkKCkpIHsNCisJCQkvLyBhbHJlYWR5IGhhdmUgYSBzZXNzaW9uLCByZWZyZXNoIHVzZXJtb2RlbCB0byBwaWNrIHVwDQorCQkJLy8gYW55IGNoYW5nZXMgdG8gcGVybWlzc2lvbnMgb3Igcm9sZXMgKGlzc3VlLTE4NikNCisJCQlVc2VyTW9kZWwgdXNlciA9IEdpdEJsaXQuc2VsZigpLmdldFVzZXJNb2RlbChzZXNzaW9uLmdldFVzZXIoKS51c2VybmFtZSk7DQorCQkJc2Vzc2lvbi5zZXRVc2VyKHVzZXIpOw0KKwkJCXJldHVybjsNCisJCX0NCisNCisJCS8vIHRyeSB0byBhdXRoZW50aWNhdGUgYnkgc2VydmxldCByZXF1ZXN0DQorCQlIdHRwU2VydmxldFJlcXVlc3QgaHR0cFJlcXVlc3QgPSAoKFdlYlJlcXVlc3QpIGdldFJlcXVlc3RDeWNsZSgpLmdldFJlcXVlc3QoKSkNCisJCQkJLmdldEh0dHBTZXJ2bGV0UmVxdWVzdCgpOw0KKwkJVXNlck1vZGVsIHVzZXIgPSBHaXRCbGl0LnNlbGYoKS5hdXRoZW50aWNhdGUoaHR0cFJlcXVlc3QpOw0KKw0KKwkJLy8gTG9naW4gdGhlIHVzZXINCisJCWlmICh1c2VyICE9IG51bGwpIHsNCisJCQkvLyBpc3N1ZSA2MjogZml4IHNlc3Npb24gZml4YXRpb24gdnVsbmVyYWJpbGl0eQ0KKwkJCXNlc3Npb24ucmVwbGFjZVNlc3Npb24oKTsNCisJCQlzZXNzaW9uLnNldFVzZXIodXNlcik7DQorDQorCQkJLy8gU2V0IENvb2tpZQ0KKwkJCVdlYlJlc3BvbnNlIHJlc3BvbnNlID0gKFdlYlJlc3BvbnNlKSBnZXRSZXF1ZXN0Q3ljbGUoKS5nZXRSZXNwb25zZSgpOw0KKwkJCUdpdEJsaXQuc2VsZigpLnNldENvb2tpZShyZXNwb25zZSwgdXNlcik7DQorDQorCQkJc2Vzc2lvbi5jb250aW51ZVJlcXVlc3QoKTsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1N1bW1hcnlQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TdW1tYXJ5UGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1N1bW1hcnlQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1N1bW1hcnlQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvU3VtbWFyeVBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1N1bW1hcnlQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TdW1tYXJ5UGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TdW1tYXJ5UGFnZS5qYXZhCmluZGV4IGJkNDBhMWIuLmQ2OGFkZDAgMTAwNjQ0Ci0tLSBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvU3VtbWFyeVBhZ2UuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9TdW1tYXJ5UGFnZS5qYXZhCkBAIC01Myw2ICs1Myw3IEBACiBpbXBvcnQgY29tLmdpdGJsaXQudXRpbHMuSkdpdFV0aWxzOw0KIGltcG9ydCBjb20uZ2l0YmxpdC51dGlscy5NYXJrZG93blV0aWxzOw0KIGltcG9ydCBjb20uZ2l0YmxpdC51dGlscy5TdHJpbmdVdGlsczsNCitpbXBvcnQgY29tLmdpdGJsaXQud2lja2V0LkdpdEJsaXRXZWJTZXNzaW9uOw0KIGltcG9ydCBjb20uZ2l0YmxpdC53aWNrZXQuV2lja2V0VXRpbHM7DQogaW1wb3J0IGNvbS5naXRibGl0LndpY2tldC5wYW5lbHMuQnJhbmNoZXNQYW5lbDsNCiBpbXBvcnQgY29tLmdpdGJsaXQud2lja2V0LnBhbmVscy5MaW5rUGFuZWw7DQpAQCAtNzMsNiArNzQsNyBAQAogDQogCQlSZXBvc2l0b3J5IHIgPSBnZXRSZXBvc2l0b3J5KCk7DQogCQlSZXBvc2l0b3J5TW9kZWwgbW9kZWwgPSBnZXRSZXBvc2l0b3J5TW9kZWwoKTsNCisJCVVzZXJNb2RlbCB1c2VyID0gR2l0QmxpdFdlYlNlc3Npb24uZ2V0KCkuZ2V0VXNlcigpOw0KIA0KIAkJTGlzdDxNZXRyaWM+IG1ldHJpY3MgPSBudWxsOw0KIAkJTWV0cmljIG1ldHJpY3NUb3RhbCA9IG51bGw7DQpAQCAtMTQ4LDcgKzE1MCw3IEBACiAJCX0gZWxzZSB7DQogCQkJYWRkKFdpY2tldFV0aWxzLm5ld0NsZWFyUGl4ZWwoImFjY2Vzc1Jlc3RyaWN0aW9uSWNvbiIpLnNldFZpc2libGUoZmFsc2UpKTsNCiAJCX0NCi0JCXJlcG9zaXRvcnlVcmxzLmFkZEFsbChHaXRCbGl0LnNlbGYoKS5nZXRPdGhlckNsb25lVXJscyhyZXBvc2l0b3J5TmFtZSkpOw0KKwkJcmVwb3NpdG9yeVVybHMuYWRkQWxsKEdpdEJsaXQuc2VsZigpLmdldE90aGVyQ2xvbmVVcmxzKHJlcG9zaXRvcnlOYW1lLCB1c2VyID09IG51bGwgPyAiIiA6IHVzZXIudXNlcm5hbWUpKTsNCiAJCQ0KIAkJU3RyaW5nIHByaW1hcnlVcmwgPSBBcnJheVV0aWxzLmlzRW1wdHkocmVwb3NpdG9yeVVybHMpID8gIiIgOiByZXBvc2l0b3J5VXJscy5yZW1vdmUoMCk7DQogCQlhZGQobmV3IFJlcG9zaXRvcnlVcmxQYW5lbCgicmVwb3NpdG9yeUNsb25lVXJsIiwgcHJpbWFyeVVybCkpOw0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGFnUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGFnUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ1BhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGFnUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ1BhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ1BhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UYWdQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ1BhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UYWdzUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGFnc1BhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UYWdzUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UYWdzUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ3NQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UYWdzUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ3NQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RhZ3NQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGlja2V0UGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGlja2V0UGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldFBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGlja2V0UGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldFBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldFBhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UaWNrZXRQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldFBhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UaWNrZXRzUGFnZS5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVGlja2V0c1BhZ2UuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UaWNrZXRzUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UaWNrZXRzUGFnZS5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldHNQYWdlLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UaWNrZXRzUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldHNQYWdlLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RpY2tldHNQYWdlLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVHJlZVBhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1RyZWVQYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVHJlZVBhZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVHJlZVBhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UcmVlUGFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVHJlZVBhZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UcmVlUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9UcmVlUGFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJQYWdlLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Vc2VyUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJQYWdlLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJQYWdlLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVXNlclBhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJQYWdlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVXNlclBhZ2UuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvVXNlclBhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Vc2Vyc1BhZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJzUGFnZS5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJzUGFnZS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Vc2Vyc1BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Vc2Vyc1BhZ2UuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJzUGFnZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL1VzZXJzUGFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9Vc2Vyc1BhZ2UuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWFwb2xsby5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctYXBvbGxvLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctYXBvbGxvLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWFwb2xsby5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWNzcy5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctY3NzLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctY3NzLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWNzcy5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWhzLmpzIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy1ocy5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWhzLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWhzLmpzCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctbGlzcC5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctbGlzcC5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWxpc3AuanMKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctbGlzcC5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWx1YS5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctbHVhLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctbHVhLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLWx1YS5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLW1sLmpzIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy1tbC5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLW1sLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLW1sLmpzCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctcHJvdG8uanMgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXByb3RvLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctcHJvdG8uanMKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctcHJvdG8uanMKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy1zY2FsYS5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctc2NhbGEuanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy1zY2FsYS5qcwpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy1zY2FsYS5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXNxbC5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctc3FsLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctc3FsLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXNxbC5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXZiLmpzIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy12Yi5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXZiLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXZiLmpzCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctdmhkbC5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctdmhkbC5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXZoZGwuanMKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmctdmhkbC5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXdpa2kuanMgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXdpa2kuanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy13aWtpLmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9sYW5nLXdpa2kuanMKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy15YW1sLmpzIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy15YW1sLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L2xhbmcteWFtbC5qcwpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFnZXMvcHJldHRpZnkvbGFuZy15YW1sLmpzCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L3ByZXR0aWZ5LmNzcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L3ByZXR0aWZ5LmNzcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9wcmV0dGlmeS5jc3MKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L3ByZXR0aWZ5LmNzcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9wcmV0dGlmeS5qcyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L3ByZXR0aWZ5LmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhZ2VzL3ByZXR0aWZ5L3ByZXR0aWZ5LmpzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYWdlcy9wcmV0dGlmeS9wcmV0dGlmeS5qcwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQWN0aXZpdHlQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0FjdGl2aXR5UGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQWN0aXZpdHlQYW5lbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQWN0aXZpdHlQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9BY3Rpdml0eVBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQWN0aXZpdHlQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9BY3Rpdml0eVBhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9BY3Rpdml0eVBhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Jhc2VQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Jhc2VQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9CYXNlUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Jhc2VQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9CcmFuY2hlc1BhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQnJhbmNoZXNQYW5lbC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9CcmFuY2hlc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9CcmFuY2hlc1BhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0JyYW5jaGVzUGFuZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9CcmFuY2hlc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0JyYW5jaGVzUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0JyYW5jaGVzUGFuZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQnVsbGV0TGlzdFBhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQnVsbGV0TGlzdFBhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0J1bGxldExpc3RQYW5lbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQnVsbGV0TGlzdFBhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0J1bGxldExpc3RQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0J1bGxldExpc3RQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9CdWxsZXRMaXN0UGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0J1bGxldExpc3RQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21taXRIZWFkZXJQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdEhlYWRlclBhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdEhlYWRlclBhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21taXRIZWFkZXJQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21taXRIZWFkZXJQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdEhlYWRlclBhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0SGVhZGVyUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdEhlYWRlclBhbmVsLmphdmEKaW5kZXggYmI5NjBjYy4uZWI3NTc1MCAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0SGVhZGVyUGFuZWwuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0SGVhZGVyUGFuZWwuamF2YQpAQCAtMzMsNiArMzMsNyBAQAogCQlhZGQobmV3IExhYmVsKCJjb21taXRpZCIpKTsNCiAJCWFkZChuZXcgTGFiZWwoImF1dGhvciIpKTsNCiAJCWFkZChuZXcgTGFiZWwoImRhdGUiKSk7DQorCQlhZGQobmV3IExhYmVsKCJhdXRob3JBdmF0YXIiKSk7DQogCX0NCiANCiAJcHVibGljIENvbW1pdEhlYWRlclBhbmVsKFN0cmluZyBpZCwgU3RyaW5nIHJlcG9zaXRvcnlOYW1lLCBSZXZDb21taXQgYykgew0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdExlZ2VuZFBhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0TGVnZW5kUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0TGVnZW5kUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdExlZ2VuZFBhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdExlZ2VuZFBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0TGVnZW5kUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tbWl0TGVnZW5kUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbW1pdExlZ2VuZFBhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbXByZXNzZWREb3dubG9hZHNQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbXByZXNzZWREb3dubG9hZHNQYW5lbC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21wcmVzc2VkRG93bmxvYWRzUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0NvbXByZXNzZWREb3dubG9hZHNQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21wcmVzc2VkRG93bmxvYWRzUGFuZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21wcmVzc2VkRG93bmxvYWRzUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvQ29tcHJlc3NlZERvd25sb2Fkc1BhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Db21wcmVzc2VkRG93bmxvYWRzUGFuZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRHJvcERvd25NZW51Lmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRHJvcERvd25NZW51Lmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Ryb3BEb3duTWVudS5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRHJvcERvd25NZW51Lmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Ryb3BEb3duTWVudS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Ryb3BEb3duTWVudS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Ecm9wRG93bk1lbnUuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0Ryb3BEb3duTWVudS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uUHJvcG9zYWxzUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uUHJvcG9zYWxzUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblByb3Bvc2Fsc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uUHJvcG9zYWxzUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblByb3Bvc2Fsc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblByb3Bvc2Fsc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0ZlZGVyYXRpb25Qcm9wb3NhbHNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblByb3Bvc2Fsc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0ZlZGVyYXRpb25SZWdpc3RyYXRpb25zUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uUmVnaXN0cmF0aW9uc1BhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0ZlZGVyYXRpb25SZWdpc3RyYXRpb25zUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0ZlZGVyYXRpb25SZWdpc3RyYXRpb25zUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvbnNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0ZlZGVyYXRpb25SZWdpc3RyYXRpb25zUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvbnNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblJlZ2lzdHJhdGlvbnNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uVG9rZW5zUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uVG9rZW5zUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblRva2Vuc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9GZWRlcmF0aW9uVG9rZW5zUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblRva2Vuc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblRva2Vuc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0ZlZGVyYXRpb25Ub2tlbnNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvRmVkZXJhdGlvblRva2Vuc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0dyYXZhdGFySW1hZ2UuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9HcmF2YXRhckltYWdlLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0dyYXZhdGFySW1hZ2UuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0dyYXZhdGFySW1hZ2UuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvR3JhdmF0YXJJbWFnZS5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0dyYXZhdGFySW1hZ2UuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvR3JhdmF0YXJJbWFnZS5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvR3JhdmF0YXJJbWFnZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9IaXN0b3J5UGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9IaXN0b3J5UGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvSGlzdG9yeVBhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9IaXN0b3J5UGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvSGlzdG9yeVBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvSGlzdG9yeVBhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvSGlzdG9yeVBhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9IaXN0b3J5UGFuZWwuamF2YQppbmRleCBlNTg3ODYzLi40ZDI3NTg5IDEwMDY0NAotLS0gYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9IaXN0b3J5UGFuZWwuamF2YQorKysgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvSGlzdG9yeVBhbmVsLmphdmEKQEAgLTEwOSwxMyArMTA5LDEzIEBACiAJCX0NCiAJCQ0KIAkJZmluYWwgYm9vbGVhbiBpc1RyZWUgPSBtYXRjaGluZ1BhdGggPT0gbnVsbCA/IHRydWUgOiBtYXRjaGluZ1BhdGguaXNUcmVlKCk7DQotCQlmaW5hbCBib29sZWFuIGlzU3VibW9kdWxlID0gbWF0Y2hpbmdQYXRoID09IG51bGwgPyB0cnVlIDogbWF0Y2hpbmdQYXRoLmlzU3VibW9kdWxlKCk7DQorCQlmaW5hbCBib29sZWFuIGlzU3VibW9kdWxlID0gbWF0Y2hpbmdQYXRoID09IG51bGwgPyBmYWxzZSA6IG1hdGNoaW5nUGF0aC5pc1N1Ym1vZHVsZSgpOw0KIA0KIAkJLy8gc3VibW9kdWxlDQotCQlTdWJtb2R1bGVNb2RlbCBzdWJtb2R1bGUgPSBnZXRTdWJtb2R1bGUoc3VibW9kdWxlcywgcmVwb3NpdG9yeU5hbWUsIG1hdGNoaW5nUGF0aC5wYXRoKTsNCiAJCWZpbmFsIFN0cmluZyBzdWJtb2R1bGVQYXRoOw0KIAkJZmluYWwgYm9vbGVhbiBoYXNTdWJtb2R1bGU7IA0KLQkJaWYgKHN1Ym1vZHVsZSAhPSBudWxsKSB7DQorCQlpZiAoaXNTdWJtb2R1bGUpIHsNCisJCQlTdWJtb2R1bGVNb2RlbCBzdWJtb2R1bGUgPSBnZXRTdWJtb2R1bGUoc3VibW9kdWxlcywgcmVwb3NpdG9yeU5hbWUsIG1hdGNoaW5nUGF0aCA9PSBudWxsID8gbnVsbCA6IG1hdGNoaW5nUGF0aC5wYXRoKTsNCiAJCQlzdWJtb2R1bGVQYXRoID0gc3VibW9kdWxlLmdpdGJsaXRQYXRoOw0KIAkJCWhhc1N1Ym1vZHVsZSA9IHN1Ym1vZHVsZS5oYXNTdWJtb2R1bGU7DQogCQl9IGVsc2Ugew0KZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0xpbmtQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0xpbmtQYW5lbC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9MaW5rUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL0xpbmtQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9MaW5rUGFuZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9MaW5rUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTGlua1BhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9MaW5rUGFuZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTG9nUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Mb2dQYW5lbC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Mb2dQYW5lbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTG9nUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTG9nUGFuZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Mb2dQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Mb2dQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTG9nUGFuZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTmF2aWdhdGlvblBhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTmF2aWdhdGlvblBhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL05hdmlnYXRpb25QYW5lbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvTmF2aWdhdGlvblBhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL05hdmlnYXRpb25QYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL05hdmlnYXRpb25QYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9OYXZpZ2F0aW9uUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL05hdmlnYXRpb25QYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9PYmplY3RDb250YWluZXIuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9PYmplY3RDb250YWluZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvT2JqZWN0Q29udGFpbmVyLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9PYmplY3RDb250YWluZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGFnZXJQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1BhZ2VyUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGFnZXJQYW5lbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGFnZXJQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9QYWdlclBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGFnZXJQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9QYWdlclBhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9QYWdlclBhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1BhdGhCcmVhZGNydW1ic1BhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGF0aEJyZWFkY3J1bWJzUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGF0aEJyZWFkY3J1bWJzUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1BhdGhCcmVhZGNydW1ic1BhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1BhdGhCcmVhZGNydW1ic1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGF0aEJyZWFkY3J1bWJzUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUGF0aEJyZWFkY3J1bWJzUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1BhdGhCcmVhZGNydW1ic1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Byb2plY3RSZXBvc2l0b3J5UGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Qcm9qZWN0UmVwb3NpdG9yeVBhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Byb2plY3RSZXBvc2l0b3J5UGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Byb2plY3RSZXBvc2l0b3J5UGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUHJvamVjdFJlcG9zaXRvcnlQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Byb2plY3RSZXBvc2l0b3J5UGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Qcm9qZWN0UmVwb3NpdG9yeVBhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Qcm9qZWN0UmVwb3NpdG9yeVBhbmVsLmphdmEKaW5kZXggN2I0ZWU5Zi4uZjJiNTZlMSAxMDA2NDQKLS0tIGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUHJvamVjdFJlcG9zaXRvcnlQYW5lbC5qYXZhCisrKyBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Qcm9qZWN0UmVwb3NpdG9yeVBhbmVsLmphdmEKQEAgLTIyMSw3ICsyMjEsNyBAQAogCQkJLy8gYWRkIHRoZSBHaXRibGl0IHJlcG9zaXRvcnkgdXJsDQogCQkJcmVwb3NpdG9yeVVybHMuYWRkKEJhc2VQYWdlLmdldFJlcG9zaXRvcnlVcmwoZW50cnkpKTsNCiAJCX0NCi0JCXJlcG9zaXRvcnlVcmxzLmFkZEFsbChHaXRCbGl0LnNlbGYoKS5nZXRPdGhlckNsb25lVXJscyhlbnRyeS5uYW1lKSk7DQorCQlyZXBvc2l0b3J5VXJscy5hZGRBbGwoR2l0QmxpdC5zZWxmKCkuZ2V0T3RoZXJDbG9uZVVybHMoZW50cnkubmFtZSwgdXNlciA9PSBudWxsID8gIiIgOiB1c2VyLnVzZXJuYW1lKSk7DQogDQogCQlTdHJpbmcgcHJpbWFyeVVybCA9IEFycmF5VXRpbHMuaXNFbXB0eShyZXBvc2l0b3J5VXJscykgPyAiIiA6IHJlcG9zaXRvcnlVcmxzLnJlbW92ZSgwKTsNCiAJCWFkZChuZXcgUmVwb3NpdG9yeVVybFBhbmVsKCJyZXBvc2l0b3J5Q2xvbmVVcmwiLCBwcmltYXJ5VXJsKSk7DQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVmc1BhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVmc1BhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZnNQYW5lbC5odG1sCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVmc1BhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZnNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZnNQYW5lbC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZWZzUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZnNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1BhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlZ2lzdHJhbnRQZXJtaXNzaW9uc1BhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZWdpc3RyYW50UGVybWlzc2lvbnNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3JpZXNQYW5lbC5odG1sIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlcG9zaXRvcmllc1BhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlcG9zaXRvcmllc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3JpZXNQYW5lbC5odG1sCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3JpZXNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlcG9zaXRvcmllc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlcG9zaXRvcmllc1BhbmVsLmphdmEKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3JpZXNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3J5VXJsUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3J5VXJsUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVwb3NpdG9yeVVybFBhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9SZXBvc2l0b3J5VXJsUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVwb3NpdG9yeVVybFBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVwb3NpdG9yeVVybFBhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1JlcG9zaXRvcnlVcmxQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvUmVwb3NpdG9yeVVybFBhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1NlYXJjaFBhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvU2VhcmNoUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvU2VhcmNoUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1NlYXJjaFBhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1NlYXJjaFBhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvU2VhcmNoUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvU2VhcmNoUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1NlYXJjaFBhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Nob2NrV2F2ZUNvbXBvbmVudC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Nob2NrV2F2ZUNvbXBvbmVudC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9TaG9ja1dhdmVDb21wb25lbnQuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1Nob2NrV2F2ZUNvbXBvbmVudC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9UYWdzUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9UYWdzUGFuZWwuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGFnc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9UYWdzUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGFnc1BhbmVsLmphdmEgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGFnc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1RhZ3NQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGFnc1BhbmVsLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1RlYW1zUGFuZWwuaHRtbCBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9UZWFtc1BhbmVsLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1RlYW1zUGFuZWwuaHRtbApyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1RlYW1zUGFuZWwuaHRtbApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGVhbXNQYW5lbC5qYXZhIGIvc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1RlYW1zUGFuZWwuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGVhbXNQYW5lbC5qYXZhCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVGVhbXNQYW5lbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Vc2Vyc1BhbmVsLmh0bWwgYi9zcmMvbWFpbi9qYXZhL2NvbS9naXRibGl0L3dpY2tldC9wYW5lbHMvVXNlcnNQYW5lbC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Vc2Vyc1BhbmVsLmh0bWwKcmVuYW1lIHRvIHNyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Vc2Vyc1BhbmVsLmh0bWwKZGlmZiAtLWdpdCBhL3NyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1VzZXJzUGFuZWwuamF2YSBiL3NyYy9tYWluL2phdmEvY29tL2dpdGJsaXQvd2lja2V0L3BhbmVscy9Vc2Vyc1BhbmVsLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1VzZXJzUGFuZWwuamF2YQpyZW5hbWUgdG8gc3JjL21haW4vamF2YS9jb20vZ2l0YmxpdC93aWNrZXQvcGFuZWxzL1VzZXJzUGFuZWwuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2xvZzRqLnByb3BlcnRpZXMgYi9zcmMvbWFpbi9qYXZhL2xvZzRqLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9sb2c0ai5wcm9wZXJ0aWVzCnJlbmFtZSB0byBzcmMvbWFpbi9qYXZhL2xvZzRqLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9hZGRfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2FkZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9hZGRfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYWRkXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYXJyb3dfZG93bi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYXJyb3dfZG93bi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9hcnJvd19kb3duLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2Fycm93X2Rvd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9hcnJvd19sZWZ0LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9hcnJvd19sZWZ0LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2Fycm93X2xlZnQucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYXJyb3dfbGVmdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2Fycm93X29mZi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYXJyb3dfb2ZmLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2Fycm93X29mZi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9hcnJvd19vZmYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9hcnJvd19wYWdlLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9hcnJvd19wYWdlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2Fycm93X3BhZ2UucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYXJyb3dfcGFnZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2Fycm93X3VwLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9hcnJvd191cC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9hcnJvd191cC5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9hcnJvd191cC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2JhY2tncm91bmQucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2JhY2tncm91bmQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYmFja2dyb3VuZC5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9iYWNrZ3JvdW5kLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYmxhbmsucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2JsYW5rLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2JsYW5rLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2JsYW5rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYm9va18xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYm9va18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9ib29rXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2Jvb2tfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9ib290c3RyYXAvY3NzL2Jvb3RzdHJhcC1yZXNwb25zaXZlLmNzcyBiL3NyYy9tYWluL3Jlc291cmNlcy9ib290c3RyYXAvY3NzL2Jvb3RzdHJhcC1yZXNwb25zaXZlLmNzcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2Jvb3RzdHJhcC9jc3MvYm9vdHN0cmFwLXJlc3BvbnNpdmUuY3NzCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYm9vdHN0cmFwL2Nzcy9ib290c3RyYXAtcmVzcG9uc2l2ZS5jc3MKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9ib290c3RyYXAvY3NzL2Jvb3RzdHJhcC5jc3MgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYm9vdHN0cmFwL2Nzcy9ib290c3RyYXAuY3NzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYm9vdHN0cmFwL2Nzcy9ib290c3RyYXAuY3NzCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYm9vdHN0cmFwL2Nzcy9ib290c3RyYXAuY3NzCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYm9vdHN0cmFwL2ltZy9nbHlwaGljb25zLWhhbGZsaW5ncy13aGl0ZS5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYm9vdHN0cmFwL2ltZy9nbHlwaGljb25zLWhhbGZsaW5ncy13aGl0ZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9ib290c3RyYXAvaW1nL2dseXBoaWNvbnMtaGFsZmxpbmdzLXdoaXRlLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2Jvb3RzdHJhcC9pbWcvZ2x5cGhpY29ucy1oYWxmbGluZ3Mtd2hpdGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9ib290c3RyYXAvaW1nL2dseXBoaWNvbnMtaGFsZmxpbmdzLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9ib290c3RyYXAvaW1nL2dseXBoaWNvbnMtaGFsZmxpbmdzLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2Jvb3RzdHJhcC9pbWcvZ2x5cGhpY29ucy1oYWxmbGluZ3MucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYm9vdHN0cmFwL2ltZy9nbHlwaGljb25zLWhhbGZsaW5ncy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2Jvb3RzdHJhcC9qcy9ib290c3RyYXAuanMgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYm9vdHN0cmFwL2pzL2Jvb3RzdHJhcC5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2Jvb3RzdHJhcC9qcy9ib290c3RyYXAuanMKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9ib290c3RyYXAvanMvYm9vdHN0cmFwLmpzCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYm9vdHN0cmFwL2pzL2pxdWVyeS5qcyBiL3NyYy9tYWluL3Jlc291cmNlcy9ib290c3RyYXAvanMvanF1ZXJ5LmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYm9vdHN0cmFwL2pzL2pxdWVyeS5qcwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2Jvb3RzdHJhcC9qcy9qcXVlcnkuanMKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9idWdfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2J1Z18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9idWdfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYnVnXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYnVsbGV0X2JsYWNrLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfYmxhY2sucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYnVsbGV0X2JsYWNrLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF9ibGFjay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2J1bGxldF9ibHVlLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfYmx1ZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9idWxsZXRfYmx1ZS5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfYmx1ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2J1bGxldF9kZWxldGUucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF9kZWxldGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYnVsbGV0X2RlbGV0ZS5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfZGVsZXRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYnVsbGV0X2Vycm9yLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfZXJyb3IucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYnVsbGV0X2Vycm9yLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF9lcnJvci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2J1bGxldF9mZWVkLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfZmVlZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9idWxsZXRfZmVlZC5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfZmVlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2J1bGxldF9ncmVlbi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYnVsbGV0X2dyZWVuLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2J1bGxldF9ncmVlbi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfZ3JlZW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9idWxsZXRfa2V5LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfa2V5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2J1bGxldF9rZXkucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYnVsbGV0X2tleS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2J1bGxldF9vcmFuZ2UucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF9vcmFuZ2UucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvYnVsbGV0X29yYW5nZS5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9idWxsZXRfb3JhbmdlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYnVsbGV0X3JlZC5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYnVsbGV0X3JlZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9idWxsZXRfcmVkLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF9yZWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9idWxsZXRfd2hpdGUucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF93aGl0ZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9idWxsZXRfd2hpdGUucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvYnVsbGV0X3doaXRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvYnVsbGV0X3llbGxvdy5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvYnVsbGV0X3llbGxvdy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9idWxsZXRfeWVsbG93LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2J1bGxldF95ZWxsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9jbGlwYm9hcmRfMTN4MTMucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2NsaXBib2FyZF8xM3gxMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9jbGlwYm9hcmRfMTN4MTMucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvY2xpcGJvYXJkXzEzeDEzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvY2xpcGJvYXJkXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9jbGlwYm9hcmRfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvY2xpcGJvYXJkXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2NsaXBib2FyZF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2NsaXBweS5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvY2xpcHB5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2NsaXBweS5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9jbGlwcHkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9jbGlwcHkuc3dmIGIvc3JjL21haW4vcmVzb3VyY2VzL2NsaXBweS5zd2YKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9jbGlwcHkuc3dmCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvY2xpcHB5LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvY29sZF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvY29sZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9jb2xkXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2NvbGRfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9jb21taXRfYnJhbmNoXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9jb21taXRfYnJhbmNoXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2NvbW1pdF9icmFuY2hfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvY29tbWl0X2JyYW5jaF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2NvbW1pdF9jaGFuZ2VzXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9jb21taXRfY2hhbmdlc18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9jb21taXRfY2hhbmdlc18xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9jb21taXRfY2hhbmdlc18xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2NvbW1pdF9kaXZpZGVfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2NvbW1pdF9kaXZpZGVfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvY29tbWl0X2RpdmlkZV8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9jb21taXRfZGl2aWRlXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvY29tbWl0X2pvaW5fMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2NvbW1pdF9qb2luXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2NvbW1pdF9qb2luXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2NvbW1pdF9qb2luXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvY29tbWl0X21lcmdlXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9jb21taXRfbWVyZ2VfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvY29tbWl0X21lcmdlXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2NvbW1pdF9tZXJnZV8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2NvbW1pdF91cF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvY29tbWl0X3VwXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2NvbW1pdF91cF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9jb21taXRfdXBfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9mZWRlcmF0ZWRfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZlZGVyYXRlZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9mZWRlcmF0ZWRfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZmVkZXJhdGVkXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZmVlZF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZmVlZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9mZWVkXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZlZWRfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9maWxlXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZpbGVfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfYWNyb2JhdF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV9hY3JvYmF0XzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZpbGVfYWNyb2JhdF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX2Fjcm9iYXRfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9maWxlX2NfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfY18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX2NfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV9jXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZmlsZV9jb2RlXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlX2NvZGVfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZmlsZV9jb2RlXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfY29kZV8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfY3BwXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlX2NwcF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX2NwcF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX2NwcF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfY3NfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfY3NfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZmlsZV9jc18xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX2NzXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZmlsZV9kb2NfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfZG9jXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZpbGVfZG9jXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfZG9jXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZmlsZV9leGNlbF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV9leGNlbF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX2V4Y2VsXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfZXhjZWxfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9maWxlX2hfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfaF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX2hfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV9oXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZmlsZV9qYXZhXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlX2phdmFfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZmlsZV9qYXZhXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfamF2YV8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfcGhwXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlX3BocF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX3BocF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX3BocF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfcHB0XzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlX3BwdF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX3BwdF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX3BwdF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfcnVieV8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV9ydWJ5XzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZpbGVfcnVieV8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX3J1YnlfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9maWxlX3NldHRpbmdzXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9maWxlX3NldHRpbmdzXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZpbGVfc2V0dGluZ3NfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV9zZXR0aW5nc18xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2ZpbGVfdnNfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfdnNfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZmlsZV92c18xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9maWxlX3ZzXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZmlsZV93b3JsZF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV93b3JsZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9maWxlX3dvcmxkXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZpbGVfd29ybGRfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9maWxlX3ppcF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV96aXBfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZmlsZV96aXBfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZmlsZV96aXBfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9mb2xkZXJfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZvbGRlcl8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9mb2xkZXJfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZm9sZGVyXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZm9sZGVyX3N0YXJfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZvbGRlcl9zdGFyXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZvbGRlcl9zdGFyXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZvbGRlcl9zdGFyXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZm9sZGVyX3N0YXJfMzJ4MzIucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2ZvbGRlcl9zdGFyXzMyeDMyLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2ZvbGRlcl9zdGFyXzMyeDMyLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZvbGRlcl9zdGFyXzMyeDMyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZm9ya18xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZm9ya18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9mb3JrXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2ZvcmtfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9naXQtYmxhY2stMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2dpdC1ibGFjay0xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9naXQtYmxhY2stMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZ2l0LWJsYWNrLTE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZ2l0LWJsYWNrLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9naXQtYmxhY2sucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZ2l0LWJsYWNrLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2dpdC1ibGFjay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2dpdC1ibGFja18yMTB4MjEwLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9naXQtYmxhY2tfMjEweDIxMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9naXQtYmxhY2tfMjEweDIxMC5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9naXQtYmxhY2tfMjEweDIxMC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2dpdC1vcmFuZ2UtMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2dpdC1vcmFuZ2UtMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvZ2l0LW9yYW5nZS0xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9naXQtb3JhbmdlLTE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZ2l0YmxpdC5jc3MgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZ2l0YmxpdC5jc3MKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9naXRibGl0LmNzcwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsaXQuY3NzCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZ2l0Ymx0LWZhdmljb24ucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsdC1mYXZpY29uLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2dpdGJsdC1mYXZpY29uLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsdC1mYXZpY29uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZ2l0Ymx0LWxvZ28ucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsdC1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2dpdGJsdC1sb2dvLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsdC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZ2l0Ymx0Mi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZ2l0Ymx0Mi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9naXRibHQyLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsdDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9naXRibHQyX3doaXRlLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9naXRibHQyX3doaXRlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2dpdGJsdDJfd2hpdGUucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZ2l0Ymx0Ml93aGl0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2dpdGJsdF8yNS5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvZ2l0Ymx0XzI1LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2dpdGJsdF8yNS5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9naXRibHRfMjUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9naXRibHRfMjVfd2hpdGUucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2dpdGJsdF8yNV93aGl0ZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9naXRibHRfMjVfd2hpdGUucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvZ2l0Ymx0XzI1X3doaXRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvZ2l0d2ViLWZhdmljb24ucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2dpdHdlYi1mYXZpY29uLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2dpdHdlYi1mYXZpY29uLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2dpdHdlYi1mYXZpY29uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvaGVhbHRoXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9oZWFsdGhfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvaGVhbHRoXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2hlYWx0aF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2hlYXJ0XzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9oZWFydF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9oZWFydF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9oZWFydF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2luZm9ybWF0aW9uXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9pbmZvcm1hdGlvbl8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9pbmZvcm1hdGlvbl8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9pbmZvcm1hdGlvbl8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2xvY2tfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2xvY2tfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvbG9ja18xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9sb2NrXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvbG9ja19nb18xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvbG9ja19nb18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9sb2NrX2dvXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2xvY2tfZ29fMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9sb2NrX3B1bGxfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL2xvY2tfcHVsbF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9sb2NrX3B1bGxfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvbG9ja19wdWxsXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvbG9naW4ubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2luLm1rZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2xvZ2luLm1rZApyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2xvZ2luLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2xvZ2luX2VzLm1rZCBiL3NyYy9tYWluL3Jlc291cmNlcy9sb2dpbl9lcy5ta2QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9sb2dpbl9lcy5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9sb2dpbl9lcy5ta2QKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9sb2dpbl9rby5ta2QgYi9zcmMvbWFpbi9yZXNvdXJjZXMvbG9naW5fa28ubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvbG9naW5fa28ubWtkCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvbG9naW5fa28ubWtkCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvbG9naW5fbmwubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2luX25sLm1rZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2xvZ2luX25sLm1rZApyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2xvZ2luX25sLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL2xvZ2luX3BsLm1rZCBiL3NyYy9tYWluL3Jlc291cmNlcy9sb2dpbl9wbC5ta2QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9sb2dpbl9wbC5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9sb2dpbl9wbC5ta2QKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9sb2dpbl9wdF9ici5ta2QgYi9zcmMvbWFpbi9yZXNvdXJjZXMvbG9naW5fcHRfYnIubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvbG9naW5fcHRfYnIubWtkCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvbG9naW5fcHRfYnIubWtkCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvbG9naW5femhfQ04ubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2luX3poX0NOLm1rZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL2xvZ2luX3poX0NOLm1rZApyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL2xvZ2luX3poX0NOLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL21haWxfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL21haWxfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvbWFpbF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9tYWlsXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvcGl4ZWwucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL3BpeGVsLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL3BpeGVsLnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL3BpeGVsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvcm9zZXR0ZV8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvcm9zZXR0ZV8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9yb3NldHRlXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL3Jvc2V0dGVfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9yb3NldHRlXzMyeDMyLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9yb3NldHRlXzMyeDMyLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL3Jvc2V0dGVfMzJ4MzIucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvcm9zZXR0ZV8zMngzMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3NjcmlwdF8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvc2NyaXB0XzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL3NjcmlwdF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy9zY3JpcHRfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9zZWFyY2gtaWNvbi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvc2VhcmNoLWljb24ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvc2VhcmNoLWljb24ucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvc2VhcmNoLWljb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9zZXR0aW5nc18xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvc2V0dGluZ3NfMTZ4MTYucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvc2V0dGluZ3NfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvc2V0dGluZ3NfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9zZXR0aW5nc18zMngzMi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvc2V0dGluZ3NfMzJ4MzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvc2V0dGluZ3NfMzJ4MzIucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvc2V0dGluZ3NfMzJ4MzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9zaGllbGRfMTZ4MTYucG5nIGIvc3JjL21haW4vcmVzb3VyY2VzL3NoaWVsZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9zaGllbGRfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvc2hpZWxkXzE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9yZXNvdXJjZXMvc3Rhcl8xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvc3Rhcl8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy9zdGFyXzE2eDE2LnBuZwpyZW5hbWUgdG8gc3JjL21haW4vcmVzb3VyY2VzL3N0YXJfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy9zdGFyXzMyeDMyLnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy9zdGFyXzMyeDMyLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL3N0YXJfMzJ4MzIucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvc3Rhcl8zMngzMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3RhZ18xNngxNi5wbmcgYi9zcmMvbWFpbi9yZXNvdXJjZXMvdGFnXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL3RhZ18xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy90YWdfMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Jlc291cmNlcy91c2VyXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy91c2VyXzE2eDE2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcmVzb3VyY2VzL3VzZXJfMTZ4MTYucG5nCnJlbmFtZSB0byBzcmMvbWFpbi9yZXNvdXJjZXMvdXNlcl8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3VzZXJzXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy91c2Vyc18xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy91c2Vyc18xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy91c2Vyc18xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3ZjYXJkXzE2eDE2LnBuZyBiL3NyYy9tYWluL3Jlc291cmNlcy92Y2FyZF8xNngxNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHJlc291cmNlcy92Y2FyZF8xNngxNi5wbmcKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy92Y2FyZF8xNngxNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWUubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWUubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZS5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWVfZXMubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWVfZXMubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZV9lcy5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lX2VzLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWVfa28ubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWVfa28ubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZV9rby5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lX2tvLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWVfbmwubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWVfbmwubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZV9ubC5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lX25sLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWVfcGwubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWVfcGwubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZV9wbC5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lX3BsLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWVfcHRfYnIubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWVfcHRfYnIubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZV9wdF9ici5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lX3B0X2JyLm1rZApkaWZmIC0tZ2l0IGEvcmVzb3VyY2VzL3dlbGNvbWVfemhfQ04ubWtkIGIvc3JjL21haW4vcmVzb3VyY2VzL3dlbGNvbWVfemhfQ04ubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSByZXNvdXJjZXMvd2VsY29tZV96aF9DTi5ta2QKcmVuYW1lIHRvIHNyYy9tYWluL3Jlc291cmNlcy93ZWxjb21lX3poX0NOLm1rZApkaWZmIC0tZ2l0IGEvZG9jcy8uZ2l0aWdub3JlIGIvc3JjL3NpdGUvLmdpdGlnbm9yZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy8uZ2l0aWdub3JlCnJlbmFtZSB0byBzcmMvc2l0ZS8uZ2l0aWdub3JlCmRpZmYgLS1naXQgYS9kb2NzL2FyY2hpdGVjdHVyZS5vZGcgYi9zcmMvc2l0ZS9hcmNoaXRlY3R1cmUub2RnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2FyY2hpdGVjdHVyZS5vZGcKcmVuYW1lIHRvIHNyYy9zaXRlL2FyY2hpdGVjdHVyZS5vZGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL3NpdGUvY3VzdG9tLmxlc3MgYi9zcmMvc2l0ZS9jdXN0b20ubGVzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDUwNThiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NpdGUvY3VzdG9tLmxlc3MKQEAgLTAsMCArMSw5NiBAQAorLyohDQorICogR2l0YmxpdCBCb290c3RyYXAgT3ZlcnJpZGVzDQorICoNCisgKiBDb3B5cmlnaHQgMjAxMiBnaXRibGl0LmNvbQ0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wDQorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKi8NCisNCisvLyBHTE9CQUwgVkFMVUVTDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitAYmx1ZURhcms6CQkJCQkjMDAwMDYwOw0KK0BibHVlRGFya2VyOgkJCQkjMDAwMDUwOw0KK0BibHVlRGFya2VzdDoJCQkJIzAwMDA0MDsNCitAc3RhbmRhcmRHcmF5OgkJCQkjY2NjOw0KK0Bjb3JuZmxvd2VyOgkJCQkjYWJkNGZmOw0KK0B3aGl0ZToJCQkJCQkjZmZmOw0KKw0KKw0KKy8vIERyb3Bkb3duDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0Bkcm9wZG93bkxpbmtCYWNrZ3JvdW5kSG92ZXI6ICAgQGJsdWVEYXJrOw0KKw0KKy8vIE5hdmJhcg0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitAbmF2YmFySGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgNDVweDsNCitAbmF2YmFyQmFja2dyb3VuZDogICAgICAgICAgICAgICAgQGJsdWVEYXJrZXN0Ow0KK0BuYXZiYXJCYWNrZ3JvdW5kSGlnaGxpZ2h0OiAgICAgICBAYmx1ZURhcms7DQorQG5hdmJhclRleHQ6ICAgICAgICAgICAgICAgICAgICAgIEB3aGl0ZTsNCitAbmF2YmFyTGlua0NvbG9yOiAgICAgICAgICAgICAgICAgQHdoaXRlOw0KK0BuYXZiYXJMaW5rQ29sb3JIb3ZlcjogICAgICAgICAgICBAY29ybmZsb3dlcjsNCitAbmF2YmFyTGlua0NvbG9yQWN0aXZlOiAgICAgICAgICAgQGNvcm5mbG93ZXI7DQorQG5hdmJhckxpbmtCYWNrZ3JvdW5kSG92ZXI6ICAgICAgIHRyYW5zcGFyZW50Ow0KK0BuYXZiYXJMaW5rQmFja2dyb3VuZEFjdGl2ZTogICAgICB0cmFuc3BhcmVudDsNCisNCisNCisubmF2YmFyIHsNCisJLm5hdiB7DQorCQltYXJnaW46IDBweDsNCisNCisJCWxpID4gYSB7DQorCQkJdGV4dC1zaGFkb3c6IDAgMXB4IDAgIzAwMDsNCisJCX0NCisNCisJCWxpID4gYTpob3ZlciB7DQorCQkJdGV4dC1zaGFkb3c6IDAgMCAxZW0gd2hpdGU7DQorCQl9DQorCQkNCisJCS5hY3RpdmUgPiBhLCANCisJCS5hY3RpdmUgPiBhOmhvdmVyLA0KKwkJLmFjdGl2ZSA+IGE6Zm9jdXMgew0KKwkJCWJveC1zaGFkb3c6IG5vbmU7DQorCQkJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQorCQl9DQorCQkNCisJCXVsLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgew0KKwkJCXRleHQtc2hhZG93OiBub25lOw0KKwkJfQ0KKwl9DQorDQorCS5icmFuZCB7DQorCQlAZWxlbWVudEhlaWdodDogMjdweDsNCisJCXBhZGRpbmc6IDEwcHggMjBweDsNCisJfQ0KKwkNCisJLnB1bGwtcmlnaHQgew0KKwkJbWFyZ2luOiAwOw0KKwl9DQorCQ0KKwl1bCA+IGxpOmZvY3VzLCAuYWN0aXZlIHsNCisJCWJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsNCisJCWJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vYXJyb3dfcGFnZS5wbmcnKTsNCisJCWJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBib3R0b207DQorCQlvdXRsaW5lOiAwOw0KKwl9DQorfQ0KKw0KKy5uYXZiYXItaW5uZXIgew0KKwliYWNrZ3JvdW5kLWNvbG9yOiBAYmx1ZURhcmtlcjsNCisJYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZjk5MDA7DQorfQ0KKw0KK2gzIHNtYWxsIHsgZm9udC1zaXplOiBAYmFzZUZvbnRTaXplICsgMzsgfQ0KK2JvZHkgeyBwYWRkaW5nLXRvcDogQG5hdmJhckhlaWdodCArIDE1IH0gLyogNjBweCB0byBtYWtlIHRoZSBjb250YWluZXIgZ28gYWxsIHRoZSB3YXkgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdG9wYmFyICovDQorZm9vdGVyIHsgbWFyZ2luLXRvcDogMjVweDsgcGFkZGluZzogMTVweCAwIDE2cHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjRTVFNUU1OyB9DQorDQorYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7IH0NCitlbSB7IGNvbG9yOiAjYjA1MDAwOyB9DQorY29kZSB7DQorCWNvbG9yOiAjMDAwMDAwOw0KKwliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmUwOw0KKyAgICBib3JkZXI6IDFweCBzb2xpZCBvcmFuZ2U7DQorICAgIGJvcmRlci1yYWRpdXM6IDNweDsNCisgICAgcGFkZGluZzogMCAwLjJlbTsNCisgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy8wNF9kZXNpZ24ubWtkIGIvc3JjL3NpdGUvZGVzaWduLm1rZApzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBkb2NzLzA0X2Rlc2lnbi5ta2QKcmVuYW1lIHRvIHNyYy9zaXRlL2Rlc2lnbi5ta2QKaW5kZXggNjIyZTRhMi4uNWNhODM1NSAxMDA2NDQKLS0tIGEvZG9jcy8wNF9kZXNpZ24ubWtkCisrKyBiL3NyYy9zaXRlL2Rlc2lnbi5ta2QKQEAgLTUxLDcgKzUxLDcgQEAKIC0gW0pVbml0XShodHRwOi8vanVuaXQub3JnKSAoQ29tbW9uIFB1YmxpYyBMaWNlbnNlKQ0KIC0gW2NvbW1vbnMtbmV0XShodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL25ldCkgKEFwYWNoZSAyLjApDQogLSBbYW50LWdvb2dsZWNvZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbnQtZ29vZ2xlY29kZSkgKE5ldyBCU0QpDQotLSBbR2VuSmFyXShodHRwOi8vZ2VuamFyLnNvdXJjZWZvcmdlLm5ldCkgKEFwYWNoZSAxLjEpDQorLSBbTW94aWVdKGh0dHA6Ly9tb3hpZS5naXRibGl0LmNvbSkgKEFwYWNoZSAyLjApDQogDQogIyMgQnVpbGRpbmcgZnJvbSBTb3VyY2UNCiBbRWNsaXBzZV0oaHR0cDovL2VjbGlwc2Uub3JnKSBpcyByZWNvbW1lbmRlZCBmb3IgZGV2ZWxvcG1lbnQgYXMgdGhlIHByb2plY3Qgc2V0dGluZ3MgYXJlIHByZWNvbmZpZ3VyZWQuDQpAQCAtNzMsNyArNzMsNyBAQAogDQogDQogIyMgQ29udHJpYnV0aW5nDQotUGF0Y2hlcyB3ZWxjb21lIGluIGFueSBmb3JtLg0KK1B1bGwgcmVxdWVzdHMgYXJlIHByZWZlcnJlZC4gIFBhdGNoZXMgYXJlIHdlbGNvbWUuDQogDQogQ29udHJpYnV0aW9ucyBtdXN0IGJlIHlvdXIgb3duIG9yaWdpbmFsIHdvcmsgYW5kIG11c3QgbGljZW5zZWQgdW5kZXIgdGhlIFtBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBdW2FwYWNoZWxpY2Vuc2VdLCB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgR2l0YmxpdC4NCiANCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2JsYW5rLmdpZiBiL3NyYy9zaXRlL2ZhbmN5Ym94L2JsYW5rLmdpZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9ibGFuay5naWYKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2JsYW5rLmdpZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X2Nsb3NlLnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X2Nsb3NlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9mYW5jeV9jbG9zZS5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X2Nsb3NlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X2xvYWRpbmcucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfbG9hZGluZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lfbG9hZGluZy5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X2xvYWRpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvZmFuY3lfbmF2X2xlZnQucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfbmF2X2xlZnQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5X25hdl9sZWZ0LnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfbmF2X2xlZnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvZmFuY3lfbmF2X3JpZ2h0LnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X25hdl9yaWdodC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lfbmF2X3JpZ2h0LnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfbmF2X3JpZ2h0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19lLnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9mYW5jeV9zaGFkb3dfZS5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19uLnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19uLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbi5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19uZS5wbmcgYi9zcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbmUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19uZS5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19uZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbncucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfc2hhZG93X253LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbncucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV9zaGFkb3dfbncucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvZmFuY3lfc2hhZG93X3MucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfc2hhZG93X3MucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfc2hhZG93X3MucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvZmFuY3lfc2hhZG93X3NlLnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lfc2hhZG93X3NlLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfc2hhZG93X3NlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zdy5wbmcgYi9zcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV9zaGFkb3dfc3cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zdy5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9mYW5jeWJveC9mYW5jeV9zaGFkb3dfdy5wbmcgYi9zcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV9zaGFkb3dfdy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lfc2hhZG93X3cucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV9zaGFkb3dfdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9mYW5jeWJveC9mYW5jeV90aXRsZV9sZWZ0LnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX2xlZnQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX2xlZnQucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV90aXRsZV9sZWZ0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX21haW4ucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfdGl0bGVfbWFpbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lfdGl0bGVfbWFpbi5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5X3RpdGxlX21haW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvZmFuY3lfdGl0bGVfb3Zlci5wbmcgYi9zcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV90aXRsZV9vdmVyLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9mYW5jeV90aXRsZV9vdmVyLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lfdGl0bGVfb3Zlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9mYW5jeWJveC9mYW5jeV90aXRsZV9yaWdodC5wbmcgYi9zcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV90aXRsZV9yaWdodC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lfdGl0bGVfcmlnaHQucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9mYW5jeWJveC9mYW5jeV90aXRsZV9yaWdodC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9mYW5jeWJveC9mYW5jeWJveC14LnBuZyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5Ym94LXgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5Ym94LXgucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9mYW5jeWJveC9mYW5jeWJveC14LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2ZhbmN5Ym94LXkucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lib3gteS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvZmFuY3lib3gteS5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2ZhbmN5Ym94LXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvZmFuY3lib3gucG5nIGIvc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lib3gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2ZhbmN5Ym94LnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvZmFuY3lib3gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvanF1ZXJ5LTEuNC4zLm1pbi5qcyBiL3NyYy9zaXRlL2ZhbmN5Ym94L2pxdWVyeS0xLjQuMy5taW4uanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvanF1ZXJ5LTEuNC4zLm1pbi5qcwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvanF1ZXJ5LTEuNC4zLm1pbi5qcwpkaWZmIC0tZ2l0IGEvZG9jcy9mYW5jeWJveC9qcXVlcnkuZWFzaW5nLTEuMy5wYWNrLmpzIGIvc3JjL3NpdGUvZmFuY3lib3gvanF1ZXJ5LmVhc2luZy0xLjMucGFjay5qcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mYW5jeWJveC9qcXVlcnkuZWFzaW5nLTEuMy5wYWNrLmpzCnJlbmFtZSB0byBzcmMvc2l0ZS9mYW5jeWJveC9qcXVlcnkuZWFzaW5nLTEuMy5wYWNrLmpzCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5jc3MgYi9zcmMvc2l0ZS9mYW5jeWJveC9qcXVlcnkuZmFuY3lib3gtMS4zLjQuY3NzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5jc3MKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5jc3MKZGlmZiAtLWdpdCBhL2RvY3MvZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LmpzIGIvc3JjL3NpdGUvZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5qcwpyZW5hbWUgdG8gc3JjL3NpdGUvZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LmpzCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5wYWNrLmpzIGIvc3JjL3NpdGUvZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LnBhY2suanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LnBhY2suanMKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5wYWNrLmpzCmRpZmYgLS1naXQgYS9kb2NzL2ZhbmN5Ym94L2pxdWVyeS5tb3VzZXdoZWVsLTMuMC40LnBhY2suanMgYi9zcmMvc2l0ZS9mYW5jeWJveC9qcXVlcnkubW91c2V3aGVlbC0zLjAuNC5wYWNrLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZhbmN5Ym94L2pxdWVyeS5tb3VzZXdoZWVsLTMuMC40LnBhY2suanMKcmVuYW1lIHRvIHNyYy9zaXRlL2ZhbmN5Ym94L2pxdWVyeS5tb3VzZXdoZWVsLTMuMC40LnBhY2suanMKZGlmZiAtLWdpdCBhL2RvY3MvMDNfZmFxLm1rZCBiL3NyYy9zaXRlL2ZhcS5ta2QKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gZG9jcy8wM19mYXEubWtkCnJlbmFtZSB0byBzcmMvc2l0ZS9mYXEubWtkCmluZGV4IGNkZjNkNTkuLmZiMWI1OTkgMTAwNjQ0Ci0tLSBhL2RvY3MvMDNfZmFxLm1rZAorKysgYi9zcmMvc2l0ZS9mYXEubWtkCkBAIC0zLDE4ICszLDE5IEBACiAjIyMgRWNsaXBzZS9FZ2l0L0pHaXQgY29tcGxhaW5zIHRoYXQgaXQgImNhbid0IG9wZW4gdXBsb2FkIHBhY2siPw0KIFRoZXJlIGFyZSBhIGZldyB3YXlzIHRoaXMgY2FuIG9jY3VyOg0KIA0KLTEuIFlvdSBhcmUgdXNpbmcgaHR0cHMgd2l0aCBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGFuZCB5b3UgKipkaWQgbm90KiogY29uZmlndXJlICpodHRwLnNzbFZlcmlmeT1mYWxzZSoNCisxLiBBcmUgeW91IHJ1bm5pbmcgSmF2YSA3PzxiciAvPkphdmEgNyBpbnRyb2R1Y2VkIFNOSSBzdXBwb3J0IGZvciBTU0wgY29ubmVjdGlvbnMgYW5kIGl0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC48YnIgLz5bSmF2YSA3IFNlY3VyaXR5IEVuaGFuY2VtZW50c10oaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL3RlY2hub3Rlcy9ndWlkZXMvc2VjdXJpdHkvZW5oYW5jZW1lbnRzLTcuaHRtbCk8YnIgLz5UbyBkaXNhYmxlIFNOSSBhbGVydHMsIGFkZCB0aGlzIGxpbmUgdG8geW91ciBlY2xpcHNlLmluaSBmaWxlIGFuZCByZXN0YXJ0IEVjbGlwc2UuPGJyIC8+PHByZT4tRGpzc2UuZW5hYmxlU05JRXh0ZW5zaW9uPWZhbHNlPC9wcmU+DQorMi4gWW91IGFyZSB1c2luZyBodHRwcyB3aXRoIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgYW5kIHlvdSAqKmRpZCBub3QqKiBjb25maWd1cmUgKmh0dHAuc3NsVmVyaWZ5PWZhbHNlKg0KICAgICAxLiBXaW5kb3ctPlByZWZlcmVuY2VzLT5UZWFtLT5HaXQtPkNvbmZpZ3VyYXRpb24NCiAgICAgMi4gQ2xpY2sgdGhlICpOZXcgRW50cnkqIGJ1dHRvbg0KICAgICAzLiA8cHJlPktleSA9IDxlbT5odHRwLnNzbFZlcmlmeTwvZW0+DQogVmFsdWUgPSA8ZW0+ZmFsc2U8L2VtPjwvcHJlPg0KLTIuIEdpdGJsaXQgR08ncyBkZWZhdWx0IHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGlzIGJvdW5kIHRvICpsb2NhbGhvc3QqIGFuZCB5b3UgYXJlIHRyeWluZyB0byBjbG9uZS9wdXNoIGJldHdlZW4gbWFjaGluZXMuDQorMy4gR2l0YmxpdCBHTydzIGRlZmF1bHQgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgaXMgYm91bmQgdG8gKmxvY2FsaG9zdCogYW5kIHlvdSBhcmUgdHJ5aW5nIHRvIGNsb25lL3B1c2ggYmV0d2VlbiBtYWNoaW5lcy4NCiAgICAgMS4gUmV2aWV3IHRoZSBjb250ZW50cyBvZiBgbWFrZWtleXN0b3JlLmNtZGANCiAgICAgMi4gU2V0ICp5b3VyIGhvc3RuYW1lKiBpbiB0aGUgKkhPU1ROQU1FKiB2YXJpYWJsZS4NCiAgICAgMy4gRXhlY3V0ZSB0aGUgc2NyaXB0Ljxici8+VGhpcyB3aWxsIGdlbmVyYXRlIGEgbmV3IGNlcnRpZmljYXRlIGFuZCBrZXlzdG9yZSBmb3IgKnlvdXIgaG9zdG5hbWUqIHByb3RlY3RlZCBieSAqc2VydmVyLnN0b3JlUGFzc3dvcmQqLiANCi0zLiBUaGUgcmVwb3NpdG9yeSBpcyBjbG9uZS1yZXN0cmljdGVkIGFuZCB5b3UgZG9uJ3QgaGF2ZSBhY2Nlc3MuDQotNC4gVGhlIHJlcG9zaXRvcnkgaXMgY2xvbmUtcmVzdHJpY3RlZCBhbmQgeW91ciBwYXNzd29yZCBjaGFuZ2VkLg0KLTUuIEEgcmVncmVzc2lvbiBpbiBHaXRibGl0LiAgOigNCis0LiBUaGUgcmVwb3NpdG9yeSBpcyBjbG9uZS1yZXN0cmljdGVkIGFuZCB5b3UgZG9uJ3QgaGF2ZSBhY2Nlc3MuDQorNS4gVGhlIHJlcG9zaXRvcnkgaXMgY2xvbmUtcmVzdHJpY3RlZCBhbmQgeW91ciBwYXNzd29yZCBjaGFuZ2VkLg0KKzYuIEEgcmVncmVzc2lvbiBpbiBHaXRibGl0LiAgOigNCiANCiAjIyMgV2h5IGNhbid0IEkgYWNjZXNzIEdpdGJsaXQgR08gZnJvbSBhbm90aGVyIG1hY2hpbmU/DQogMS4gUGxlYXNlIGNoZWNrICpzZXJ2ZXIuaHR0cEJpbmRJbnRlcmZhY2UqIGFuZCAqc2VydmVyLmh0dHBzQmluZEludGVyZmFjZSogaW4gYGdpdGJsaXQucHJvcGVydGllc2AsIHlvdSBtYXkgYmUgb25seSBiZSBzZXJ2aW5nIG9uICpsb2NhbGhvc3QqLg0KZGlmZiAtLWdpdCBhL2RvY3MvMDFfZmVhdHVyZXMubWtkIGIvc3JjL3NpdGUvZmVhdHVyZXMubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzLzAxX2ZlYXR1cmVzLm1rZApyZW5hbWUgdG8gc3JjL3NpdGUvZmVhdHVyZXMubWtkCmRpZmYgLS1naXQgYS9kb2NzLzAyX2ZlZGVyYXRpb24ubWtkIGIvc3JjL3NpdGUvZmVkZXJhdGlvbi5ta2QKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gZG9jcy8wMl9mZWRlcmF0aW9uLm1rZApyZW5hbWUgdG8gc3JjL3NpdGUvZmVkZXJhdGlvbi5ta2QKaW5kZXggZDgzYTllMy4uNzU2ZDNmYyAxMDA2NDQKLS0tIGEvZG9jcy8wMl9mZWRlcmF0aW9uLm1rZAorKysgYi9zcmMvc2l0ZS9mZWRlcmF0aW9uLm1rZApAQCAtNDgsMTEgKzQ4LDExIEBACiBJZiB5b3Ugd2FudCB5b3VyIHJlcG9zaXRvcmllcyAoYW5kIG9wdGlvbmFsbHkgdXNlcnMgYWNjb3VudHMgYW5kIHNldHRpbmdzKSB0byBiZSBwdWxsZWQgYnkgYW5vdGhlciBHaXRibGl0IGluc3RhbmNlLCB5b3UgbmVlZCB0byByZWdpc3RlciB5b3VyIG9yaWdpbiBHaXRibGl0IGluc3RhbmNlIHdpdGggYSBwdWxsaW5nIEdpdGJsaXQgaW5zdGFuY2UgYnkgcHJvdmlkaW5nIHRoZSB1cmwgb2YgeW91ciBHaXRibGl0IGluc3RhbmNlIGFuZCBhIGZlZGVyYXRpb24gdG9rZW4uDQogDQogR2l0YmxpdCBnZW5lcmF0ZXMgdGhlIGZvbGxvd2luZyBzdGFuZGFyZCBmZWRlcmF0aW9uIHRva2VuczoNCi0lQkVHSU5DT0RFJQ0KKy0tLUpBVkEtLS0NCiBTdHJpbmcgYWxsVG9rZW4gPSBTSEExKHBhc3NwaHJhc2UgKyAiLUFMTCIpOw0KIFN0cmluZyB1c2Vyc0FuZFJlcG9zaXRvcmllc1Rva2VuID0gU0hBMShwYXNzcGhyYXNlICsgIi1VU0VSU19BTkRfUkVQT1NJVE9SSUVTIik7DQogU3RyaW5nIHJlcG9zaXRvcmllc1Rva2VuID0gU0hBMShwYXNzcGhyYXNlICsgIi1SRVBPU0lUT1JJRVMiKTsNCi0lRU5EQ09ERSUNCistLS1KQVZBLS0tDQogICAgIA0KIFRoZSAqQUxMKiB0b2tlbiBhbGxvd3MgYW5vdGhlciBHaXRibGl0IGluc3RhbmNlIHRvIHB1bGwgYWxsIHlvdXIgcmVwb3NpdG9yaWVzLCB1c2VyIGFjY291bnRzLCBzZXJ2ZXIgc2V0dGluZ3MsIGFuZCByZWZlcmVuY2VkIHB1c2ggc2NyaXB0cy4gIA0KIFRoZSAqVVNFUlNfQU5EX1JFUE9TSVRPUklFUyogdG9rZW4gYWxsb3dzIGFub3RoZXIgR2l0YmxpdCBpbnN0YW5jZSB0byBwdWxsIGFsbCB5b3VyIHJlcG9zaXRvcmllcyBhbmQgIHVzZXIgYWNjb3VudHMuICANCmRpZmYgLS1naXQgYS9kb2NzL2ZlZGVyYXRpb24ub2RnIGIvc3JjL3NpdGUvZmVkZXJhdGlvbi5vZGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZmVkZXJhdGlvbi5vZGcKcmVuYW1lIHRvIHNyYy9zaXRlL2ZlZGVyYXRpb24ub2RnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZ2l0YmxpdF9sb2dvX3doaXRlLnhjZiBiL3NyYy9zaXRlL2dpdGJsaXRfbG9nb193aGl0ZS54Y2YKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvZ2l0YmxpdF9sb2dvX3doaXRlLnhjZgpyZW5hbWUgdG8gc3JjL3NpdGUvZ2l0YmxpdF9sb2dvX3doaXRlLnhjZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kaXN0cmliL29wZW5zaGlmdC5ta2QgYi9zcmMvc2l0ZS9vcGVuc2hpZnQubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkaXN0cmliL29wZW5zaGlmdC5ta2QKcmVuYW1lIHRvIHNyYy9zaXRlL29wZW5zaGlmdC5ta2QKZGlmZiAtLWdpdCBhL2RvY3MvcGVybWlzc2lvbnNfbWF0cml4Lm9kcyBiL3NyYy9zaXRlL3Blcm1pc3Npb25zX21hdHJpeC5vZHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvcGVybWlzc2lvbnNfbWF0cml4Lm9kcwpyZW5hbWUgdG8gc3JjL3NpdGUvcGVybWlzc2lvbnNfbWF0cml4Lm9kcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzLzAzX3Byb3BlcnRpZXMubWtkIGIvc3JjL3NpdGUvcHJvcGVydGllcy5ta2QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvMDNfcHJvcGVydGllcy5ta2QKcmVuYW1lIHRvIHNyYy9zaXRlL3Byb3BlcnRpZXMubWtkCmRpZmYgLS1naXQgYS9zcmMvc2l0ZS9yZWxlYXNlY3VycmVudC5ta2QgYi9zcmMvc2l0ZS9yZWxlYXNlY3VycmVudC5ta2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzZjFiZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9zaXRlL3JlbGVhc2VjdXJyZW50Lm1rZApAQCAtMCwwICsxLDY3IEBACisjIyBDdXJyZW50IFJlbGVhc2UgKCR7cHJvamVjdC5yZWxlYXNlVmVyc2lvbn0pDQorDQorPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+DQorPGg0PlVwZGF0ZSBOb3RlICR7cHJvamVjdC5yZWxlYXNlVmVyc2lvbn08L2g0Pg0KK0JlY2F1c2UgdGhlcmUgYXJlIG5vdyBzZXZlcmFsIHR5cGVzIG9mIGZpbGVzIGFuZCBmb2xkZXJzIHRoYXQgbXVzdCBiZSBjb25zaWRlcmVkIEdpdGJsaXQgZGF0YSwgdGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIGRhdGEgaGFzIGNoYW5nZWQuDQorPHA+WW91IHdpbGwgbmVlZCB0byBtb3ZlIGEgZmV3IGZpbGVzIGFyb3VuZCB3aGVuIHVwZ3JhZGluZy4gIFBsZWFzZSBzZWUgdGhlIFVwZ3JhZGluZyBzZWN0aW9uIG9mIHRoZSA8YSBocmVmPSJzZXR1cC5odG1sIj5zZXR1cDwvYT4gcGFnZSBmb3IgZGV0YWlscy48L3A+DQorDQorPGI+RXhwcmVzcyBVc2VyczwvYj4gbWFrZSBzdXJlIHRvIHVwZGF0ZSB5b3VyIHdlYi54bWwgZmlsZSB3aXRoIHRoZSAke2Jhc2VGb2xkZXJ9IHZhbHVlcyENCis8L2Rpdj4NCisNCisqKmRvd25sb2FkczoqKiBbR08gV2luZG93c10oJUdDVVJMJWdpdGJsaXQtJHtwcm9qZWN0LnJlbGVhc2VWZXJzaW9ufS56aXApIHwgW0dPIExpbnV4L09TWF0oJUdDVVJMJWdpdGJsaXQtJHtwcm9qZWN0LnJlbGVhc2VWZXJzaW9ufS50YXIuZ3opIHwgW1dBUl0oJUdDVVJMJWdpdGJsaXQtJHtwcm9qZWN0LnJlbGVhc2VWZXJzaW9ufS53YXIpIHwgW0V4cHJlc3NdKCVHQ1VSTCVleHByZXNzLSR7cHJvamVjdC5yZWxlYXNlVmVyc2lvbn0uemlwKSB8IFtGZWRlcmF0b2luIENsaWVudF0oJUdDVVJMJWZlZGNsaWVudC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCkgfCBbR2l0YmxpdCBNYW5hZ2VyXSglR0NVUkwlbWFuYWdlci0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCkgfCBbQVBJIExpYnJhcnldKCVHQ1VSTCVnYmFwaS0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCkgJm5ic3A7ICpyZWxlYXNlZCAke3Byb2plY3QucmVsZWFzZURhdGV9Kg0KKw0KKyMjIyMgZml4ZXMNCisNCistIEZpeGVkIG51bGxwb2ludGVyIG9uIHJlY3Vyc2l2ZWx5IGNhbGN1bGF0aW5nIGZvbGRlciBzaXplcyB3aGVuIHRoZXJlIGlzIGEgbmFtZWQgcGlwZSBvciBzeW1saW5rIGluIHRoZSBoaWVyYXJjaHkNCistIEFkZGVkIG51bGxjaGVja2luZyB3aGVuIGNvbmN1cnJlbnRseSBmb3JraW5nIGEgcmVwb3NpdG9yeSBhbmQgdHJ5aW5nIHRvIGRpc3BsYXkgaXQncyBmb3JrIG5ldHdvcmsgKGlzc3VlLTE4NykNCistIEZpeGVkIGJ1ZyB3aGVyZSBwZXJtaXNzaW9uIGNoYW5nZXMgd2VyZSBub3QgdmlzaWJsZSBpbiB0aGUgd2ViIHVpIHRvIGEgbG9nZ2VkLWluIHVzZXIgdW50aWwgdGhlIHVzZXIgbG9nZ2VkLW91dCBhbmQgdGhlbiBsb2dnZWQgYmFjayBpbiBhZ2FpbiAoaXNzdWUtMTg2KQ0KKy0gRml4ZWQgbnVsbHBvaW50ZXIgb24gY3JlYXRpbmcgYSByZXBvc2l0b3J5IHdpdGggbWl4ZWQgY2FzZSAoaXNzdWUgMTg1KQ0KKy0gSW5jbHVkZSBtaXNzaW5nIG1vZGVsIGNsYXNzZXMgaW4gYXBpIGxpYnJhcnkgKGlzc3VlLTE4NCkNCistIEZpeGVkIG51bGxwb2ludGVyIHdoZW4gdXNpbmcgKndlYi5hbGxvd0ZvcmtpbmcgPSB0cnVlKiAmJiAqZ2l0LmNhY2hlUmVwb3NpdG9yeUxpc3QgPSBmYWxzZSogKGlzc3VlIDE4MikNCistIExpa2VseSBmaXggZm9yIGNvbW1pdCBhbmQgY29tbWl0ZGlmZiBwYWdlIGZhaWx1cmVzIHdoZW4gYSBzdWJtb2R1bGUgcmVmZXJlbmNlIGNoYW5nZXMgKGlzc3VlIDE3OCkNCistIEJ1aWxkIHByb2plY3QgbW9kZWxzIGZyb20gdGhlIHJlcG9zaXRvcnkgbW9kZWwgY2FjaGUsIHdoZW4gcG9zc2libGUsIHRvIHJlZHVjZSBwYWdlIGxvYWQgdGltZSAoaXNzdWUgMTcyKQ0KKy0gRml4ZWQgbG9hZGluZyBvZiBCcmF6aWxpYW4gUG9ydHVndWVzZSB0cmFuc2xhdGlvbiBmcm9tICpuaXggc2VydmVyIChnaXRodWIvaW5haWF0KQ0KKw0KKyMjIyMgYWRkaXRpb25zDQorDQorLSBGYW5vdXQgUHViU3ViIHNlcnZpY2UgZm9yIHNlbGYtaG9zdGVkIFtTcGFya2xlc2hhcmVdKGh0dHA6Ly9zcGFya2xlc2hhcmUub3JnKSBub3RpZmljYXRpb25zLjxici8+DQorVGhpcyBzZXJ2aWNlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuPGJyLz4NCisgICAgKipOZXc6KiogKmZhbm91dC5iaW5kSW50ZXJmYWNlID0gbG9jYWxob3N0Kjxici8+DQorCSoqTmV3OioqICpmYW5vdXQucG9ydCA9IDAqPGJyLz4NCisJKipOZXc6KiogKmZhbm91dC51c2VOaW8gPSB0cnVlKjxici8+DQorCSoqTmV3OioqICpmYW5vdXQuY29ubmVjdGlvbkxpbWl0ID0gMCoNCistIEltcGxlbWVudGVkIGEgc2ltcGxlIHB1c2ggbG9nIGJhc2VkIG9uIGEgaGlkZGVuLCBvcnBoYW4gYnJhbmNoIHJlZnMvZ2l0YmxpdC9wdXNoZXMgKGlzc3VlIDE3Nyk8YnIvPg0KK1RoZSBwdXNoIGxvZyBpcyBub3QgY3VycmVudGx5IHZpc2libGUgaW4gdGhlIHVpLCBidXQgdGhlIGRhdGEgd2lsbCBiZSBjb2xsZWN0ZWQgYW5kIGl0IHdpbGwgYmUgZXhwb3NlZCB0byB0aGUgdWkgaW4gdGhlIG5leHQgcmVsZWFzZS4NCistIFN1cHBvcnQgZm9yIGxvY2FsbHkgYW5kIHJlbW90ZWx5IGF1dGhlbnRpY2F0ZWQgYWNjb3VudHMgaW4gTGRhcFVzZXJTZXJ2aWNlIGFuZCBSZWRtaW5lVXNlclNlcnZpY2UgKGlzc3VlIDE4MykNCistIEFkZGVkIER1dGNoIHRyYW5zbGF0aW9uIChnaXRodWIva3dvb3QpDQorDQorIyMjIyBjaGFuZ2VzDQorDQorLSBHaXRibGl0IEdPIGFuZCBHaXRibGl0IFdBUiBhcmUgbm93IGJvdGggY29uZmlndXJlZCBieSBgZ2l0YmxpdC5wcm9wZXJ0aWVzYC4gV0FSIGlzIG5vIGxvbmdlciBjb25maWd1cmVkIGJ5IGB3ZWIueG1sYC48YnIvPg0KK0hvd2V2ZXIsIEV4cHJlc3MgZm9yIE9wZW5TaGlmdCBjb250aW51ZXMgdG8gYmUgY29uZmlndXJlZCBieSBgd2ViLnhtbGAuDQorLSBTdXBwb3J0IGZvciBhICotLWJhc2VGb2xkZXIqIGNvbW1hbmQtbGluZSBhcmd1bWVudCBmb3IgR2l0YmxpdCBHTyBhbmQgR2l0YmxpdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkNCistIFN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSAqJHtiYXNlRm9sZGVyfSogcGFyYW1ldGVyIGluIGBnaXRibGl0LnByb3BlcnRpZXNgIGFuZCBgd2ViLnhtbGAgZm9yIHNldmVyYWwgc2V0dGluZ3MNCistIEltcHJvdmUgaGlzdG9yeSBkaXNwbGF5IG9mIGEgc3VibW9kdWxlIGxpbmsNCistIFVwZGF0ZWQgS29yZWFuIHRyYW5zbGF0aW9uIChnaXRodWIvZHM1YXBuKQ0KKy0gVXBkYXRlZCBjaGVja3N0eWxlIGRlZmluaXRpb24gKGdpdGh1Yi9teXN0eWdhZ2UpDQorDQorPGRpdiBzdHlsZT0icGFkZGluZy10b3A6MjBweDsiIC8+DQorDQorIyMgTmV4dCBSZWxlYXNlICgke3Byb2plY3QudmVyc2lvbn0pDQorDQorPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+DQorPGg0PlVwZGF0ZSBOb3RlICR7cHJvamVjdC52ZXJzaW9ufTwvaDQ+DQorVGhlc2UgYXJlIHRoZSBmaXhlcywgY2hhbmdlcywgYW5kIGFkZGl0aW9ucyBxdWV1ZWQgZm9yIHRoZSBuZXh0IHJlbGVhc2UuDQorPC9kaXY+DQorDQorIyMjIyBmaXhlcw0KKw0KKy0gQ2FuJ3Qgc2V0IHJlc2V0IHNldHRpbmdzIHdpdGggJCBvciB7IGNoYXJhY3RlcnMgdGhyb3VnaCBHaXRibGl0IE1hbmFnZXIgYmVjYXVzZSB0aGV5IGFyZSBub3QgcHJvcGVybHkgZXNjYXBlZA0KKw0KKyMjIyMgYWRkaXRpb25zDQorIA0KKyAtIEZvZ0J1Z3ogcG9zdC1yZWNlaXZlIGhvb2sgc2NyaXB0IChnaXRodWIvZGpzY2hueSkNCisgLSBJbXBsZW1lbnRlZCBtdWx0aXBsZSByZXBvc2l0b3J5IG93bmVycyAoZ2l0aHViL2FrcXVpbmV0KQ0KKyAtIENoaW5lc2UgdHJhbnNsYXRpb24gKGdpdGh1Yi9kYXBlbmdtZSwgZ2l0aHViL3lpbjgwODYpDQorDQorW2pnaXRdOiBodHRwOi8vZWNsaXBzZS5vcmcvamdpdCAiRWNsaXBzZSBKR2l0IFNpdGUiDQpkaWZmIC0tZ2l0IGEvZG9jcy8wNF9yZWxlYXNlcy5ta2QgYi9zcmMvc2l0ZS9yZWxlYXNlaGlzdG9yeS5ta2QKc2ltaWxhcml0eSBpbmRleCA4OCUKY29weSBmcm9tIGRvY3MvMDRfcmVsZWFzZXMubWtkCmNvcHkgdG8gc3JjL3NpdGUvcmVsZWFzZWhpc3RvcnkubWtkCmluZGV4IGVmY2U3OTQuLjdlYTc2NzYgMTAwNjQ0Ci0tLSBhL2RvY3MvMDRfcmVsZWFzZXMubWtkCisrKyBiL3NyYy9zaXRlL3JlbGVhc2VoaXN0b3J5Lm1rZApAQCAtMSw2NSArMSw0IEBACi0jIyBSZWxlYXNlIEhpc3RvcnkNCi0NCi0jIyMgQ3VycmVudCBSZWxlYXNlDQotDQotKiolVkVSU0lPTiUqKiAoW2dvXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9JUdPJSkgfCBbd2FyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9JVdBUiUpIHwgW2V4cHJlc3NdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRibGl0L2Rvd25sb2Fkcy9kZXRhaWw/bmFtZT0lRVhQUkVTUyUpIHwgW2ZlZGNsaWVudF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvZG93bmxvYWRzL2RldGFpbD9uYW1lPSVGRURDTElFTlQlKSB8IFttYW5hZ2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9JU1BTkFHRVIlKSB8IFthcGldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRibGl0L2Rvd25sb2Fkcy9kZXRhaWw/bmFtZT0lQVBJJSkpIGJhc2VkIG9uIFslSkdJVCVdW2pnaXRdICZuYnNwOyAqcmVsZWFzZWQgJUJVSUxEREFURSUqDQotDQotIyMjIyBmaXhlcw0KLQ0KLS0gQ2FuJ3Qgc2V0IHJlc2V0IHNldHRpbmdzIHdpdGggJCBvciB7IGNoYXJhY3RlcnMgdGhyb3VnaCBHaXRibGl0IE1hbmFnZXIgYmVjYXVzZSB0aGV5IGFyZSBub3QgcHJvcGVybHkgZXNjYXBlZA0KLQ0KLSMjIyMgYWRkaXRpb25zDQotDQotIC0gT3B0aW9uYWwgcGVyaW9kaWMgTERBUCB1c2VyIGFuZCB0ZWFtIHByZS1mZXRjaGluZyAmIHN5bmNocm9uaXphdGlvbiAoZ2l0aHViL21zY2hhZWZlcnMpDQotIC0gRGlzcGxheSBuYW1lIGFuZCB2ZXJzaW9uIGluIFRvbWNhdCBNYW5hZ2VyIChnaXRodWIvdGhlZmFrZSkgDQotIC0gRm9nQnVneiBwb3N0LXJlY2VpdmUgaG9vayBzY3JpcHQgKGdpdGh1Yi9kanNjaG55KQ0KLSAtIEltcGxlbWVudGVkIG11bHRpcGxlIHJlcG9zaXRvcnkgb3duZXJzIChnaXRodWIvYWtxdWluZXQpDQotIC0gQ2hpbmVzZSB0cmFuc2xhdGlvbiAoZ2l0aHViL2RhcGVuZ21lLCBnaXRodWIveWluODA4NikNCi0NCi0jIyMgT2xkZXIgUmVsZWFzZXMNCi0NCi08ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4NCi08aDQ+VXBkYXRlIE5vdGUgMS4yLjE8L2g0Pg0KLUJlY2F1c2UgdGhlcmUgYXJlIG5vdyBzZXZlcmFsIHR5cGVzIG9mIGZpbGVzIGFuZCBmb2xkZXJzIHRoYXQgbXVzdCBiZSBjb25zaWRlcmVkIEdpdGJsaXQgZGF0YSwgdGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIGRhdGEgaGFzIGNoYW5nZWQuDQotPHA+WW91IHdpbGwgbmVlZCB0byBtb3ZlIGEgZmV3IGZpbGVzIGFyb3VuZCB3aGVuIHVwZ3JhZGluZy4gIFBsZWFzZSBzZWUgdGhlIFVwZ3JhZGluZyBzZWN0aW9uIG9mIHRoZSA8YSBocmVmPSJzZXR1cC5odG1sIj5zZXR1cDwvYT4gcGFnZSBmb3IgZGV0YWlscy48L3A+DQotDQotPGI+RXhwcmVzcyBVc2VyczwvYj4gbWFrZSBzdXJlIHRvIHVwZGF0ZSB5b3VyIHdlYi54bWwgZmlsZSB3aXRoIHRoZSAke2Jhc2VGb2xkZXJ9IHZhbHVlcyENCi08L2Rpdj4NCi0NCi0jIyMjIGZpeGVzDQotDQotLSBGaXhlZCBudWxscG9pbnRlciBvbiByZWN1cnNpdmVseSBjYWxjdWxhdGluZyBmb2xkZXIgc2l6ZXMgd2hlbiB0aGVyZSBpcyBhIG5hbWVkIHBpcGUgb3Igc3ltbGluayBpbiB0aGUgaGllcmFyY2h5DQotLSBBZGRlZCBudWxsY2hlY2tpbmcgd2hlbiBjb25jdXJyZW50bHkgZm9ya2luZyBhIHJlcG9zaXRvcnkgYW5kIHRyeWluZyB0byBkaXNwbGF5IGl0J3MgZm9yayBuZXR3b3JrIChpc3N1ZS0xODcpDQotLSBGaXhlZCBidWcgd2hlcmUgcGVybWlzc2lvbiBjaGFuZ2VzIHdlcmUgbm90IHZpc2libGUgaW4gdGhlIHdlYiB1aSB0byBhIGxvZ2dlZC1pbiB1c2VyIHVudGlsIHRoZSB1c2VyIGxvZ2dlZC1vdXQgYW5kIHRoZW4gbG9nZ2VkIGJhY2sgaW4gYWdhaW4gKGlzc3VlLTE4NikNCi0tIEZpeGVkIG51bGxwb2ludGVyIG9uIGNyZWF0aW5nIGEgcmVwb3NpdG9yeSB3aXRoIG1peGVkIGNhc2UgKGlzc3VlIDE4NSkNCi0tIEluY2x1ZGUgbWlzc2luZyBtb2RlbCBjbGFzc2VzIGluIGFwaSBsaWJyYXJ5IChpc3N1ZS0xODQpDQotLSBGaXhlZCBudWxscG9pbnRlciB3aGVuIHVzaW5nICp3ZWIuYWxsb3dGb3JraW5nID0gdHJ1ZSogJiYgKmdpdC5jYWNoZVJlcG9zaXRvcnlMaXN0ID0gZmFsc2UqIChpc3N1ZSAxODIpDQotLSBMaWtlbHkgZml4IGZvciBjb21taXQgYW5kIGNvbW1pdGRpZmYgcGFnZSBmYWlsdXJlcyB3aGVuIGEgc3VibW9kdWxlIHJlZmVyZW5jZSBjaGFuZ2VzIChpc3N1ZSAxNzgpDQotLSBCdWlsZCBwcm9qZWN0IG1vZGVscyBmcm9tIHRoZSByZXBvc2l0b3J5IG1vZGVsIGNhY2hlLCB3aGVuIHBvc3NpYmxlLCB0byByZWR1Y2UgcGFnZSBsb2FkIHRpbWUgKGlzc3VlIDE3MikNCi0tIEZpeGVkIGxvYWRpbmcgb2YgQnJhemlsaWFuIFBvcnR1Z3Vlc2UgdHJhbnNsYXRpb24gZnJvbSAqbml4IHNlcnZlciAoZ2l0aHViL2luYWlhdCkNCi0NCi0jIyMjIGFkZGl0aW9ucw0KLQ0KLS0gRmFub3V0IFB1YlN1YiBzZXJ2aWNlIGZvciBzZWxmLWhvc3RlZCBbU3BhcmtsZXNoYXJlXShodHRwOi8vc3BhcmtsZXNoYXJlLm9yZykgbm90aWZpY2F0aW9ucy48YnIvPg0KLVRoaXMgc2VydmljZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Ljxici8+DQotICAgICoqTmV3OioqICpmYW5vdXQuYmluZEludGVyZmFjZSA9IGxvY2FsaG9zdCo8YnIvPg0KLQkqKk5ldzoqKiAqZmFub3V0LnBvcnQgPSAwKjxici8+DQotCSoqTmV3OioqICpmYW5vdXQudXNlTmlvID0gdHJ1ZSo8YnIvPg0KLQkqKk5ldzoqKiAqZmFub3V0LmNvbm5lY3Rpb25MaW1pdCA9IDAqDQotLSBJbXBsZW1lbnRlZCBhIHNpbXBsZSBwdXNoIGxvZyBiYXNlZCBvbiBhIGhpZGRlbiwgb3JwaGFuIGJyYW5jaCByZWZzL2dpdGJsaXQvcHVzaGVzIChpc3N1ZSAxNzcpPGJyLz4NCi1UaGUgcHVzaCBsb2cgaXMgbm90IGN1cnJlbnRseSB2aXNpYmxlIGluIHRoZSB1aSwgYnV0IHRoZSBkYXRhIHdpbGwgYmUgY29sbGVjdGVkIGFuZCBpdCB3aWxsIGJlIGV4cG9zZWQgdG8gdGhlIHVpIGluIHRoZSBuZXh0IHJlbGVhc2UuDQotLSBTdXBwb3J0IGZvciBsb2NhbGx5IGFuZCByZW1vdGVseSBhdXRoZW50aWNhdGVkIGFjY291bnRzIGluIExkYXBVc2VyU2VydmljZSBhbmQgUmVkbWluZVVzZXJTZXJ2aWNlIChpc3N1ZSAxODMpDQotLSBBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbiAoZ2l0aHViL2t3b290KQ0KLQ0KLSMjIyMgY2hhbmdlcw0KLQ0KLS0gR2l0YmxpdCBHTyBhbmQgR2l0YmxpdCBXQVIgYXJlIG5vdyBib3RoIGNvbmZpZ3VyZWQgYnkgYGdpdGJsaXQucHJvcGVydGllc2AuIFdBUiBpcyBubyBsb25nZXIgY29uZmlndXJlZCBieSBgd2ViLnhtbGAuPGJyLz4NCi1Ib3dldmVyLCBFeHByZXNzIGZvciBPcGVuU2hpZnQgY29udGludWVzIHRvIGJlIGNvbmZpZ3VyZWQgYnkgYHdlYi54bWxgLg0KLS0gU3VwcG9ydCBmb3IgYSAqLS1iYXNlRm9sZGVyKiBjb21tYW5kLWxpbmUgYXJndW1lbnQgZm9yIEdpdGJsaXQgR08gYW5kIEdpdGJsaXQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5DQotLSBTdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgKiR7YmFzZUZvbGRlcn0qIHBhcmFtZXRlciBpbiBgZ2l0YmxpdC5wcm9wZXJ0aWVzYCBhbmQgYHdlYi54bWxgIGZvciBzZXZlcmFsIHNldHRpbmdzDQotLSBJbXByb3ZlIGhpc3RvcnkgZGlzcGxheSBvZiBhIHN1Ym1vZHVsZSBsaW5rDQotLSBVcGRhdGVkIEtvcmVhbiB0cmFuc2xhdGlvbiAoZ2l0aHViL2RzNWFwbikNCi0tIFVwZGF0ZWQgY2hlY2tzdHlsZSBkZWZpbml0aW9uIChnaXRodWIvbXlzdHlnYWdlKQ0KKyMjIE9sZGVyIFJlbGVhc2VzDQogDQogPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+DQogPGg0PlVwZGF0ZSBOb3RlIDEuMi4wPC9oND4NCmRpZmYgLS1naXQgYS9kb2NzLzA0X3JlbGVhc2VzLm1rZCBiL3NyYy9zaXRlL3JlbGVhc2VzLm1rZApzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBkb2NzLzA0X3JlbGVhc2VzLm1rZApyZW5hbWUgdG8gc3JjL3NpdGUvcmVsZWFzZXMubWtkCmluZGV4IGVmY2U3OTQuLjdkZDZiMTcgMTAwNjQ0Ci0tLSBhL2RvY3MvMDRfcmVsZWFzZXMubWtkCisrKyBiL3NyYy9zaXRlL3JlbGVhc2VzLm1rZApAQCAtMTAsNiArMTAsNyBAQAogDQogIyMjIyBhZGRpdGlvbnMNCiANCisgLSBPcHRpb24gdG8gZm9yY2UgY2xpZW50LXNpZGUgYmFzaWMgYXV0aGVudGljYXRpb24gaW5zdGVhZCBvZiBmb3JtLWJhc2VkIGF1dGhlbnRpY2F0aW9uIGlmIHdlYi5hdXRoZW50aWNhdGVWaWV3UGFnZXM9dHJ1ZSAoZ2l0aHViL2Z1cmluemVuKQ0KICAtIE9wdGlvbmFsIHBlcmlvZGljIExEQVAgdXNlciBhbmQgdGVhbSBwcmUtZmV0Y2hpbmcgJiBzeW5jaHJvbml6YXRpb24gKGdpdGh1Yi9tc2NoYWVmZXJzKQ0KICAtIERpc3BsYXkgbmFtZSBhbmQgdmVyc2lvbiBpbiBUb21jYXQgTWFuYWdlciAoZ2l0aHViL3RoZWZha2UpIA0KICAtIEZvZ0J1Z3ogcG9zdC1yZWNlaXZlIGhvb2sgc2NyaXB0IChnaXRodWIvZGpzY2hueSkNCmRpZmYgLS1naXQgYS9kb2NzL2FyY2hpdGVjdHVyZS5wbmcgYi9zcmMvc2l0ZS9yZXNvdXJjZXMvYXJjaGl0ZWN0dXJlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9hcmNoaXRlY3R1cmUucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9yZXNvdXJjZXMvYXJjaGl0ZWN0dXJlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZlZF9hZ2dyZWdhdGlvbi5wbmcgYi9zcmMvc2l0ZS9yZXNvdXJjZXMvZmVkX2FnZ3JlZ2F0aW9uLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9mZWRfYWdncmVnYXRpb24ucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9yZXNvdXJjZXMvZmVkX2FnZ3JlZ2F0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2ZlZF9taXJyb3IucG5nIGIvc3JjL3NpdGUvcmVzb3VyY2VzL2ZlZF9taXJyb3IucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL2ZlZF9taXJyb3IucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9yZXNvdXJjZXMvZmVkX21pcnJvci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9sZGFwU2FtcGxlLnBuZyBiL3NyYy9zaXRlL3Jlc291cmNlcy9sZGFwU2FtcGxlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9sZGFwU2FtcGxlLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvcmVzb3VyY2VzL2xkYXBTYW1wbGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvcGVybWlzc2lvbnNfbWF0cml4LnBuZyBiL3NyYy9zaXRlL3Jlc291cmNlcy9wZXJtaXNzaW9uc19tYXRyaXgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3Blcm1pc3Npb25zX21hdHJpeC5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL3Jlc291cmNlcy9wZXJtaXNzaW9uc19tYXRyaXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMuanMgYi9zcmMvc2l0ZS9yZXNvdXJjZXMvc2NyZWVuc2hvdHMuanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMuanMKcmVuYW1lIHRvIHNyYy9zaXRlL3Jlc291cmNlcy9zY3JlZW5zaG90cy5qcwpkaWZmIC0tZ2l0IGEvZG9jcy9zdGp1ZGVfMTUweDE1MC5naWYgYi9zcmMvc2l0ZS9yZXNvdXJjZXMvc3RqdWRlXzE1MHgxNTAuZ2lmCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3N0anVkZV8xNTB4MTUwLmdpZgpyZW5hbWUgdG8gc3JjL3NpdGUvcmVzb3VyY2VzL3N0anVkZV8xNTB4MTUwLmdpZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzLzA1X3JvYWRtYXAubWtkIGIvc3JjL3NpdGUvcm9hZG1hcC5ta2QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3MvMDVfcm9hZG1hcC5ta2QKcmVuYW1lIHRvIHNyYy9zaXRlL3JvYWRtYXAubWtkCmRpZmYgLS1naXQgYS9kb2NzLzAyX3JwYy5ta2QgYi9zcmMvc2l0ZS9ycGMubWtkCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzLzAyX3JwYy5ta2QKcmVuYW1lIHRvIHNyYy9zaXRlL3JwYy5ta2QKZGlmZiAtLWdpdCBhL2RvY3MvMDFfc2NyZWVuc2hvdHMubWtkIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMubWtkCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGRvY3MvMDFfc2NyZWVuc2hvdHMubWtkCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy5ta2QKaW5kZXggNzRmNjc0Mi4uYjE4NDA4YSAxMDA2NDQKLS0tIGEvZG9jcy8wMV9zY3JlZW5zaG90cy5ta2QKKysrIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMubWtkCkBAIC0xMzUsNCArMTM1LDkgQEAKIAk8YSBjbGFzcz0idGh1bWJuYWlsIiByZWw9InNjcmVlbnNob3RzX2dyb3VwIiBocmVmPSJzY3JlZW5zaG90cy9tMTAucG5nIiB0aXRsZT0iRWRpdCBVc2VyIERpYWxvZyI+PGltZyBhbHQ9IkVkaXQgVXNlciBEaWFsb2ciIHNyYz0idGh1bWJzL20xMC5wbmciIC8+PC9hPg0KIAk8aDU+RWRpdCBVc2VyIERpYWxvZzwvaDU+DQogPC9saT4NCi08L3VsPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvdWw+DQorDQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi9mYW5jeWJveC9qcXVlcnkubW91c2V3aGVlbC0zLjAuNC5wYWNrLmpzIj4gPC9zY3JpcHQ+DQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi9mYW5jeWJveC9qcXVlcnkuZmFuY3lib3gtMS4zLjQucGFjay5qcyI+IDwvc2NyaXB0Pg0KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4vZmFuY3lib3gvanF1ZXJ5LmZhbmN5Ym94LTEuMy40LmNzcyIgbWVkaWE9InNjcmVlbiIgLz4NCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL3NjcmVlbnNob3RzLmpzIj4gPC9zY3JpcHQ+CQ0KZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvMDAucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzLzAwLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvMDBiLnBuZyBiL3NyYy9zaXRlL3NjcmVlbnNob3RzLzAwYi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDBiLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDBiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NjcmVlbnNob3RzLzAwYy5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wMGMucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzLzAwYy5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL3NjcmVlbnNob3RzLzAwYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wMGQucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDBkLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zY3JlZW5zaG90cy8wMGQucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wMGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvMDEucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDEucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzLzAxLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvMDFiLnBuZyBiL3NyYy9zaXRlL3NjcmVlbnNob3RzLzAxYi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDFiLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvMDFiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NjcmVlbnNob3RzLzAxYy5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wMWMucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzLzAxYy5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL3NjcmVlbnNob3RzLzAxYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wMi5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wMi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDIucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wMy5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDMucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wNC5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDQucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wNS5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wNS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDUucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wNS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wNi5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wNi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDYucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wNy5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wNy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDcucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wNy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wOC5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wOC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDgucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wOC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8wOS5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8wOS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMDkucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8wOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8xMC5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8xMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMTAucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8xMC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8xMS5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8xMS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMTEucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8xMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8xMi5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8xMi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMTIucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8xMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8xMy5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8xMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMTMucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8xMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8xNC5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8xNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMTQucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8xNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy8xNS5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy8xNS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvMTUucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy8xNS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy9pbWFnZV9wcm9jZXNzaW5nLnR4dCBiL3NyYy9zaXRlL3NjcmVlbnNob3RzL2ltYWdlX3Byb2Nlc3NpbmcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzL2ltYWdlX3Byb2Nlc3NpbmcudHh0CnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy9pbWFnZV9wcm9jZXNzaW5nLnR4dApkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy9tMDAucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTAwLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zY3JlZW5zaG90cy9tMDAucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvbTAxLnBuZyBiL3NyYy9zaXRlL3NjcmVlbnNob3RzL20wMS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvbTAxLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NjcmVlbnNob3RzL20wMi5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzL20wMi5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL3NjcmVlbnNob3RzL20wMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy9tMDMucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTAzLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zY3JlZW5zaG90cy9tMDMucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvbTA0LnBuZyBiL3NyYy9zaXRlL3NjcmVlbnNob3RzL20wNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvbTA0LnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTA0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NjcmVlbnNob3RzL20wNS5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzL20wNS5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL3NjcmVlbnNob3RzL20wNS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy9tMDYucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTA2LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zY3JlZW5zaG90cy9tMDYucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvbTA3LnBuZyBiL3NyYy9zaXRlL3NjcmVlbnNob3RzL20wNy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvbTA3LnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTA3LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NjcmVlbnNob3RzL20wOC5wbmcgYi9zcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NjcmVlbnNob3RzL20wOC5wbmcKcmVuYW1lIHRvIHNyYy9zaXRlL3NjcmVlbnNob3RzL20wOC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zY3JlZW5zaG90cy9tMDkucG5nIGIvc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTA5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zY3JlZW5zaG90cy9tMDkucG5nCnJlbmFtZSB0byBzcmMvc2l0ZS9zY3JlZW5zaG90cy9tMDkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2NyZWVuc2hvdHMvbTEwLnBuZyBiL3NyYy9zaXRlL3NjcmVlbnNob3RzL20xMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2NyZWVuc2hvdHMvbTEwLnBuZwpyZW5hbWUgdG8gc3JjL3NpdGUvc2NyZWVuc2hvdHMvbTEwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzLzAxX3NldHVwLm1rZCBiL3NyYy9zaXRlL3NldHVwLm1rZApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBkb2NzLzAxX3NldHVwLm1rZApyZW5hbWUgdG8gc3JjL3NpdGUvc2V0dXAubWtkCmluZGV4IGE3Zjc1MjYuLjUyNWJlODUgMTAwNjQ0Ci0tLSBhL2RvY3MvMDFfc2V0dXAubWtkCisrKyBiL3NyYy9zaXRlL3NldHVwLm1rZApAQCAtMSw2ICsxLDYgQEAKICMjIEdpdGJsaXQgV0FSIEluc3RhbGxhdGlvbiAmIFNldHVwDQogDQotMS4gRG93bmxvYWQgW0dpdGJsaXQgV0FSICVWRVJTSU9OJV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvZG93bmxvYWRzL2RldGFpbD9uYW1lPSVXQVIlKSB0byB0aGUgd2ViYXBwcyBmb2xkZXIgb2YgeW91ciBzZXJ2bGV0IGNvbnRhaW5lci4gIA0KKzEuIERvd25sb2FkIFtHaXRibGl0IFdBUiAke3Byb2plY3QucmVsZWFzZVZlcnNpb259XSglR0NVUkwlZ2l0YmxpdC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LndhcikgdG8gdGhlIHdlYmFwcHMgZm9sZGVyIG9mIHlvdXIgc2VydmxldCBjb250YWluZXIuICANCiAyLiBZb3UgbWF5IGhhdmUgdG8gbWFudWFsbHkgZXh0cmFjdCB0aGUgV0FSICh6aXAgZmlsZSkgdG8gYSBmb2xkZXIgd2l0aGluIHlvdXIgd2ViYXBwcyBmb2xkZXIuDQogMy4gQnkgZGVmYXVsdCwgdGhlIEdpdGJsaXQgd2ViYXBwIGlzIGNvbmZpZ3VyZWQgdGhyb3VnaCBgV0VCLUlORi9kYXRhL2dpdGJsaXQucHJvcGVydGllc2AuPGJyLz4NCiBPcGVuIGBXRUItSU5GL2RhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzYCBpbiB5b3VyIGZhdm9yaXRlIHRleHQgZWRpdG9yIGFuZCBtYWtlIHN1cmUgdG8gcmV2aWV3IGFuZCBzZXQ6DQpAQCAtMjAsNyArMjAsNyBAQAogDQogIyMgR2l0YmxpdCBHTyBJbnN0YWxsYXRpb24gJiBTZXR1cA0KIA0KLTEuIERvd25sb2FkIGFuZCB1bnppcCBbR2l0YmxpdCBHTyAlVkVSU0lPTiVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRibGl0L2Rvd25sb2Fkcy9kZXRhaWw/bmFtZT0lR08lKS4gIA0KKzEuIERvd25sb2FkIGFuZCB1bnppcCBbR2l0YmxpdCBHTyAke3Byb2plY3QucmVsZWFzZVZlcnNpb259XSglR0NVUkwlZ2l0YmxpdC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCkuICANCiAqSXRzIGJlc3QgdG8gZWxpbWluYXRlIHNwYWNlcyBpbiB0aGUgcGF0aCBuYW1lLiogDQogMi4gVGhlIHNlcnZlciBpdHNlbGYgaXMgY29uZmlndXJlZCB0aHJvdWdoIGEgc2ltcGxlIHRleHQgZmlsZS48YnIvPg0KIE9wZW4gYGRhdGEvZ2l0YmxpdC5wcm9wZXJ0aWVzYCBpbiB5b3VyIGZhdm9yaXRlIHRleHQgZWRpdG9yIGFuZCBtYWtlIHN1cmUgdG8gcmV2aWV3IGFuZCBzZXQ6DQpAQCAtMzAsNyArMzAsNyBAQAogICAgICoqaHR0cHMqKiBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCBiZWNhdXNlIHBhc3N3b3JkcyBhcmUgaW5zZWN1cmVseSB0cmFuc21pdHRlZCBmb3JtIHlvdXIgYnJvd3Nlci9naXQgY2xpZW50IHVzaW5nIEJhc2ljIGF1dGhlbnRpY2F0aW9uIQ0KICAgICAtICpnaXQucGFja2VkR2l0TGltaXQqIChzZXQgbGFyZ2VyIHRoYW4gdGhlIHNpemUgb2YgeW91ciBsYXJnZXN0IHJlcG9zaXRvcnkpDQogICAgIC0gKmdpdC5zdHJlYW1GaWxlVGhyZXNob2xkKiAoc2V0IGxhcmdlciB0aGFuIHRoZSBzaXplIG9mIHlvdXIgbGFyZ2VzdCBjb21taXR0ZWQgZmlsZSkNCi0zLiBFeGVjdXRlIGBhdXRob3JpdHkuY21kYCBvciBgamF2YSAtamFyIGF1dGhvcml0eS5qYXIgLS1iYXNlRm9sZGVyIGRhdGFgIGZyb20gYSBjb21tYW5kLWxpbmUNCiszLiBFeGVjdXRlIGBhdXRob3JpdHkuY21kYCBvciBgamF2YSAtY3AgZ2l0YmxpdC5qYXIgY29tLmdpdGJsaXQuYXV0aG9yaXR5LkxhdW5jaGVyIC0tYmFzZUZvbGRlciBkYXRhYCBmcm9tIGEgY29tbWFuZC1saW5lDQogICAgIDEuIGZpbGwgb3V0IHRoZSBmaWVsZHMgaW4gdGhlICpuZXcgY2VydGlmaWNhdGUgZGVmYXVsdHMqIGRpYWxvZw0KIAkyLiBlbnRlciB0aGUgc3RvcmUgcGFzc3dvcmQgdXNlZCBpbiAqc2VydmVyLnN0b3JlUGFzc3dvcmQqIHdoZW4gcHJvbXB0ZWQuICBUaGlzIGdlbmVyYXRlcyBhbiBTU0wgY2VydGlmaWNhdGUgZm9yICoqbG9jYWxob3N0KiouDQogCTMuIHlvdSBtYXkgd2FudCB0byBnZW5lcmF0ZSBhbiBTU0wgY2VydGlmaWNhdGUgZm9yIHRoZSBob3N0bmFtZSBvciBpcCBhZGRyZXNzIGhvc3RuYW1lcyB5b3UgYXJlIHNlcnZpbmcgZnJvbTxici8+KipOT1RFOioqIFlvdSBjYW4gb25seSBoYXZlICoqb25lKiogU1NMIGNlcnRpZmljYXRlIHNwZWNpZmllZCBmb3IgYSBwb3J0Lg0KQEAgLTEwOSw3ICsxMDksNyBAQAogIyMjIFJ1bm5pbmcgYXMgYSBXaW5kb3dzIFNlcnZpY2UNCiBHaXRibGl0IHVzZXMgW0FwYWNoZSBDb21tb25zIERhZW1vbl0oaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy9kYWVtb24pIHRvIGluc3RhbGwgYW5kIGNvbmZpZ3VyZSBpdHMgV2luZG93cyBzZXJ2aWNlLg0KIA0KLTEuIFJldmlldyB0aGUgY29udGVudHMgb2YgdGhlIGBpbnN0YWxsU2VydmljZS5jbWRgDQorMS4gKipSZXZpZXcgdGhlIGNvbnRlbnRzKiogb2YgdGhlIGBpbnN0YWxsU2VydmljZS5jbWRgIHdoZXJlIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2UgdGhlIDx1PmRlZmF1bHQga2V5c3RvcmUgcGFzc3dvcmQ8L3U+Lg0KIDIuIFNldCB0aGUgKkFSQ0gqIHZhbHVlIGFzIGFwcHJvcHJpYXRlIGZvciB5b3VyIGluc3RhbGxlZCBKYXZhIFZpcnR1YWwgTWFjaGluZS4NCiAzLiBBZGQgYW55IG5lY2Vzc2FyeSAqLS1TdGFydFBhcmFtcyogYXMgZW51bWVyYXRlZCBiZWxvdyBpbiAqKkNvbW1hbmQtTGluZSBQYXJhbWV0ZXJzKiouDQogNC4gRXhlY3V0ZSB0aGUgc2NyaXB0Lg0KQEAgLTE2NSwxNiArMTY1LDE2IEBACiBIZXJlIGlzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3JrcyBvbiBEZWJpYW4gNy4wIChXaGVlenkpLCB5b3VyIGRpc3RyaWJ1dGlvbiBtYXkgYmUgZGlmZmVyZW50Lg0KIA0KIDEuIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgQXBhY2hlJ3MgcHJveHkgbW9kdWxlcyBhdmFpbGFibGUuICANCi08cHJlPg0KKy0tLUZJWEVELS0tDQogc3VkbyBzdQ0KIGNkIC9ldGMvYXBhY2hlMi9tb2RzLWVuYWJsZWQNCiBsbiAtcyAuLi9tb2RzLWF2YWlsYWJsZS9wcm94eS5sb2FkIHByb3h5LmxvYWQNCiBsbiAtcyAuLi9tb2RzLWF2YWlsYWJsZS9wcm94eV9iYWxhbmNlci5sb2FkIHByb3h5X2JhbGFuY2VyLmxvYWQNCiBsbiAtcyAuLi9tb2RzLWF2YWlsYWJsZS9wcm94eV9odHRwLmxvYWQgcHJveHlfaHR0cC5sb2FkDQogbG4gLXMgLi4vbW9kcy1hdmFpbGFibGUvcHJveHlfYWpwLmxvYWQgcHJveHlfYWpwLmxvYWQNCi08L3ByZT4NCistLS1GSVhFRC0tLQ0KIDIuIFRoZW4gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGNvbmZpZ3VyaW5nIEFwYWNoZSB0byB1c2UgdGhlIHByb3h5IG1vZHVsZXMgYW5kIHRvIHNldHVwIHRoZSBwcm94aWVkIGNvbm5lY3Rpb24gZnJvbSBBcGFjaGUgdG8gR2l0YmxpdCBHTyBvciBmcm9tIEFwYWNoZSB0byB5b3VyIGNob3NlbiBzZXJ2bGV0IGNvbnRhaW5lci4gIFRoZSBmb2xsb3dpbmcgc25pcHBldCBpcyBzdG9yZWQgYXMgYC9ldGMvYXBhY2hlMi9jb25mLmQvZ2l0YmxpdGAuICANCi0lQkVHSU5DT0RFJQ0KKy0tLUZJWEVELS0tDQogIyBUdXJuIG9mZiBzdXBwb3J0IGZvciB0cnVlIFByb3h5IGJlaGF2aW91ciBhcyB3ZSBhcmUgYWN0aW5nIGFzIA0KICMgYSB0cmFuc3BhcmVudCBwcm94eQ0KIFByb3h5UmVxdWVzdHMgT2ZmDQpAQCAtMTg5LDExICsxODksMTEgQEAKIFByb3h5UHJlc2VydmVIb3N0IE9uDQogIA0KICMgU2V0IHRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHByb3h5DQotJmx0O1Byb3h5IComZ3Q7DQorPFByb3h5Pg0KIAlBZGREZWZhdWx0Q2hhcnNldCBvZmYNCiAJT3JkZXIgZGVueSxhbGxvdw0KIAlBbGxvdyBmcm9tIGFsbA0KLSZsdDsvUHJveHkmZ3Q7DQorPC9Qcm94eT4NCiAgDQogIyBUaGUgcHJveHkgY29udGV4dCBwYXRoIG11c3QgbWF0Y2ggdGhlIEdpdGJsaXQgY29udGV4dCBwYXRoLg0KICMgRm9yIEdpdGJsaXQgR08sIHNlZSBzZXJ2ZXIuY29udGV4dFBhdGggaW4gZ2l0YmxpdC5wcm9wZXJ0aWVzLg0KQEAgLTIxNCw3ICsyMTQsNyBAQAogI1JlcXVlc3RIZWFkZXIgc2V0IFgtRm9yd2FyZGVkLUNvbnRleHQgLw0KIA0KICNQcm94eVBhc3MgL2dpdGJsaXQgYWpwOi8vbG9jYWxob3N0OjgwMDkvZ2l0YmxpdA0KLSVFTkRDT0RFJSAgDQorLS0tRklYRUQtLS0gIA0KICoqUGxlYXNlKiogbWFrZSBzdXJlIHRvOiAgDQogICAgIDEuIFJldmlldyB0aGUgc2VjdXJpdHkgb2YgdGhlc2Ugc2V0dGluZ3MgYXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgZGVwbG95bWVudA0KICAgICAyLiBVbmNvbW1lbnQgdGhlICpQcm94eVBhc3MqIHNldHRpbmcgZm9yIHdoaWNoZXZlciBjb25uZWN0aW9uIHlvdSBwcmVmZXIgKGh0dHAvYWpwKQ0KQEAgLTYxOSw3ICs2MTksNyBAQAogDQogPGJsb2NrcXVvdGU+R3JhcGUgKFRoZSBHcm9vdnkgQWRhcHRhYmxlIFBhY2thZ2luZyBFbmdpbmUgb3IgR3Jvb3Z5IEFkdmFuY2VkIFBhY2thZ2luZyBFbmdpbmUpIGlzIHRoZSBpbmZyYXN0cnVjdHVyZSBlbmFibGluZyB0aGUgZ3JhYigpIGNhbGxzIGluIEdyb292eSwgYSBzZXQgb2YgY2xhc3NlcyBsZXZlcmFnaW5nIDxhIGhyZWY9Imh0dHA6Ly9hbnQuYXBhY2hlLm9yZy9pdnkiPkl2eTwvYT4gdG8gYWxsb3cgZm9yIGEgcmVwb3NpdG9yeSBkcml2ZW4gbW9kdWxlIHN5c3RlbSBmb3IgR3Jvb3Z5LiBUaGlzIGFsbG93cyBhIGRldmVsb3BlciB0byB3cml0ZSBhIHNjcmlwdCB3aXRoIGFuIGVzc2VudGlhbGx5IGFyYml0cmFyeSBsaWJyYXJ5IHJlcXVpcmVtZW50LCBhbmQgc2hpcCBqdXN0IHRoZSBzY3JpcHQuIEdyYXBlIHdpbGwsIGF0IHJ1bnRpbWUsIGRvd25sb2FkIGFzIG5lZWRlZCBhbmQgbGluayB0aGUgbmFtZWQgbGlicmFyaWVzIGFuZCBhbGwgZGVwZW5kZW5jaWVzIGZvcm1pbmcgYSB0cmFuc2l0aXZlIGNsb3N1cmUgd2hlbiB0aGUgc2NyaXB0IGlzIHJ1biBmcm9tIGV4aXN0aW5nIHJlcG9zaXRvcmllcyBzdWNoIGFzIEliaWJsaW8sIENvZGVoYXVzLCBhbmQgamF2YS5uZXQuPC9ibG9ja3F1b3RlPg0KIA0KLSVCRUdJTkNPREUlDQorLS0tSkFWQS0tLQ0KIC8vIGNyZWF0ZSBhbmQgdXNlIGEgcHJpbWl0aXZlIGFycmF5DQogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5wcmltaXRpdmVzLkFycmF5SW50TGlzdA0KIA0KQEAgLTYzMCw3ICs2MzAsNyBAQAogaW50cy5hZGQoMCwgNDIpDQogYXNzZXJ0IGludHMuc2l6ZSgpID09IDENCiBhc3NlcnQgaW50cy5nZXQoMCkgPT0gNDINCi0lRU5EQ09ERSUNCistLS1KQVZBLS0tDQogDQogIyMjIEN1c3RvbSBGaWVsZHMNCiANCkBAIC03NDEsNyArNzQxLDcgQEAKICoqTk9URToqKiAgDQogVGhlIGRlZmF1bHQgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZ2VuZXJhdGVkIGJ5IEdpdGxiaXQgR08gaXMgYm91bmQgdG8gKmxvY2FsaG9zdCouICANCiBJZiB5b3UgYXJlIHVzaW5nIEVjbGlwc2UvRUdpdC9KR2l0IGNsaWVudHMsIHlvdSB3aWxsIGhhdmUgdG8gZ2VuZXJhdGUgeW91ciBvd24gY2VydGlmaWNhdGUgdGhhdCBzcGVjaWZpZXMgdGhlIGV4YWN0IGhvc3RuYW1lIHVzZWQgaW4geW91ciBjbG9uZS9wdXNoIHVybC4gIA0KLVlvdSBtdXN0IGRvIHRoaXMgYmVjYXVzZSBFY2xpcHNlL0VHaXQvSkdpdCAoPD0gMi4xLjApIGFsd2F5cyB2ZXJpZmllcyBjZXJ0aWZpY2F0ZSBob3N0bmFtZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlICpodHRwLnNzbFZlcmlmeT1mYWxzZSogY2xpZW50LXNpZGUgc2V0dGluZy4gDQorWW91IG11c3QgZG8gdGhpcyBiZWNhdXNlIEVjbGlwc2UvRUdpdC9KR2l0ICg8PSAyLjMuMSkgYWx3YXlzIHZlcmlmaWVzIGNlcnRpZmljYXRlIGhvc3RuYW1lcywgcmVnYXJkbGVzcyBvZiB0aGUgKmh0dHAuc3NsVmVyaWZ5PWZhbHNlKiBjbGllbnQtc2lkZSBzZXR0aW5nLiANCiAgDQogLSAqKkVjbGlwc2UvRUdpdC9KR2l0KioNCiAgICAgMS4gV2luZG93LT5QcmVmZXJlbmNlcy0+VGVhbS0+R2l0LT5Db25maWd1cmF0aW9uDQpAQCAtNzU3LDYgKzc1NywyNSBAQAogVGhpcyBjYW4gYmUgYWRqdXN0ZWQgb24geW91ciBjbGllbnQgYnkgY2hhbmdpbmcgdGhlIGRlZmF1bHQgcG9zdCBidWZmZXIgc2l6ZToNCiA8cHJlPmdpdCBjb25maWcgLS1nbG9iYWwgaHR0cC5wb3N0QnVmZmVyIDUyNDI4ODAwMDwvcHJlPg0KIA0KKyMjIyBEaXNhYmxpbmcgU05JDQorDQorWW91IG1heSBydW4gaW50byBTTkkgYWxlcnRzIChTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKS4gIFRoZXNlIHdpbGwgbWFuaWZlc3QgYXMgZmFpbHVyZXMgdG8gY2xvbmUgb3IgcHVzaCB0byB5b3VyIEdpdGJsaXQgaW5zdGFuY2UuDQorDQorIyMjIyBKYXZhLWJhc2VkIENsaWVudHMNCisNCitXaGVuIHVzaW5nIEphdmEgNy1iYXNlZCBjbGllbnRzLCBTTkkgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAgWW91IGNhbiBkaXNhYmxlIFNOSSBieSBzcGVjaWZ5aW5nIHRoZSBKVk0gc3lzdGVtIHBhcmFtZXRlciBgLURqc3NlLmVuYWJsZVNOSUV4dGVuc2lvbj1mYWxzZWAgd2hlbiB5b3VyIEphdmEtYmFzZWQgY2xpZW50IGxhdW5jaGVzLg0KKw0KK0ZvciBFY2xpcHNlLCB5b3UgY2FuIGFwcGVuZCBgLURqc3NlLmVuYWJsZVNOSUV4dGVuc2lvbj1mYWxzZWAgdG8geW91ciAqZWNsaXBzZS5pbmkqIGZpbGUuDQorDQorIyMjIyBOYXRpdmUgQ2xpZW50cw0KKw0KK05hdGl2ZSBjbGllbnRzIG1heSBkaXNwbGF5IGFuIGVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBjbG9uZSBvciBwdXNoIHRoYXQgbG9va3MgbGlrZSB0aGlzOg0KKy0tLUZJWEVELS0tDQorQzpccHJvamVjdHNcZ2l0XGdpdGJsaXQ+Z2l0IHB1c2ggcmhjbG91ZCBtYXN0ZXINCitlcnJvcjogZXJyb3I6MTQwNzc0NTg6U1NMIHJvdXRpbmVzOlNTTDIzX0dFVF9TRVJWRVJfSEVMTE86cmVhc29uKDExMTIpIHdoaWxlIGFjY2Vzc2luZyBodHRwczovL2RlbW8tZ2l0YmxpdC5yaGNsb3VkLmNvbS9naXQvZ2l0YmxpdC5naXQvaW5mby9yZWZzP3NlcnZpY2U9Z2l0LXJlY2VpdmUtcGFjaw0KK2ZhdGFsOiBIVFRQIHJlcXVlc3QgZmFpbGVkDQorLS0tRklYRUQtLS0NCisNCiAjIyMgQ2xvbmluZyBhbiBBY2Nlc3MgUmVzdHJpY3RlZCBSZXBvc2l0b3J5IA0KIC0gKipFY2xpcHNlL0VHaXQvSkdpdCoqICANCiBOb3RoaW5nIHNwZWNpYWwgdG8gY29uZmlndXJlLCBFR2l0IGZpZ3VyZXMgb3V0IGV2ZXJ5dGhpbmcuDQpkaWZmIC0tZ2l0IGEvZG9jcy8wMF9pbmRleC5ta2QgYi9zcmMvc2l0ZS9zaXRlaW5kZXgubWtkCnNpbWlsYXJpdHkgaW5kZXggNzElCnJlbmFtZSBmcm9tIGRvY3MvMDBfaW5kZXgubWtkCnJlbmFtZSB0byBzcmMvc2l0ZS9zaXRlaW5kZXgubWtkCmluZGV4IDA4MTJjM2UuLmRlNWMwOTkgMTAwNjQ0Ci0tLSBhL2RvY3MvMDBfaW5kZXgubWtkCisrKyBiL3NyYy9zaXRlL3NpdGVpbmRleC5ta2QKQEAgLTEsMjcgKzEsMjYgQEAKICMjIFdoYXQgaXMgR2l0YmxpdD8NCiA8ZGl2IGNsYXNzPSJ3ZWxsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6NXB4O2Zsb2F0OnJpZ2h0O3dpZHRoOjI3NXB4O3BhZGRpbmc6IDEwcHggMTBweDsiPg0KLTxiPkN1cnJlbnQgUmVsZWFzZSAlVkVSU0lPTiUgKCVCVUlMRERBVEUlKTwvYj4gPGEgaHJlZj0icmVsZWFzZXMuaHRtbCI+Y2hhbmdlbG9nPC9hPg0KLTxkaXYgc3R5bGU9InBhZGRpbmc6NXB4OyI+PGEgc3R5bGU9IndpZHRoOjE3NXB4O3RleHQtZGVjb3JhdGlvbjpub25lOyIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyIgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvZG93bmxvYWRzL2RldGFpbD9uYW1lPSVHTyUiPkRvd25sb2FkIEdpdGJsaXQgR088L2E+PC9kaXY+DQotPGRpdiBzdHlsZT0icGFkZGluZzo1cHg7Ij48YSBzdHlsZT0id2lkdGg6MTc1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRibGl0L2Rvd25sb2Fkcy9kZXRhaWw/bmFtZT0lV0FSJSI+RG93bmxvYWQgR2l0YmxpdCBXQVI8L2E+PC9kaXY+DQotPGRpdiBzdHlsZT0icGFkZGluZzo1cHg7Ij48YSBzdHlsZT0id2lkdGg6MTc1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBjbGFzcz0iYnRuIGJ0bi1pbmZvIiBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9JUVYUFJFU1MlIj5Eb3dubG9hZCBHaXRibGl0IEV4cHJlc3M8L2E+PC9kaXY+DQotPGRpdiBzdHlsZT0icGFkZGluZzo1cHg7Ij48YSBzdHlsZT0id2lkdGg6MTc1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9JU1BTkFHRVIlIj5Eb3dubG9hZCBHaXRibGl0IE1hbmFnZXI8L2E+PC9kaXY+DQotCTxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4NCi0JCTxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRibGl0L2Rvd25sb2Fkcy9kZXRhaWw/bmFtZT0lQVBJJSI+R2l0YmxpdCBBUEk8L2E+IHwgPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvZG93bmxvYWRzL2RldGFpbD9uYW1lPSVGRURDTElFTlQlIj5HaXRibGl0IEZlZGVyYXRpb24gQ2xpZW50PC9hPg0KLQkJPGJyLz4NCis8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+DQorPGI+Q3VycmVudCBSZWxlYXNlICR7cHJvamVjdC5yZWxlYXNlVmVyc2lvbn0gKCR7cHJvamVjdC5yZWxlYXNlRGF0ZX0pPC9iPjxici8+PGEgaHJlZj0icmVsZWFzZW5vdGVzLmh0bWwiPnJlbGVhc2Ugbm90ZXM8L2E+DQorPGRpdiBzdHlsZT0icGFkZGluZzo1cHg7Ij48YSBzdHlsZT0id2lkdGg6MTc1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIiBocmVmPSIlR0NVUkwlZ2l0YmxpdC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnppcCI+RG93bmxvYWQgR2l0YmxpdCBHTyAoV2luZG93cyk8L2E+PC9kaXY+DQorPGRpdiBzdHlsZT0icGFkZGluZzo1cHg7Ij48YSBzdHlsZT0id2lkdGg6MTc1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIiBocmVmPSIlR0NVUkwlZ2l0YmxpdC0ke3Byb2plY3QucmVsZWFzZVZlcnNpb259LnRhci5neiI+RG93bmxvYWQgR2l0YmxpdCBHTyAoTGludXgvT1NYKTwvYT48L2Rpdj4NCis8ZGl2IHN0eWxlPSJwYWRkaW5nOjVweDsiPjxhIHN0eWxlPSJ3aWR0aDoxNzVweDt0ZXh0LWRlY29yYXRpb246bm9uZTsiIGNsYXNzPSJidG4gYnRuLWRhbmdlciIgaHJlZj0iJUdDVVJMJWdpdGJsaXQtJHtwcm9qZWN0LnJlbGVhc2VWZXJzaW9ufS53YXIiPkRvd25sb2FkIEdpdGJsaXQgV0FSPC9hPjwvZGl2Pg0KKzxkaXYgc3R5bGU9InBhZGRpbmc6NXB4OyI+PGEgc3R5bGU9IndpZHRoOjE3NXB4O3RleHQtZGVjb3JhdGlvbjpub25lOyIgY2xhc3M9ImJ0biBidG4taW5mbyIgaHJlZj0iJUdDVVJMJWV4cHJlc3MtJHtwcm9qZWN0LnJlbGVhc2VWZXJzaW9ufS56aXAiPkRvd25sb2FkIEdpdGJsaXQgRXhwcmVzczwvYT48L2Rpdj4NCis8ZGl2IHN0eWxlPSJwYWRkaW5nOjVweDsiPjxhIHN0eWxlPSJ3aWR0aDoxNzVweDt0ZXh0LWRlY29yYXRpb246bm9uZTsiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9IiVHQ1VSTCVtYW5hZ2VyLSR7cHJvamVjdC5yZWxlYXNlVmVyc2lvbn0uemlwIj5Eb3dubG9hZCBHaXRibGl0IE1hbmFnZXI8L2E+PC9kaXY+DQogCQk8YSBocmVmPSJzY3JlZW5zaG90cy5odG1sIiB0aXRsZT0iU2NyZWVuc2hvdHMiPjxpbWcgc3R5bGU9Im1hcmdpbi10b3A6NXB4O2JvcmRlcjoxcHggc29saWQgI2NjYzsiIHNyYz0idGh1bWJzLzAwLnBuZyIgYWx0PSJTY3JlZW5zaG90cyIgLz48L2E+DQogCTwvZGl2Pg0KIA0KIAk8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDo1cHg7Ij4NCiAJPHRhYmxlIGNsYXNzPSJ0YWJsZSBjb25kZW5zZWQtdGFibGUiPg0KIAkJPHRib2R5Pg0KLQkJPHRyPjx0aD5MaWNlbnNlPC90aD48dGQ+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgdmVyc2lvbiAyLjA8L2E+PC90ZD48L3RyPg0KLQkJPHRyPjx0aD5Tb3VyY2VzPC90aD48dGQ+PGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vZ2l0YmxpdCI+R2l0SHViPC9hPiAmYW1wOyA8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9zb3VyY2UvbGlzdCI+R29vZ2xlQ29kZTwvYT48L3RkPjwvdHI+CQkNCi0JCTx0cj48dGg+SXNzdWVzPC90aD48dGQ+PGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGJsaXQvaXNzdWVzL2xpc3QiPkdvb2dsZUNvZGU8L2E+PC90ZD48L3RyPg0KLQkJPHRyPjx0aD5EaXNjdXNzaW9uPC90aD48dGQ+PGEgaHJlZj0iaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dpdGJsaXQiPkdpdGJsaXQgR3JvdXA8L2E+PC90ZD48L3RyPg0KLQkJPHRyPjx0aD5Hb29nbGUrPC90aD48dGQ+PGEgaHJlZj0iaHR0cHM6Ly9wbHVzLmdvb2dsZS5jb20vMTE0NDY0Njc4MzkyNTkzNDIxNjg0Ij5HaXRibGl0KzwvYT48L3RkPjwvdHI+DQorCQk8dHI+PHRoPkxpY2Vuc2U8L3RoPjx0ZD48YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlIDIuMDwvYT48L3RkPjwvdHI+DQorCQk8dHI+PHRoPlNvdXJjZXM8L3RoPjx0ZD48YSBocmVmPSIke3Byb2plY3Quc2NtVXJsfSI+R2l0SHViPC9hPiAmYW1wOyA8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2l0YmxpdC9zb3VyY2UvbGlzdCI+R29vZ2xlQ29kZTwvYT48L3RkPjwvdHI+CQkNCisJCTx0cj48dGg+SXNzdWVzPC90aD48dGQ+PGEgaHJlZj0iJHtwcm9qZWN0Lmlzc3Vlc1VybH0iPkdvb2dsZUNvZGU8L2E+PC90ZD48L3RyPg0KKwkJPHRyPjx0aD5EaXNjdXNzaW9uPC90aD48dGQ+PGEgaHJlZj0iJHtwcm9qZWN0LmZvcnVtVXJsfSI+R2l0YmxpdCBHcm91cDwvYT48L3RkPjwvdHI+DQorCQk8dHI+PHRoPkdvb2dsZSs8L3RoPjx0ZD48YSBocmVmPSIke3Byb2plY3Quc29jaWFsTmV0d29ya1VybH0iPkdpdGJsaXQrPC9hPjwvdGQ+PC90cj4NCiAJCTx0cj48dGg+T2hsb2g8L3RoPjx0ZD48YSB0YXJnZXQ9Il90b3AiIGhyZWY9Imh0dHA6Ly93d3cub2hsb2gubmV0L3AvZ2l0YmxpdCI+PGltZyBib3JkZXI9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5vaGxvaC5uZXQvcC9naXRibGl0L3dpZGdldHMvcHJvamVjdF90aGluX2JhZGdlLmdpZiIgYWx0PSJPaGxvaCBwcm9qZWN0IHJlcG9ydCBmb3IgR2l0YmxpdCIgLz48L2E+PC90ZD48L3RyPg0KLQkJPHRyPjx0aD5Eb25hdGlvbnM8L3RoPjx0ZD5JZiB5b3UgZW5qb3kgR2l0YmxpdCBhbmQgd2FudCB0byBzdXBwb3J0IGl0cyBkZXZlbG9wbWVudCwgcGxlYXNlIGNvbnNpZGVyIG1ha2luZyBhIGRvbmF0aW9uIHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cuaGVscG1lZ2l2ZXRvc3RqdWRlLm9yZy9naXRibGl0Ij5TdC4gSnVkZSBDaGlsZHJlbidzIFJlc2VhcmNoIEhvc3BpdGFsPC9hPi4NCi0JCTxhIGhyZWY9Imh0dHA6Ly93d3cuaGVscG1lZ2l2ZXRvc3RqdWRlLm9yZy9naXRibGl0IiBhbHQ9IlN0LiBKdWRlIENoaWxkcmVuJ3MgUmVzZWFyY2ggSG9zcGl0YWwiPjxpbWcgc3R5bGU9InBhZGRpbmctdG9wOjEwcHg7IiBzcmM9InN0anVkZV8xNTB4MTUwLmdpZiIvPjwvYT48L3RkPjwvdHI+DQorCQk8dHI+PHRoPkRvbmF0aW9uczwvdGg+PHRkPklmIHlvdSBlbmpveSBHaXRibGl0IGFuZCB3YW50IHRvIHN1cHBvcnQgaXRzIGRldmVsb3BtZW50LCBwbGVhc2UgY29uc2lkZXIgbWFraW5nIGEgZG9uYXRpb24gdG8gPGEgaHJlZj0iaHR0cDovL3d3dy5zdGp1ZGUub3JnIj5TdC4gSnVkZSBDaGlsZHJlbidzIFJlc2VhcmNoIEhvc3BpdGFsPC9hPi4NCisJCTxhIGhyZWY9Imh0dHA6Ly93d3cuc3RqdWRlLm9yZyIgYWx0PSJTdC4gSnVkZSBDaGlsZHJlbidzIFJlc2VhcmNoIEhvc3BpdGFsIj48aW1nIHN0eWxlPSJwYWRkaW5nLXRvcDoxMHB4OyIgc3JjPSJzdGp1ZGVfMTUweDE1MC5naWYiLz48L2E+PC90ZD48L3RyPg0KIAkJPC90Ym9keT4NCiAJCTwvdGFibGU+DQogCTwvZGl2Pg0KZGlmZiAtLWdpdCBhL3NyYy9zaXRlL3RlbXBsYXRlcy9hdG9tLmZ0bCBiL3NyYy9zaXRlL3RlbXBsYXRlcy9hdG9tLmZ0bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmQyOGRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NpdGUvdGVtcGxhdGVzL2F0b20uZnRsCkBAIC0wLDAgKzEsMiBAQAorPCNpbmNsdWRlICJtYWNyb3MuZnRsIj4NCis8QEF0b21NYWNybyBwb3N0cz1yZWxlYXNlcyBwb3N0dXJsPSIke3Byb2plY3QudXJsfS9oaXN0b3J5Lmh0bWwjIiAvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9zaXRlL3RlbXBsYXRlcy9tYWNyb3MuZnRsIGIvc3JjL3NpdGUvdGVtcGxhdGVzL21hY3Jvcy5mdGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdjMjc1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9zaXRlL3RlbXBsYXRlcy9tYWNyb3MuZnRsCkBAIC0wLDAgKzEsMTQ3IEBACis8I21hY3JvIExvZ01hY3JvIHRpdGxlIHZlcnNpb24gZGF0ZSBkZXNjcmlwdGlvbiBsb2cgbG9nVGl0bGU9IiI+DQorCTwjaWYgbG9nPz8+DQorCTxoMyBpZD0iJHt2ZXJzaW9ufSIgY2xhc3M9InNlY3Rpb24iPjxhIGhyZWY9IiMke3ZlcnNpb259IiBjbGFzcz0ic2VjdGlvbmxpbmsiPjxpIGNsYXNzPSJpY29uLXNoYXJlLWFsdCI+IDwvaT48L2E+JHt0aXRsZX0gKCR7dmVyc2lvbn0pIDxzbWFsbD4ke2Rlc2NyaXB0aW9ufTwvc21hbGw+PC9oMz4NCisJPHRhYmxlIGNsYXNzPSJ0YWJsZSI+DQorCQk8dGJvZHk+DQorCQkJPHRyPg0KKwkJCQk8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6aW5oZXJpdDt3aWR0aDoxMDBweCI+JHtkYXRlfTwvdGQ+DQorCQkJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyI+PEBMb2dEZXNjcmlwdGlvbk1hY3JvIGxvZz1sb2cgdGl0bGU9bG9nVGl0bGUgLz48L3RkPg0KKwkJCTwvdHI+DQorCQk8L3Rib2R5Pg0KKwk8L3RhYmxlPg0KKwk8LyNpZj4NCis8LyNtYWNybz4NCisNCis8I21hY3JvIExvZ0Rlc2NyaXB0aW9uTWFjcm8gbG9nIHRpdGxlPWxvZy50aXRsZT4NCisJPCNpZiAodGl0bGUhP2xlbmd0aCA+IDApPg0KKwkJPHAgY2xhc3M9ImxlYWQiPiR7dGl0bGV9PC9wPgkJDQorCTwvI2lmPg0KKwkNCisJPCNpZiAobG9nLmh0bWwhP2xlbmd0aCA+IDApPg0KKwkJPHA+JHtsb2cuaHRtbH08L3A+DQorCTwvI2lmPg0KKwkNCisJPCNpZiAobG9nLnRleHQhP2xlbmd0aCA+IDApPg0KKwkJPGJsb2NrcXVvdGU+PHA+JHtsb2cudGV4dCE/aHRtbD9yZXBsYWNlKCJcbiIsICI8YnIgLz4iKX08L3A+PC9ibG9ja3F1b3RlPgkJDQorCTwvI2lmPg0KKw0KKwk8I2lmIChsb2cubm90ZSE/bGVuZ3RoID4gMCk+DQorCQk8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4NCisJCQk8aDQ+Tm90ZTwvaDQ+DQorCQkJJHtsb2cubm90ZT9odG1sP3JlcGxhY2UoIlxuIiwgIjxwIC8+Iil9DQorCQk8L2Rpdj4NCisJPC8jaWY+DQorDQorCTwjaWYgKGxvZy5zZWN1cml0eSE/c2l6ZSA+IDApPg0KKwkJPEBTZWN1cml0eUxpc3RNYWNybyB0aXRsZT0ic2VjdXJpdHkiIGxpc3Q9bG9nLnNlY3VyaXR5Lz4NCisJPC8jaWY+DQorCTwjaWYgKGxvZy5maXhlcyE/c2l6ZSA+IDApPg0KKwkJPEBVbm9yZGVyZWRMaXN0TWFjcm8gdGl0bGU9ImZpeGVzIiBsaXN0PWxvZy5maXhlcyAvPg0KKwk8LyNpZj4NCisJPCNpZiAobG9nLmNoYW5nZXMhP3NpemUgPiAwKT4NCisJCTxAVW5vcmRlcmVkTGlzdE1hY3JvIHRpdGxlPSJjaGFuZ2VzIiBsaXN0PWxvZy5jaGFuZ2VzIC8+DQorCTwvI2lmPg0KKwk8I2lmIChsb2cuYWRkaXRpb25zIT9zaXplID4gMCk+DQorCQk8QFVub3JkZXJlZExpc3RNYWNybyB0aXRsZT0iYWRkaXRpb25zIiBsaXN0PWxvZy5hZGRpdGlvbnMgLz4NCisJPC8jaWY+DQorCTwjaWYgKGxvZy5zZXR0aW5ncyE/c2l6ZSA+IDApPg0KKwkJPEBTZXR0aW5nc1RhYmxlTWFjcm8gdGl0bGU9Im5ldyBzZXR0aW5ncyIgbGlzdD1sb2cuc2V0dGluZ3MgLz4JCQ0KKwk8LyNpZj4NCisJPCNpZiAobG9nLmRlcGVuZGVuY3lDaGFuZ2VzIT9zaXplID4gMCk+DQorCQk8QFVub3JkZXJlZExpc3RNYWNybyB0aXRsZT0iZGVwZW5kZW5jeSBjaGFuZ2VzIiBsaXN0PWxvZy5kZXBlbmRlbmN5Q2hhbmdlcyAvPg0KKwk8LyNpZj4NCisJPCNpZiAobG9nLmNvbnRyaWJ1dG9ycyE/c2l6ZSA+IDApPg0KKwkJPEBVbm9yZGVyZWRMaXN0TWFjcm8gdGl0bGU9ImNvbnRyaWJ1dG9ycyIgbGlzdD1sb2cuY29udHJpYnV0b3JzP3NvcnQgLz4NCisJPC8jaWY+CQ0KKzwvI21hY3JvPg0KKw0KKzwjbWFjcm8gU2VjdXJpdHlMaXN0TWFjcm8gbGlzdCB0aXRsZT4NCisgICAJPGg0IHN0eWxlPSJjb2xvcjpyZWQ7Ij4ke3RpdGxlfTwvaDQ+DQorCTx1bD4NCisJPCNsaXN0IGxpc3QgYXMgaXRlbT4NCisJCTxsaT4ke2l0ZW0/aHRtbD9yZXBsYWNlKCJcbiIsICI8YnIvPiIpfTwvbGk+DQorCTwvI2xpc3Q+DQorCTwvdWw+DQorPC8jbWFjcm8+DQorDQorPCNtYWNybyBVbm9yZGVyZWRMaXN0TWFjcm8gbGlzdCB0aXRsZT4NCisgICAJPGg0PiR7dGl0bGV9PC9oND4NCisJPHVsPg0KKwk8I2xpc3QgbGlzdCBhcyBpdGVtPg0KKwkJPGxpPiR7aXRlbT9odG1sP3JlcGxhY2UoIlxuIiwgIjxici8+Iil9PC9saT4NCisJPC8jbGlzdD4NCisJPC91bD4NCis8LyNtYWNybz4NCisNCis8I21hY3JvIFNldHRpbmdzVGFibGVNYWNybyBsaXN0IHRpdGxlPg0KKyAgIAk8aDQ+JHt0aXRsZX08L2g0Pg0KKwk8dGFibGUgY2xhc3M9InRhYmxlIj4NCisJCTwjbGlzdCBsaXN0IGFzIGl0ZW0+DQorCQk8dHI+DQorCQkJPHRkPjxlbT4ke2l0ZW0ubmFtZX08L2VtPjwvdGQ+PHRkPiR7aXRlbS5kZWZhdWx0VmFsdWV9PC90ZD4NCisJCTwvdHI+DQorCQk8LyNsaXN0Pg0KKwk8L3RhYmxlPg0KKzwvI21hY3JvPg0KKw0KKzwjbWFjcm8gUnNzTWFjcm8gcG9zdHMgcG9zdHVybD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9J3llcyc/Pg0KKzxyc3MgdmVyc2lvbj0iMi4wIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPg0KKwk8Y2hhbm5lbD4NCisJCTx0aXRsZT48IVtDREFUQVske3Byb2plY3QubmFtZX1dXT48L3RpdGxlPg0KKwkJPGxpbms+JHtwcm9qZWN0LnVybH08L2xpbms+DQorCQk8ZGVzY3JpcHRpb24+PCFbQ0RBVEFbJHtwcm9qZWN0LmRlc2NyaXB0aW9ufV1dPjwvZGVzY3JpcHRpb24+DQorCQk8Z2VuZXJhdG9yPk1veGllIFRvb2xraXQ8L2dlbmVyYXRvcj4NCisJCTwjbGlzdCBwb3N0cyBhcyBwb3N0Pg0KKyAgCQk8aXRlbT4NCisgICAgCQk8dGl0bGU+PCFbQ0RBVEFbJHtwb3N0LnRpdGxlfV1dPjwvdGl0bGU+DQorICAgIAkJPGxpbms+PCFbQ0RBVEFbJHtwb3N0dXJsfSR7cG9zdC5pZH1dXT48L2xpbms+DQorICAgIAkJPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPiR7cG9zdHVybH0ke3Bvc3QuaWR9PC9ndWlkPg0KKwkgICAJCTwjaWYgKHBvc3QudGV4dCE/bGVuZ3RoID4gMCk+DQorICAgIAkJPGRlc2NyaXB0aW9uPjwhW0NEQVRBWyR7cG9zdC50ZXh0fV1dPjwvZGVzY3JpcHRpb24+DQorICAgIAkJPC8jaWY+DQorICAgIAkJPCNpZiAocG9zdC5rZXl3b3JkcyE/c2l6ZSA+IDApPg0KKyAgIAkJCTwjbGlzdCBwb3N0LmtleXdvcmRzIGFzIGtleXdvcmQ+DQorCQkJPGNhdGVnb3J5PjwhW0NEQVRBWyR7a2V5d29yZH1dXT48L2NhdGVnb3J5Pg0KKyAgIAkJCTwvI2xpc3Q+DQorICAgIAkJPC8jaWY+DQorICAgIAkJPCNpZiAocG9zdC5hdXRob3IhP2xlbmd0aCA+IDApPg0KKyAgCQkJPGRjOmNyZWF0b3I+PCFbQ0RBVEFbJHtwb3N0LmF1dGhvcn1dXT48L2RjOmNyZWF0b3I+DQorICAgIAkJPCNlbHNlPg0KKyAgIAkJCTxkYzpjcmVhdG9yPjwhW0NEQVRBWyR7cHJvamVjdC5uYW1lfV1dPjwvZGM6Y3JlYXRvcj4NCisgICAgCQk8LyNpZj4NCisgICAgCQk8cHViRGF0ZT4ke3Bvc3QuZGF0ZT9zdHJpbmcoIkVFRSwgZGQgTU1NIHl5eXkgSEg6bW06c3MgWiIpfTwvcHViRGF0ZT4NCisgIAkJPC9pdGVtPg0KKyAgCQk8LyNsaXN0Pg0KKyAgCTwvY2hhbm5lbD4NCis8L3Jzcz4NCis8LyNtYWNybz4NCisNCis8I21hY3JvIEF0b21NYWNybyBwb3N0cyBwb3N0dXJsPg0KKzw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0neWVzJz8+DQorPGZlZWQgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI+DQorCTxnZW5lcmF0b3IgdXJpPSIke3Byb2plY3QudXJsfSIgdmVyc2lvbj0iJHtwcm9qZWN0LnZlcnNpb259Ij4ke3Byb2plY3QubmFtZX08L2dlbmVyYXRvcj4NCisJPHRpdGxlPjwhW0NEQVRBWyR7cHJvamVjdC5uYW1lfV1dPjwvdGl0bGU+DQorCTx1cGRhdGVkPiR7cHJvamVjdC5yZWxlYXNlRGF0ZX08L3VwZGF0ZWQ+DQorCTwjbGlzdCBwb3N0cyBhcyBwb3N0Pg0KKwk8ZW50cnk+DQorCQk8Y29udGVudCB0eXBlPSJ0ZXh0L3BsYWluIiAvPg0KKyAgIAkJPHRpdGxlIHR5cGU9InRleHQiPjwhW0NEQVRBWyR7cG9zdC50aXRsZX1dXT48L3RpdGxlPg0KKyAgIAkJPCNpZiAocG9zdC50ZXh0IT9sZW5ndGggPiAwKT4NCisgICAJCTxzdW1tYXJ5IHR5cGU9InRleHQiPjwhW0NEQVRBWyR7cG9zdC50ZXh0fV1dPjwvc3VtbWFyeT4NCisgICAJCTwvI2lmPg0KKyAgIAkJPGxpbmsgaHJlZj0iJHtwb3N0dXJsfSR7cG9zdC5pZH0iIHJlbD0idmlhIiAvPg0KKyAgIAkJPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPiR7cG9zdHVybH0ke3Bvc3QuaWR9PC9ndWlkPg0KKyAgIAkJPCNpZiAocG9zdC50ZXh0IT9sZW5ndGggPiAwKT4NCisgICAJCTxjb250ZW50PjwhW0NEQVRBWyR7cG9zdC50ZXh0fV1dPjwvY29udGVudD4NCisgICAJCTwvI2lmPg0KKyAgIAkJPCNpZiAocG9zdC5rZXl3b3JkcyE/c2l6ZSA+IDApPg0KKwkJPCNsaXN0IHBvc3Qua2V5d29yZHMgYXMga2V5d29yZD4NCisJCTxjYXRlZ29yeSBsYWJlbD0iPCFbQ0RBVEFbJHtrZXl3b3JkfV1dPiIgLz4NCisJCTwvI2xpc3Q+DQorICAgCQk8LyNpZj4NCisgICAJCTxwdWJsaXNoZWQ+JHtwb3N0LmRhdGU/c3RyaW5nKCJ5eXl5LU1NLWRkJ1QnSEg6bW06c3NaIil9PC9wdWJsaXNoZWQ+DQorCTwvZW50cnk+DQorCTwvI2xpc3Q+DQorPC9mZWVkPg0KKzwvI21hY3JvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9zaXRlL3RlbXBsYXRlcy9yZWxlYXNlY3VycmVudC5mdGwgYi9zcmMvc2l0ZS90ZW1wbGF0ZXMvcmVsZWFzZWN1cnJlbnQuZnRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZmQ3MDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc2l0ZS90ZW1wbGF0ZXMvcmVsZWFzZWN1cnJlbnQuZnRsCkBAIC0wLDAgKzEsMjUgQEAKKzwjaW5jbHVkZSAibWFjcm9zLmZ0bCIgPgorCis8IS0tIENVUlJFTlQgUkVMRUFTRSAtLT4KKzxATG9nTWFjcm8gCisJdGl0bGU9IkN1cnJlbnQgUmVsZWFzZSIKKwlsb2c9cmVsZWFzZSAKKwl2ZXJzaW9uPXByb2plY3QucmVsZWFzZVZlcnNpb24gCisJZGF0ZT1yZWZlcmVuY2UucmVsZWFzZURhdGU/c3RyaW5nKCJ5eXl5LU1NLWRkIikgCisJZGVzY3JpcHRpb249InRoaXMgaXMgdGhlIGN1cnJlbnQgc3RhYmxlIHJlbGVhc2UiIC8+CisKKzwhLS0gTkVYVCBSRUxFQVNFIC0tPgorPCNpZiBzbmFwc2hvdD8/PgorPEBMb2dNYWNybyAKKwl0aXRsZT0iTmV4dCBSZWxlYXNlIgorCWxvZz1zbmFwc2hvdAorCXZlcnNpb249cHJvamVjdC52ZXJzaW9uCisJZGF0ZT0iUEVORElORyIKKwlkZXNjcmlwdGlvbj0idGhlc2UgY2hhbmdlcyBhcmUgcXVldWVkIGZvciBhbiB1cGNvbWluZyByZWxlYXNlIiAvPgorPC8jaWY+CisKKzxkaXY+CisJPHVsIGNsYXNzPSJwYWdlciI+CisJCTxsaSBjbGFzcz0ibmV4dCI+PGEgaHJlZj0icmVsZWFzZXMuaHRtbCI+QWxsIFJlbGVhc2VzICZyYXJyOzwvYT48L2xpPgorCTwvdWw+Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL3NyYy9zaXRlL3RlbXBsYXRlcy9yZWxlYXNlaGlzdG9yeS5mdGwgYi9zcmMvc2l0ZS90ZW1wbGF0ZXMvcmVsZWFzZWhpc3RvcnkuZnRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYWFhZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc2l0ZS90ZW1wbGF0ZXMvcmVsZWFzZWhpc3RvcnkuZnRsCkBAIC0wLDAgKzEsMjEgQEAKKzwjaW5jbHVkZSAibWFjcm9zLmZ0bCIgPgorCis8IS0tIEhJU1RPUlkgLS0+Cis8I2lmIChyZWxlYXNlcyE/c2l6ZSA+IDApPgorCTxwPjwvcD4KKwk8aDI+QWxsIFJlbGVhc2VzPC9oMj4KKwk8dGFibGUgY2xhc3M9InRhYmxlIj4KKwkJPHRib2R5PgorCQk8IS0tIFJFTEVBU0UgSElTVE9SWSAtLT4KKwkJPCNsaXN0IHJlbGVhc2VzP3NvcnRfYnkoImRhdGUiKT9yZXZlcnNlIGFzIGxvZz4KKwkJPHRyIGlkPSIke2xvZy5pZH0iPgorCQkJPHRkIHN0eWxlPSJ3aWR0aDoxMDBweCIgaWQ9IiR7bG9nLmlkfSI+CisJCQkJPGI+PGEgaHJlZj0iIyR7bG9nLmlkfSI+JHtsb2cuaWR9PC9hPjwvYj48YnIvPgorCQkJCSR7bG9nLmRhdGU/c3RyaW5nKCJ5eXl5LU1NLWRkIil9CisJCQk8L3RkPgorCQkJPHRkPjxATG9nRGVzY3JpcHRpb25NYWNybyBsb2c9bG9nIC8+PC90ZD4KKwkJPC90cj4KKwkJPC8jbGlzdD4KKwkJPC90Ym9keT4KKwk8L3RhYmxlPgorPC8jaWY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3NpdGUvdGVtcGxhdGVzL3Jzcy5mdGwgYi9zcmMvc2l0ZS90ZW1wbGF0ZXMvcnNzLmZ0bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGU4NmViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NpdGUvdGVtcGxhdGVzL3Jzcy5mdGwKQEAgLTAsMCArMSwyIEBACis8I2luY2x1ZGUgIm1hY3Jvcy5mdGwiPg0KKzxAUnNzTWFjcm8gcG9zdHM9cmVsZWFzZXMgcG9zdHVybD0iJHtwcm9qZWN0LnVybH0vcmVsZWFzZXMuaHRtbCMiIC8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC1naXRibGl0LnByb3BlcnRpZXMgYi9zcmMvdGVzdC9jb25maWcvdGVzdC1naXRibGl0LnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3QtZ2l0YmxpdC5wcm9wZXJ0aWVzCnJlbmFtZSB0byBzcmMvdGVzdC9jb25maWcvdGVzdC1naXRibGl0LnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL3Rlc3QtdWktZ2l0YmxpdC5wcm9wZXJ0aWVzIGIvc3JjL3Rlc3QvY29uZmlnL3Rlc3QtdWktZ2l0YmxpdC5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0LXVpLWdpdGJsaXQucHJvcGVydGllcwpyZW5hbWUgdG8gc3JjL3Rlc3QvY29uZmlnL3Rlc3QtdWktZ2l0YmxpdC5wcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS90ZXN0LXVpLXVzZXJzLmNvbmYgYi9zcmMvdGVzdC9jb25maWcvdGVzdC11aS11c2Vycy5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0LXVpLXVzZXJzLmNvbmYKcmVuYW1lIHRvIHNyYy90ZXN0L2NvbmZpZy90ZXN0LXVpLXVzZXJzLmNvbmYKZGlmZiAtLWdpdCBhL3Rlc3QtdXNlcnMuY29uZiBiL3NyYy90ZXN0L2NvbmZpZy90ZXN0LXVzZXJzLmNvbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3QtdXNlcnMuY29uZgpyZW5hbWUgdG8gc3JjL3Rlc3QvY29uZmlnL3Rlc3QtdXNlcnMuY29uZgpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvQWN0aXZpdHlUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0FjdGl2aXR5VGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9BY3Rpdml0eVRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9BY3Rpdml0eVRlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvQXJyYXlVdGlsc1Rlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvQXJyYXlVdGlsc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvQXJyYXlVdGlsc1Rlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9BcnJheVV0aWxzVGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9CYXNlNjRUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0Jhc2U2NFRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvQmFzZTY0VGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0Jhc2U2NFRlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvQnl0ZUZvcm1hdFRlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvQnl0ZUZvcm1hdFRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvQnl0ZUZvcm1hdFRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9CeXRlRm9ybWF0VGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9EaWZmVXRpbHNUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0RpZmZVdGlsc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvRGlmZlV0aWxzVGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0RpZmZVdGlsc1Rlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvRmFub3V0U2VydmljZVRlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvRmFub3V0U2VydmljZVRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvRmFub3V0U2VydmljZVRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9GYW5vdXRTZXJ2aWNlVGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9GZWRlcmF0aW9uVGVzdHMuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvRmVkZXJhdGlvblRlc3RzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2NvbS9naXRibGl0L3Rlc3RzL0ZlZGVyYXRpb25UZXN0cy5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0ZlZGVyYXRpb25UZXN0cy5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9GaWxlVXRpbHNUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0ZpbGVVdGlsc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvRmlsZVV0aWxzVGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0ZpbGVVdGlsc1Rlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvR2l0QmxpdFN1aXRlLmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0dpdEJsaXRTdWl0ZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9HaXRCbGl0U3VpdGUuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9HaXRCbGl0U3VpdGUuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvR2l0QmxpdFRlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvR2l0QmxpdFRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvR2l0QmxpdFRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9HaXRCbGl0VGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9HaXRTZXJ2bGV0VGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9HaXRTZXJ2bGV0VGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9HaXRTZXJ2bGV0VGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0dpdFNlcnZsZXRUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL0dyb292eVNjcmlwdFRlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvR3Jvb3Z5U2NyaXB0VGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9Hcm9vdnlTY3JpcHRUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvR3Jvb3Z5U2NyaXB0VGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9Jc3N1ZXNUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0lzc3Vlc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvSXNzdWVzVGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0lzc3Vlc1Rlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvSkdpdFV0aWxzVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9KR2l0VXRpbHNUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2NvbS9naXRibGl0L3Rlc3RzL0pHaXRVdGlsc1Rlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9KR2l0VXRpbHNUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL0pzb25VdGlsc1Rlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvSnNvblV0aWxzVGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9Kc29uVXRpbHNUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvSnNvblV0aWxzVGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9MZGFwVXNlclNlcnZpY2VUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0xkYXBVc2VyU2VydmljZVRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvTGRhcFVzZXJTZXJ2aWNlVGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0xkYXBVc2VyU2VydmljZVRlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvTHVjZW5lRXhlY3V0b3JUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL0x1Y2VuZUV4ZWN1dG9yVGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9MdWNlbmVFeGVjdXRvclRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9MdWNlbmVFeGVjdXRvclRlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvTWFpbFRlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvTWFpbFRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9NYWlsVGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL01haWxUZXN0LmphdmEKaW5kZXggMDVkNTVhMi4uNGZlZWRiMCAxMDA2NDQKLS0tIGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvTWFpbFRlc3QuamF2YQorKysgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL01haWxUZXN0LmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsNCiANCiBpbXBvcnQgY29tLmdpdGJsaXQuRmlsZVNldHRpbmdzOw0KK2ltcG9ydCBjb20uZ2l0YmxpdC5LZXlzOw0KIGltcG9ydCBjb20uZ2l0YmxpdC5NYWlsRXhlY3V0b3I7DQogDQogcHVibGljIGNsYXNzIE1haWxUZXN0IHsNCkBAIC0zMCw5ICszMSw5IEBACiAJcHVibGljIHZvaWQgdGVzdFNlbmRNYWlsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQogCQlGaWxlU2V0dGluZ3Mgc2V0dGluZ3MgPSBuZXcgRmlsZVNldHRpbmdzKCJtYWlsdGVzdC5wcm9wZXJ0aWVzIik7DQogCQlNYWlsRXhlY3V0b3IgbWFpbCA9IG5ldyBNYWlsRXhlY3V0b3Ioc2V0dGluZ3MpOw0KLQkJTWVzc2FnZSBtZXNzYWdlID0gbWFpbC5jcmVhdGVNZXNzYWdlRm9yQWRtaW5pc3RyYXRvcnMoKTsNCisJCU1lc3NhZ2UgbWVzc2FnZSA9IG1haWwuY3JlYXRlTWVzc2FnZShzZXR0aW5ncy5nZXRTdHJpbmdzKEtleXMubWFpbC5hZG1pbkFkZHJlc3NlcykpOw0KIAkJbWVzc2FnZS5zZXRTdWJqZWN0KCJUZXN0Iik7DQotCQltZXNzYWdlLnNldFRleHQoInRoaXMgaXMgYSB0ZXN0Iik7DQorCQltZXNzYWdlLnNldFRleHQoIu+7v0zDpGdnZXIgdGlsbCBhbmRyYSBzdHlja2V0IGkgbnkgZmlsLiBVVEYtOCBlbmNvZGVkIik7DQogCQltYWlsLnF1ZXVlKG1lc3NhZ2UpOw0KIAkJbWFpbC5ydW4oKTsNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9NYXJrZG93blV0aWxzVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9NYXJrZG93blV0aWxzVGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9NYXJrZG93blV0aWxzVGVzdC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL01hcmtkb3duVXRpbHNUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL01ldHJpY1V0aWxzVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9NZXRyaWNVdGlsc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvTWV0cmljVXRpbHNUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvTWV0cmljVXRpbHNUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL09iamVjdENhY2hlVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9PYmplY3RDYWNoZVRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvT2JqZWN0Q2FjaGVUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvT2JqZWN0Q2FjaGVUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1Blcm1pc3Npb25zVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9QZXJtaXNzaW9uc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvUGVybWlzc2lvbnNUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvUGVybWlzc2lvbnNUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1B1c2hMb2dUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL1B1c2hMb2dUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1B1c2hMb2dUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvUHVzaExvZ1Rlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvUmVkbWluZVVzZXJTZXJ2aWNlVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9SZWRtaW5lVXNlclNlcnZpY2VUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1JlZG1pbmVVc2VyU2VydmljZVRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9SZWRtaW5lVXNlclNlcnZpY2VUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1JlcG9zaXRvcnlNb2RlbFRlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvUmVwb3NpdG9yeU1vZGVsVGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9SZXBvc2l0b3J5TW9kZWxUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvUmVwb3NpdG9yeU1vZGVsVGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9ScGNUZXN0cy5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9ScGNUZXN0cy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9ScGNUZXN0cy5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL1JwY1Rlc3RzLmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1N0cmluZ1V0aWxzVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9TdHJpbmdVdGlsc1Rlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvU3RyaW5nVXRpbHNUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvU3RyaW5nVXRpbHNUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1N5bmRpY2F0aW9uVXRpbHNUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL1N5bmRpY2F0aW9uVXRpbHNUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1N5bmRpY2F0aW9uVXRpbHNUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvU3luZGljYXRpb25VdGlsc1Rlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvVGljZ2l0VXRpbHNUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL1RpY2dpdFV0aWxzVGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9UaWNnaXRVdGlsc1Rlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9UaWNnaXRVdGlsc1Rlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvVGltZVV0aWxzVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9UaW1lVXRpbHNUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1RpbWVVdGlsc1Rlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9UaW1lVXRpbHNUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1VzZXJTZXJ2aWNlVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9Vc2VyU2VydmljZVRlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvVXNlclNlcnZpY2VUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvVXNlclNlcnZpY2VUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbS9naXRibGl0L3Rlc3RzL1g1MDlVdGlsc1Rlc3QuamF2YSBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvWDUwOVV0aWxzVGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9YNTA5VXRpbHNUZXN0LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvWDUwOVV0aWxzVGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9jb20vZ2l0YmxpdC90ZXN0cy9tb2NrL01lbW9yeVNldHRpbmdzLmphdmEgYi9zcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL21vY2svTWVtb3J5U2V0dGluZ3MuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvbW9jay9NZW1vcnlTZXR0aW5ncy5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2NvbS9naXRibGl0L3Rlc3RzL21vY2svTWVtb3J5U2V0dGluZ3MuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvcmVzb3VyY2VzL2xkYXBVc2VyU2VydmljZVNhbXBsZURhdGEubGRpZiBiL3NyYy90ZXN0L2phdmEvY29tL2dpdGJsaXQvdGVzdHMvcmVzb3VyY2VzL2xkYXBVc2VyU2VydmljZVNhbXBsZURhdGEubGRpZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvY29tL2dpdGJsaXQvdGVzdHMvcmVzb3VyY2VzL2xkYXBVc2VyU2VydmljZVNhbXBsZURhdGEubGRpZgpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9jb20vZ2l0YmxpdC90ZXN0cy9yZXNvdXJjZXMvbGRhcFVzZXJTZXJ2aWNlU2FtcGxlRGF0YS5sZGlmCmRpZmYgLS1naXQgYS90ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvR2l0QmxpdDRVSVRlc3RzLmphdmEgYi9zcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy9HaXRCbGl0NFVJVGVzdHMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL0dpdEJsaXQ0VUlUZXN0cy5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy9HaXRCbGl0NFVJVGVzdHMuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL0dpdEJsaXRTZXJ2ZXI0VUlUZXN0cy5qYXZhIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvR2l0QmxpdFNlcnZlcjRVSVRlc3RzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy9HaXRCbGl0U2VydmVyNFVJVGVzdHMuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvR2l0QmxpdFNlcnZlcjRVSVRlc3RzLmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy9HaXRibGl0UnVubmFibGUuamF2YSBiL3NyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL0dpdGJsaXRSdW5uYWJsZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvR2l0YmxpdFJ1bm5hYmxlLmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL0dpdGJsaXRSdW5uYWJsZS5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvTGF1bmNoV2l0aFVJVGVzdENvbmZpZy5qYXZhIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvTGF1bmNoV2l0aFVJVGVzdENvbmZpZy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy9MYXVuY2hXaXRoVUlUZXN0Q29uZmlnLmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL0xhdW5jaFdpdGhVSVRlc3RDb25maWcuamF2YQppbmRleCA1OTRkN2ZjLi5hZWJkZTlhIDEwMDY0NAotLS0gYS90ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvTGF1bmNoV2l0aFVJVGVzdENvbmZpZy5qYXZhCisrKyBiL3NyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL0xhdW5jaFdpdGhVSVRlc3RDb25maWcuamF2YQpAQCAtNDQsNyArNDQsOCBAQAogCQkvLyBkaWZmZXJlbnQgcG9ydHMgdGhhbiBpbiB0ZXN0UGFyYWxsZWxMYXVuY2hPZlNldmVyYWxJbnN0YW5jZXMgdG8KIAkJLy8gZW5zdXJlIHRoYXQgYm90aCB0ZXN0IGNhc2VzIGRvIG5vdCBhZmZlY3QgZWFjaCBvdGhlcnMgdGVzdCByZXN1bHRzCiAJCWludCBodHRwUG9ydCA9IDkxOTEsIGh0dHBzUG9ydCA9IDkyOTIsIHNodXRkb3duUG9ydCA9IDkzOTM7Ci0JCVN0cmluZyBnaXRibGl0UHJvcGVydGllc1BhdGggPSAidGVzdC11aS1naXRibGl0LnByb3BlcnRpZXMiLCB1c2Vyc1Byb3BlcnRpZXNQYXRoID0gInRlc3QtdWktdXNlcnMuY29uZiI7CisJCVN0cmluZyBnaXRibGl0UHJvcGVydGllc1BhdGggPSAic3JjL3Rlc3QvY29uZmlnL3Rlc3QtdWktZ2l0YmxpdC5wcm9wZXJ0aWVzIiwKKwkJCQl1c2Vyc1Byb3BlcnRpZXNQYXRoID0gInNyYy90ZXN0L2NvbmZpZy90ZXN0LXVpLXVzZXJzLmNvbmYiOwogCiAJCUdpdGJsaXRSdW5uYWJsZSBnaXRibGl0UnVubmFibGUgPSBuZXcgR2l0YmxpdFJ1bm5hYmxlKGh0dHBQb3J0LAogCQkJCWh0dHBzUG9ydCwgc2h1dGRvd25Qb3J0LCBnaXRibGl0UHJvcGVydGllc1BhdGgsCkBAIC03NCw3ICs3NSw4IEBACiAJCS8vIGVuc3VyZSB0aGF0IGJvdGggdGVzdCBjYXNlcyBkbyBub3QgYWZmZWN0IGVhY2ggb3RoZXJzIHRlc3QgcmVzdWx0cwogCQlpbnQgaHR0cFBvcnQgPSA5Nzk3LCBodHRwc1BvcnQgPSA5ODk4LCBzaHV0ZG93blBvcnQgPSA5OTk5OwogCQlpbnQgaHR0cFBvcnQyID0gOTQ5NCwgaHR0cHNQb3J0MiA9IDk1OTUsIHNodXRkb3duUG9ydDIgPSA5Njk2OwotCQlTdHJpbmcgZ2l0YmxpdFByb3BlcnRpZXNQYXRoID0gInRlc3QtdWktZ2l0YmxpdC5wcm9wZXJ0aWVzIiwgdXNlcnNQcm9wZXJ0aWVzUGF0aCA9ICJ0ZXN0LXVpLXVzZXJzLmNvbmYiOworCQlTdHJpbmcgZ2l0YmxpdFByb3BlcnRpZXNQYXRoID0gInNyYy90ZXN0L2NvbmZpZy90ZXN0LXVpLWdpdGJsaXQucHJvcGVydGllcyIsCisJCQkJdXNlcnNQcm9wZXJ0aWVzUGF0aCA9ICJzcmMvdGVzdC9jb25maWcvdGVzdC11aS11c2Vycy5jb25mIjsKIAogCQlHaXRibGl0UnVubmFibGUgZ2l0YmxpdFJ1bm5hYmxlID0gbmV3IEdpdGJsaXRSdW5uYWJsZShodHRwUG9ydCwKIAkJCQlodHRwc1BvcnQsIHNodXRkb3duUG9ydCwgZ2l0YmxpdFByb3BlcnRpZXNQYXRoLApkaWZmIC0tZ2l0IGEvdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL01hbnVhbFVJVGVzdExhdW5jaC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvTWFudWFsVUlUZXN0TGF1bmNoLmphdmEKc2ltaWxhcml0eSBpbmRleCA3MyUKcmVuYW1lIGZyb20gdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL01hbnVhbFVJVGVzdExhdW5jaC5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy9NYW51YWxVSVRlc3RMYXVuY2guamF2YQppbmRleCAyZWZmNDkxLi44MDkzNjBhIDEwMDY0NAotLS0gYS90ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvTWFudWFsVUlUZXN0TGF1bmNoLmphdmEKKysrIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvTWFudWFsVUlUZXN0TGF1bmNoLmphdmEKQEAgLTMsNyArMyw4IEBACiBwdWJsaWMgY2xhc3MgTWFudWFsVUlUZXN0TGF1bmNoIHsKIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKIAlpbnQgaHR0cFBvcnQgPSA4MDgwLCBodHRwc1BvcnQgPSA4NDQzLCBzaHV0ZG93blBvcnQgPSA4MDgxOwotCVN0cmluZyBnaXRibGl0UHJvcGVydGllc1BhdGggPSAidGVzdC11aS1naXRibGl0LnByb3BlcnRpZXMiLCB1c2Vyc1Byb3BlcnRpZXNQYXRoID0gInRlc3QtdWktdXNlcnMuY29uZiI7CisJU3RyaW5nIGdpdGJsaXRQcm9wZXJ0aWVzUGF0aCA9ICJzcmMvdGVzdC9jb25maWcvdGVzdC11aS1naXRibGl0LnByb3BlcnRpZXMiLAorCQkJdXNlcnNQcm9wZXJ0aWVzUGF0aCA9ICJzcmMvdGVzdC9jb25maWcvdGVzdC11aS11c2Vycy5jb25mIjsKIAogCUdpdGJsaXRSdW5uYWJsZSBnaXRibGl0UnVubmFibGUgPSBuZXcgR2l0YmxpdFJ1bm5hYmxlKGh0dHBQb3J0LAogCQkJaHR0cHNQb3J0LCBzaHV0ZG93blBvcnQsIGdpdGJsaXRQcm9wZXJ0aWVzUGF0aCwKZGlmZiAtLWdpdCBhL3Rlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL1Rlc3RVSVN1aXRlLmphdmEgYi9zcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL1Rlc3RVSVN1aXRlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL1Rlc3RVSVN1aXRlLmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvVGVzdFVJU3VpdGUuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvY2FzZXMvVUlfTXVsdGlBZG1pblN1cHBvcnRUZXN0LmphdmEgYi9zcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL2Nhc2VzL1VJX011bHRpQWRtaW5TdXBwb3J0VGVzdC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS9jYXNlcy9VSV9NdWx0aUFkbWluU3VwcG9ydFRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS9jYXNlcy9VSV9NdWx0aUFkbWluU3VwcG9ydFRlc3QuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvZ2VuZXJpYy9BYnN0cmFjdFVJVGVzdC5qYXZhIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS9nZW5lcmljL0Fic3RyYWN0VUlUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL2dlbmVyaWMvQWJzdHJhY3RVSVRlc3QuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS9nZW5lcmljL0Fic3RyYWN0VUlUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvRXhwLmphdmEgYi9zcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvRXhwLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvRXhwLmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvdmlldy9FeHAuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvdmlldy9HaXRibGl0RGFzaGJvYXJkVmlldy5qYXZhIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS92aWV3L0dpdGJsaXREYXNoYm9hcmRWaWV3LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvR2l0YmxpdERhc2hib2FyZFZpZXcuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS92aWV3L0dpdGJsaXREYXNoYm9hcmRWaWV3LmphdmEKZGlmZiAtLWdpdCBhL3Rlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvR2l0YmxpdFBhZ2VWaWV3LmphdmEgYi9zcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvR2l0YmxpdFBhZ2VWaWV3LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvR2l0YmxpdFBhZ2VWaWV3LmphdmEKcmVuYW1lIHRvIHNyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvdmlldy9HaXRibGl0UGFnZVZpZXcuamF2YQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvdmlldy9SZXBvRWRpdFZpZXcuamF2YSBiL3NyYy90ZXN0L2phdmEvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvdmlldy9SZXBvRWRpdFZpZXcuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvZGUvYWtxdWluZXQvZGV2b3BzL3Rlc3QvdWkvdmlldy9SZXBvRWRpdFZpZXcuamF2YQpyZW5hbWUgdG8gc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS92aWV3L1JlcG9FZGl0Vmlldy5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS92aWV3L1JlcG9MaXN0Vmlldy5qYXZhIGIvc3JjL3Rlc3QvamF2YS9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS92aWV3L1JlcG9MaXN0Vmlldy5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0cy9kZS9ha3F1aW5ldC9kZXZvcHMvdGVzdC91aS92aWV3L1JlcG9MaXN0Vmlldy5qYXZhCnJlbmFtZSB0byBzcmMvdGVzdC9qYXZhL2RlL2FrcXVpbmV0L2Rldm9wcy90ZXN0L3VpL3ZpZXcvUmVwb0xpc3RWaWV3LmphdmEKZGlmZiAtLWdpdCBhL3RtcGx0LnBvbS54bWwgYi90bXBsdC5wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWJlNGJlLi4wMDAwMDAwCi0tLSBhL3RtcGx0LnBvbS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0JCXhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2QiPgotCQk8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0JCTxncm91cElkPmNvbS5naXRibGl0PC9ncm91cElkPgotCQk8YXJ0aWZhY3RJZD5naXRibGl0PC9hcnRpZmFjdElkPgotCQk8dmVyc2lvbj5AZ2IudmVyc2lvbkA8L3ZlcnNpb24+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS90b29scy9HZW5KYXIuamFyIGIvdG9vbHMvR2VuSmFyLmphcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYyMjVjYi4uMDAwMDAwMAotLS0gYS90b29scy9HZW5KYXIuamFyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvYW50LWdvb2dsZWNvZGUtMC4wLjMuamFyIGIvdG9vbHMvYW50LWdvb2dsZWNvZGUtMC4wLjMuamFyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTJmYTg0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL2FudC1nb29nbGVjb2RlLTAuMC4zLmphcgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIK