{"id":"6E58C263-32EF-445E-A690-113728F29E87","icon":"brain.head.profile","title":"Genshin GaCha Recommendation","type":"program","description":"# 使用说明\n1. 从米游社导出角色列表\n\n![111](https:\/\/img.nga.178.com\/attachments\/mon_202211\/30\/i2Qpavc-2yiiZyT3cShs-28c.jpg.medium.jpg)\n\n2. 点击下方「播放」按钮运行程序。\n\n# 其他\n1. 推荐基于满星深渊使用率\n2. 有未抽取角色但深渊使用率高的排前面","statements":[{"declarings":{},"id":"DA7F2176-42DC-416E-93C8-4237F065D1CF","returnType":[{"id":"24DE1521-E163-42BA-B09C-C5C03F4F0B14","typeParameters":[{"id":"D8C2333C-BF37-4018-BC11-D1592F7ECEE6","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"}],"type":"photoLibraryFunctionCallExpression","params":[]},{"params":[{"id":"1588F662-1F66-4E7E-B1EC-0A5211177522","typeParameters":[{"id":"01FA023A-CDC8-4C96-A79B-E23CFBF2FF63","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"}],"returnType":[{"id":"67ED6C1B-B204-4E9F-B202-8CBFBE8D834F","typeParameters":[{"id":"A8FF2987-FDF6-4A84-8FC4-2135EBB1C1D4","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"},{"id":"FBFB94D7-2F23-4523-B396-14434D8BBD3A","typeParameters":[{"id":"20A70721-6BB9-4EE6-963D-E34EDA74BA8B","typeParameters":[],"type":"typeAnnotion","dataType":"textObservation"}],"type":"typeAnnotion","dataType":"array"}],"confidenceThreshold":0.14000000000000001,"id":"5C5BD8AF-3B3E-4BAF-87A0-977DA8E88B82","showConfirmer":true,"declarings":{"var1":"FBFB94D7-2F23-4523-B396-14434D8BBD3A"},"type":"evalVNRecognizeTextFunctionCallExpression","languages":["zh_Hans_CN"]},{"params":[{"id":"6B92C2AE-7555-487E-94FF-5678E7061A36","typeParameters":[{"id":"E4DD3A6C-6EA3-4852-82E2-8B25A8D4C37A","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"}],"returnType":[{"id":"DE780649-C134-4BF9-95A5-4DD1B323204B","typeParameters":[{"id":"A6C2A348-5683-40C5-96CD-D176FA3B9B26","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"}],"editMode":{"vscode":{}},"id":"87E8E9EA-E2CB-478F-B0C1-6B287C9585B7","code":"ZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykgewogICAgdHJ5IHsKICAgICAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7CiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoaW5mby5kb25lKSB7CiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsKICAgIH0KfQpmdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikgewogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTsKICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHsKICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgIm5leHQiLCB2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikgewogICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCAidGhyb3ciLCBlcnIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIF9uZXh0KHVuZGVmaW5lZCk7CiAgICAgICAgfSk7CiAgICB9Owp9CnZhciBfdHlwZW9mID0gZnVuY3Rpb24ob2JqKSB7CiAgICAiQHN3Yy9oZWxwZXJzIC0gdHlwZW9mIjsKICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgPyAic3ltYm9sIiA6IHR5cGVvZiBvYmo7Cn07CnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uKHRoaXNBcmcsIGJvZHkpIHsKICAgIHZhciBmLCB5LCB0LCBnLCBfID0gewogICAgICAgIGxhYmVsOiAwLAogICAgICAgIHNlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodFswXSAmIDEpIHRocm93IHRbMV07CiAgICAgICAgICAgIHJldHVybiB0WzFdOwogICAgICAgIH0sCiAgICAgICAgdHJ5czogW10sCiAgICAgICAgb3BzOiBbXQogICAgfTsKICAgIHJldHVybiBnID0gewogICAgICAgIG5leHQ6IHZlcmIoMCksCiAgICAgICAgInRocm93IjogdmVyYigxKSwKICAgICAgICAicmV0dXJuIjogdmVyYigyKQogICAgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9KSwgZzsKICAgIGZ1bmN0aW9uIHZlcmIobikgewogICAgICAgIHJldHVybiBmdW5jdGlvbih2KSB7CiAgICAgICAgICAgIHJldHVybiBzdGVwKFsKICAgICAgICAgICAgICAgIG4sCiAgICAgICAgICAgICAgICB2CiAgICAgICAgICAgIF0pOwogICAgICAgIH07CiAgICB9CiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7CiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTsKICAgICAgICB3aGlsZShfKXRyeSB7CiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA\/IHlbInJldHVybiJdIDogb3BbMF0gPyB5WyJ0aHJvdyJdIHx8ICgodCA9IHlbInJldHVybiJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDsKICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFsKICAgICAgICAgICAgICAgIG9wWzBdICYgMiwKICAgICAgICAgICAgICAgIHQudmFsdWUKICAgICAgICAgICAgXTsKICAgICAgICAgICAgc3dpdGNoKG9wWzBdKXsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICB0ID0gb3A7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgXy5sYWJlbCsrOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgIF8ubGFiZWwrKzsKICAgICAgICAgICAgICAgICAgICB5ID0gb3BbMV07CiAgICAgICAgICAgICAgICAgICAgb3AgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICAgIG9wID0gXy5vcHMucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBfID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgewogICAgICAgICAgICAgICAgICAgICAgICBfLmxhYmVsID0gb3BbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgXy5sYWJlbCA9IHRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBvcDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF8ubGFiZWwgPSB0WzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfLm9wcy5wdXNoKG9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBvcCA9IFsKICAgICAgICAgICAgICAgIDYsCiAgICAgICAgICAgICAgICBlCiAgICAgICAgICAgIF07CiAgICAgICAgICAgIHkgPSAwOwogICAgICAgIH0gZmluYWxseXsKICAgICAgICAgICAgZiA9IHQgPSAwOwogICAgICAgIH0KICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwKICAgICAgICAgICAgZG9uZTogdHJ1ZQogICAgICAgIH07CiAgICB9Cn07CnZhciBSZXR1cm5QYXlsb2FkVHlwZUVudW07CihmdW5jdGlvbihSZXR1cm5QYXlsb2FkVHlwZUVudW0pIHsKICAgIFJldHVyblBheWxvYWRUeXBlRW51bVsiYW55Il0gPSAiYW55IjsKICAgIFJldHVyblBheWxvYWRUeXBlRW51bVsiYXJyYXkiXSA9ICJhcnJheSI7CiAgICBSZXR1cm5QYXlsb2FkVHlwZUVudW1bInN0cmluZyJdID0gInN0cmluZyI7CiAgICBSZXR1cm5QYXlsb2FkVHlwZUVudW1bIm51bWJlciJdID0gIm51bWJlciI7CiAgICBSZXR1cm5QYXlsb2FkVHlwZUVudW1bImRhdGEiXSA9ICJkYXRhIjsKICAgIFJldHVyblBheWxvYWRUeXBlRW51bVsiaW1hZ2UiXSA9ICJpbWFnZSI7CiAgICBSZXR1cm5QYXlsb2FkVHlwZUVudW1bInZpc2lvbk9ic2VydmF0aW9uIl0gPSAidmlzaW9uT2JzZXJ2YXRpb24iOwogICAgUmV0dXJuUGF5bG9hZFR5cGVFbnVtWyJ0ZXh0T2JzZXJ2YXRpb24iXSA9ICJ0ZXh0T2JzZXJ2YXRpb24iOwp9KShSZXR1cm5QYXlsb2FkVHlwZUVudW0gfHwgKFJldHVyblBheWxvYWRUeXBlRW51bSA9IHt9KSk7CnZhciBSZXR1cm5QYXlsb2FkVHlwZTsKKGZ1bmN0aW9uKFJldHVyblBheWxvYWRUeXBlKSB7CiAgICBSZXR1cm5QYXlsb2FkVHlwZVsic3RyaW5nIl0gPSAic3RyaW5nIjsKICAgIFJldHVyblBheWxvYWRUeXBlWyJudW1iZXIiXSA9ICJudW1iZXIiOwogICAgUmV0dXJuUGF5bG9hZFR5cGVbImRhdGEiXSA9ICJkYXRhIjsKICAgIFJldHVyblBheWxvYWRUeXBlWyJjbGFzc2lmaWNhdGlvbk9ic2VydmF0aW9ucyJdID0gImNsYXNzaWZpY2F0aW9uT2JzZXJ2YXRpb25zIjsKICAgIFJldHVyblBheWxvYWRUeXBlWyJyZWNvZ25pemVkT2JqZWN0T2JzZXJ2YXRpb25zIl0gPSAicmVjb2duaXplZE9iamVjdE9ic2VydmF0aW9ucyI7CiAgICBSZXR1cm5QYXlsb2FkVHlwZVsidGV4dE9ic2VydmF0aW9ucyJdID0gInRleHRPYnNlcnZhdGlvbnMiOwogICAgUmV0dXJuUGF5bG9hZFR5cGVbImFycmF5Il0gPSAiYXJyYXkiOwp9KShSZXR1cm5QYXlsb2FkVHlwZSB8fCAoUmV0dXJuUGF5bG9hZFR5cGUgPSB7fSkpOwpmdW5jdGlvbiB1dWlkKCkgewogICAgdmFyIHV1aWQgPSBEYXRlLm5vdygpICsgIiIgKyAoTWF0aC5yYW5kb20oKSArICIiKS5zbGljZSgyKTsKICAgIHJldHVybiB1dWlkOwp9CmZ1bmN0aW9uIHNob3dUYWJsZSh0YWJsZSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIE5hdGl2ZVRhYmxlLnNob3dUYWJsZShKU09OLnN0cmluZ2lmeSh0YWJsZSksIGZ1bmN0aW9uKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSByZWplY3QoZXJyKTsKICAgICAgICAgICAgZWxzZSByZXNvbHZlKCk7CiAgICAgICAgfSk7CiAgICB9KTsKfQpmdW5jdGlvbiBkb25lKHBheWxvYWQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3RzKSB7CiAgICAgICAgTmF0aXZlQ29tbXVuaWNhdGlvbi5kb25lKHBheWxvYWQsIGZ1bmN0aW9uKGVycikgewogICAgICAgICAgICBpZiAoZXJyKSByZWplY3RzKGVycik7CiAgICAgICAgICAgIGVsc2UgcmVzb2x2ZSgpOwogICAgICAgIH0pOwogICAgfSk7Cn0KZnVuY3Rpb24gZ2V0Q29udGV4dFZhbHVlKHZhcmlhYmxlTmFtZSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIE5hdGl2ZUNvbW11bmljYXRpb24uZ2V0Q29udGV4dFZhbHVlKHZhcmlhYmxlTmFtZSwgZnVuY3Rpb24oZXJyLCB2YWx1ZSkgewogICAgICAgICAgICBpZiAoZXJyKSByZWplY3QoZXJyKTsKICAgICAgICAgICAgZWxzZSByZXNvbHZlKHZhbHVlKTsKICAgICAgICB9KTsKICAgIH0pOwp9CmZ1bmN0aW9uIHNvcmVuc2VuQ29lZmZpY2llbnQoYSwgYikgewogICAgdmFyIGludGVyc2VjdGlvbiA9IDA7CiAgICB2YXIgdW5pb24gPSAwOwogICAgZm9yKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspewogICAgICAgIGlmIChiLmluZGV4T2YoYVtpXSkgIT09IC0xKSBpbnRlcnNlY3Rpb24rKzsKICAgICAgICB1bmlvbisrOwogICAgfQogICAgZm9yKHZhciBpMSA9IDA7IGkxIDwgYi5sZW5ndGg7IGkxKyspaWYgKGEuaW5kZXhPZihiW2kxXSkgPT09IC0xKSB1bmlvbisrOwogICAgcmV0dXJuIGludGVyc2VjdGlvbiAvIHVuaW9uOwp9CmZ1bmN0aW9uIHNvcmVuc2VuQ29lZmZpY2llbnRPZlN0cmluZyhhLCBiKSB7CiAgICByZXR1cm4gc29yZW5zZW5Db2VmZmljaWVudChhLnNwbGl0KCIiKSwgYi5zcGxpdCgiIikpOwp9CmZ1bmN0aW9uIGVkaXRvckRpc3RhbmNlKGEsIGIpIHsKICAgIHZhciBtYXRyaXggPSBbXTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPD0gYS5sZW5ndGg7IGkrKyltYXRyaXhbaV0gPSBbCiAgICAgICAgaQogICAgXTsKICAgIGZvcih2YXIgaiA9IDA7IGogPD0gYi5sZW5ndGg7IGorKyltYXRyaXhbMF1bal0gPSBqOwogICAgZm9yKHZhciBpMSA9IDE7IGkxIDw9IGEubGVuZ3RoOyBpMSsrKXsKICAgICAgICBmb3IodmFyIGoxID0gMTsgajEgPD0gYi5sZW5ndGg7IGoxKyspaWYgKGEuY2hhckF0KGkxIC0gMSkgPT0gYi5jaGFyQXQoajEgLSAxKSkgbWF0cml4W2kxXVtqMV0gPSBtYXRyaXhbaTEgLSAxXVtqMSAtIDFdOwogICAgICAgIGVsc2UgbWF0cml4W2kxXVtqMV0gPSBNYXRoLm1pbihtYXRyaXhbaTEgLSAxXVtqMSAtIDFdICsgMSwgTWF0aC5taW4obWF0cml4W2kxXVtqMSAtIDFdICsgMSwgbWF0cml4W2kxIC0gMV1bajFdICsgMSkpOwogICAgfQogICAgcmV0dXJuIG1hdHJpeFthLmxlbmd0aF1bYi5sZW5ndGhdOwp9CnZhciBDaHJhY3Rlckxpc3QgPSBbCiAgICAi55C0IiwKICAgICLov6rljaLlhYsiLAogICAgIua4qei\/qiIsCiAgICAi5Y+v6I6JIiwKICAgICLprYgiLAogICAgIuaXheihjOiAhSIsCiAgICAi5rS+6JKZIiwKICAgICLojqvlqJwiLAogICAgIuWIu+aZtCIsCiAgICAi5LiD5LiDIiwKICAgICLpkp\/nprsiLAogICAgIui+vui+vuWIqeS6miIsCiAgICAi6Zi\/6LSd5aSaIiwKICAgICLnlJjpm6giLAogICAgIuelnumHjOe7q+WNjiIsCiAgICAi6IOh5qGDIiwKICAgICLpm7fnlLXlsIblhpsiLAogICAgIuS8mOiPiCIsCiAgICAi5a615a6rIiwKICAgICLmnqvljp\/kuIflj7YiLAogICAgIuWFq+mHjeelnuWtkCIsCiAgICAi54+K55Ga5a6r5b+D5rW3IiwKICAgICLln4PmtJvkvIoiLAogICAgIuelnumHjOe7q+S6uiIsCiAgICAi6I2S5rO35LiA5paXIiwKICAgICLotZvor7oiLAogICAgIueUs+m5pCIsCiAgICAi5aSc5YWwIiwKICAgICLmj5DnurPph4wiLAogICAgIuWmrumcsiIsCiAgICAi57qz6KW\/5aayIiwKICAgICLljJfmlpciLAogICAgIuWuieafjyIsCiAgICAi5Li96I6OIiwKICAgICLlh6\/kupoiLAogICAgIuiKreiKreaLiSIsCiAgICAi6Zu35rO9IiwKICAgICLooYznp4siLAogICAgIuiPsuiwouWwlCIsCiAgICAi6K+66Im+5bCUIiwKICAgICLnj63lsLznibkiLAogICAgIumHjeS6kSIsCiAgICAi6aaZ6I+xIiwKICAgICLlh53lhYkiLAogICAgIuegguezliIsCiAgICAi6L+q5aWl5aicIiwKICAgICLovpvnhLEiLAogICAgIue9l+iOjuiOieS6miIsCiAgICAi5LqR5aCHIiwKICAgICLng5\/nu68iLAogICAgIuaXqeafmiIsCiAgICAi5LqU6YOOIiwKICAgICLkuZ3mnaHoo5\/nvZciLAogICAgIuaJmOmprCIsCiAgICAi5LmF5bKQ5b+NIiwKICAgICLpub\/ph47pmaLlubPol48iLAogICAgIuafr+iOsSIsCiAgICAi5aSa6I6JIiwKICAgICLlnY7okoLkuJ0iLAogICAgIuiOseS+neaLiSIsIApdOwp2YXIgR3JvdXBSYW5raW5nID0gWwogICAgWwogICAgICAgICLooYznp4siLAogICAgICAgICLpkp\/nprsiLAogICAgICAgICLog6HmoYMiLAogICAgICAgICLlpJzlhbAiLAogICAgICAgIDEzLjQyCiAgICBdLAogICAgWwogICAgICAgICLnj63lsLznibkiLAogICAgICAgICLmnqvljp\/kuIflj7YiLAogICAgICAgICLpm7fnlLXlsIblhpsiLAogICAgICAgICLkuZ3mnaHoo5\/nvZciLAogICAgICAgIDkuNjQKICAgIF0sCiAgICBbCiAgICAgICAgIummmeiPsSIsCiAgICAgICAgIuePreWwvOeJuSIsCiAgICAgICAgIui+vui+vuWIqeS6miIsCiAgICAgICAgIuaeq+WOn+S4h+WPtiIsCiAgICAgICAgOC4zOQogICAgXSwKICAgIFsKICAgICAgICAi56We6YeM57ur5Y2OIiwKICAgICAgICAi55SY6ZuoIiwKICAgICAgICAi5p6r5Y6f5LiH5Y+2IiwKICAgICAgICAi54+K55Ga5a6r5b+D5rW3IiwKICAgICAgICA2Ljg2CiAgICBdLAogICAgWwogICAgICAgICLpppnoj7EiLAogICAgICAgICLooYznp4siLAogICAgICAgICLnj63lsLznibkiLAogICAgICAgICLpm7fnlLXlsIblhpsiLAogICAgICAgIDUuODIKICAgIF0sCiAgICBbCiAgICAgICAgIuaXheihjOiAhSIsCiAgICAgICAgIuePiueRmuWuq+W\/g+a1tyIsCiAgICAgICAgIuWmrumcsiIsCiAgICAgICAgIue6s+ilv+WmsiIsCiAgICAgICAgNC40NgogICAgXSwKICAgIFsKICAgICAgICAi56We6YeM57ur5Y2OIiwKICAgICAgICAi6L+q5aWl5aicIiwKICAgICAgICAi6I6r5aicIiwKICAgICAgICAi5p6r5Y6f5LiH5Y+2IiwKICAgICAgICA0LjMyCiAgICBdLAogICAgWwogICAgICAgICLpppnoj7EiLAogICAgICAgICLnj63lsLznibkiLAogICAgICAgICLpm7fnlLXlsIblhpsiLAogICAgICAgICLlpJzlhbAiLAogICAgICAgIDQuNDYKICAgIF0sCiAgICBbCiAgICAgICAgIuelnumHjOe7q+WNjiIsCiAgICAgICAgIui\/quWlpeWonCIsCiAgICAgICAgIuaeq+WOn+S4h+WPtiIsCiAgICAgICAgIuePiueRmuWuq+W\/g+a1tyIsCiAgICAgICAgMy45NwogICAgXSwKICAgIFsKICAgICAgICAi6ZKf56a7IiwKICAgICAgICAi5a615a6rIiwKICAgICAgICAi5aSc5YWwIiwKICAgICAgICAi5LqR5aCHIiwKICAgICAgICAzLjYzCiAgICBdLAogICAgWwogICAgICAgICLooYznp4siLAogICAgICAgICLpkp\/nprsiLAogICAgICAgICLlrrXlrqsiLAogICAgICAgICLlpJzlhbAiLAogICAgICAgIDMuNjEKICAgIF0sCiAgICBbCiAgICAgICAgIuePiueRmuWuq+W\/g+a1tyIsCiAgICAgICAgIuafr+iOsSIsCiAgICAgICAgIuWmrumcsiIsCiAgICAgICAgIue6s+ilv+WmsiIsCiAgICAgICAgMy4yOAogICAgXSwKICAgIFsKICAgICAgICAi6ZKf56a7IiwKICAgICAgICAi54+t5bC854m5IiwKICAgICAgICAi5a615a6rIiwKICAgICAgICAi5aSc5YWwIiwKICAgICAgICAzLjAyCiAgICBdLAogICAgWwogICAgICAgICLnj4rnkZrlrqvlv4PmtbciLAogICAgICAgICLlpJzlhbAiLAogICAgICAgICLlpq7pnLIiLAogICAgICAgICLnurPopb\/lprIiLAogICAgICAgIDIuOTgKICAgIF0sCiAgICBbCiAgICAgICAgIuihjOeniyIsCiAgICAgICAgIumSn+emuyIsCiAgICAgICAgIuePreWwvOeJuSIsCiAgICAgICAgIuWuteWuqyIsCiAgICAgICAgMi40OAogICAgXSwKICAgIFsKICAgICAgICAi6aaZ6I+xIiwKICAgICAgICAi6ZKf56a7IiwKICAgICAgICAi54+t5bC854m5IiwKICAgICAgICAi55SY6ZuoIiwKICAgICAgICAyLjI4CiAgICBdLAogICAgWwogICAgICAgICLooYznp4siLAogICAgICAgICLpkp\/nprsiLAogICAgICAgICLlrrXlrqsiLAogICAgICAgICLkupHloIciLAogICAgICAgIDIuMjEKICAgIF0sCiAgICBbCiAgICAgICAgIummmeiPsSIsCiAgICAgICAgIuePreWwvOeJuSIsCiAgICAgICAgIueUmOmbqCIsCiAgICAgICAgIuaeq+WOn+S4h+WPtiIsCiAgICAgICAgMS44NgogICAgXSwKICAgIFsKICAgICAgICAi5rip6L+qIiwKICAgICAgICAi6aaZ6I+xIiwKICAgICAgICAi54+t5bC854m5IiwKICAgICAgICAi6Zu355S15bCG5YabIiwKICAgICAgICAxLjcwCiAgICBdLAogICAgWwogICAgICAgICLpkp\/nprsiLAogICAgICAgICLlrrXlrqsiLAogICAgICAgICLlpJzlhbAiLAogICAgICAgICLnurPopb\/lprIiLAogICAgICAgIDEuNjUKICAgIF0sCiAgICBbCiAgICAgICAgIuePreWwvOeJuSIsCiAgICAgICAgIuaeq+WOn+S4h+WPtiIsCiAgICAgICAgIumbt+eUteWwhuWGmyIsCiAgICAgICAgIuWknOWFsCIsCiAgICAgICAgMS42MwogICAgXSwKICAgIFsKICAgICAgICAi6KGM56eLIiwKICAgICAgICAi6ZKf56a7IiwKICAgICAgICAi6Zi\/6LSd5aSaIiwKICAgICAgICAi6IOh5qGDIiwKICAgICAgICAxLjYwCiAgICBdLAogICAgWwogICAgICAgICLpkp\/nprsiLAogICAgICAgICLpmL\/otJ3lpJoiLAogICAgICAgICLkupTpg44iLAogICAgICAgICLojZLms7fkuIDmlpciLAogICAgICAgIDEuNTYKICAgIF0sCiAgICBbCiAgICAgICAgIuihjOeniyIsCiAgICAgICAgIumSn+emuyIsCiAgICAgICAgIuWuteWuqyIsCiAgICAgICAgIue6s+ilv+WmsiIsCiAgICAgICAgMS41MgogICAgXSwKICAgIFsKICAgICAgICAi6KGM56eLIiwKICAgICAgICAi6ZKf56a7IiwKICAgICAgICAi6I6r5aicIiwKICAgICAgICAi6IOh5qGDIiwKICAgICAgICAxLjUyCiAgICBdLAogICAgWwogICAgICAgICLoj7LosKLlsJQiLAogICAgICAgICLliLvmmbQiLAogICAgICAgICLmnqvljp\/kuIflj7YiLAogICAgICAgICLnurPopb\/lprIiLAogICAgICAgIDEuNDkKICAgIF0sCiAgICBbCiAgICAgICAgIuelnumHjOe7q+WNjiIsCiAgICAgICAgIuaeq+WOn+S4h+WPtiIsCiAgICAgICAgIuePiueRmuWuq+W\/g+a1tyIsCiAgICAgICAgIueUs+m5pCIsCiAgICAgICAgMS40NwogICAgXSwKICAgIFsKICAgICAgICAi6KGM56eLIiwKICAgICAgICAi6ZKf56a7IiwKICAgICAgICAi6IOh5qGDIiwKICAgICAgICAi57qz6KW\/5aayIiwKICAgICAgICAxLjQ0CiAgICBdLAogICAgWwogICAgICAgICLnj63lsLznibkiLAogICAgICAgICLnlJjpm6giLAogICAgICAgICLmnqvljp\/kuIflj7YiLAogICAgICAgICLnurPopb\/lprIiLAogICAgICAgIDEuMjIKICAgIF0sCiAgICBbCiAgICAgICAgIumSn+emuyIsCiAgICAgICAgIuWFq+mHjeelnuWtkCIsCiAgICAgICAgIuaPkOe6s+mHjCIsCiAgICAgICAgIue6s+ilv+WmsiIsCiAgICAgICAgMS4wOAogICAgXSwKICAgIFsKICAgICAgICAi56We6YeM57ur5Y2OIiwKICAgICAgICAi572X6I6O6I6J5LqaIiwKICAgICAgICAi5p6r5Y6f5LiH5Y+2IiwKICAgICAgICAi54+K55Ga5a6r5b+D5rW3IiwKICAgICAgICAxLjAyCiAgICBdLAogICAgWwogICAgICAgICLnpZ7ph4znu6vljY4iLAogICAgICAgICLmuKnov6oiLAogICAgICAgICLnj4rnkZrlrqvlv4PmtbciLAogICAgICAgICLnlLPpuaQiLAogICAgICAgIDEuMDAKICAgIF0KXTsKZnVuY3Rpb24gbWFpbigpIHsKICAgIHJldHVybiBfbWFpbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwp9CmZ1bmN0aW9uIF9tYWluKCkgewogICAgX21haW4gPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcmVmLCB2YWwsIHJldHVyblBheWxvYWQsIGFycmF5LCBpdGVtcywgaXRlbSwgb2JzZXJ2YXRpb25zLCBrZXlzLCBmb3VuZCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiwgX2RpZEl0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvckVycm9yLCBfbG9vcCwgX2l0ZXJhdG9yLCBfc3RlcCwgZm91bmRLZXlzLCBtYXBwZWRHcm91cFJhbmtpbmcsIF90bXAsIGU7CiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uKF9zdGF0ZSkgewogICAgICAgICAgICBzd2l0Y2goX3N0YXRlLmxhYmVsKXsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICBOYXRpdmVMb2dnZXIubG9nKFsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIE5hdGl2ZUZvcm0gPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiBfdHlwZW9mKE5hdGl2ZUZvcm0pLAogICAgICAgICAgICAgICAgICAgICAgICBfdHlwZW9mKE5hdGl2ZUZvcm0uc2hvd0Zvcm0pCiAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICAgICAgX3N0YXRlLmxhYmVsID0gMTsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICBfc3RhdGUudHJ5cy5wdXNoKFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgLAogICAgICAgICAgICAgICAgICAgICAgICA1CiAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dFZhbHVlKCJ2YXIxIikKICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgIHZhbCA9IF9zdGF0ZS5zZW50KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuUGF5bG9hZCA9IEpTT04ucGFyc2UodmFsKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXJldHVyblBheWxvYWQucGF5bG9hZC5hcnJheSkgdGhyb3cgbmV3IEVycm9yKCJhcnJheSBub3QgZm91bmQiKTsKICAgICAgICAgICAgICAgICAgICBhcnJheSA9IHJldHVyblBheWxvYWQucGF5bG9hZC5hcnJheS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IGFycmF5LmZpbHRlcihmdW5jdGlvbih4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LnR5cGUgPT0gInRleHRPYnNlcnZhdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PSAwKSB0aHJvdyBuZXcgRXJyb3IoIk5vIHRleHRPYnNlcnZhdGlvbiBpdGVtcyBmb3VuZCIpOwogICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1swXTsKICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbnMgPSAocmVmID0gaXRlbS5wYXlsb2FkLnRleHRPYnNlcnZhdGlvbnMpID09PSBudWxsIHx8IHJlZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVmLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICghb2JzZXJ2YXRpb25zKSB0aHJvdyBuZXcgRXJyb3IoIk5vIG9ic2VydmF0aW9ucyBmb3VuZCIpOwogICAgICAgICAgICAgICAgICAgICJ6aCI7CiAgICAgICAgICAgICAgICAgICAga2V5cyA9IENocmFjdGVyTGlzdDsKICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFtdOwogICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBfZGlkSXRlcmF0b3JFcnJvciA9IGZhbHNlLCBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBfbG9vcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmF0aW9uID0gX3N0ZXAudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gb2JzZXJ2YXRpb24uY2FuZGlkYXRlc1swXS5zdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFwcGVkID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcmVuc2VuQ29lZmZpY2llbnRPZlN0cmluZyhjYW5kaWRhdGUsIGtleSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvckRpc3RhbmNlKGNhbmRpZGF0ZSwga2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYVsyXSAtIGJbMl0pID4gMC4wMDAxKSByZXR1cm4gYlsyXSAtIGFbMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gYVszXSAtIGJbM107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4WzJdID4gMC4zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwcGVkLmxlbmd0aCA+IDApIGZvdW5kLnB1c2goWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZFswXVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWRbMF1bMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkWzBdWzNdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yKF9pdGVyYXRvciA9IG9ic2VydmF0aW9uc1tTeW1ib2wuaXRlcmF0b3JdKCk7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSlfbG9vcCgpOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IucmV0dXJuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvdW5kS2V5cyA9IGZvdW5kLm1hcChmdW5jdGlvbih4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4WzFdOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIE5hdGl2ZUxvZ2dlci5sb2coWwogICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShmb3VuZC5tYXAoZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbjogeFswXS5jYW5kaWRhdGVzWzBdLnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHhbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmU6IHhbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IHhbM10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgICAgICAgIG1hcHBlZEdyb3VwUmFua2luZyA9IEdyb3VwUmFua2luZy5tYXAoZnVuY3Rpb24oZ3JvdXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0dyb3VwID0gW10uY29uY2F0KGdyb3VwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKylpZiAoZm91bmRLZXlzLmluY2x1ZGVzKG5ld0dyb3VwW2ldKSkgbmV3R3JvdXBbaV0gPSBuZXdHcm91cFtpXSArICIiOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG5ld0dyb3VwW2ldID0gbmV3R3JvdXBbaV0gKyAiICjmnKrmjIHmnIkpIjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0dyb3VwOwogICAgICAgICAgICAgICAgICAgIH0pLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYUNvdW50ID0gYS5maWx0ZXIoZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB4ID09ICJzdHJpbmciICYmIHguaW5kZXhPZigi5pyq5oyB5pyJIikgPj0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYkNvdW50ID0gYi5maWx0ZXIoZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB4ID09ICJzdHJpbmciICYmIHguaW5kZXhPZigi5pyq5oyB5pyJIikgPj0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYUNvdW50ID09IDAgJiYgYkNvdW50ID09IDApIHJldHVybiBiWzRdIC0gYls0XTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYUNvdW50ID09IDApIHJldHVybiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJDb3VudCA9PSAwKSByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYUNvdW50IC0gYkNvdW50OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgX3RtcCA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUYWJsZSgoX3RtcC5pZCA9IHV1aWQoKSwgX3RtcC50aXRsZSA9ICLop5LoibLmir3lj5blu7rorq4iLCBfdG1wLmNvbHVtbnMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogIuinkuiJsiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogIuinkuiJsiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogIuinkuiJsiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogIuinkuiJsiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogIumYn+S8jea3sea4iuS9v+eUqOeOhyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwgX3RtcC5yb3dzID0gbWFwcGVkR3JvdXBSYW5raW5nLm1hcChmdW5jdGlvbihncm91cCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdXVpZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogZ3JvdXAubWFwKGZ1bmN0aW9uKHgsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPT0gNCA\/IHggKyAiJSIgOiB4ICsgIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBfdG1wKSkKICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgIF9zdGF0ZS5zZW50KCk7CiAgICAgICAgICAgICAgICAgICAgTmF0aXZlTG9nZ2VyLmxvZyhbCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG1hcHBlZEdyb3VwUmFua2luZykKICAgICAgICAgICAgICAgICAgICBdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgICAgICAzLAogICAgICAgICAgICAgICAgICAgICAgICA1CiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICBlID0gX3N0YXRlLnNlbnQoKTsKICAgICAgICAgICAgICAgICAgICBOYXRpdmVMb2dnZXIubG9nKFsKICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgZS5tZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNQogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgTmF0aXZlTG9nZ2VyLmxvZyhbCiAgICAgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzaW5nIGRvbmUiCiAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgZG9uZShbXSkKICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgIF9zdGF0ZS5zZW50KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgMgogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0pOwogICAgcmV0dXJuIF9tYWluLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cn0KbWFpbigpOwo=","declarings":{},"codePack":"UEsDBBQAAAgIAM2QflV24iss4gIAAKELAAAIAAAAdXRpbHMudHPNVs9v2jAUvvNXeJwcQUPZEZpJU6sdJrWd1GmXiINDXsAosZHjUKqJ\/33PTkIScOi0Vup8CPj5+X2fv\/f8g2dbqTQZ+pNVKiOWDueDwWRCViBAMQ0xKQoek4jl+FcKsiyUAqGJ5hnkmmXbAextgKQQS83Rw\/hTj\/weEGwp6DJAQO4wmi\/kM46NyHCIH3rP9NpXTMQyq6yen6d8CfSzN7fzFehClTHng8PgDCxfy+dvUmU0wc+M3MOKma43Iz+UzHgON7XpS8WoiijguXahVEEu0x2McXADS+2RoPY27YFpvgMTwz\/CHQdN+\/70+ODnWnGx4smLpeKNOx4UlBoTM\/Bk3U4Q6sYT6+k5hkrqhp31mJ85HAikOfTOtAuklumWKVx0i4wr2sDdq1wPXm82frIoBarNt8yHNbQSspM8fmsybEy\/gbuUDkvFkY+PysG7qR1LAXTLXlLJ4hlh4iVc\/LvMuVPnW5llheBLZgB9C9ihWqG\/r7j5f6HuCvStFBr2+hdLC6A7prippAeWYWGX5dWSuzS8ta67ep9S6Kyjzcd12OzMlI+q8RL83Y4ViVdODuJWQpLwJcf7h7Kq4sckqmu\/deVwVA0PuXJ6QK7nzWUkOiY8BQm1M6wNf24I81MQK73G3mjU1sjIFvlcxLB\/TCgLOWJ+CgJyNT1Vso0\/GjU6NCu2POqhQy+X6BIXduQSWS6Bk0sHqUE7tAu1o9eknPK3qXhMymvEpKTcBTYn1Q7pbghnJv18m3JN8fLHiU3HXQsQcy3VHce3h8B3wiVMI2XG0LSfEVFkEahwES5Q23DRm\/ygP\/tlKBTaROALZ+Y2ZaCNCdSkbuMMdL0INybWprcGpq9R6uBOX8Ntyma5ZuqrppxckakpG5xTmTbW5DoYjssvWddd448m+9Pd770HxUkk+wjMuKBnjm3nNg6+FKdjp\/flWCfgr8RyoFtvp7N3Zj05\/Q6Xtl8FU+d5EdY5REkPfwBQSwMEFAAACAgAI6Z+VXp8\/ggHBQAAPBIAAAcAAABtYWluLnRz7VjNj9w0FL\/vX2EsUTnsbHa2u6cZZivYAhKUXdRWvURz8GScGasZe+Q4uzOUOXBCrfiQEEIcKnEEcagEFxBQ8c+00+W\/wHY+NnYykyKBxIFcEjvv\/d7380vobM6FBNDfn8R8hGPY36HZ1msAJyCVNE5AJPhMk5iVQxFyFtFJSZItFc0OTpYsBFHKQkk5AzNMGfLAgx2grlMs6Tm5xScTIvyYT1Agl3PCo\/zF21zMOqC25SdTfqEfhl7fwEixzAH1FRMJznEMBgBfYCoz3f0JkSecSbKQ93CcEgTPsTiACsDiE0Smgn2AlzHHY4Xw7p2zU3+ORUKQgvS0oberJP2Sm0YAvWKxK77sjoXAS6+iodF5KvgFYOQCvCUEFwgaKsC4BBFP2Rh6V9grW8mMcgC2SPPPtZF9i41KMku0VwxBRGNJBFqAwTF4kEOBha+dDQYDALWnzkYJEedYxw2ClVeiWUYbWD8mbCKnmrPrWFoz9JQDBzxXrcFuV3+lvqENukMncvwKLsmpSpc44pIbrntM8KoIrdFSRlgS22IWYzZRasEPp9COyn2y1Ppm9eKfTAUOVVxu0UQ6BhoJPRDcO71rm9MBiRSUTdz7MBgq4KDqqIgLgBxvAVVb20zX5CFmYzrGUqVGldYv93VA\/ExsRVzBPsPzOdHlpI311QrpJ5N5Fq2+8kwMSuiOpu3kVZxwQVhC2AknUURDSpg8i+4Yucjm8AoWMqaSi5vKoZiFxKUa9i0NVp4WIRHCHTDymjXUyfI+llMfjxJFGFwf6rbA0tmICA\/sATSytzxwDLp+t9s9cF3r2OwyaiwHvl\/jXwESJ6QFGAeHFnCm5WELsuuZastYaL20XYeeE3DtnizgRVM4rvUEc5mE9udpMkUBr6Zzxq0yKjgwGhZpfbV\/fcP+YWV\/6JhUKchVQ2W9l9VhppRO0dzMgypO\/bwyB0QmkEZLZEl0sDbmenPsKi7pKT1UfTVVW6eRV2V2z+je\/DoJVRn1TAybCcZ5tWiaw2FrZpRLb+geqFls3hE8nd\/G7D41XTBvdtXdrCtM9E7dVxpI9V5D3wMosxx8VKSu6XMoMLFveOn5Sl6IJTLoTlaUHZEqjG5f3V4HR+q2u9uUsjq3y2zxKQvjdEwSVOgW0Er+eZuqvUo9sFa7AMK\/WeFbwQBaP\/5h\/enH68cPvSbgnc2rPDULwMq51tIhzYByonwk9ahh9Yx8kFuY+SJzEgTXrqmpg7IxWZxFCJb6QtU19SyR95CaiFEhYvSviKh1tMIkxaDxRlfLpjBfNfSj+uFwtLntbgy1o0LLQXLQFusCssWMCuTeS2HmxLmme7mb3D5cPlWbRXVW1\/P9XTyKCbJ1omr+ySjSlI6RZzcvSWWsOha8\/O7Ly4c\/rR89ff7F189\/+\/XyyRNoE4Y8TmcsUbNUzYBmH2yX2ywf1t1VZ\/tf3H9M3J\/ffPvs98\/WP\/+4\/uXRs6d\/vPjq+xeff9Ig3dpxDtH9faA+FmrppbbrWuab7YpWCM23i4aHIYnjN2AHmIc34bCJY9WI809rcVJocXODFu6mTZX5qz4rbJ0KDOO2CerlQl8YYqQYgWjRAdQcbVS3xiNwQx0o6jh9FYJe9gS9lpSozERWl2sdIOs+8IoBdKU+w2Q4BUglKmbWD4U6LCT6O1VFhfgzkiR4QkqYDX9e4FzwUJHq6WnMGYHlLFdtzfqNGrXUKzVEZ\/9y+n8BUEsDBBQAAAgIADCvfFVD9tSGmAMAALQNAAAJAAAAZ2xvYmFsLnRztVdLTxsxEL7nV\/gEFBHlvohSkdKqEg0IolyiHLy7k8Vl145sJ5DS\/PeO7V1nvY9AK3GK\/Xnmm4dnZp3R6SlZCkkmVLMN3IgsA0lORwO9XUEATg1wQV4HhOQii8hJAUrRDCKitGQ8my8+kYvPZCNYOtidDwajgPibkEWD1kA1UvUong2EzLgjRrd4sMyVhTOLJzTPY5o8oRxIGZFrKYU86xD37hi9Q76NRVGsOUtwI3jDyeCs5m0qOEZ+sqLbXNA0IpRv54uzbue87b0ThGSgx4JreNEzmq+hinpDJaNxDhNawLvi3jjtt0MeEVA543qYMmUsDDnaHiIC5IsJWCWSrfTQCY04LZBvmAi+AW5iH6SQ5FQCQUjpoDKiVp2cf4w5Vx5h9XyQqakhiuqbDzQWFFnUV3l4ibYwf0JGTfQTkVbVyLACXfHj5gm2frdrKpUKmmkTntdRkBgzKvKCDw6ZLwY7chTYbFKWkiXzI9AU5GWNeymEDhGmoaiZ+oHbd9gxYqURLPoaXSxEPjPIFS6AchMfKoYGpnhNtn\/\/BPDtyjd2eDDFYnaX\/i7HPH2ZX9xGdtXO9a59Kw1PHIdYlVfiaBrbZhKsJWu1Bu0wrf\/gwj7mKgwLHA4knKW2VRoz1LdPbdKX\/XXSMeXfPUSDGCxhd0u05Xq6IBH5uqiawAqOLWKzKMVz\/eRePNdq1ltvmXIMnQbfVkYj+4pfg6pUeywDXxfkHvRa8jv3YTJZvzao4cBvFLId48+x+T5QKakDzMJC7gYM5lYWRPUY3wQIupUFU6qpgcyvBViBbwGD2IWFNkxhxd7GCuSGliPiuAVaUVO5DcEGhGK7vghdVf2\/7ziRlWLLctbWjCoj1n9qlSUkIuPsN6S38S8chU31Q+ddsauO4FX3he3KegkS8tVFt0\/JZdVZPh+IuAUi+EHjQhPIaSwk1ZCSLegySZf2XXMwQSjyWr1BZpNxn9x8gdPicK5Cpvt+yZKrmaJQfxqeljo2cXXBIHNWyA+L4KjqX\/tZ6ewwPPWPwdZ97Flnk7DMX+3Y4UuWAk\/A34uXH3+\/E\/iQQMm5OzorRRZ7RsyVphwHdZs6FlqL4gaW+F0oqTx6z7LHANZi1ZREqCG2C+yWd2SyHdScLzkzpoKY9+q9xeInuHkyLZl5YL7NdqBgfC7WPEWWK\/ES9WTN\/LehMeTqjWI+5Mi0NcrsHVO0jT0FKmplrouPHKFSt5Png79QSwMEFAAACAgAmpB+VQ3SWwVoAwAAOQsAAAkAAABjb25maWcudHOdVktv2kAQvvMrrJwjC4whoKqnHnrpqdeIQxRFbVQpiWgq9RiFEkICmCAUIIQ4pEBDKY8EaMAk8Ge89vpfdCPG6wfmoUo+7Hp3Zr759pvZ3fl+sB8+ZLb3974eMu8+h7e2D3fCH3bJ5C2z6WKYNTXdW1t\/HeDJb5S8Q9Hz6VQZ1Mmf6RgJbZyKT8da8xQ25KK4nMBHUZj2xjhTAFepBrq\/BtvTkVKAEPIgQj7wkxHV2gj2j8fkQ6d1WbqC1fwE90qoAlM1m9eK9zCu3mixhDpqoGQKzCNlpay7LT6p2T7qnKCTIgR9zmMBMKNWH7UaAPimgVKiPIgh4S+sRhtaLEn8o2YaYgln6sUVMUGTiNJ\/gm1iROkV5eczGx5ZkgBPMqN0n+TBkXKZgz\/9Im5Lei5dbVgBV5VrFO0AHiGtSl3iCpZqLe36EUykLq5OUA2mKJGjnlErroiCTu8LTgEnKNamZOKzJvmU8zilSOm+wFI5of6CE8fCI+7coU4Wpm0Jx8d0qgpN1HlW40NwEkvK0gWMawUsPOhxSygKgdTbY7V7aairWqWqwOOi+gNM1JccgU0ERgETz+g2BqsRUR21dcnVFZHuyWoRSFYelpRSGf8UiSvYGc9r9T\/6ahQ9ptEkCWiHEy2W0gp3aNjFOaBOEYnC9RQqV1TtqJTCmWN5UNKF\/SCPS1MmQ29crh1zdb0P7387+Li192V37xNUF8NsUooNyRuKNRTAeLwsz4XWwcjEtl2pdo3b02eCrJ+njvSzYawurRU3EyLAeoMGFkvBGcU4C2ymXBg\/G\/A7YDE4saCyJeZjAwYjpnbjFIjWi6VaGJ7l\/XMTMWnS6FkzWfGsl1tGp\/1E6KmuHn85l142uGEAoVrSe5opKi0gYuP3UhsnJTpYExuPSYgzTOu1Mo9zL8sFHHBaCHMM6+YWhTWycw7LscHAwlSdAXAsH3A43jlmVPucOcnFxNLDIDaeZUqaW1wecyXplzOzoiA97IZ7RemYKfWwft\/\/tSSjrS0ToOmmN\/VFYuYE2LJZvwHsFy4x9vlXPBtrtj5uoZnRIkw4zTbGBWq8exwq2xKTn99ol7cE+ph4dbSxGDy9cmzxeecTXtDlLfYc5yQsy0vK8rax27sD8y8ay8NgFT48lh5ip5MWzWIi3e6QK+T6B1BLAQIUAxQAAAgIAM2QflV24iss4gIAAKELAAAIAAAAAAAAAAAAAAC2gQAAAAB1dGlscy50c1BLAQIUAxQAAAgIACOmflV6fP4IBwUAADwSAAAHAAAAAAAAAAAAAAC2gQgDAABtYWluLnRzUEsBAhQDFAAACAgAMK98VUP21IaYAwAAtA0AAAkAAAAAAAAAAAAAALaBNAgAAGdsb2JhbC50c1BLAQIUAxQAAAgIAJqQflUN0lsFaAMAADkLAAAJAAAAAAAAAAAAAAC2gfMLAABjb25maWcudHNQSwUGAAAAAAQABADZAAAAgg8AAAAA","type":"evalJavascriptCoreFunctionCallExpression"},{"declarings":{},"id":"E1003DB9-6E82-43C7-B9FD-60D79D1E5B3F","returnType":[{"id":"BCC5EA44-A946-403B-B06C-E6F4D0D4F3FF","typeParameters":[{"id":"31AA4A67-4658-4AC8-B743-A4B1DC56C3BD","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"}],"type":"printFunctionCallExpression","params":[{"id":"6617496A-6C09-4C31-A54D-9B3227C652C8","typeParameters":[{"id":"04330969-76D8-45E8-9664-556EC5DA4BD4","typeParameters":[],"type":"typeAnnotion","dataType":"image"}],"type":"typeAnnotion","dataType":"array"}]}]}